diff -Nru sudo-1.8.29/ChangeLog sudo-1.8.31/ChangeLog --- sudo-1.8.29/ChangeLog 2019-10-28 13:54:15.000000000 +0000 +++ sudo-1.8.31/ChangeLog 2020-01-30 12:56:19.000000000 +0000 @@ -1,8 +1,309 @@ +2020-01-30 Todd C. Miller + + * .hgtags: + Added tag SUDO_1_8_31 for changeset d14f7d0f6174 + [57a9df806149] [tip] <1.8> + + * configure, configure.ac, doc/LICENSE: + Sudo 1.8.31 + [d14f7d0f6174] [SUDO_1_8_31] <1.8> + +2020-01-29 Todd C. Miller + + * NEWS: + Sudo 1.8.31 changes. + [56a903dbf5a0] <1.8> + + * src/tgetpass.c: + Fix a buffer overflow when pwfeedback is enabled and input is a not + a tty. In getln() if the user enters ^U (erase line) and the + write(2) fails, the remaining buffer size is reset but the current + pointer is not. While here, fix an incorrect break for erase when + write(2) fails. Also disable pwfeedback when input is not a tty as + it cannot work. CVE-2019-18634 Credit: Joe Vennix from Apple + Information Security. + [84640592b0ff] <1.8> + +2020-01-28 Todd C. Miller + + * lib/util/getentropy.c: + Allow getentropy.c to compile when MAP_ANON is unavailable. + [32676c5ab0fe] <1.8> + + * MANIFEST, lib/util/Makefile.in, lib/util/arc4random.c, + lib/util/arc4random.h: + Remove multi-thread support from arc4random. Sudo is not multi- + threaded so we don't need the added complexity. + [50d219f43811] <1.8> + + * lib/util/arc4random.h, lib/util/getentropy.c: + Backed out changeset 1371cff82ebd MAP_SGI_ANYADDR cannot be used in + place of MAP_ANON + [b71b2f99ab82] <1.8> + +2020-01-27 Todd C. Miller + + * lib/util/arc4random.h, lib/util/getentropy.c: + Fix compilation on IRIX; Bug #915 IRIX lacks MAP_ANON (and + MAP_ANONYMOUS) but we can use the IRIX-specific flag MAP_SGI_ANYADDR + instead. From Kazuo Kuroi + [1371cff82ebd] <1.8> + +2020-01-24 Todd C. Miller + + * plugins/sudoers/check.c: + Fix crash in sudo 1.8.30 when suspending sudo at the password + prompt. The closure pointer in sudo_conv_callback was being filled + in with a struct getpass_closure ** instead of a struct + getpass_closure *. The bug was introduced in the fix for Bug #910; + previously the closure variable was a struct getpass_closure, not a + pointer. Fix from Michael Norton; Bug #914. + [d792c6769a98] <1.8> + +2020-01-16 Todd C. Miller + + * src/sudo_edit.c: + Treat EROFS (like EACCES) as a non-fatal error in dir_is_writable(). + Fixes sudoedit on macOS 10.15 and above where the root file system + is mounted read-only. See https://support.apple.com/en-us/HT210650. + From Dan Villiom Podlaski Christiansen. Bug #913 + [b5ba461a0c1c] <1.8> + +2020-01-11 Todd C. Miller + + * src/sudo_edit.c: + For sudoedit_checkdir consider a user-owner directory to be + writable. The non-faccessat() code already did this so this just + brings the faccessat() path into alignment. Bug #912 + [78d401155aa6] <1.8> + +2019-12-31 Todd C. Miller + + * .hgtags: + Added tag SUDO_1_8_30 for changeset 19286fe67981 + [062dfc2927a1] <1.8> + + * doc/UPGRADE: + fix typo in previous + [19286fe67981] [SUDO_1_8_30] <1.8> + + * configure, configure.ac: + Sudo 1.8.30 + [a2f006190698] <1.8> + + * NEWS, doc/UPGRADE: + Changes in sudo 1.8.30 + [1e84449b338d] <1.8> + +2019-12-26 Todd C. Miller + + * plugins/sudoers/def_data.h: + Regenerate def_data.h, I_RUNAS_CHECK_SHELL should be 118, not 123. + From Zhang Xiao + [2f5a0086a76a] <1.8> + +2019-12-25 Todd C. Miller + + * src/limits.c: + Use 64-bit resource limits on AIX. + [5912858111bb] <1.8> + + * src/limits.c: + When restoring old resource limits, try to recover if we receive + EINVAL. On NetBSD, setrlimit(2) can return EINVAL if the new soft + limit is lower than the current resource usage. This can be a + problem when restoring the old stack limit if sudo has raised it. + [29bcc747a988] <1.8> + + * src/limits.c: + Sudo doesn't require such a large stack. + [05b16a7546f8] <1.8> + + * plugins/sudoers/Makefile.in: + Restore check for readable /etc/sudoers in pre-install target. If + there is no installed sudoers there is nothing to check... + [15d85f56a780] <1.8> + + * config.h.in, configure, configure.ac: + Enable OpenBSD extensions on NetBSD to get reallocarray(3) + prototype. + [18b54eb14231] <1.8> + + * include/sudo_event.h: + Add forward declaration of struct timeval for deprecated APIs. + [7445ee8e2ec9] <1.8> + + * lib/util/sig2str.c, lib/util/str2sig.c: + Fix compilation on systems with SIGRTMIN/SIGRTMAX but not + _SC_RTSIG_MAX. + [5abea9a42fdc] <1.8> + + * include/sudo_compat.h: + Older systems may not support WCONTINUED. + [c8aa5924b42b] <1.8> + + * plugins/sudoers/logging.c: + Support systems that have nl_langinfo(3) but not the CODESET define. + Fixes compilation on old NetBSD versions. + [5435d054b427] <1.8> + + * plugins/sudoers/starttime.c: + Fix a typo; HAVE_KINFO_PROC2_NETBSD not HAVE_KINFO_PROC2_NETBSD2 + [59e8a0eab142] <1.8> + +2019-12-18 Todd C. Miller + + * plugins/sudoers/sudoers.c, src/limits.c: + Output the name of the limit when warning about setrlimit or + getrlimit. From Kimmo Suominen. + [31b1ee0352ac] <1.8> + +2019-12-11 Todd C. Miller + + * src/selinux.c: + Save/restore the raw form of the file context in case mctrans is not + available. + [614f2b6a358e] <1.8> + +2019-12-09 Todd C. Miller + + * MANIFEST, config.h.in, configure, configure.ac, doc/sudoers.man.in, + doc/sudoers.mdoc.in, include/sudo_compat.h, lib/util/Makefile.in, + lib/util/getusershell.c, mkdep.pl, plugins/sudoers/check.c, + plugins/sudoers/def_data.c, plugins/sudoers/def_data.h, + plugins/sudoers/def_data.in, plugins/sudoers/sudoers.c, + plugins/sudoers/sudoers.h: + Add runas_check_shell flag to require a runas user to have a valid + shell. Not enabled by default. + [ed6db31729cd] <1.8> + + * doc/sudoers.man.in, doc/sudoers.mdoc.in, plugins/sudoers/def_data.c, + plugins/sudoers/def_data.h, plugins/sudoers/def_data.in, + plugins/sudoers/defaults.c, plugins/sudoers/sudoers.c: + Add a new flag "allow_unknown_runas_id" to control matching of + unknown IDs. Previous, sudo would always allow unknown user or group + IDs if the sudoers entry permitted it. This included the "ALL" + alias. With this change, the admin must explicitly enable support + for unknown IDs. + [c571f211f131] <1.8> + +2019-12-04 Todd C. Miller + + * plugins/sudoers/check.c: + Only update the time stamp entry after the approval function has + succeeded. Bug #910 + [b8df50a7c3ee] <1.8> + +2019-11-20 Todd C. Miller + + * plugins/sudoers/po/cs.mo, plugins/sudoers/po/cs.po, + plugins/sudoers/po/de.mo, plugins/sudoers/po/de.po, + plugins/sudoers/po/fi.mo, plugins/sudoers/po/fi.po, + plugins/sudoers/po/nb.mo, plugins/sudoers/po/nb.po, + plugins/sudoers/po/zh_CN.mo, plugins/sudoers/po/zh_CN.po, + plugins/sudoers/po/zh_TW.mo, plugins/sudoers/po/zh_TW.po, po/cs.mo, + po/cs.po, po/fi.mo, po/fi.po, po/nb.mo, po/nb.po, po/zh_CN.mo, + po/zh_CN.po: + Updated translations from translationproject.org + [df05f0166963] <1.8> + +2019-11-19 Todd C. Miller + + * plugins/group_file/plugin_test.c: + Sync with argument handling in group_plugin.c + [3ade83ffbf05] <1.8> + + * plugins/sudoers/group_plugin.c: + If a group plugin has optional arguments, NULL terminate the vector. + Otherwise, the plugin cannot determine the end of arguments. The + behavior now matches the plugin documentation. + [518382245a88] <1.8> + +2019-11-12 Todd C. Miller + + * src/limits.c: + Simplify resource limit fallback logic a bit. + [22d95f175a32] <1.8> + +2019-11-11 Todd C. Miller + + * src/limits.c: + Don't set the RLIMIT_STACK soft/hard limits to unlimited. Use 8Mb + for soft and 64Mb for hard. Works around issues on macOS and docker. + See also Bug #908 + [98fe708cd0f6] <1.8> + + * src/tgetpass.c: + Restore resource limits before executing the askpass program. Linux + with docker seems to have issues executing a program when the stack + size is unlimited. Bug #908 + [fbc2900ec544] <1.8> + + * src/conversation.c: + Check for replies pointer being NULL just in case. + [71f620a9741f] <1.8> + +2019-11-06 Todd C. Miller + + * plugins/sudoers/env.c: + Do not warn about a missing /etc/environment file on Linux without + PAM. Bug #907 + [bedf54a2775b] <1.8> + +2019-11-05 Todd C. Miller + + * doc/sudoers.man.in, doc/sudoers.mdoc.in, + plugins/sudoers/cvtsudoers.c, plugins/sudoers/gram.c, + plugins/sudoers/gram.y, plugins/sudoers/parse.h, + plugins/sudoers/regress/parser/check_fill.c, + plugins/sudoers/sudoers.c, plugins/sudoers/sudoers.h, + plugins/sudoers/testsudoers.c, plugins/sudoers/toke_util.c, + plugins/sudoers/visudo.c: + Transparently handle the "sudo sudoedit" problem. Some admin are + confused about how to give users sudoedit permission and many users + try to run sudoedit via sudo instead of directly. If the user runs + "sudo sudoedit" sudo will now treat it as plain "sudoedit" after + issuing a warning. If the admin has specified a fully-qualified path + for sudoedit in sudoers, sudo will treat it as just "sudoedit" and + match accordingly. In visudo (but not sudo), a fully-qualified path + for sudoedit is now treated as an error. + [e571ee6e950b] <1.8> + +2019-11-02 Todd C. Miller + + * plugins/sudoers/logging.c, src/exec_monitor.c, src/exec_pty.c, + src/tgetpass.c: + Open all pipes using pipe2() with O_CLOEXEC. We no longer depend on + calling closefrom() before exec. + [f13ecdbe4b6d] <1.8> + + * src/exec.c, src/tgetpass.c: + Call closefrom() before we change to a non-root UID. This prevents + another process from changing the NOFILE resource limit of the child + process and defeating the closefrom() call. Reported by Joe Vennix + from Apple Information Security. + [7207f993d347] <1.8> + +2019-11-01 Todd C. Miller + + * doc/sudo.man.in, doc/sudo.mdoc.in: + Reference timestamp_type and timestamp_timeout in sudoers. This + should help users find details on how time stamp files work. + [1d7e880af1a8] <1.8> + +2019-10-29 Todd C. Miller + + * src/limits.c: + macOS does not allow rlim_cur to be set to RLIM_INFINITY for + RLIMIT_NOFILE. We need to use OPEN_MAX instead as per the macOS + setrlimit manual. Bug #904 + [d8bb162d78e9] <1.8> + 2019-10-28 Todd C. Miller * .hgtags: Added tag SUDO_1_8_29 for changeset e36c1e564efa - [e0f35f614a93] [tip] <1.8> + [e0f35f614a93] <1.8> * Makefile.in: Fix ChangeLog generation on a branch. diff -Nru sudo-1.8.29/config.h.in sudo-1.8.31/config.h.in --- sudo-1.8.29/config.h.in 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/config.h.in 2020-01-30 12:52:45.000000000 +0000 @@ -334,6 +334,9 @@ /* Define to 1 if you have the `getuserattr' function. */ #undef HAVE_GETUSERATTR +/* Define to 1 if you have the `getusershell' function. */ +#undef HAVE_GETUSERSHELL + /* Define to 1 if you have the `getutid' function. */ #undef HAVE_GETUTID @@ -1265,6 +1268,11 @@ # undef _BSD_SOURCE #endif +/* Enable OpenBSD extensions on NetBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif + /* Enable BSD types on IRIX. */ #ifndef _BSD_TYPES # undef _BSD_TYPES diff -Nru sudo-1.8.29/configure sudo-1.8.31/configure --- sudo-1.8.29/configure 2019-10-28 12:29:14.000000000 +0000 +++ sudo-1.8.31/configure 2020-01-30 12:52:43.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for sudo 1.8.29. +# Generated by GNU Autoconf 2.69 for sudo 1.8.31. # # Report bugs to . # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='sudo' PACKAGE_TARNAME='sudo' -PACKAGE_VERSION='1.8.29' -PACKAGE_STRING='sudo 1.8.29' +PACKAGE_VERSION='1.8.31' +PACKAGE_STRING='sudo 1.8.31' PACKAGE_BUGREPORT='https://bugzilla.sudo.ws/' PACKAGE_URL='' @@ -1544,7 +1544,7 @@ # 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 sudo 1.8.29 to adapt to many kinds of systems. +\`configure' configures sudo 1.8.31 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1609,7 +1609,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of sudo 1.8.29:";; + short | recursive ) echo "Configuration of sudo 1.8.31:";; esac cat <<\_ACEOF @@ -1875,7 +1875,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -sudo configure 1.8.29 +sudo configure 1.8.31 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2584,7 +2584,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by sudo $as_me 1.8.29, which was +It was created by sudo $as_me 1.8.31, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -16254,6 +16254,10 @@ test -z "$with_pam" && AUTH_EXCL_DEF="PAM" : ${with_logincap='maybe'} + # For reallocarray() + $as_echo "#define _OPENBSD_SOURCE 1" >>confdefs.h + + # Examples go in share/examples/sudo if test X"$with_exampledir" = X""; then exampledir='$(datarootdir)/examples/$(PACKAGE_TARNAME)' @@ -19395,6 +19399,32 @@ fi done +for ac_func in getusershell +do : + ac_fn_c_check_func "$LINENO" "getusershell" "ac_cv_func_getusershell" +if test "x$ac_cv_func_getusershell" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETUSERSHELL 1 +_ACEOF + +else + + case " $LIBOBJS " in + *" getusershell.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS getusershell.$ac_objext" + ;; +esac + + + for _sym in sudo_getusershell; do + COMPAT_EXP="${COMPAT_EXP}${_sym} +" + done + + +fi +done + for ac_func in reallocarray do : ac_fn_c_check_func "$LINENO" "reallocarray" "ac_cv_func_reallocarray" @@ -27513,7 +27543,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by sudo $as_me 1.8.29, which was +This file was extended by sudo $as_me 1.8.31, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -27579,7 +27609,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -sudo config.status 1.8.29 +sudo config.status 1.8.31 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru sudo-1.8.29/configure.ac sudo-1.8.31/configure.ac --- sudo-1.8.29/configure.ac 2019-10-28 12:29:17.000000000 +0000 +++ sudo-1.8.31/configure.ac 2020-01-30 12:52:13.000000000 +0000 @@ -3,7 +3,7 @@ dnl dnl SPDX-License-Identifier: ISC dnl -dnl Copyright (c) 1994-1996, 1998-2018 Todd C. Miller +dnl Copyright (c) 1994-1996, 1998-2020 Todd C. Miller dnl dnl Permission to use, copy, modify, and distribute this software for any dnl purpose with or without fee is hereby granted, provided that the above @@ -18,7 +18,7 @@ dnl OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. dnl AC_PREREQ([2.59]) -AC_INIT([sudo], [1.8.29], [https://bugzilla.sudo.ws/], [sudo]) +AC_INIT([sudo], [1.8.31], [https://bugzilla.sudo.ws/], [sudo]) AC_CONFIG_HEADER([config.h pathnames.h]) AC_CONFIG_SRCDIR([src/sudo.c]) dnl @@ -2184,6 +2184,9 @@ test -z "$with_pam" && AUTH_EXCL_DEF="PAM" : ${with_logincap='maybe'} + # For reallocarray() + AC_DEFINE([_OPENBSD_SOURCE]) + # Examples go in share/examples/sudo if test X"$with_exampledir" = X""; then exampledir='$(datarootdir)/examples/$(PACKAGE_TARNAME)' @@ -2562,6 +2565,10 @@ SUDO_APPEND_COMPAT_EXP(sudo_getdelim) COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }getdelim_test" ]) +AC_CHECK_FUNCS([getusershell], [], [ + AC_LIBOBJ(getusershell) + SUDO_APPEND_COMPAT_EXP(sudo_getusershell) +]) AC_CHECK_FUNCS([reallocarray], [], [ AC_LIBOBJ(reallocarray) SUDO_APPEND_COMPAT_EXP(sudo_reallocarray) @@ -4644,6 +4651,11 @@ # undef _BSD_SOURCE #endif +/* Enable OpenBSD extensions on NetBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif + /* Enable BSD types on IRIX. */ #ifndef _BSD_TYPES # undef _BSD_TYPES diff -Nru sudo-1.8.29/debian/changelog sudo-1.8.31/debian/changelog --- sudo-1.8.29/debian/changelog 2019-11-26 18:13:21.000000000 +0000 +++ sudo-1.8.31/debian/changelog 2020-02-03 14:32:18.000000000 +0000 @@ -1,3 +1,33 @@ +sudo (1.8.31-1ubuntu1) focal; urgency=medium + + * Merge from Debian unstable. Remaining changes: + - debian/rules, debian/sudo.service, debian/sudo.sudo.init: stop + shipping init script and service file, as they are no longer + necessary. + - debian/rules: + + compile with --without-lecture --with-tty-tickets --enable-admin-flag + + install man/man8/sudo_root.8 in both flavours + + install apport hooks + - debian/source_sudo.py, debian/sudo-ldap.dirs, debian/sudo.dirs: + + add usr/share/apport/package-hooks + - debian/sudo.pam: + + Use pam_env to read /etc/environment and /etc/default/locale + environment files. Reading ~/.pam_environment is not permitted due to + security reasons. + - debian/sudoers: + + also grant admin group sudo access + + include /snap/bin in the secure_path + - debian/control, debian/rules: + + use dh-autoreconf + + -- Marc Deslauriers Mon, 03 Feb 2020 09:32:18 -0500 + +sudo (1.8.31-1) unstable; urgency=medium + + * new upstream version + + -- Bdale Garbee Sat, 01 Feb 2020 23:07:09 -0800 + sudo (1.8.29-1ubuntu1) focal; urgency=medium * Merge from Debian unstable. diff -Nru sudo-1.8.29/doc/LICENSE sudo-1.8.31/doc/LICENSE --- sudo-1.8.29/doc/LICENSE 2019-10-28 12:27:45.000000000 +0000 +++ sudo-1.8.31/doc/LICENSE 2020-01-30 12:52:27.000000000 +0000 @@ -1,6 +1,6 @@ Sudo is distributed under the following license: - Copyright (c) 1994-1996, 1998-2019 + Copyright (c) 1994-1996, 1998-2020 Todd C. Miller Permission to use, copy, modify, and distribute this software for any diff -Nru sudo-1.8.29/doc/sudoers.man.in sudo-1.8.31/doc/sudoers.man.in --- sudo-1.8.29/doc/sudoers.man.in 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/doc/sudoers.man.in 2019-12-10 13:09:55.000000000 +0000 @@ -25,7 +25,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .nr PS @PSMAN@ -.TH "SUDOERS" "@mansectform@" "October 20, 2019" "Sudo @PACKAGE_VERSION@" "File Formats Manual" +.TH "SUDOERS" "@mansectform@" "December 9, 2019" "Sudo @PACKAGE_VERSION@" "File Formats Manual" .nh .if n .ad l .SH "NAME" @@ -947,7 +947,17 @@ \fBsudo\fR itself and must be specified in the \fIsudoers\fR -file without a leading path. +file +\fBwithout\fR +a leading path. +If a leading path is present, for example +\fI/usr/bin/sudoedit\fR, +the path name will be silently converted to +\(lq\fRsudoedit\fR\(rq. +A fully-qualified path for +\fBsudoedit\fR +is treated as an error by +\fBvisudo\fR. .PP If a \fRcommand name\fR @@ -2942,6 +2952,45 @@ \fIoff\fR by default. .TP 18n +runas_allow_unknown_id +If enabled, allow matching of runas user and group IDs that are +not present in the password or group databases. +In addition to explicitly matching unknown user or group IDs in a +\fRRunas_List\fR, +this option also allows the +\fBALL\fR +alias to match unknown IDs. +This flag is +\fIoff\fR +by default. +.sp +This setting is only supported by version 1.8.30 or higher. +Older versions of +\fBsudo\fR +always allowed matching of unknown user and group IDs. +.TP 18n +runas_check_shell +.br +If enabled, +\fBsudo\fR +will only run commands as a user whose shell appears in the +\fI/etc/shells\fR +file, even if the invoking user's +\fRRunas_List\fR +would otherwise permit it. +If no +\fI/etc/shells\fR +file is present, a system-dependent list of built-in default shells is used. +On many operating systems, system users such as +\(lqbin\(rq, +do not have a valid shell and this flag can be used to prevent +commands from being run as those users. +This flag is +\fIoff\fR +by default. +.sp +This setting is only supported by version 1.8.30 or higher. +.TP 18n runaspw If set, \fBsudo\fR diff -Nru sudo-1.8.29/doc/sudoers.mdoc.in sudo-1.8.31/doc/sudoers.mdoc.in --- sudo-1.8.29/doc/sudoers.mdoc.in 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/doc/sudoers.mdoc.in 2019-12-10 13:09:55.000000000 +0000 @@ -24,7 +24,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .nr PS @PSMAN@ -.Dd October 20, 2019 +.Dd December 9, 2019 .Dt SUDOERS @mansectform@ .Os Sudo @PACKAGE_VERSION@ .Sh NAME @@ -911,7 +911,17 @@ .Nm sudo itself and must be specified in the .Em sudoers -file without a leading path. +file +.Sy without +a leading path. +If a leading path is present, for example +.Pa /usr/bin/sudoedit , +the path name will be silently converted to +.Dq Li sudoedit . +A fully-qualified path for +.Nm sudoedit +is treated as an error by +.Nm visudo . .Pp If a .Li command name @@ -2768,6 +2778,42 @@ This flag is .Em off by default. +.It runas_allow_unknown_id +If enabled, allow matching of runas user and group IDs that are +not present in the password or group databases. +In addition to explicitly matching unknown user or group IDs in a +.Li Runas_List , +this option also allows the +.Sy ALL +alias to match unknown IDs. +This flag is +.Em off +by default. +.Pp +This setting is only supported by version 1.8.30 or higher. +Older versions of +.Nm sudo +always allowed matching of unknown user and group IDs. +.It runas_check_shell +If enabled, +.Nm sudo +will only run commands as a user whose shell appears in the +.Pa /etc/shells +file, even if the invoking user's +.Li Runas_List +would otherwise permit it. +If no +.Pa /etc/shells +file is present, a system-dependent list of built-in default shells is used. +On many operating systems, system users such as +.Dq bin , +do not have a valid shell and this flag can be used to prevent +commands from being run as those users. +This flag is +.Em off +by default. +.Pp +This setting is only supported by version 1.8.30 or higher. .It runaspw If set, .Nm sudo diff -Nru sudo-1.8.29/doc/sudo.man.in sudo-1.8.31/doc/sudo.man.in --- sudo-1.8.29/doc/sudo.man.in 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/doc/sudo.man.in 2019-11-03 14:03:06.000000000 +0000 @@ -137,12 +137,18 @@ to run \fBsudo\fR again for a period of time without requiring authentication. -The +By default, the \fIsudoers\fR -policy caches credentials for +policy caches credentials on a per-terminal basis for \fR@timeout@\fR -minutes, unless overridden in -sudoers(@mansectform@). +minutes. +See the +\fItimestamp_type\fR +and +\fItimestamp_timeout\fR +options in +sudoers(@mansectform@) +for more information. By running \fBsudo\fR with the @@ -1364,6 +1370,7 @@ sudo.conf(@mansectform@), sudo_plugin(@mansectform@), sudoers(@mansectform@), +sudoers_timestamp(@mansectform@), sudoreplay(@mansectsu@), visudo(@mansectsu@) .SH "HISTORY" diff -Nru sudo-1.8.29/doc/sudo.mdoc.in sudo-1.8.31/doc/sudo.mdoc.in --- sudo-1.8.29/doc/sudo.mdoc.in 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/doc/sudo.mdoc.in 2019-11-03 14:03:06.000000000 +0000 @@ -139,12 +139,18 @@ to run .Nm again for a period of time without requiring authentication. -The +By default, the .Em sudoers -policy caches credentials for +policy caches credentials on a per-terminal basis for .Li @timeout@ -minutes, unless overridden in -.Xr sudoers @mansectform@ . +minutes. +See the +.Em timestamp_type +and +.Em timestamp_timeout +options in +.Xr sudoers @mansectform@ +for more information. By running .Nm with the @@ -1256,6 +1262,7 @@ .Xr sudo.conf @mansectform@ , .Xr sudo_plugin @mansectform@ , .Xr sudoers @mansectform@ , +.Xr sudoers_timestamp @mansectform@ , .Xr sudoreplay @mansectsu@ , .Xr visudo @mansectsu@ .Sh HISTORY diff -Nru sudo-1.8.29/doc/UPGRADE sudo-1.8.31/doc/UPGRADE --- sudo-1.8.29/doc/UPGRADE 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/doc/UPGRADE 2019-12-31 14:49:18.000000000 +0000 @@ -1,6 +1,16 @@ Notes on upgrading from an older release ======================================== +o Upgrading from a version prior to 1.8.30: + + Starting with version 1.8.30, sudo will no longer allow commands + to be run as a user or group ID that is not in the password or + group databases by default. Previously, sudo would always allow + unknown user or group IDs if the sudoers entry permitted it, + including via the "ALL" alias. The old behavior can be restored + by setting the new "allow_unknown_runas_id" Defaults setting + in the sudoers file. + o Upgrading from a version prior to 1.8.29: Starting with version 1.8.29, if the umask is explicitly set diff -Nru sudo-1.8.29/include/sudo_compat.h sudo-1.8.31/include/sudo_compat.h --- sudo-1.8.29/include/sudo_compat.h 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/include/sudo_compat.h 2019-12-25 19:19:11.000000000 +0000 @@ -312,6 +312,12 @@ # define WCOREDUMP(x) ((x) & 0x80) #endif +/* Older systems may not support WCONTINUED */ +#ifndef WCONTINUED +# define WCONTINUED 0 +# define WIFCONTINUED(x) 0 +#endif + /* W_EXITCODE is not POSIX but the encoding of wait status is. */ #ifndef W_EXITCODE # define W_EXITCODE(ret, sig) ((ret) << 8 | (sig)) @@ -407,6 +413,17 @@ # undef getdelim # define getdelim(_a, _b, _c, _d) sudo_getdelim((_a), (_b), (_c), (_d)) #endif /* HAVE_GETDELIM */ +#ifndef HAVE_GETUSERSHELL +__dso_public char *sudo_getusershell(void); +# undef getusershell +# define getusershell() sudo_getusershell() +__dso_public void sudo_setusershell(void); +# undef setusershell +# define setusershell() sudo_setusershell() +__dso_public void sudo_endusershell(void); +# undef endusershell +# define endusershell() sudo_endusershell() +#endif /* HAVE_GETUSERSHELL */ #ifndef HAVE_UTIMENSAT __dso_public int sudo_utimensat(int fd, const char *file, const struct timespec *times, int flag); # undef utimensat diff -Nru sudo-1.8.29/include/sudo_event.h sudo-1.8.31/include/sudo_event.h --- sudo-1.8.29/include/sudo_event.h 2019-10-28 12:27:38.000000000 +0000 +++ sudo-1.8.31/include/sudo_event.h 2019-12-25 19:19:37.000000000 +0000 @@ -22,6 +22,8 @@ #include /* for sigatomic_t and NSIG */ #include "sudo_queue.h" +struct timeval; /* for deprecated APIs */ + /* Event types */ #define SUDO_EV_TIMEOUT 0x01 /* fire after timeout */ #define SUDO_EV_READ 0x02 /* fire when readable */ diff -Nru sudo-1.8.29/lib/util/arc4random.c sudo-1.8.31/lib/util/arc4random.c --- sudo-1.8.29/lib/util/arc4random.c 2019-10-28 12:27:38.000000000 +0000 +++ sudo-1.8.31/lib/util/arc4random.c 2020-01-28 16:49:16.000000000 +0000 @@ -60,32 +60,26 @@ #define minimum(a, b) ((a) < (b) ? (a) : (b)) -#if defined(__GNUC__) || defined(_MSC_VER) -#define inline __inline -#else /* __GNUC__ || _MSC_VER */ -#define inline -#endif /* !__GNUC__ && !_MSC_VER */ +#ifdef __GNUC__ +# define inline __inline +#else /* !__GNUC__ */ +# define inline +#endif /* !__GNUC__ */ + +/* Sudo isn't multithreaded */ +#define _ARC4_LOCK() +#define _ARC4_UNLOCK() #define KEYSZ 32 #define IVSZ 8 #define BLOCKSZ 64 #define RSBUFSZ (16*BLOCKSZ) - -/* Marked MAP_INHERIT_ZERO, so zero'd out in fork children. */ -static struct _rs { - size_t rs_have; /* valid bytes at end of rs_buf */ - size_t rs_count; /* bytes till reseed */ -} *rs; - -/* Maybe be preserved in fork children, if _rs_allocate() decides. */ -static struct _rsx { - chacha_ctx rs_chacha; /* chacha context for random keystream */ - unsigned char rs_buf[RSBUFSZ]; /* keystream blocks */ -} *rsx; - -static inline int _rs_allocate(struct _rs **, struct _rsx **); -static inline void _rs_forkdetect(void); -#include "arc4random.h" +static int rs_initialized; +static pid_t rs_stir_pid; +static chacha_ctx rs; /* chacha context for random keystream */ +static u_char rs_buf[RSBUFSZ]; /* keystream blocks */ +static size_t rs_have; /* valid bytes at end of rs_buf */ +static size_t rs_count; /* bytes till reseed */ static inline void _rs_rekey(unsigned char *dat, size_t datlen); @@ -94,14 +88,8 @@ { if (n < KEYSZ + IVSZ) return; - - if (rs == NULL) { - if (_rs_allocate(&rs, &rsx) == -1) - abort(); - } - - chacha_keysetup(&rsx->rs_chacha, buf, KEYSZ * 8, 0); - chacha_ivsetup(&rsx->rs_chacha, buf + KEYSZ); + chacha_keysetup(&rs, buf, KEYSZ * 8, 0); + chacha_ivsetup(&rs, buf + KEYSZ); } static void @@ -110,54 +98,54 @@ unsigned char rnd[KEYSZ + IVSZ]; if (getentropy(rnd, sizeof rnd) == -1) - _getentropy_fail(); + raise(SIGKILL); - if (!rs) + if (!rs_initialized) { + rs_initialized = 1; _rs_init(rnd, sizeof(rnd)); - else + } else _rs_rekey(rnd, sizeof(rnd)); memset_s(rnd, sizeof(rnd), 0, sizeof(rnd)); /* discard source seed */ /* invalidate rs_buf */ - rs->rs_have = 0; - memset(rsx->rs_buf, 0, sizeof(rsx->rs_buf)); + rs_have = 0; + memset(rs_buf, 0, sizeof(rs_buf)); - rs->rs_count = 1600000; + rs_count = 1600000; } static inline void _rs_stir_if_needed(size_t len) { - _rs_forkdetect(); - if (!rs || rs->rs_count <= len) + pid_t pid = getpid(); + + if (rs_count <= len || !rs_initialized || rs_stir_pid != pid) { + rs_stir_pid = pid; _rs_stir(); - if (rs->rs_count <= len) - rs->rs_count = 0; - else - rs->rs_count -= len; + } else + rs_count -= len; } static inline void _rs_rekey(unsigned char *dat, size_t datlen) { #ifndef KEYSTREAM_ONLY - memset(rsx->rs_buf, 0, sizeof(rsx->rs_buf)); + memset(rs_buf, 0, sizeof(rs_buf)); #endif /* fill rs_buf with the keystream */ - chacha_encrypt_bytes(&rsx->rs_chacha, rsx->rs_buf, - rsx->rs_buf, sizeof(rsx->rs_buf)); + chacha_encrypt_bytes(&rs, rs_buf, rs_buf, sizeof(rs_buf)); /* mix in optional user provided data */ if (dat) { size_t i, m; m = minimum(datlen, KEYSZ + IVSZ); for (i = 0; i < m; i++) - rsx->rs_buf[i] ^= dat[i]; + rs_buf[i] ^= dat[i]; } /* immediately reinit for backtracking resistance */ - _rs_init(rsx->rs_buf, KEYSZ + IVSZ); - memset(rsx->rs_buf, 0, KEYSZ + IVSZ); - rs->rs_have = sizeof(rsx->rs_buf) - KEYSZ - IVSZ; + _rs_init(rs_buf, KEYSZ + IVSZ); + memset(rs_buf, 0, KEYSZ + IVSZ); + rs_have = sizeof(rs_buf) - KEYSZ - IVSZ; } #ifdef notdef @@ -170,17 +158,16 @@ _rs_stir_if_needed(n); while (n > 0) { - if (rs->rs_have > 0) { - m = minimum(n, rs->rs_have); - keystream = rsx->rs_buf + sizeof(rsx->rs_buf) - - rs->rs_have; + if (rs_have > 0) { + m = minimum(n, rs_have); + keystream = rs_buf + sizeof(rs_buf) - rs_have; memcpy(buf, keystream, m); memset(keystream, 0, m); buf += m; n -= m; - rs->rs_have -= m; + rs_have -= m; } - if (rs->rs_have == 0) + if (rs_have == 0) _rs_rekey(NULL, 0); } } @@ -192,12 +179,12 @@ unsigned char *keystream; _rs_stir_if_needed(sizeof(*val)); - if (rs->rs_have < sizeof(*val)) + if (rs_have < sizeof(*val)) _rs_rekey(NULL, 0); - keystream = rsx->rs_buf + sizeof(rsx->rs_buf) - rs->rs_have; + keystream = rs_buf + sizeof(rs_buf) - rs_have; memcpy(val, keystream, sizeof(*val)); memset(keystream, 0, sizeof(*val)); - rs->rs_have -= sizeof(*val); + rs_have -= sizeof(*val); } uint32_t diff -Nru sudo-1.8.29/lib/util/arc4random.h sudo-1.8.31/lib/util/arc4random.h --- sudo-1.8.29/lib/util/arc4random.h 2019-10-28 12:27:38.000000000 +0000 +++ sudo-1.8.31/lib/util/arc4random.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,109 +0,0 @@ -/* $OpenBSD: arc4random.h,v 1.4 2015/01/15 06:57:18 deraadt Exp $ */ - -/* - * SPDX-License-Identifier: ISC - * - * Copyright (c) 1996, David Mazieres - * Copyright (c) 2008, Damien Miller - * Copyright (c) 2013, Markus Friedl - * Copyright (c) 2014, Theo de Raadt - * - * 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. - */ - -/* - * Stub functions for portability. - */ - -#include - -#include -#ifdef HAVE_PTHREAD_H -#include - -static pthread_mutex_t arc4random_mtx = PTHREAD_MUTEX_INITIALIZER; -#define _ARC4_LOCK() pthread_mutex_lock(&arc4random_mtx) -#define _ARC4_UNLOCK() pthread_mutex_unlock(&arc4random_mtx) -#else -#define _ARC4_LOCK() -#define _ARC4_UNLOCK() -#endif /* HAVE_PTHREAD_H */ - -#ifdef HAVE_PTHREAD_ATFORK -# define _ARC4_ATFORK(f) pthread_atfork(NULL, NULL, (f)) -# else -# define _ARC4_ATFORK(f) -#endif - -#if !defined(MAP_ANON) && defined(MAP_ANONYMOUS) -# define MAP_ANON MAP_ANONYMOUS -#endif - -static inline void -_getentropy_fail(void) -{ - raise(SIGKILL); -} - -static volatile sig_atomic_t _rs_forked; - -#ifdef HAVE_PTHREAD_ATFORK -static inline void -_rs_forkhandler(void) -{ - _rs_forked = 1; -} -#endif /* HAVE_PTHREAD_ATFORK */ - -static int wipeonfork; - -static inline void -_rs_forkdetect(void) -{ - if (!wipeonfork) { - static pid_t _rs_pid = 0; - pid_t pid = getpid(); - - if (_rs_pid == 0 || _rs_pid != pid || _rs_forked) { - _rs_pid = pid; - _rs_forked = 0; - if (rs) - memset(rs, 0, sizeof(*rs)); - } - } -} - -static inline int -_rs_allocate(struct _rs **rsp, struct _rsx **rsxp) -{ - if ((*rsp = (void *)mmap(NULL, sizeof(**rsp), PROT_READ|PROT_WRITE, - MAP_ANON|MAP_PRIVATE, -1, 0)) == MAP_FAILED) - return (-1); - - if ((*rsxp = (void *)mmap(NULL, sizeof(**rsxp), PROT_READ|PROT_WRITE, - MAP_ANON|MAP_PRIVATE, -1, 0)) == MAP_FAILED) { - munmap((void *)*rsp, sizeof(**rsp)); - *rsp = NULL; - return (-1); - } - -#ifdef MADV_WIPEONFORK - if (madvise (*rsp, sizeof(**rsp), MADV_WIPEONFORK) == 0 && - madvise (*rsxp, sizeof(**rsxp), MADV_WIPEONFORK) == 0) { - wipeonfork = 1; - } -#endif - - _ARC4_ATFORK(_rs_forkhandler); - return (0); -} diff -Nru sudo-1.8.29/lib/util/getentropy.c sudo-1.8.31/lib/util/getentropy.c --- sudo-1.8.29/lib/util/getentropy.c 2019-10-28 12:27:38.000000000 +0000 +++ sudo-1.8.31/lib/util/getentropy.c 2020-01-28 16:49:20.000000000 +0000 @@ -100,6 +100,22 @@ static int getentropy_phdr(struct dl_phdr_info *info, size_t size, void *data); #endif +static void * +mmap_anon(void *addr, size_t len, int prot, int flags, off_t offset) +{ +#ifdef MAP_ANON + return mmap(addr, len, prot, flags | MAP_ANON, -1, offset); +#else + int fd; + + if ((fd = open("/dev/zero", O_RDWR)) == -1) + return MAP_FAILED; + addr = mmap(addr, len, prot, flags, fd, offset); + close(fd); + return addr; +#endif +} + int sudo_getentropy(void *buf, size_t len) { @@ -470,10 +486,10 @@ }; for (m = 0; m < sizeof mm/sizeof(mm[0]); m++) { - HX(mm[m].p = mmap(NULL, + HX(mm[m].p = mmap_anon(NULL, mm[m].npg * pgs, PROT_READ|PROT_WRITE, - MAP_PRIVATE|MAP_ANON, -1, + MAP_PRIVATE, (off_t)0), mm[m].p); if (mm[m].p != MAP_FAILED) { size_t mo; diff -Nru sudo-1.8.29/lib/util/getusershell.c sudo-1.8.31/lib/util/getusershell.c --- sudo-1.8.29/lib/util/getusershell.c 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.8.31/lib/util/getusershell.c 2019-12-10 13:09:55.000000000 +0000 @@ -0,0 +1,138 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2019 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. + */ + +/* + * This is an open source non-commercial project. Dear PVS-Studio, please check it. + * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com + */ + +#include + +#include + +#include +#include +#include +#include +#include + +#define DEFAULT_TEXT_DOMAIN "sudo" +#include "sudo_gettext.h" /* must be included before sudo_compat.h */ + +#include "sudo_compat.h" +#include "sudo_debug.h" +#include "sudo_util.h" + +static char **allowed_shells, **current_shell; +static char *default_shells[] = { + "/bin/sh", + "/bin/ksh", + "/bin/ksh93", + "/bin/bash", + "/bin/dash", + "/bin/zsh", + "/bin/csh", + "/bin/tcsh", + NULL +}; + +static char ** +read_shells(void) +{ + size_t maxshells = 16, nshells = 0; + size_t linesize = 0; + char *line = NULL; + FILE *fp; + debug_decl(read_shells, SUDO_DEBUG_UTIL) + + if ((fp = fopen("/etc/shells", "r")) == NULL) + goto bad; + + free(allowed_shells); + allowed_shells = reallocarray(NULL, maxshells, sizeof(char *)); + if (allowed_shells == NULL) + goto bad; + + while (sudo_parseln(&line, &linesize, NULL, fp, PARSELN_CONT_IGN) != -1) { + if (nshells + 1 >= maxshells) { + char **new_shells; + + new_shells = reallocarray(NULL, maxshells + 16, sizeof(char *)); + if (new_shells == NULL) + goto bad; + allowed_shells = new_shells; + maxshells += 16; + } + if ((allowed_shells[nshells] = strdup(line)) == NULL) + goto bad; + nshells++; + } + allowed_shells[nshells] = NULL; + + free(line); + fclose(fp); + debug_return_ptr(allowed_shells); +bad: + free(line); + if (fp != NULL) + fclose(fp); + while (nshells != 0) + free(allowed_shells[--nshells]); + free(allowed_shells); + allowed_shells = NULL; + debug_return_ptr(default_shells); +} + +void +sudo_setusershell(void) +{ + debug_decl(setusershell, SUDO_DEBUG_UTIL) + + current_shell = read_shells(); + + debug_return; +} + +void +sudo_endusershell(void) +{ + debug_decl(endusershell, SUDO_DEBUG_UTIL) + + if (allowed_shells != NULL) { + char **shell; + + for (shell = allowed_shells; *shell != NULL; shell++) + free(*shell); + free(allowed_shells); + allowed_shells = NULL; + } + current_shell = NULL; + + debug_return; +} + +char * +sudo_getusershell(void) +{ + debug_decl(getusershell, SUDO_DEBUG_UTIL) + + if (current_shell == NULL) + current_shell = read_shells(); + + debug_return_str(*current_shell++); +} diff -Nru sudo-1.8.29/lib/util/Makefile.in sudo-1.8.31/lib/util/Makefile.in --- sudo-1.8.29/lib/util/Makefile.in 2019-10-28 12:28:53.000000000 +0000 +++ sudo-1.8.31/lib/util/Makefile.in 2020-01-28 16:49:16.000000000 +0000 @@ -431,12 +431,12 @@ aix.plog: aix.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/aix.c --i-file $< --output-file $@ arc4random.lo: $(srcdir)/arc4random.c $(incdir)/sudo_compat.h \ - $(incdir)/sudo_rand.h $(srcdir)/arc4random.h \ - $(srcdir)/chacha_private.h $(top_builddir)/config.h + $(incdir)/sudo_rand.h $(srcdir)/chacha_private.h \ + $(top_builddir)/config.h $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/arc4random.c arc4random.i: $(srcdir)/arc4random.c $(incdir)/sudo_compat.h \ - $(incdir)/sudo_rand.h $(srcdir)/arc4random.h \ - $(srcdir)/chacha_private.h $(top_builddir)/config.h + $(incdir)/sudo_rand.h $(srcdir)/chacha_private.h \ + $(top_builddir)/config.h $(CC) -E -o $@ $(CPPFLAGS) $< arc4random.plog: arc4random.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/arc4random.c --i-file $< --output-file $@ @@ -678,6 +678,18 @@ $(CC) -E -o $@ $(CPPFLAGS) $< gettime.plog: gettime.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/gettime.c --i-file $< --output-file $@ +getusershell.lo: $(srcdir)/getusershell.c $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_util.h $(top_builddir)/config.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/getusershell.c +getusershell.i: $(srcdir)/getusershell.c $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_util.h $(top_builddir)/config.h + $(CC) -E -o $@ $(CPPFLAGS) $< +getusershell.plog: getusershell.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/getusershell.c --i-file $< --output-file $@ gidlist.lo: $(srcdir)/gidlist.c $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ diff -Nru sudo-1.8.29/lib/util/sig2str.c sudo-1.8.31/lib/util/sig2str.c --- sudo-1.8.29/lib/util/sig2str.c 2019-10-28 12:27:38.000000000 +0000 +++ sudo-1.8.31/lib/util/sig2str.c 2019-12-25 19:19:11.000000000 +0000 @@ -65,7 +65,11 @@ #if defined(SIGRTMIN) && defined(SIGRTMAX) /* Realtime signal support. */ if (signo >= SIGRTMIN && signo <= SIGRTMAX) { +# ifdef _SC_RTSIG_MAX const long rtmax = sysconf(_SC_RTSIG_MAX); +# else + const long rtmax = SIGRTMAX - SIGRTMIN; +# endif if (rtmax > 0) { if (signo == SIGRTMIN) { strlcpy(signame, "RTMIN", SIG2STR_MAX); diff -Nru sudo-1.8.29/lib/util/str2sig.c sudo-1.8.31/lib/util/str2sig.c --- sudo-1.8.29/lib/util/str2sig.c 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/lib/util/str2sig.c 2019-12-25 19:19:11.000000000 +0000 @@ -113,7 +113,11 @@ } if (signame[5] == '+') { if (isdigit((unsigned char)signame[6])) { +# ifdef _SC_RTSIG_MAX const long rtmax = sysconf(_SC_RTSIG_MAX); +# else + const long rtmax = SIGRTMAX - SIGRTMIN; +# endif const int off = signame[6] - '0'; if (rtmax > 0 && off < rtmax / 2) { @@ -132,7 +136,11 @@ } if (signame[5] == '-') { if (isdigit((unsigned char)signame[6])) { +# ifdef _SC_RTSIG_MAX const long rtmax = sysconf(_SC_RTSIG_MAX); +# else + const long rtmax = SIGRTMAX - SIGRTMIN; +# endif const int off = signame[6] - '0'; if (rtmax > 0 && off < rtmax / 2) { diff -Nru sudo-1.8.29/MANIFEST sudo-1.8.31/MANIFEST --- sudo-1.8.29/MANIFEST 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/MANIFEST 2020-01-28 16:49:16.000000000 +0000 @@ -83,7 +83,6 @@ lib/util/Makefile.in lib/util/aix.c lib/util/arc4random.c -lib/util/arc4random.h lib/util/arc4random_uniform.c lib/util/chacha_private.h lib/util/closefrom.c @@ -103,6 +102,7 @@ lib/util/gethostname.c lib/util/getopt_long.c lib/util/gettime.c +lib/util/getusershell.c lib/util/gidlist.c lib/util/glob.c lib/util/inet_ntop.c diff -Nru sudo-1.8.29/mkdep.pl sudo-1.8.31/mkdep.pl --- sudo-1.8.29/mkdep.pl 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/mkdep.pl 2019-12-10 13:11:01.000000000 +0000 @@ -116,7 +116,7 @@ # XXX - fill in AUTH_OBJS from contents of the auth dir instead $makefile =~ s:\@AUTH_OBJS\@:afs.lo aix_auth.lo bsdauth.lo dce.lo fwtk.lo getspwuid.lo kerb5.lo pam.lo passwd.lo rfc1938.lo secureware.lo securid5.lo sia.lo:; $makefile =~ s:\@DIGEST\@:digest.lo digest_openssl.lo digest_gcrypt.lo:; - $makefile =~ s:\@LTLIBOBJS\@:arc4random.lo arc4random_uniform.lo closefrom.lo fnmatch.lo getaddrinfo.lo getcwd.lo getentropy.lo getgrouplist.lo getdelim.lo getopt_long.lo glob.lo inet_ntop_lo inet_pton.lo isblank.lo memrchr.lo memset_s.lo mksiglist.lo mksigname.lo mktemp.lo nanosleep.lo pw_dup.lo reallocarray.lo sha2.lo sig2str.lo siglist.lo signame.lo snprintf.lo str2sig.lo strlcat.lo strlcpy.lo strndup.lo strnlen.lo strsignal.lo utimens.lo vsyslog.lo pipe2.lo:; + $makefile =~ s:\@LTLIBOBJS\@:arc4random.lo arc4random_uniform.lo closefrom.lo fnmatch.lo getaddrinfo.lo getcwd.lo getentropy.lo getgrouplist.lo getdelim.lo getopt_long.lo getusershell.lo glob.lo inet_ntop_lo inet_pton.lo isblank.lo memrchr.lo memset_s.lo mksiglist.lo mksigname.lo mktemp.lo nanosleep.lo pw_dup.lo reallocarray.lo sha2.lo sig2str.lo siglist.lo signame.lo snprintf.lo str2sig.lo strlcat.lo strlcpy.lo strndup.lo strnlen.lo strsignal.lo utimens.lo vsyslog.lo pipe2.lo:; # Parse OBJS lines my %objs; diff -Nru sudo-1.8.29/NEWS sudo-1.8.31/NEWS --- sudo-1.8.29/NEWS 2019-10-28 12:29:11.000000000 +0000 +++ sudo-1.8.31/NEWS 2020-01-30 12:51:46.000000000 +0000 @@ -1,3 +1,71 @@ +What's new in Sudo 1.8.31 + + * Fixed CVE-2019-18634, a buffer overflow when the "pwfeedback" + sudoers option is enabled on systems with uni-directional pipes. + + * The "sudoedit_checkdir" option now treats a user-owned directory + as writable, even if it does not have the write bit set at the + time of check. Symbolic links will no longer be followed by + sudoedit in any user-owned directory. Bug #912 + + * Fixed sudoedit on macOS 10.15 and above where the root file system + is mounted read-only. Bug #913. + + * Fixed a crash introduced in sudo 1.8.30 when suspending sudo + at the password prompt. Bug #914. + + * Fixed compilation on systems where the mmap MAP_ANON flag + is not available. Bug #915. + +What's new in Sudo 1.8.30 + + * Fixed a warning on macOS introduced in sudo 1.8.29 when sudo + attempts to set the open file limit to unlimited. Bug #904. + + * Sudo now closes file descriptors before changing uids. This + prevents a non-root process from interfering with sudo's ability + to close file descriptors on systems that support the prlimit(2) + system call. + + * Sudo now treats an attempt to run "sudo sudoedit" as simply + "sudoedit". If the sudoers file contains a fully-qualified path + to sudoedit, sudo will now treat it simply as "sudoedit" (with + no path). Visudo will will now treat a fully-qualified path + to sudoedit as an error. Bug #871. + + * Fixed a bug introduced in sudo 1.8.28 where sudo would warn about + a missing /etc/environment file on AIX and Linux when PAM is not + enabled. Bug #907 + + * Fixed a bug on Linux introduced in sudo 1.8.29 that prevented + the askpass program from running due to an unlimited stack size + resource limit. Bug #908. + + * If a group provider plugin has optional arguments, the argument list + passed to the plugin is now NULL terminated as per the documentation. + + * The user's time stamp file is now only updated if both authentication + and approval phases succeed. This is consistent with the behavior + of sudo prior to version 1.8.23. Bug #910 + + * The new allow_unknown_runas_id sudoers setting can be used to + enable or disable the use of unknown user or group IDs. Previously, + sudo would always allow unknown user or group IDs if the sudoers + entry permitted it, including via the "ALL" alias. As of sudo + 1.8.30, the admin must explicitly enable support for unknown IDs. + + * The new runas_check_shell sudoers setting can be used to require + that the runas user have a shell listed in the /etc/shells file. + On many systems, users such as "bin", do not have a valid shell + and this flag can be used to prevent commands from being run as + those users. + + * Fixed a problem restoring the SELinux tty context during reboot + if mctransd is killed before sudo finishes. GitHub Issue #17. + + * Fixed an intermittent warning on NetBSD when sudo restores the + initial stack size limit. + What's new in Sudo 1.8.29 * The cvtsudoers command will now reject non-LDIF input when converting diff -Nru sudo-1.8.29/plugins/group_file/plugin_test.c sudo-1.8.31/plugins/group_file/plugin_test.c --- sudo-1.8.29/plugins/group_file/plugin_test.c 2019-10-28 12:27:38.000000000 +0000 +++ sudo-1.8.31/plugins/group_file/plugin_test.c 2019-11-19 19:49:25.000000000 +0000 @@ -122,7 +122,7 @@ */ if (args != NULL) { int ac = 0, wasblank = 1; - char *cp; + char *cp, *last; for (cp = args; *cp != '\0'; cp++) { if (isblank((unsigned char)*cp)) { @@ -133,16 +133,18 @@ } } if (ac != 0) { - char *last; - - argv = malloc(ac * sizeof(char *)); + argv = malloc((ac + 1) * sizeof(char *)); if (argv == NULL) { perror(NULL); return -1; } ac = 0; - for ((cp = strtok_r(args, " \t", &last)); cp != NULL; (cp = strtok_r(NULL, " \t", &last))) + cp = strtok_r(args, " \t", &last); + while (cp != NULL) { argv[ac++] = cp; + cp = strtok_r(NULL, " \t", &last); + } + argv[ac] = NULL; } } diff -Nru sudo-1.8.29/plugins/sudoers/check.c sudo-1.8.31/plugins/sudoers/check.c --- sudo-1.8.29/plugins/sudoers/check.c 2019-10-28 12:27:45.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/check.c 2020-01-24 18:16:25.000000000 +0000 @@ -51,6 +51,7 @@ static struct passwd *get_authpw(int); struct getpass_closure { + int tstat; void *cookie; struct passwd *auth_pw; }; @@ -89,38 +90,31 @@ * or -1 on fatal error. */ static int -check_user_interactive(int validated, int mode, struct passwd *auth_pw) +check_user_interactive(int validated, int mode, struct getpass_closure *closure) { struct sudo_conv_callback cb, *callback = NULL; - struct getpass_closure closure; - int status = TS_ERROR; int ret = -1; char *prompt; bool lectured; debug_decl(check_user_interactive, SUDOERS_DEBUG_AUTH) - /* Setup closure for getpass_{suspend,resume} */ - closure.auth_pw = auth_pw; - closure.cookie = NULL; - sudo_pw_addref(closure.auth_pw); - /* Open, lock and read time stamp file if we are using it. */ if (!ISSET(mode, MODE_IGNORE_TICKET)) { /* Open time stamp file and check its status. */ - closure.cookie = timestamp_open(user_name, user_sid); - if (timestamp_lock(closure.cookie, closure.auth_pw)) - status = timestamp_status(closure.cookie, closure.auth_pw); + closure->cookie = timestamp_open(user_name, user_sid); + if (timestamp_lock(closure->cookie, closure->auth_pw)) + closure->tstat = timestamp_status(closure->cookie, closure->auth_pw); /* Construct callback for getpass function. */ memset(&cb, 0, sizeof(cb)); cb.version = SUDO_CONV_CALLBACK_VERSION; - cb.closure = &closure; + cb.closure = closure; cb.on_suspend = getpass_suspend; cb.on_resume = getpass_resume; callback = &cb; } - switch (status) { + switch (closure->tstat) { case TS_FATAL: /* Fatal error (usually setuid failure), unsafe to proceed. */ goto done; @@ -144,32 +138,22 @@ } /* XXX - should not lecture if askpass helper is being used. */ - lectured = display_lecture(status); + lectured = display_lecture(closure->tstat); /* Expand any escapes in the prompt. */ prompt = expand_prompt(user_prompt ? user_prompt : def_passprompt, - closure.auth_pw->pw_name); + closure->auth_pw->pw_name); if (prompt == NULL) goto done; - ret = verify_user(closure.auth_pw, prompt, validated, callback); + ret = verify_user(closure->auth_pw, prompt, validated, callback); if (ret == true && lectured) (void)set_lectured(); /* lecture error not fatal */ free(prompt); break; } - /* - * Only update time stamp if user was validated. - * Failure to update the time stamp is not a fatal error. - */ - if (ret == true && ISSET(validated, VALIDATE_SUCCESS) && status != TS_ERROR) - (void)timestamp_update(closure.cookie, closure.auth_pw); done: - if (closure.cookie != NULL) - timestamp_close(closure.cookie); - sudo_pw_delref(closure.auth_pw); - debug_return_int(ret); } @@ -180,7 +164,7 @@ int check_user(int validated, int mode) { - struct passwd *auth_pw; + struct getpass_closure closure = { TS_ERROR }; int ret = -1; bool exempt = false; debug_decl(check_user, SUDOERS_DEBUG_AUTH) @@ -189,9 +173,9 @@ * Init authentication system regardless of whether we need a password. * Required for proper PAM session support. */ - if ((auth_pw = get_authpw(mode)) == NULL) + if ((closure.auth_pw = get_authpw(mode)) == NULL) goto done; - if (sudo_auth_init(auth_pw) == -1) + if (sudo_auth_init(closure.auth_pw) == -1) goto done; /* @@ -222,15 +206,26 @@ } } - ret = check_user_interactive(validated, mode, auth_pw); + ret = check_user_interactive(validated, mode, &closure); done: if (ret == true) { /* The approval function may disallow a user post-authentication. */ - ret = sudo_auth_approval(auth_pw, validated, exempt); + ret = sudo_auth_approval(closure.auth_pw, validated, exempt); + + /* + * Only update time stamp if user validated and was approved. + * Failure to update the time stamp is not a fatal error. + */ + if (ret == true && closure.tstat != TS_ERROR) { + if (ISSET(validated, VALIDATE_SUCCESS)) + (void)timestamp_update(closure.cookie, closure.auth_pw); + } } - sudo_auth_cleanup(auth_pw); - sudo_pw_delref(auth_pw); + timestamp_close(closure.cookie); + sudo_auth_cleanup(closure.auth_pw); + if (closure.auth_pw != NULL) + sudo_pw_delref(closure.auth_pw); debug_return_int(ret); } @@ -333,3 +328,28 @@ debug_return_ptr(pw); } + +/* + * Returns true if the specified shell is allowed by /etc/shells, else false. + */ +bool +check_user_shell(const struct passwd *pw) +{ + const char *shell; + debug_decl(check_user_shell, SUDOERS_DEBUG_AUTH) + + if (!def_runas_check_shell) + debug_return_bool(true); + + sudo_debug_printf(SUDO_DEBUG_INFO, + "%s: checking /etc/shells for %s", __func__, pw->pw_shell); + + setusershell(); + while ((shell = getusershell()) != NULL) { + if (strcmp(shell, pw->pw_shell) == 0) + debug_return_bool(true); + } + endusershell(); + + debug_return_bool(false); +} diff -Nru sudo-1.8.29/plugins/sudoers/cvtsudoers.c sudo-1.8.31/plugins/sudoers/cvtsudoers.c --- sudo-1.8.29/plugins/sudoers/cvtsudoers.c 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/cvtsudoers.c 2019-11-06 16:36:20.000000000 +0000 @@ -637,7 +637,7 @@ input_file = "stdin"; } else if ((sudoersin = fopen(input_file, "r")) == NULL) sudo_fatal(U_("unable to open %s"), input_file); - init_parser(input_file, false); + init_parser(input_file, false, true); if (sudoersparse() && !parse_error) { sudo_warnx(U_("failed to parse %s file, unknown error"), input_file); parse_error = true; diff -Nru sudo-1.8.29/plugins/sudoers/defaults.c sudo-1.8.31/plugins/sudoers/defaults.c --- sudo-1.8.29/plugins/sudoers/defaults.c 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/defaults.c 2019-12-10 13:07:53.000000000 +0000 @@ -578,6 +578,7 @@ def_fdexec = digest_only; def_log_allowed = true; def_log_denied = true; + def_runas_allow_unknown_id = false; /* Syslog options need special care since they both strings and ints */ #if (LOGGING & SLOG_SYSLOG) diff -Nru sudo-1.8.29/plugins/sudoers/def_data.c sudo-1.8.31/plugins/sudoers/def_data.c --- sudo-1.8.29/plugins/sudoers/def_data.c 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/def_data.c 2019-12-26 21:10:15.000000000 +0000 @@ -506,6 +506,14 @@ N_("Log when a command is denied by sudoers"), NULL, }, { + "runas_allow_unknown_id", T_FLAG, + N_("Allow the use of unknown runas user and/or group ID"), + NULL, + }, { + "runas_check_shell", T_FLAG, + N_("Only permit running commands as a user with a valid shell"), + NULL, + }, { NULL, 0, NULL } }; diff -Nru sudo-1.8.29/plugins/sudoers/def_data.h sudo-1.8.31/plugins/sudoers/def_data.h --- sudo-1.8.29/plugins/sudoers/def_data.h 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/def_data.h 2019-12-26 21:10:15.000000000 +0000 @@ -232,6 +232,10 @@ #define def_log_allowed (sudo_defs_table[I_LOG_ALLOWED].sd_un.flag) #define I_LOG_DENIED 116 #define def_log_denied (sudo_defs_table[I_LOG_DENIED].sd_un.flag) +#define I_RUNAS_ALLOW_UNKNOWN_ID 117 +#define def_runas_allow_unknown_id (sudo_defs_table[I_RUNAS_ALLOW_UNKNOWN_ID].sd_un.flag) +#define I_RUNAS_CHECK_SHELL 118 +#define def_runas_check_shell (sudo_defs_table[I_RUNAS_CHECK_SHELL].sd_un.flag) enum def_tuple { never, diff -Nru sudo-1.8.29/plugins/sudoers/def_data.in sudo-1.8.31/plugins/sudoers/def_data.in --- sudo-1.8.29/plugins/sudoers/def_data.in 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/def_data.in 2019-12-10 13:09:55.000000000 +0000 @@ -366,3 +366,10 @@ log_denied T_FLAG "Log when a command is denied by sudoers" +runas_allow_unknown_id + T_FLAG + "Allow the use of unknown runas user and/or group ID" +runas_check_shell + T_FLAG + "Only permit running commands as a user with a valid shell" + diff -Nru sudo-1.8.29/plugins/sudoers/env.c sudo-1.8.31/plugins/sudoers/env.c --- sudo-1.8.29/plugins/sudoers/env.c 2019-10-28 12:27:45.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/env.c 2019-11-06 16:56:20.000000000 +0000 @@ -940,7 +940,8 @@ #endif /* HAVE_LOGIN_CAP_H */ #if defined(_AIX) || (defined(__linux__) && !defined(HAVE_PAM)) /* Insert system-wide environment variables. */ - read_env_file(_PATH_ENVIRONMENT, true, false); + if (!read_env_file(_PATH_ENVIRONMENT, true, false)) + sudo_warn("%s", _PATH_ENVIRONMENT); #endif for (ep = env.envp; *ep; ep++) env_update_didvar(*ep, &didvar); @@ -1218,8 +1219,10 @@ efl = calloc(1, sizeof(*efl)); if (efl != NULL) { if ((efl->fp = fopen(path, "r")) == NULL) { - free(efl); - efl = NULL; + if (errno != ENOENT) { + free(efl); + efl = NULL; + } } } debug_return_ptr(efl); @@ -1259,6 +1262,9 @@ debug_decl(env_file_next_local, SUDOERS_DEBUG_ENV) *errnum = 0; + if (efl->fp == NULL) + debug_return_ptr(NULL); + for (;;) { if (sudo_parseln(&efl->line, &efl->linesize, NULL, efl->fp, PARSELN_CONT_IGN) == -1) { if (!feof(efl->fp)) diff -Nru sudo-1.8.29/plugins/sudoers/gram.c sudo-1.8.31/plugins/sudoers/gram.c --- sudo-1.8.29/plugins/sudoers/gram.c 2019-10-28 12:27:38.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/gram.c 2019-11-06 16:36:20.000000000 +0000 @@ -99,6 +99,7 @@ * Globals */ bool sudoers_warnings = true; +bool sudoers_strict = false; bool parse_error = false; int errorlineno = -1; char *errorfile = NULL; @@ -120,7 +121,7 @@ static struct defaults *new_default(char *, char *, short); static struct member *new_member(char *, int); static struct command_digest *new_digest(int, char *); -#line 82 "gram.y" +#line 83 "gram.y" #ifndef YYSTYPE_DEFINED #define YYSTYPE_DEFINED typedef union { @@ -137,7 +138,7 @@ int tok; } YYSTYPE; #endif /* YYSTYPE_DEFINED */ -#line 135 "gram.c" +#line 136 "gram.c" #define COMMAND 257 #define ALIAS 258 #define DEFVAR 259 @@ -677,7 +678,7 @@ YYSTYPE *yyvs; unsigned int yystacksize; int yyparse(void); -#line 910 "gram.y" +#line 911 "gram.y" void sudoerserror(const char *s) { @@ -1060,7 +1061,7 @@ * the current sudoers file to path. */ bool -init_parser(const char *path, bool quiet) +init_parser(const char *path, bool quiet, bool strict) { bool ret = true; debug_decl(init_parser, SUDOERS_DEBUG_PARSER) @@ -1083,6 +1084,7 @@ rcstr_delref(errorfile); errorfile = NULL; sudoers_warnings = !quiet; + sudoers_strict = strict; debug_return_bool(ret); } @@ -1105,7 +1107,7 @@ opts->limitprivs = NULL; #endif } -#line 1051 "gram.c" +#line 1053 "gram.c" /* allocate initial stack or double stack size, up to YYMAXDEPTH */ #if defined(__cplusplus) || defined(__STDC__) static int yygrowstack(void) @@ -1314,23 +1316,23 @@ switch (yyn) { case 1: -#line 180 "gram.y" +#line 181 "gram.y" { ; } break; case 5: -#line 188 "gram.y" +#line 189 "gram.y" { ; } break; case 6: -#line 191 "gram.y" +#line 192 "gram.y" { yyerrok; } break; case 7: -#line 194 "gram.y" +#line 195 "gram.y" { if (!add_userspec(yyvsp[-1].member, yyvsp[0].privilege)) { sudoerserror(N_("unable to allocate memory")); @@ -1339,73 +1341,73 @@ } break; case 8: -#line 200 "gram.y" +#line 201 "gram.y" { ; } break; case 9: -#line 203 "gram.y" +#line 204 "gram.y" { ; } break; case 10: -#line 206 "gram.y" +#line 207 "gram.y" { ; } break; case 11: -#line 209 "gram.y" +#line 210 "gram.y" { ; } break; case 12: -#line 212 "gram.y" +#line 213 "gram.y" { if (!add_defaults(DEFAULTS, NULL, yyvsp[0].defaults)) YYERROR; } break; case 13: -#line 216 "gram.y" +#line 217 "gram.y" { if (!add_defaults(DEFAULTS_USER, yyvsp[-1].member, yyvsp[0].defaults)) YYERROR; } break; case 14: -#line 220 "gram.y" +#line 221 "gram.y" { if (!add_defaults(DEFAULTS_RUNAS, yyvsp[-1].member, yyvsp[0].defaults)) YYERROR; } break; case 15: -#line 224 "gram.y" +#line 225 "gram.y" { if (!add_defaults(DEFAULTS_HOST, yyvsp[-1].member, yyvsp[0].defaults)) YYERROR; } break; case 16: -#line 228 "gram.y" +#line 229 "gram.y" { if (!add_defaults(DEFAULTS_CMND, yyvsp[-1].member, yyvsp[0].defaults)) YYERROR; } break; case 18: -#line 235 "gram.y" +#line 236 "gram.y" { HLTQ_CONCAT(yyvsp[-2].defaults, yyvsp[0].defaults, entries); yyval.defaults = yyvsp[-2].defaults; } break; case 19: -#line 241 "gram.y" +#line 242 "gram.y" { yyval.defaults = new_default(yyvsp[0].string, NULL, true); if (yyval.defaults == NULL) { @@ -1415,7 +1417,7 @@ } break; case 20: -#line 248 "gram.y" +#line 249 "gram.y" { yyval.defaults = new_default(yyvsp[0].string, NULL, false); if (yyval.defaults == NULL) { @@ -1425,7 +1427,7 @@ } break; case 21: -#line 255 "gram.y" +#line 256 "gram.y" { yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, true); if (yyval.defaults == NULL) { @@ -1435,7 +1437,7 @@ } break; case 22: -#line 262 "gram.y" +#line 263 "gram.y" { yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '+'); if (yyval.defaults == NULL) { @@ -1445,7 +1447,7 @@ } break; case 23: -#line 269 "gram.y" +#line 270 "gram.y" { yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '-'); if (yyval.defaults == NULL) { @@ -1455,14 +1457,14 @@ } break; case 25: -#line 279 "gram.y" +#line 280 "gram.y" { HLTQ_CONCAT(yyvsp[-2].privilege, yyvsp[0].privilege, entries); yyval.privilege = yyvsp[-2].privilege; } break; case 26: -#line 285 "gram.y" +#line 286 "gram.y" { struct privilege *p = calloc(1, sizeof(*p)); if (p == NULL) { @@ -1477,21 +1479,21 @@ } break; case 27: -#line 299 "gram.y" +#line 300 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = false; } break; case 28: -#line 303 "gram.y" +#line 304 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = true; } break; case 29: -#line 309 "gram.y" +#line 310 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); if (yyval.member == NULL) { @@ -1501,7 +1503,7 @@ } break; case 30: -#line 316 "gram.y" +#line 317 "gram.y" { yyval.member = new_member(NULL, ALL); if (yyval.member == NULL) { @@ -1511,7 +1513,7 @@ } break; case 31: -#line 323 "gram.y" +#line 324 "gram.y" { yyval.member = new_member(yyvsp[0].string, NETGROUP); if (yyval.member == NULL) { @@ -1521,7 +1523,7 @@ } break; case 32: -#line 330 "gram.y" +#line 331 "gram.y" { yyval.member = new_member(yyvsp[0].string, NTWKADDR); if (yyval.member == NULL) { @@ -1531,7 +1533,7 @@ } break; case 33: -#line 337 "gram.y" +#line 338 "gram.y" { yyval.member = new_member(yyvsp[0].string, WORD); if (yyval.member == NULL) { @@ -1541,7 +1543,7 @@ } break; case 35: -#line 347 "gram.y" +#line 348 "gram.y" { struct cmndspec *prev; prev = HLTQ_LAST(yyvsp[-2].cmndspec, cmndspec, entries); @@ -1595,7 +1597,7 @@ } break; case 36: -#line 400 "gram.y" +#line 401 "gram.y" { struct cmndspec *cs = calloc(1, sizeof(*cs)); if (cs == NULL) { @@ -1649,7 +1651,7 @@ } break; case 37: -#line 453 "gram.y" +#line 454 "gram.y" { yyval.digest = new_digest(SUDO_DIGEST_SHA224, yyvsp[0].string); if (yyval.digest == NULL) { @@ -1659,7 +1661,7 @@ } break; case 38: -#line 460 "gram.y" +#line 461 "gram.y" { yyval.digest = new_digest(SUDO_DIGEST_SHA256, yyvsp[0].string); if (yyval.digest == NULL) { @@ -1669,7 +1671,7 @@ } break; case 39: -#line 467 "gram.y" +#line 468 "gram.y" { yyval.digest = new_digest(SUDO_DIGEST_SHA384, yyvsp[0].string); if (yyval.digest == NULL) { @@ -1679,7 +1681,7 @@ } break; case 40: -#line 474 "gram.y" +#line 475 "gram.y" { yyval.digest = new_digest(SUDO_DIGEST_SHA512, yyvsp[0].string); if (yyval.digest == NULL) { @@ -1689,13 +1691,13 @@ } break; case 41: -#line 483 "gram.y" +#line 484 "gram.y" { yyval.member = yyvsp[0].member; } break; case 42: -#line 486 "gram.y" +#line 487 "gram.y" { if (yyvsp[0].member->type != COMMAND) { sudoerserror(N_("a digest requires a path name")); @@ -1707,75 +1709,75 @@ } break; case 43: -#line 497 "gram.y" +#line 498 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = false; } break; case 44: -#line 501 "gram.y" +#line 502 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = true; } break; case 45: -#line 507 "gram.y" +#line 508 "gram.y" { yyval.string = yyvsp[0].string; } break; case 46: -#line 512 "gram.y" +#line 513 "gram.y" { yyval.string = yyvsp[0].string; } break; case 47: -#line 516 "gram.y" +#line 517 "gram.y" { yyval.string = yyvsp[0].string; } break; case 48: -#line 521 "gram.y" +#line 522 "gram.y" { yyval.string = yyvsp[0].string; } break; case 49: -#line 526 "gram.y" +#line 527 "gram.y" { yyval.string = yyvsp[0].string; } break; case 50: -#line 531 "gram.y" +#line 532 "gram.y" { yyval.string = yyvsp[0].string; } break; case 51: -#line 535 "gram.y" +#line 536 "gram.y" { yyval.string = yyvsp[0].string; } break; case 52: -#line 540 "gram.y" +#line 541 "gram.y" { yyval.runas = NULL; } break; case 53: -#line 543 "gram.y" +#line 544 "gram.y" { yyval.runas = yyvsp[-1].runas; } break; case 54: -#line 548 "gram.y" +#line 549 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas != NULL) { @@ -1793,7 +1795,7 @@ } break; case 55: -#line 563 "gram.y" +#line 564 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas == NULL) { @@ -1805,7 +1807,7 @@ } break; case 56: -#line 572 "gram.y" +#line 573 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas == NULL) { @@ -1817,7 +1819,7 @@ } break; case 57: -#line 581 "gram.y" +#line 582 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas == NULL) { @@ -1829,7 +1831,7 @@ } break; case 58: -#line 590 "gram.y" +#line 591 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas != NULL) { @@ -1847,13 +1849,13 @@ } break; case 59: -#line 607 "gram.y" +#line 608 "gram.y" { init_options(&yyval.options); } break; case 60: -#line 610 "gram.y" +#line 611 "gram.y" { yyval.options.notbefore = parse_gentime(yyvsp[0].string); free(yyvsp[0].string); @@ -1864,7 +1866,7 @@ } break; case 61: -#line 618 "gram.y" +#line 619 "gram.y" { yyval.options.notafter = parse_gentime(yyvsp[0].string); free(yyvsp[0].string); @@ -1875,7 +1877,7 @@ } break; case 62: -#line 626 "gram.y" +#line 627 "gram.y" { yyval.options.timeout = parse_timeout(yyvsp[0].string); free(yyvsp[0].string); @@ -1889,7 +1891,7 @@ } break; case 63: -#line 637 "gram.y" +#line 638 "gram.y" { #ifdef HAVE_SELINUX free(yyval.options.role); @@ -1898,7 +1900,7 @@ } break; case 64: -#line 643 "gram.y" +#line 644 "gram.y" { #ifdef HAVE_SELINUX free(yyval.options.type); @@ -1907,7 +1909,7 @@ } break; case 65: -#line 649 "gram.y" +#line 650 "gram.y" { #ifdef HAVE_PRIV_SET free(yyval.options.privs); @@ -1916,7 +1918,7 @@ } break; case 66: -#line 655 "gram.y" +#line 656 "gram.y" { #ifdef HAVE_PRIV_SET free(yyval.options.limitprivs); @@ -1925,97 +1927,97 @@ } break; case 67: -#line 663 "gram.y" +#line 664 "gram.y" { TAGS_INIT(yyval.tag); } break; case 68: -#line 666 "gram.y" +#line 667 "gram.y" { yyval.tag.nopasswd = true; } break; case 69: -#line 669 "gram.y" +#line 670 "gram.y" { yyval.tag.nopasswd = false; } break; case 70: -#line 672 "gram.y" +#line 673 "gram.y" { yyval.tag.noexec = true; } break; case 71: -#line 675 "gram.y" +#line 676 "gram.y" { yyval.tag.noexec = false; } break; case 72: -#line 678 "gram.y" +#line 679 "gram.y" { yyval.tag.setenv = true; } break; case 73: -#line 681 "gram.y" +#line 682 "gram.y" { yyval.tag.setenv = false; } break; case 74: -#line 684 "gram.y" +#line 685 "gram.y" { yyval.tag.log_input = true; } break; case 75: -#line 687 "gram.y" +#line 688 "gram.y" { yyval.tag.log_input = false; } break; case 76: -#line 690 "gram.y" +#line 691 "gram.y" { yyval.tag.log_output = true; } break; case 77: -#line 693 "gram.y" +#line 694 "gram.y" { yyval.tag.log_output = false; } break; case 78: -#line 696 "gram.y" +#line 697 "gram.y" { yyval.tag.follow = true; } break; case 79: -#line 699 "gram.y" +#line 700 "gram.y" { yyval.tag.follow = false; } break; case 80: -#line 702 "gram.y" +#line 703 "gram.y" { yyval.tag.send_mail = true; } break; case 81: -#line 705 "gram.y" +#line 706 "gram.y" { yyval.tag.send_mail = false; } break; case 82: -#line 710 "gram.y" +#line 711 "gram.y" { yyval.member = new_member(NULL, ALL); if (yyval.member == NULL) { @@ -2025,7 +2027,7 @@ } break; case 83: -#line 717 "gram.y" +#line 718 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); if (yyval.member == NULL) { @@ -2035,7 +2037,7 @@ } break; case 84: -#line 724 "gram.y" +#line 725 "gram.y" { struct sudo_command *c = calloc(1, sizeof(*c)); if (c == NULL) { @@ -2053,7 +2055,7 @@ } break; case 87: -#line 745 "gram.y" +#line 746 "gram.y" { const char *s; s = alias_add(&parsed_policy, yyvsp[-2].string, HOSTALIAS, @@ -2065,14 +2067,14 @@ } break; case 89: -#line 757 "gram.y" +#line 758 "gram.y" { HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries); yyval.member = yyvsp[-2].member; } break; case 92: -#line 767 "gram.y" +#line 768 "gram.y" { const char *s; s = alias_add(&parsed_policy, yyvsp[-2].string, CMNDALIAS, @@ -2084,14 +2086,14 @@ } break; case 94: -#line 779 "gram.y" +#line 780 "gram.y" { HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries); yyval.member = yyvsp[-2].member; } break; case 97: -#line 789 "gram.y" +#line 790 "gram.y" { const char *s; s = alias_add(&parsed_policy, yyvsp[-2].string, RUNASALIAS, @@ -2103,7 +2105,7 @@ } break; case 100: -#line 804 "gram.y" +#line 805 "gram.y" { const char *s; s = alias_add(&parsed_policy, yyvsp[-2].string, USERALIAS, @@ -2115,28 +2117,28 @@ } break; case 102: -#line 816 "gram.y" +#line 817 "gram.y" { HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries); yyval.member = yyvsp[-2].member; } break; case 103: -#line 822 "gram.y" +#line 823 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = false; } break; case 104: -#line 826 "gram.y" +#line 827 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = true; } break; case 105: -#line 832 "gram.y" +#line 833 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); if (yyval.member == NULL) { @@ -2146,7 +2148,7 @@ } break; case 106: -#line 839 "gram.y" +#line 840 "gram.y" { yyval.member = new_member(NULL, ALL); if (yyval.member == NULL) { @@ -2156,7 +2158,7 @@ } break; case 107: -#line 846 "gram.y" +#line 847 "gram.y" { yyval.member = new_member(yyvsp[0].string, NETGROUP); if (yyval.member == NULL) { @@ -2166,7 +2168,7 @@ } break; case 108: -#line 853 "gram.y" +#line 854 "gram.y" { yyval.member = new_member(yyvsp[0].string, USERGROUP); if (yyval.member == NULL) { @@ -2176,7 +2178,7 @@ } break; case 109: -#line 860 "gram.y" +#line 861 "gram.y" { yyval.member = new_member(yyvsp[0].string, WORD); if (yyval.member == NULL) { @@ -2186,28 +2188,28 @@ } break; case 111: -#line 870 "gram.y" +#line 871 "gram.y" { HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries); yyval.member = yyvsp[-2].member; } break; case 112: -#line 876 "gram.y" +#line 877 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = false; } break; case 113: -#line 880 "gram.y" +#line 881 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = true; } break; case 114: -#line 886 "gram.y" +#line 887 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); if (yyval.member == NULL) { @@ -2217,7 +2219,7 @@ } break; case 115: -#line 893 "gram.y" +#line 894 "gram.y" { yyval.member = new_member(NULL, ALL); if (yyval.member == NULL) { @@ -2227,7 +2229,7 @@ } break; case 116: -#line 900 "gram.y" +#line 901 "gram.y" { yyval.member = new_member(yyvsp[0].string, WORD); if (yyval.member == NULL) { @@ -2236,7 +2238,7 @@ } } break; -#line 2182 "gram.c" +#line 2184 "gram.c" } yyssp -= yym; yystate = *yyssp; diff -Nru sudo-1.8.29/plugins/sudoers/gram.y sudo-1.8.31/plugins/sudoers/gram.y --- sudo-1.8.29/plugins/sudoers/gram.y 2019-10-28 12:27:38.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/gram.y 2019-11-06 16:36:20.000000000 +0000 @@ -56,6 +56,7 @@ * Globals */ bool sudoers_warnings = true; +bool sudoers_strict = false; bool parse_error = false; int errorlineno = -1; char *errorfile = NULL; @@ -1289,7 +1290,7 @@ * the current sudoers file to path. */ bool -init_parser(const char *path, bool quiet) +init_parser(const char *path, bool quiet, bool strict) { bool ret = true; debug_decl(init_parser, SUDOERS_DEBUG_PARSER) @@ -1312,6 +1313,7 @@ rcstr_delref(errorfile); errorfile = NULL; sudoers_warnings = !quiet; + sudoers_strict = strict; debug_return_bool(ret); } diff -Nru sudo-1.8.29/plugins/sudoers/group_plugin.c sudo-1.8.31/plugins/sudoers/group_plugin.c --- sudo-1.8.29/plugins/sudoers/group_plugin.c 2019-10-28 12:27:38.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/group_plugin.c 2019-11-19 18:07:15.000000000 +0000 @@ -133,14 +133,19 @@ } } if (ac != 0) { - argv = reallocarray(NULL, ac, sizeof(char *)); + argv = reallocarray(NULL, ac + 1, sizeof(char *)); if (argv == NULL) { - sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); goto done; } ac = 0; - for ((cp = strtok_r(args, " \t", &last)); cp != NULL; (cp = strtok_r(NULL, " \t", &last))) + cp = strtok_r(args, " \t", &last); + while (cp != NULL) { argv[ac++] = cp; + cp = strtok_r(NULL, " \t", &last); + } + argv[ac] = NULL; } } diff -Nru sudo-1.8.29/plugins/sudoers/logging.c sudo-1.8.31/plugins/sudoers/logging.c --- sudo-1.8.29/plugins/sudoers/logging.c 2019-10-28 12:28:53.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/logging.c 2019-12-25 19:19:10.000000000 +0000 @@ -700,7 +700,7 @@ #define MAX_MAILFLAGS 63 static void __attribute__((__noreturn__)) -exec_mailer(int *pfd) +exec_mailer(int pipein) { char *last, *p, *argv[MAX_MAILFLAGS + 1]; char *mflags, *mpath = def_mailerpath; @@ -722,18 +722,18 @@ #endif /* NO_ROOT_MAILER */ debug_decl(exec_mailer, SUDOERS_DEBUG_LOGGING) - /* Set stdin to output side of the pipe */ - if (pfd[0] != STDIN_FILENO) { - if (dup2(pfd[0], STDIN_FILENO) == -1) { - mysyslog(LOG_ERR, _("unable to dup stdin: %m")); - sudo_debug_printf(SUDO_DEBUG_ERROR, - "unable to dup stdin: %s", strerror(errno)); - sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys); - _exit(127); - } - (void) close(pfd[0]); + /* Set stdin to read side of the pipe or clear FD_CLOEXEC */ + if (pipein == STDIN_FILENO) + i = fcntl(pipein, F_SETFD, 0); + else + i = dup2(pipein, STDIN_FILENO); + if (i == -1) { + mysyslog(LOG_ERR, _("unable to dup stdin: %m")); + sudo_debug_printf(SUDO_DEBUG_ERROR, + "unable to dup stdin: %s", strerror(errno)); + sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys); + _exit(127); } - (void) close(pfd[1]); /* Build up an argv based on the mailer path and flags */ if ((mflags = strdup(def_mailerflags)) == NULL) { @@ -851,7 +851,7 @@ /* Close non-debug fds so we don't leak anything. */ closefrom_nodebug(STDERR_FILENO + 1); - if (pipe(pfd) == -1) { + if (pipe2(pfd, O_CLOEXEC) == -1) { mysyslog(LOG_ERR, _("unable to open pipe: %m")); sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to open pipe: %s", strerror(errno)); @@ -870,7 +870,7 @@ break; case 0: /* Child. */ - exec_mailer(pfd); + exec_mailer(pfd[0]); /* NOTREACHED */ } @@ -898,10 +898,10 @@ (void) fputc(*p, mail); } -#ifdef HAVE_NL_LANGINFO +#if defined(HAVE_NL_LANGINFO) && defined(CODESET) if (strcmp(def_sudoers_locale, "C") != 0) (void) fprintf(mail, "\nContent-Type: text/plain; charset=\"%s\"\nContent-Transfer-Encoding: 8bit", nl_langinfo(CODESET)); -#endif /* HAVE_NL_LANGINFO */ +#endif /* HAVE_NL_LANGINFO && CODESET */ if ((timestr = get_timestr(time(NULL), def_log_year)) == NULL) timestr = "invalid date"; diff -Nru sudo-1.8.29/plugins/sudoers/Makefile.in sudo-1.8.31/plugins/sudoers/Makefile.in --- sudo-1.8.29/plugins/sudoers/Makefile.in 2019-10-28 12:28:53.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/Makefile.in 2019-12-25 19:21:05.000000000 +0000 @@ -390,8 +390,10 @@ pre-install: @if test X"$(cross_compiling)" != X"yes" -a X"$(DESTDIR)" = X""; then \ - echo "Checking existing sudoers file for syntax errors."; \ - ./visudo -c -f $(sudoersdir)/sudoers; \ + if test -r $(sudoersdir)/sudoers; then \ + echo "Checking existing sudoers file for syntax errors."; \ + ./visudo -c -f $(sudoersdir)/sudoers; \ + fi; \ fi install: install-plugin install-binaries install-sudoers install-doc diff -Nru sudo-1.8.29/plugins/sudoers/parse.h sudo-1.8.31/plugins/sudoers/parse.h --- sudo-1.8.29/plugins/sudoers/parse.h 2019-10-28 12:27:38.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/parse.h 2019-12-04 19:41:47.000000000 +0000 @@ -290,7 +290,7 @@ /* gram.c */ extern struct sudoers_parse_tree parsed_policy; -bool init_parser(const char *path, bool quiet); +bool init_parser(const char *path, bool quiet, bool strict); void free_member(struct member *m); void free_members(struct member_list *members); void free_privilege(struct privilege *priv); Binary files /tmp/tmpxQuIu2/iFUK1R4uMA/sudo-1.8.29/plugins/sudoers/po/cs.mo and /tmp/tmpxQuIu2/W5KRB4HzHp/sudo-1.8.31/plugins/sudoers/po/cs.mo differ diff -Nru sudo-1.8.29/plugins/sudoers/po/cs.po sudo-1.8.31/plugins/sudoers/po/cs.po --- sudo-1.8.29/plugins/sudoers/po/cs.po 2019-10-28 12:31:06.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/po/cs.po 2019-12-31 12:58:36.000000000 +0000 @@ -8,10 +8,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.8.28b1\n" +"Project-Id-Version: sudoers 1.8.29rc1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2019-07-19 10:39-0600\n" -"PO-Revision-Date: 2019-07-22 17:45+02:00\n" +"POT-Creation-Date: 2019-10-21 19:55-0600\n" +"PO-Revision-Date: 2019-10-28 22:32+01:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -45,16 +45,16 @@ msgid "Sorry, try again." msgstr "Je nám líto, zkuste to znovu." -#: gram.y:194 gram.y:242 gram.y:249 gram.y:256 gram.y:263 gram.y:270 -#: gram.y:286 gram.y:310 gram.y:317 gram.y:324 gram.y:331 gram.y:338 -#: gram.y:401 gram.y:409 gram.y:419 gram.y:452 gram.y:459 gram.y:466 -#: gram.y:473 gram.y:555 gram.y:562 gram.y:571 gram.y:580 gram.y:597 -#: gram.y:709 gram.y:716 gram.y:723 gram.y:731 gram.y:831 gram.y:838 -#: gram.y:845 gram.y:852 gram.y:859 gram.y:885 gram.y:892 gram.y:899 -#: gram.y:1022 gram.y:1296 plugins/sudoers/alias.c:132 +#: gram.y:196 gram.y:244 gram.y:251 gram.y:258 gram.y:265 gram.y:272 +#: gram.y:288 gram.y:312 gram.y:319 gram.y:326 gram.y:333 gram.y:340 +#: gram.y:403 gram.y:412 gram.y:423 gram.y:456 gram.y:463 gram.y:470 +#: gram.y:477 gram.y:559 gram.y:566 gram.y:575 gram.y:584 gram.y:601 +#: gram.y:713 gram.y:720 gram.y:727 gram.y:735 gram.y:835 gram.y:842 +#: gram.y:849 gram.y:856 gram.y:863 gram.y:889 gram.y:896 gram.y:903 +#: gram.y:1026 gram.y:1303 plugins/sudoers/alias.c:132 #: plugins/sudoers/alias.c:139 plugins/sudoers/alias.c:155 #: plugins/sudoers/auth/bsdauth.c:148 plugins/sudoers/auth/kerb5.c:123 -#: plugins/sudoers/auth/kerb5.c:149 plugins/sudoers/auth/pam.c:656 +#: plugins/sudoers/auth/kerb5.c:149 plugins/sudoers/auth/pam.c:670 #: plugins/sudoers/auth/rfc1938.c:116 plugins/sudoers/auth/sia.c:64 #: plugins/sudoers/cvtsudoers.c:124 plugins/sudoers/cvtsudoers.c:165 #: plugins/sudoers/cvtsudoers.c:182 plugins/sudoers/cvtsudoers.c:193 @@ -68,64 +68,64 @@ #: plugins/sudoers/cvtsudoers_ldif.c:334 plugins/sudoers/cvtsudoers_ldif.c:389 #: plugins/sudoers/cvtsudoers_ldif.c:397 plugins/sudoers/cvtsudoers_ldif.c:414 #: plugins/sudoers/cvtsudoers_ldif.c:423 plugins/sudoers/cvtsudoers_ldif.c:570 -#: plugins/sudoers/defaults.c:664 plugins/sudoers/defaults.c:957 -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/editor.c:72 +#: plugins/sudoers/defaults.c:666 plugins/sudoers/defaults.c:959 +#: plugins/sudoers/defaults.c:1130 plugins/sudoers/editor.c:72 #: plugins/sudoers/editor.c:90 plugins/sudoers/editor.c:101 #: plugins/sudoers/env.c:268 plugins/sudoers/filedigest.c:66 #: plugins/sudoers/filedigest.c:82 plugins/sudoers/gc.c:59 #: plugins/sudoers/group_plugin.c:138 plugins/sudoers/interfaces.c:78 -#: plugins/sudoers/iolog.c:941 plugins/sudoers/iolog_path.c:174 -#: plugins/sudoers/iolog_util.c:85 plugins/sudoers/iolog_util.c:124 -#: plugins/sudoers/iolog_util.c:133 plugins/sudoers/iolog_util.c:143 -#: plugins/sudoers/iolog_util.c:151 plugins/sudoers/iolog_util.c:155 +#: plugins/sudoers/iolog.c:943 plugins/sudoers/iolog_path.c:174 +#: plugins/sudoers/iolog_util.c:86 plugins/sudoers/iolog_util.c:125 +#: plugins/sudoers/iolog_util.c:134 plugins/sudoers/iolog_util.c:144 +#: plugins/sudoers/iolog_util.c:152 plugins/sudoers/iolog_util.c:156 #: plugins/sudoers/ldap.c:185 plugins/sudoers/ldap.c:416 #: plugins/sudoers/ldap.c:420 plugins/sudoers/ldap.c:432 #: plugins/sudoers/ldap.c:723 plugins/sudoers/ldap.c:887 -#: plugins/sudoers/ldap.c:1235 plugins/sudoers/ldap.c:1662 -#: plugins/sudoers/ldap.c:1699 plugins/sudoers/ldap.c:1780 -#: plugins/sudoers/ldap.c:1915 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2032 plugins/sudoers/ldap_conf.c:223 +#: plugins/sudoers/ldap.c:1241 plugins/sudoers/ldap.c:1668 +#: plugins/sudoers/ldap.c:1705 plugins/sudoers/ldap.c:1786 +#: plugins/sudoers/ldap.c:1921 plugins/sudoers/ldap.c:2022 +#: plugins/sudoers/ldap.c:2038 plugins/sudoers/ldap_conf.c:223 #: plugins/sudoers/ldap_conf.c:254 plugins/sudoers/ldap_conf.c:306 -#: plugins/sudoers/ldap_conf.c:342 plugins/sudoers/ldap_conf.c:445 -#: plugins/sudoers/ldap_conf.c:460 plugins/sudoers/ldap_conf.c:557 -#: plugins/sudoers/ldap_conf.c:590 plugins/sudoers/ldap_conf.c:682 -#: plugins/sudoers/ldap_conf.c:764 plugins/sudoers/ldap_util.c:510 -#: plugins/sudoers/ldap_util.c:566 plugins/sudoers/linux_audit.c:83 -#: plugins/sudoers/logging.c:202 plugins/sudoers/logging.c:519 -#: plugins/sudoers/logging.c:545 plugins/sudoers/logging.c:586 -#: plugins/sudoers/logging.c:727 plugins/sudoers/logging.c:1087 +#: plugins/sudoers/ldap_conf.c:342 plugins/sudoers/ldap_conf.c:446 +#: plugins/sudoers/ldap_conf.c:461 plugins/sudoers/ldap_conf.c:558 +#: plugins/sudoers/ldap_conf.c:591 plugins/sudoers/ldap_conf.c:683 +#: plugins/sudoers/ldap_conf.c:765 plugins/sudoers/ldap_util.c:510 +#: plugins/sudoers/ldap_util.c:567 plugins/sudoers/linux_audit.c:83 +#: plugins/sudoers/logging.c:202 plugins/sudoers/logging.c:532 +#: plugins/sudoers/logging.c:558 plugins/sudoers/logging.c:599 +#: plugins/sudoers/logging.c:740 plugins/sudoers/logging.c:1100 #: plugins/sudoers/match_command.c:249 plugins/sudoers/match_command.c:367 -#: plugins/sudoers/match_command.c:414 plugins/sudoers/match_command.c:482 -#: plugins/sudoers/match_digest.c:67 plugins/sudoers/parse.c:200 +#: plugins/sudoers/match_command.c:414 plugins/sudoers/match_command.c:485 +#: plugins/sudoers/match_digest.c:70 plugins/sudoers/parse.c:200 #: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:227 -#: plugins/sudoers/parse.c:239 plugins/sudoers/parse_ldif.c:143 -#: plugins/sudoers/parse_ldif.c:170 plugins/sudoers/parse_ldif.c:239 -#: plugins/sudoers/parse_ldif.c:246 plugins/sudoers/parse_ldif.c:251 -#: plugins/sudoers/parse_ldif.c:327 plugins/sudoers/parse_ldif.c:338 -#: plugins/sudoers/parse_ldif.c:344 plugins/sudoers/parse_ldif.c:369 -#: plugins/sudoers/parse_ldif.c:381 plugins/sudoers/parse_ldif.c:385 -#: plugins/sudoers/parse_ldif.c:399 plugins/sudoers/parse_ldif.c:566 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:621 -#: plugins/sudoers/parse_ldif.c:681 plugins/sudoers/parse_ldif.c:700 -#: plugins/sudoers/parse_ldif.c:746 plugins/sudoers/parse_ldif.c:756 -#: plugins/sudoers/policy.c:504 plugins/sudoers/policy.c:746 +#: plugins/sudoers/parse.c:239 plugins/sudoers/parse_ldif.c:156 +#: plugins/sudoers/parse_ldif.c:187 plugins/sudoers/parse_ldif.c:256 +#: plugins/sudoers/parse_ldif.c:263 plugins/sudoers/parse_ldif.c:268 +#: plugins/sudoers/parse_ldif.c:344 plugins/sudoers/parse_ldif.c:355 +#: plugins/sudoers/parse_ldif.c:361 plugins/sudoers/parse_ldif.c:386 +#: plugins/sudoers/parse_ldif.c:398 plugins/sudoers/parse_ldif.c:402 +#: plugins/sudoers/parse_ldif.c:416 plugins/sudoers/parse_ldif.c:584 +#: plugins/sudoers/parse_ldif.c:614 plugins/sudoers/parse_ldif.c:639 +#: plugins/sudoers/parse_ldif.c:697 plugins/sudoers/parse_ldif.c:714 +#: plugins/sudoers/parse_ldif.c:742 plugins/sudoers/parse_ldif.c:749 +#: plugins/sudoers/policy.c:504 plugins/sudoers/policy.c:750 #: plugins/sudoers/prompt.c:100 plugins/sudoers/pwutil.c:199 -#: plugins/sudoers/pwutil.c:272 plugins/sudoers/pwutil.c:350 -#: plugins/sudoers/pwutil.c:524 plugins/sudoers/pwutil.c:590 -#: plugins/sudoers/pwutil.c:661 plugins/sudoers/pwutil.c:820 -#: plugins/sudoers/pwutil.c:878 plugins/sudoers/pwutil.c:923 -#: plugins/sudoers/pwutil.c:982 plugins/sudoers/sssd.c:154 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:586 +#: plugins/sudoers/pwutil.c:657 plugins/sudoers/pwutil.c:816 +#: plugins/sudoers/pwutil.c:873 plugins/sudoers/pwutil.c:917 +#: plugins/sudoers/pwutil.c:975 plugins/sudoers/sssd.c:154 #: plugins/sudoers/sssd.c:400 plugins/sudoers/sssd.c:463 #: plugins/sudoers/sssd.c:507 plugins/sudoers/sssd.c:554 -#: plugins/sudoers/sssd.c:745 plugins/sudoers/stubs.c:103 -#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:271 -#: plugins/sudoers/sudoers.c:281 plugins/sudoers/sudoers.c:290 -#: plugins/sudoers/sudoers.c:332 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:781 plugins/sudoers/sudoers.c:825 -#: plugins/sudoers/sudoers.c:1119 plugins/sudoers/sudoers_debug.c:114 -#: plugins/sudoers/sudoreplay.c:581 plugins/sudoers/sudoreplay.c:584 -#: plugins/sudoers/sudoreplay.c:1261 plugins/sudoers/sudoreplay.c:1461 -#: plugins/sudoers/sudoreplay.c:1465 plugins/sudoers/testsudoers.c:136 +#: plugins/sudoers/sssd.c:746 plugins/sudoers/stubs.c:103 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:273 +#: plugins/sudoers/sudoers.c:283 plugins/sudoers/sudoers.c:292 +#: plugins/sudoers/sudoers.c:334 plugins/sudoers/sudoers.c:657 +#: plugins/sudoers/sudoers.c:786 plugins/sudoers/sudoers.c:830 +#: plugins/sudoers/sudoers.c:1124 plugins/sudoers/sudoers_debug.c:114 +#: plugins/sudoers/sudoreplay.c:584 plugins/sudoers/sudoreplay.c:587 +#: plugins/sudoers/sudoreplay.c:1265 plugins/sudoers/sudoreplay.c:1465 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/testsudoers.c:136 #: plugins/sudoers/testsudoers.c:236 plugins/sudoers/testsudoers.c:253 #: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:439 #: plugins/sudoers/timestamp.c:483 plugins/sudoers/timestamp.c:960 @@ -139,27 +139,27 @@ msgid "unable to allocate memory" msgstr "nelze alokovat paměť" -#: gram.y:484 +#: gram.y:488 msgid "a digest requires a path name" msgstr "kontrolní součet vyžaduje název cesty" -#: gram.y:610 +#: gram.y:614 msgid "invalid notbefore value" msgstr "neplatná hodnota notbefore (začátek platnosti)" -#: gram.y:618 +#: gram.y:622 msgid "invalid notafter value" msgstr "neplatná hodnota notafter (konec platnosti)" -#: gram.y:627 plugins/sudoers/policy.c:320 +#: gram.y:631 plugins/sudoers/policy.c:320 msgid "timeout value too large" msgstr "hodnota časového limitu je příliš velká" -#: gram.y:629 plugins/sudoers/policy.c:322 +#: gram.y:633 plugins/sudoers/policy.c:322 msgid "invalid timeout value" msgstr "neplatná hodnota časového limitu" -#: gram.y:1296 plugins/sudoers/auth/pam.c:468 plugins/sudoers/auth/pam.c:656 +#: gram.y:1303 plugins/sudoers/auth/pam.c:483 plugins/sudoers/auth/pam.c:670 #: plugins/sudoers/auth/rfc1938.c:116 plugins/sudoers/cvtsudoers.c:124 #: plugins/sudoers/cvtsudoers.c:164 plugins/sudoers/cvtsudoers.c:181 #: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:304 @@ -172,46 +172,46 @@ #: plugins/sudoers/cvtsudoers_ldif.c:262 plugins/sudoers/cvtsudoers_ldif.c:333 #: plugins/sudoers/cvtsudoers_ldif.c:388 plugins/sudoers/cvtsudoers_ldif.c:396 #: plugins/sudoers/cvtsudoers_ldif.c:413 plugins/sudoers/cvtsudoers_ldif.c:422 -#: plugins/sudoers/cvtsudoers_ldif.c:569 plugins/sudoers/defaults.c:664 -#: plugins/sudoers/defaults.c:957 plugins/sudoers/defaults.c:1128 +#: plugins/sudoers/cvtsudoers_ldif.c:569 plugins/sudoers/defaults.c:666 +#: plugins/sudoers/defaults.c:959 plugins/sudoers/defaults.c:1130 #: plugins/sudoers/editor.c:72 plugins/sudoers/editor.c:90 #: plugins/sudoers/editor.c:101 plugins/sudoers/env.c:268 #: plugins/sudoers/filedigest.c:66 plugins/sudoers/filedigest.c:82 #: plugins/sudoers/gc.c:59 plugins/sudoers/group_plugin.c:138 -#: plugins/sudoers/interfaces.c:78 plugins/sudoers/iolog.c:941 -#: plugins/sudoers/iolog_path.c:174 plugins/sudoers/iolog_util.c:85 -#: plugins/sudoers/iolog_util.c:124 plugins/sudoers/iolog_util.c:133 -#: plugins/sudoers/iolog_util.c:143 plugins/sudoers/iolog_util.c:151 -#: plugins/sudoers/iolog_util.c:155 plugins/sudoers/ldap.c:185 +#: plugins/sudoers/interfaces.c:78 plugins/sudoers/iolog.c:943 +#: plugins/sudoers/iolog_path.c:174 plugins/sudoers/iolog_util.c:86 +#: plugins/sudoers/iolog_util.c:125 plugins/sudoers/iolog_util.c:134 +#: plugins/sudoers/iolog_util.c:144 plugins/sudoers/iolog_util.c:152 +#: plugins/sudoers/iolog_util.c:156 plugins/sudoers/ldap.c:185 #: plugins/sudoers/ldap.c:416 plugins/sudoers/ldap.c:420 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:723 -#: plugins/sudoers/ldap.c:887 plugins/sudoers/ldap.c:1235 -#: plugins/sudoers/ldap.c:1662 plugins/sudoers/ldap.c:1699 -#: plugins/sudoers/ldap.c:1780 plugins/sudoers/ldap.c:1915 -#: plugins/sudoers/ldap.c:2016 plugins/sudoers/ldap.c:2032 +#: plugins/sudoers/ldap.c:887 plugins/sudoers/ldap.c:1241 +#: plugins/sudoers/ldap.c:1668 plugins/sudoers/ldap.c:1705 +#: plugins/sudoers/ldap.c:1786 plugins/sudoers/ldap.c:1921 +#: plugins/sudoers/ldap.c:2022 plugins/sudoers/ldap.c:2038 #: plugins/sudoers/ldap_conf.c:223 plugins/sudoers/ldap_conf.c:254 #: plugins/sudoers/ldap_conf.c:306 plugins/sudoers/ldap_conf.c:342 -#: plugins/sudoers/ldap_conf.c:445 plugins/sudoers/ldap_conf.c:460 -#: plugins/sudoers/ldap_conf.c:557 plugins/sudoers/ldap_conf.c:590 -#: plugins/sudoers/ldap_conf.c:681 plugins/sudoers/ldap_conf.c:764 -#: plugins/sudoers/ldap_util.c:510 plugins/sudoers/ldap_util.c:566 +#: plugins/sudoers/ldap_conf.c:446 plugins/sudoers/ldap_conf.c:461 +#: plugins/sudoers/ldap_conf.c:558 plugins/sudoers/ldap_conf.c:591 +#: plugins/sudoers/ldap_conf.c:682 plugins/sudoers/ldap_conf.c:765 +#: plugins/sudoers/ldap_util.c:510 plugins/sudoers/ldap_util.c:567 #: plugins/sudoers/linux_audit.c:83 plugins/sudoers/logging.c:202 -#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545 -#: plugins/sudoers/logging.c:585 plugins/sudoers/logging.c:1087 +#: plugins/sudoers/logging.c:532 plugins/sudoers/logging.c:558 +#: plugins/sudoers/logging.c:598 plugins/sudoers/logging.c:1100 #: plugins/sudoers/match_command.c:248 plugins/sudoers/match_command.c:366 -#: plugins/sudoers/match_command.c:413 plugins/sudoers/match_command.c:482 -#: plugins/sudoers/match_digest.c:67 plugins/sudoers/parse.c:199 +#: plugins/sudoers/match_command.c:413 plugins/sudoers/match_command.c:485 +#: plugins/sudoers/match_digest.c:70 plugins/sudoers/parse.c:199 #: plugins/sudoers/parse.c:211 plugins/sudoers/parse.c:226 -#: plugins/sudoers/parse.c:238 plugins/sudoers/parse_ldif.c:142 -#: plugins/sudoers/parse_ldif.c:169 plugins/sudoers/parse_ldif.c:238 -#: plugins/sudoers/parse_ldif.c:245 plugins/sudoers/parse_ldif.c:250 -#: plugins/sudoers/parse_ldif.c:326 plugins/sudoers/parse_ldif.c:337 -#: plugins/sudoers/parse_ldif.c:343 plugins/sudoers/parse_ldif.c:368 -#: plugins/sudoers/parse_ldif.c:380 plugins/sudoers/parse_ldif.c:384 -#: plugins/sudoers/parse_ldif.c:398 plugins/sudoers/parse_ldif.c:566 -#: plugins/sudoers/parse_ldif.c:595 plugins/sudoers/parse_ldif.c:620 -#: plugins/sudoers/parse_ldif.c:680 plugins/sudoers/parse_ldif.c:699 -#: plugins/sudoers/parse_ldif.c:745 plugins/sudoers/parse_ldif.c:755 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse_ldif.c:155 +#: plugins/sudoers/parse_ldif.c:186 plugins/sudoers/parse_ldif.c:255 +#: plugins/sudoers/parse_ldif.c:262 plugins/sudoers/parse_ldif.c:267 +#: plugins/sudoers/parse_ldif.c:343 plugins/sudoers/parse_ldif.c:354 +#: plugins/sudoers/parse_ldif.c:360 plugins/sudoers/parse_ldif.c:385 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:401 +#: plugins/sudoers/parse_ldif.c:415 plugins/sudoers/parse_ldif.c:584 +#: plugins/sudoers/parse_ldif.c:613 plugins/sudoers/parse_ldif.c:638 +#: plugins/sudoers/parse_ldif.c:696 plugins/sudoers/parse_ldif.c:713 +#: plugins/sudoers/parse_ldif.c:741 plugins/sudoers/parse_ldif.c:748 #: plugins/sudoers/policy.c:134 plugins/sudoers/policy.c:143 #: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:178 #: plugins/sudoers/policy.c:305 plugins/sudoers/policy.c:320 @@ -219,26 +219,26 @@ #: plugins/sudoers/policy.c:358 plugins/sudoers/policy.c:402 #: plugins/sudoers/policy.c:412 plugins/sudoers/policy.c:421 #: plugins/sudoers/policy.c:430 plugins/sudoers/policy.c:504 -#: plugins/sudoers/policy.c:746 plugins/sudoers/prompt.c:100 -#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:272 -#: plugins/sudoers/pwutil.c:350 plugins/sudoers/pwutil.c:524 -#: plugins/sudoers/pwutil.c:590 plugins/sudoers/pwutil.c:661 -#: plugins/sudoers/pwutil.c:820 plugins/sudoers/pwutil.c:878 -#: plugins/sudoers/pwutil.c:923 plugins/sudoers/pwutil.c:982 +#: plugins/sudoers/policy.c:750 plugins/sudoers/prompt.c:100 +#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 +#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 +#: plugins/sudoers/pwutil.c:586 plugins/sudoers/pwutil.c:657 +#: plugins/sudoers/pwutil.c:816 plugins/sudoers/pwutil.c:873 +#: plugins/sudoers/pwutil.c:917 plugins/sudoers/pwutil.c:975 #: plugins/sudoers/set_perms.c:396 plugins/sudoers/set_perms.c:775 #: plugins/sudoers/set_perms.c:1165 plugins/sudoers/set_perms.c:1493 #: plugins/sudoers/set_perms.c:1659 plugins/sudoers/sssd.c:153 #: plugins/sudoers/sssd.c:400 plugins/sudoers/sssd.c:463 #: plugins/sudoers/sssd.c:507 plugins/sudoers/sssd.c:554 -#: plugins/sudoers/sssd.c:745 plugins/sudoers/stubs.c:103 -#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:271 -#: plugins/sudoers/sudoers.c:281 plugins/sudoers/sudoers.c:290 -#: plugins/sudoers/sudoers.c:332 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:781 plugins/sudoers/sudoers.c:825 -#: plugins/sudoers/sudoers.c:1119 plugins/sudoers/sudoers_debug.c:113 -#: plugins/sudoers/sudoreplay.c:581 plugins/sudoers/sudoreplay.c:584 -#: plugins/sudoers/sudoreplay.c:1261 plugins/sudoers/sudoreplay.c:1461 -#: plugins/sudoers/sudoreplay.c:1465 plugins/sudoers/testsudoers.c:136 +#: plugins/sudoers/sssd.c:746 plugins/sudoers/stubs.c:103 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:273 +#: plugins/sudoers/sudoers.c:283 plugins/sudoers/sudoers.c:292 +#: plugins/sudoers/sudoers.c:334 plugins/sudoers/sudoers.c:657 +#: plugins/sudoers/sudoers.c:786 plugins/sudoers/sudoers.c:830 +#: plugins/sudoers/sudoers.c:1124 plugins/sudoers/sudoers_debug.c:113 +#: plugins/sudoers/sudoreplay.c:584 plugins/sudoers/sudoreplay.c:587 +#: plugins/sudoers/sudoreplay.c:1265 plugins/sudoers/sudoreplay.c:1465 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/testsudoers.c:136 #: plugins/sudoers/testsudoers.c:236 plugins/sudoers/testsudoers.c:253 #: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:439 #: plugins/sudoers/timestamp.c:483 plugins/sudoers/timestamp.c:960 @@ -258,11 +258,11 @@ msgid "Alias \"%s\" already defined" msgstr "Alias „%s“ je již definován" -#: plugins/sudoers/auth/aix_auth.c:203 plugins/sudoers/logging.c:788 +#: plugins/sudoers/auth/aix_auth.c:203 plugins/sudoers/logging.c:801 msgid "unable to fork" msgstr "nelze vytvořit proces" -#: plugins/sudoers/auth/aix_auth.c:281 +#: plugins/sudoers/auth/aix_auth.c:283 #, c-format msgid "unable to change password for %s" msgstr "prošlé heslo pro %s nelze změnit" @@ -359,37 +359,38 @@ msgid "%s: Cannot verify TGT! Possible attack!: %s" msgstr "%s: TGT nelze ověřit! Podezření na útok!: %s" -#: plugins/sudoers/auth/pam.c:200 -msgid "unable to initialize PAM" -msgstr "PAM nelze inicializovat" +#: plugins/sudoers/auth/pam.c:223 +#, c-format +msgid "unable to initialize PAM: %s" +msgstr "PAM nelze inicializovat: %s" -#: plugins/sudoers/auth/pam.c:299 +#: plugins/sudoers/auth/pam.c:319 #, c-format msgid "PAM authentication error: %s" msgstr "Chyba autentizace PAM: %s" -#: plugins/sudoers/auth/pam.c:318 +#: plugins/sudoers/auth/pam.c:338 msgid "account validation failure, is your account locked?" msgstr "ověření účtu selhalo, není váš účet zamknutý?" -#: plugins/sudoers/auth/pam.c:329 +#: plugins/sudoers/auth/pam.c:349 msgid "Account or password is expired, reset your password and try again" msgstr "Účtu nebo heslu vypršela platnost, nastavte si nové heslo a zkuste to znovu" -#: plugins/sudoers/auth/pam.c:337 +#: plugins/sudoers/auth/pam.c:355 #, c-format msgid "unable to change expired password: %s" msgstr "prošlé heslo nelze změnit: %s" -#: plugins/sudoers/auth/pam.c:348 +#: plugins/sudoers/auth/pam.c:366 msgid "Password expired, contact your system administrator" msgstr "Heslu vypršela platnost, kontaktujte správce svého systému" -#: plugins/sudoers/auth/pam.c:353 +#: plugins/sudoers/auth/pam.c:371 msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator" msgstr "Účtu vypršela platnost nebo v konfiguraci PAM pro sudo chybí sekce „account“. Kontaktujte správce svého systému" -#: plugins/sudoers/auth/pam.c:361 plugins/sudoers/auth/pam.c:367 +#: plugins/sudoers/auth/pam.c:379 plugins/sudoers/auth/pam.c:384 #, c-format msgid "PAM account management error: %s" msgstr "Chyba správy účtů PAM: %s" @@ -488,14 +489,14 @@ "\n" #: plugins/sudoers/check.c:312 plugins/sudoers/check.c:322 -#: plugins/sudoers/sudoers.c:698 plugins/sudoers/sudoers.c:743 +#: plugins/sudoers/sudoers.c:700 plugins/sudoers/sudoers.c:748 #: plugins/sudoers/tsdump.c:126 #, c-format msgid "unknown uid: %u" msgstr "neznámé UID: %u" #: plugins/sudoers/check.c:317 plugins/sudoers/iolog.c:255 -#: plugins/sudoers/policy.c:917 plugins/sudoers/sudoers.c:1158 +#: plugins/sudoers/policy.c:921 plugins/sudoers/sudoers.c:1163 #: plugins/sudoers/testsudoers.c:227 plugins/sudoers/testsudoers.c:400 #, c-format msgid "unknown user: %s" @@ -542,13 +543,13 @@ msgid "%s: input and output files must be different" msgstr "%s: vstupní a výstupní soubory se musí lišit" -#: plugins/sudoers/cvtsudoers.c:335 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/cvtsudoers.c:335 plugins/sudoers/sudoers.c:176 #: plugins/sudoers/testsudoers.c:266 plugins/sudoers/visudo.c:254 #: plugins/sudoers/visudo.c:610 plugins/sudoers/visudo.c:933 msgid "unable to initialize sudoers default values" msgstr "nelze inicializovat výchozí hodnoty sudoers" -#: plugins/sudoers/cvtsudoers.c:421 plugins/sudoers/ldap_conf.c:435 +#: plugins/sudoers/cvtsudoers.c:421 plugins/sudoers/ldap_conf.c:436 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" @@ -576,8 +577,8 @@ #: plugins/sudoers/cvtsudoers.c:622 plugins/sudoers/cvtsudoers.c:639 #: plugins/sudoers/cvtsudoers.c:1245 plugins/sudoers/cvtsudoers_json.c:1130 #: plugins/sudoers/cvtsudoers_ldif.c:643 plugins/sudoers/iolog.c:413 -#: plugins/sudoers/iolog_util.c:74 plugins/sudoers/sudoers.c:909 -#: plugins/sudoers/sudoreplay.c:335 plugins/sudoers/sudoreplay.c:1427 +#: plugins/sudoers/iolog_util.c:75 plugins/sudoers/sudoers.c:914 +#: plugins/sudoers/sudoreplay.c:338 plugins/sudoers/sudoreplay.c:1431 #: plugins/sudoers/timestamp.c:448 plugins/sudoers/tsdump.c:135 #: plugins/sudoers/visudo.c:929 #, c-format @@ -600,7 +601,7 @@ msgstr "chyba při rozboru %s\n" #: plugins/sudoers/cvtsudoers.c:1292 plugins/sudoers/iolog.c:500 -#: plugins/sudoers/sudoreplay.c:1131 plugins/sudoers/timestamp.c:332 +#: plugins/sudoers/sudoreplay.c:1135 plugins/sudoers/timestamp.c:332 #: plugins/sudoers/timestamp.c:335 #, c-format msgid "unable to write to %s" @@ -678,11 +679,11 @@ #: plugins/sudoers/cvtsudoers_ldif.c:526 plugins/sudoers/env.c:330 #: plugins/sudoers/env.c:337 plugins/sudoers/env.c:442 #: plugins/sudoers/ldap.c:496 plugins/sudoers/ldap.c:727 -#: plugins/sudoers/ldap.c:1054 plugins/sudoers/ldap_conf.c:227 +#: plugins/sudoers/ldap.c:1060 plugins/sudoers/ldap_conf.c:227 #: plugins/sudoers/ldap_conf.c:317 plugins/sudoers/linux_audit.c:89 -#: plugins/sudoers/logging.c:1092 plugins/sudoers/policy.c:625 +#: plugins/sudoers/logging.c:1105 plugins/sudoers/policy.c:625 #: plugins/sudoers/policy.c:635 plugins/sudoers/prompt.c:168 -#: plugins/sudoers/sudoers.c:847 plugins/sudoers/testsudoers.c:257 +#: plugins/sudoers/sudoers.c:852 plugins/sudoers/testsudoers.c:257 #: plugins/sudoers/toke_util.c:161 #, c-format msgid "internal error, %s overflow" @@ -1205,6 +1206,14 @@ msgid "Ignore case when matching group names" msgstr "Ignorovat velikost znaků při porovnávání názvů skupin" +#: plugins/sudoers/def_data.c:502 +msgid "Log when a command is allowed by sudoers" +msgstr "Zaznamenat do protokolu, když je příkaz povolen v sudoers" + +#: plugins/sudoers/def_data.c:506 +msgid "Log when a command is denied by sudoers" +msgstr "Zaznamenat do protokolu, když je příkaz zakázán v sudoers" + #: plugins/sudoers/defaults.c:231 #, c-format msgid "%s:%d unknown defaults entry \"%s\"" @@ -1308,7 +1317,7 @@ msgid "%s must only be writable by owner" msgstr "%s smí být zapisovatelný jen pro vlastníka" -#: plugins/sudoers/group_plugin.c:102 plugins/sudoers/sssd.c:563 +#: plugins/sudoers/group_plugin.c:102 plugins/sudoers/sssd.c:562 #, c-format msgid "unable to load %s: %s" msgstr "nelze zavést %s: %s" @@ -1354,67 +1363,67 @@ msgid "unable to change mode of %s to 0%o" msgstr "nelze změnit práva %s na 0%o" -#: plugins/sudoers/iolog.c:294 plugins/sudoers/sudoers.c:1189 +#: plugins/sudoers/iolog.c:294 plugins/sudoers/sudoers.c:1194 #: plugins/sudoers/testsudoers.c:424 #, c-format msgid "unknown group: %s" msgstr "neznámá skupina: %s" -#: plugins/sudoers/iolog.c:464 plugins/sudoers/sudoers.c:913 -#: plugins/sudoers/sudoreplay.c:842 plugins/sudoers/sudoreplay.c:1538 +#: plugins/sudoers/iolog.c:464 plugins/sudoers/sudoers.c:918 +#: plugins/sudoers/sudoreplay.c:846 plugins/sudoers/sudoreplay.c:1542 #: plugins/sudoers/tsdump.c:145 #, c-format msgid "unable to read %s" msgstr "%s nelze číst" -#: plugins/sudoers/iolog.c:579 plugins/sudoers/iolog.c:799 +#: plugins/sudoers/iolog.c:579 plugins/sudoers/iolog.c:801 #, c-format msgid "unable to create %s" msgstr "%s nelze vytvořit" -#: plugins/sudoers/iolog.c:822 plugins/sudoers/iolog.c:1037 -#: plugins/sudoers/iolog.c:1113 plugins/sudoers/iolog.c:1207 -#: plugins/sudoers/iolog.c:1267 +#: plugins/sudoers/iolog.c:824 plugins/sudoers/iolog.c:1039 +#: plugins/sudoers/iolog.c:1115 plugins/sudoers/iolog.c:1209 +#: plugins/sudoers/iolog.c:1270 #, c-format msgid "unable to write to I/O log file: %s" msgstr "nelze zapsat do souboru s I/O protokolem: %s" -#: plugins/sudoers/iolog.c:1071 +#: plugins/sudoers/iolog.c:1073 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: vnitřní chyba, soubor s I/O protokolem pro událost %d není otevřen" -#: plugins/sudoers/iolog.c:1230 +#: plugins/sudoers/iolog.c:1233 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: vnitřní chyba, neplatný signál %d" -#: plugins/sudoers/iolog_util.c:89 +#: plugins/sudoers/iolog_util.c:90 #, c-format msgid "%s: invalid log file" msgstr "%s: neplatný soubor s protokolem" -#: plugins/sudoers/iolog_util.c:107 +#: plugins/sudoers/iolog_util.c:108 #, c-format msgid "%s: time stamp field is missing" msgstr "%s: chybí položka s časovým údajem" -#: plugins/sudoers/iolog_util.c:113 +#: plugins/sudoers/iolog_util.c:114 #, c-format msgid "%s: time stamp %s: %s" msgstr "%s: čas %s: %s" -#: plugins/sudoers/iolog_util.c:120 +#: plugins/sudoers/iolog_util.c:121 #, c-format msgid "%s: user field is missing" msgstr "%s: chybí položka s uživatelem" -#: plugins/sudoers/iolog_util.c:129 +#: plugins/sudoers/iolog_util.c:130 #, c-format msgid "%s: runas user field is missing" msgstr "%s: chybí položka s runas uživatelem" -#: plugins/sudoers/iolog_util.c:138 +#: plugins/sudoers/iolog_util.c:139 #, c-format msgid "%s: runas group field is missing" msgstr "%s chybí položka s runas skupinou" @@ -1433,16 +1442,16 @@ msgid "you must set TLS_CERT in %s to use SSL" msgstr "pro SSL musíte v %s nastavit TLS_CERT" -#: plugins/sudoers/ldap.c:1614 +#: plugins/sudoers/ldap.c:1620 #, c-format msgid "unable to initialize LDAP: %s" msgstr "LDAP nelze inicializovat: %s" -#: plugins/sudoers/ldap.c:1650 +#: plugins/sudoers/ldap.c:1656 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "start_tls uvedeno, ale knihovna LDAP nepodporuje ldap_start_tls_s_np() ani ldap_start_tls_s_np()" -#: plugins/sudoers/ldap.c:1787 plugins/sudoers/parse_ldif.c:737 +#: plugins/sudoers/ldap.c:1793 plugins/sudoers/parse_ldif.c:734 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "neplatný atribut sudoOrder: %s" @@ -1498,55 +1507,55 @@ msgid "unable to write log file: %s" msgstr "nelze zapsat soubor protokolu: %s" -#: plugins/sudoers/logging.c:247 +#: plugins/sudoers/logging.c:248 msgid "No user or host" msgstr "Žádný uživatel nebo stroj" -#: plugins/sudoers/logging.c:249 +#: plugins/sudoers/logging.c:250 msgid "validation failure" msgstr "selhání ověření" -#: plugins/sudoers/logging.c:256 +#: plugins/sudoers/logging.c:261 msgid "user NOT in sudoers" msgstr "uživatel NENÍ v sudoers" -#: plugins/sudoers/logging.c:258 +#: plugins/sudoers/logging.c:263 msgid "user NOT authorized on host" msgstr "uživatel NENÍ na stroji autorizován" -#: plugins/sudoers/logging.c:260 +#: plugins/sudoers/logging.c:265 msgid "command not allowed" msgstr "příkaz nedovolen" -#: plugins/sudoers/logging.c:295 +#: plugins/sudoers/logging.c:301 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" -msgstr "%s není v souboru sudoers. Tento událost bude ohlášena.\n" +msgstr "%s není v souboru sudoers. Tato událost bude ohlášena.\n" -#: plugins/sudoers/logging.c:298 +#: plugins/sudoers/logging.c:304 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s nemá dovoleno spouštět sudo na %s. Tato událost bude ohlášena.\n" -#: plugins/sudoers/logging.c:302 +#: plugins/sudoers/logging.c:308 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Je nám líto, uživatel %s nesmí spouštět sudo na %s.\n" -#: plugins/sudoers/logging.c:305 +#: plugins/sudoers/logging.c:311 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "Je nám líto, uživatel %s nemá dovoleno spouštět „%s%s%s“ jako %s%s%s na %s.\n" -#: plugins/sudoers/logging.c:342 plugins/sudoers/sudoers.c:440 -#: plugins/sudoers/sudoers.c:442 plugins/sudoers/sudoers.c:444 -#: plugins/sudoers/sudoers.c:446 plugins/sudoers/sudoers.c:601 -#: plugins/sudoers/sudoers.c:603 +#: plugins/sudoers/logging.c:348 plugins/sudoers/sudoers.c:442 +#: plugins/sudoers/sudoers.c:444 plugins/sudoers/sudoers.c:446 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:603 +#: plugins/sudoers/sudoers.c:605 #, c-format msgid "%s: command not found" msgstr "%s: příkaz nenalezen" -#: plugins/sudoers/logging.c:344 plugins/sudoers/sudoers.c:436 +#: plugins/sudoers/logging.c:350 plugins/sudoers/sudoers.c:438 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -1555,15 +1564,15 @@ "ignoruje se „%s“ nalezený v „.“\n" "Použijte „sudo ./%s„, je-li toto „%s“', který chcete spustit." -#: plugins/sudoers/logging.c:361 +#: plugins/sudoers/logging.c:367 msgid "authentication failure" msgstr "selhání autentizace" -#: plugins/sudoers/logging.c:387 +#: plugins/sudoers/logging.c:393 msgid "a password is required" msgstr "je vyžadováno heslo" -#: plugins/sudoers/logging.c:450 +#: plugins/sudoers/logging.c:463 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" @@ -1571,32 +1580,32 @@ msgstr[1] "%u chybné pokusy zadat heslo" msgstr[2] "%u chybných pokusů zadat heslo" -#: plugins/sudoers/logging.c:715 +#: plugins/sudoers/logging.c:728 #, c-format msgid "unable to dup stdin: %m" msgstr "nelze zdvojit standardní vstup: %m" -#: plugins/sudoers/logging.c:755 +#: plugins/sudoers/logging.c:768 #, c-format msgid "unable to execute %s: %m" msgstr "nelze spustit %s: %m" -#: plugins/sudoers/logging.c:796 plugins/sudoers/logging.c:852 +#: plugins/sudoers/logging.c:809 plugins/sudoers/logging.c:865 #, c-format msgid "unable to fork: %m" msgstr "nelze vytvořit proces: %m" -#: plugins/sudoers/logging.c:842 +#: plugins/sudoers/logging.c:855 #, c-format msgid "unable to open pipe: %m" msgstr "nelze otevřít rouru: %m" -#: plugins/sudoers/match_digest.c:100 +#: plugins/sudoers/match_digest.c:103 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "součet pro %s (%s) nemá tvar %s" -#: plugins/sudoers/mkdir_parents.c:77 plugins/sudoers/sudoers.c:938 +#: plugins/sudoers/mkdir_parents.c:77 plugins/sudoers/sudoers.c:943 #: plugins/sudoers/visudo.c:437 plugins/sudoers/visudo.c:733 #, c-format msgid "unable to stat %s" @@ -1635,41 +1644,41 @@ msgid " Options: " msgstr " Volby: " -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:529 #, c-format msgid " Commands:\n" msgstr " Příkazy:\n" -#: plugins/sudoers/parse.c:726 +#: plugins/sudoers/parse.c:720 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Odpovídající položky Defaults pro %s na %s:\n" -#: plugins/sudoers/parse.c:744 +#: plugins/sudoers/parse.c:738 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Výchozí hodnoty Runas a Command pro %s:\n" -#: plugins/sudoers/parse.c:762 +#: plugins/sudoers/parse.c:756 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Uživatel %s smí spustit následující příkazy na %s:\n" -#: plugins/sudoers/parse.c:777 +#: plugins/sudoers/parse.c:771 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Uživatel %s nemá dovoleno spustit sudo na %s.\n" -#: plugins/sudoers/parse_ldif.c:147 -#, c-format -msgid "ignoring invalid attribute value: %s" -msgstr "neplatná hodnota hodnota atributu se ignoruje: %s" - -#: plugins/sudoers/parse_ldif.c:586 +#: plugins/sudoers/parse_ldif.c:604 #, c-format msgid "ignoring incomplete sudoRole: cn: %s" msgstr "neúplná definice sudoRole se ignoruje: cn: %s" +#: plugins/sudoers/parse_ldif.c:664 +#, c-format +msgid "invalid LDIF attribute: %s" +msgstr "neplatný atribut LDIF: %s" + #: plugins/sudoers/policy.c:90 plugins/sudoers/policy.c:116 #, c-format msgid "invalid %.*s set by sudo front-end" @@ -1684,34 +1693,34 @@ msgstr "uživatelské jméno nenastaveno vnějším rozhraním sudo" #: plugins/sudoers/policy.c:443 -msgid "user ID not set by sudo front-end" +msgid "user-ID not set by sudo front-end" msgstr "ID uživatele nenastaveno vnějším rozhraním sudo" #: plugins/sudoers/policy.c:447 -msgid "group ID not set by sudo front-end" +msgid "group-ID not set by sudo front-end" msgstr "ID skupiny nenastaveno vnějším rozhraním sudo" #: plugins/sudoers/policy.c:451 msgid "host name not set by sudo front-end" msgstr "název počítače nenastaven vnějším rozhraním sudo" -#: plugins/sudoers/policy.c:804 plugins/sudoers/visudo.c:236 +#: plugins/sudoers/policy.c:808 plugins/sudoers/visudo.c:236 #: plugins/sudoers/visudo.c:867 #, c-format msgid "unable to execute %s" msgstr "nelze vykonat %s" -#: plugins/sudoers/policy.c:935 +#: plugins/sudoers/policy.c:939 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Verze modulu s politikami sudoers je %s\n" -#: plugins/sudoers/policy.c:937 +#: plugins/sudoers/policy.c:941 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Verze gramatiky souboru sudoers je %d\n" -#: plugins/sudoers/policy.c:941 +#: plugins/sudoers/policy.c:945 #, c-format msgid "" "\n" @@ -1720,86 +1729,86 @@ "\n" "Cesta sudoers: %s\n" -#: plugins/sudoers/policy.c:944 +#: plugins/sudoers/policy.c:948 #, c-format msgid "nsswitch path: %s\n" msgstr "cesta k nsswitch: %s\n" -#: plugins/sudoers/policy.c:946 +#: plugins/sudoers/policy.c:950 #, c-format msgid "ldap.conf path: %s\n" msgstr "cesta k ldap.conf: %s\n" -#: plugins/sudoers/policy.c:947 +#: plugins/sudoers/policy.c:951 #, c-format msgid "ldap.secret path: %s\n" msgstr "cesta k ldap.secret: %s\n" -#: plugins/sudoers/policy.c:980 +#: plugins/sudoers/policy.c:984 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "nelze zaregistrovat háček typu %d (verze %d.%d)" -#: plugins/sudoers/pwutil.c:222 plugins/sudoers/pwutil.c:241 +#: plugins/sudoers/pwutil.c:222 plugins/sudoers/pwutil.c:240 #, c-format -msgid "unable to cache uid %u, out of memory" -msgstr "nelze zapamatovat si UID %u, nedostatek paměti" +msgid "unable to cache uid %u" +msgstr "nelze si zapamatovat UID %u" -#: plugins/sudoers/pwutil.c:235 +#: plugins/sudoers/pwutil.c:234 #, c-format msgid "unable to cache uid %u, already exists" msgstr "nelze zapamatovat si UID %u, již existuje" -#: plugins/sudoers/pwutil.c:296 plugins/sudoers/pwutil.c:314 -#: plugins/sudoers/pwutil.c:377 plugins/sudoers/pwutil.c:422 +#: plugins/sudoers/pwutil.c:294 plugins/sudoers/pwutil.c:312 +#: plugins/sudoers/pwutil.c:375 plugins/sudoers/pwutil.c:420 #, c-format -msgid "unable to cache user %s, out of memory" -msgstr "nelze zapamatovat si uživatele %s, nedostatek paměti" +msgid "unable to cache user %s" +msgstr "uživatele %s si nelze zapamatovat" -#: plugins/sudoers/pwutil.c:309 +#: plugins/sudoers/pwutil.c:307 #, c-format msgid "unable to cache user %s, already exists" msgstr "nelze zapamatovat si uživatele %s, již existuje" -#: plugins/sudoers/pwutil.c:541 plugins/sudoers/pwutil.c:560 +#: plugins/sudoers/pwutil.c:539 plugins/sudoers/pwutil.c:557 #, c-format -msgid "unable to cache gid %u, out of memory" -msgstr "nelze zapamatovat si GID %u, nedostatek paměti" +msgid "unable to cache gid %u" +msgstr "GID %u si nelze zapamatovat" -#: plugins/sudoers/pwutil.c:554 +#: plugins/sudoers/pwutil.c:551 #, c-format msgid "unable to cache gid %u, already exists" msgstr "nelze zapamatovat si GID %u, již existuje" -#: plugins/sudoers/pwutil.c:608 plugins/sudoers/pwutil.c:626 -#: plugins/sudoers/pwutil.c:674 plugins/sudoers/pwutil.c:716 +#: plugins/sudoers/pwutil.c:604 plugins/sudoers/pwutil.c:622 +#: plugins/sudoers/pwutil.c:670 plugins/sudoers/pwutil.c:712 #, c-format -msgid "unable to cache group %s, out of memory" -msgstr "nelze zapamatovat si skupinu %s, nedostatek paměti" +msgid "unable to cache group %s" +msgstr "skupinu %s si nelze zapamatovat" -#: plugins/sudoers/pwutil.c:621 +#: plugins/sudoers/pwutil.c:617 #, c-format msgid "unable to cache group %s, already exists" msgstr "nelze zapamatovat si skupinu %s, již existuje" -#: plugins/sudoers/pwutil.c:843 plugins/sudoers/pwutil.c:896 -#: plugins/sudoers/pwutil.c:947 plugins/sudoers/pwutil.c:1001 +#: plugins/sudoers/pwutil.c:839 plugins/sudoers/pwutil.c:891 +#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:994 #, c-format msgid "unable to cache group list for %s, already exists" msgstr "nelze zapamatovat si seznam skupin pro %s, již existuje" -#: plugins/sudoers/pwutil.c:849 plugins/sudoers/pwutil.c:901 -#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1006 +#: plugins/sudoers/pwutil.c:845 plugins/sudoers/pwutil.c:896 +#: plugins/sudoers/pwutil.c:947 plugins/sudoers/pwutil.c:999 #, c-format -msgid "unable to cache group list for %s, out of memory" -msgstr "nelze zapamatovat si seznam skupin pro %s, nedostatek paměti" +msgid "unable to cache group list for %s" +msgstr "nelze si zapamatovat seznam skupin pro %s" -#: plugins/sudoers/pwutil.c:890 +#: plugins/sudoers/pwutil.c:885 #, c-format msgid "unable to parse groups for %s" msgstr "nelze rozebrat skupiny pro %s" -#: plugins/sudoers/pwutil.c:995 +#: plugins/sudoers/pwutil.c:988 #, c-format msgid "unable to parse gids for %s" msgstr "nelze rozebrat čísla GID pro %s" @@ -1867,93 +1876,93 @@ msgid "audit_failure message too long" msgstr "zpráva audit_failure je příliš dlouhá" -#: plugins/sudoers/sssd.c:565 +#: plugins/sudoers/sssd.c:564 msgid "unable to initialize SSS source. Is SSSD installed on your machine?" msgstr "nelze inicializovat zdroj SSS. Je SSSD nainstalován na vašem stroji?" -#: plugins/sudoers/sssd.c:573 plugins/sudoers/sssd.c:582 -#: plugins/sudoers/sssd.c:591 plugins/sudoers/sssd.c:600 -#: plugins/sudoers/sssd.c:609 +#: plugins/sudoers/sssd.c:572 plugins/sudoers/sssd.c:581 +#: plugins/sudoers/sssd.c:590 plugins/sudoers/sssd.c:599 +#: plugins/sudoers/sssd.c:608 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "nelze nalézt symbol „%s“ v %s" -#: plugins/sudoers/sudoers.c:210 plugins/sudoers/sudoers.c:866 +#: plugins/sudoers/sudoers.c:212 plugins/sudoers/sudoers.c:871 msgid "problem with defaults entries" msgstr "problém s položkami defaults" -#: plugins/sudoers/sudoers.c:214 +#: plugins/sudoers/sudoers.c:216 msgid "no valid sudoers sources found, quitting" msgstr "nenalezeny žádné platné zdroje sudoers, končí se" -#: plugins/sudoers/sudoers.c:252 +#: plugins/sudoers/sudoers.c:254 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers udává, že root nemá dovoleno použít sudo" -#: plugins/sudoers/sudoers.c:310 +#: plugins/sudoers/sudoers.c:312 msgid "you are not permitted to use the -C option" msgstr "nemáte dovoleno použít přepínač -C" -#: plugins/sudoers/sudoers.c:357 +#: plugins/sudoers/sudoers.c:359 #, c-format msgid "timestamp owner (%s): No such user" msgstr "vlastník časového údaje (%s): Takový uživatel neexistuje" -#: plugins/sudoers/sudoers.c:372 +#: plugins/sudoers/sudoers.c:374 msgid "no tty" msgstr "žádné TTY" -#: plugins/sudoers/sudoers.c:373 +#: plugins/sudoers/sudoers.c:375 msgid "sorry, you must have a tty to run sudo" msgstr "je nám líto, ale pro spuštění sudo musíte mít TTY" -#: plugins/sudoers/sudoers.c:435 +#: plugins/sudoers/sudoers.c:437 msgid "command in current directory" msgstr "příkaz v aktuálním adresáři" -#: plugins/sudoers/sudoers.c:454 +#: plugins/sudoers/sudoers.c:456 msgid "sorry, you are not allowed set a command timeout" msgstr "je nám líto, ale nastavit časový limit nemáte dovoleno" -#: plugins/sudoers/sudoers.c:462 +#: plugins/sudoers/sudoers.c:464 msgid "sorry, you are not allowed to preserve the environment" msgstr "je nám líto, ale zachovat prostředí nemáte dovoleno" -#: plugins/sudoers/sudoers.c:810 +#: plugins/sudoers/sudoers.c:815 msgid "command too long" msgstr "příkaz je příliš dlouhý" -#: plugins/sudoers/sudoers.c:942 +#: plugins/sudoers/sudoers.c:947 #, c-format msgid "%s is not a regular file" msgstr "%s není běžný soubor" -#: plugins/sudoers/sudoers.c:946 plugins/sudoers/timestamp.c:259 toke.l:967 +#: plugins/sudoers/sudoers.c:951 plugins/sudoers/timestamp.c:259 toke.l:967 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s je vlastněn UID %u, měl by být vlastněn %u" -#: plugins/sudoers/sudoers.c:950 toke.l:972 +#: plugins/sudoers/sudoers.c:955 toke.l:972 #, c-format msgid "%s is world writable" msgstr "%s je zapisovatelný pro všechny" -#: plugins/sudoers/sudoers.c:954 toke.l:975 +#: plugins/sudoers/sudoers.c:959 toke.l:975 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s je vlastněn GID %u, mělo by být %u" -#: plugins/sudoers/sudoers.c:987 +#: plugins/sudoers/sudoers.c:992 #, c-format msgid "only root can use \"-c %s\"" msgstr "pouze root může použít „-c %s“" -#: plugins/sudoers/sudoers.c:1006 +#: plugins/sudoers/sudoers.c:1011 #, c-format msgid "unknown login class: %s" msgstr "neznáma přihlašovací třída: %s" -#: plugins/sudoers/sudoers.c:1091 plugins/sudoers/sudoers.c:1105 +#: plugins/sudoers/sudoers.c:1096 plugins/sudoers/sudoers.c:1110 #, c-format msgid "unable to resolve host %s" msgstr "nelze přeložit název stroje %s" @@ -1978,105 +1987,109 @@ msgid "%s/%.2s/%.2s/%.2s/timing: %s" msgstr "%s/%.2s/%.2s/%.2s/časování: %s" -#: plugins/sudoers/sudoreplay.c:327 +#: plugins/sudoers/sudoreplay.c:326 +#, c-format +msgid "%s/timing: %s" +msgstr "%s/časování: %s" + +#: plugins/sudoers/sudoreplay.c:330 #, c-format msgid "%s/%s/timing: %s" msgstr "%s/%s/časování: %s" -#: plugins/sudoers/sudoreplay.c:343 +#: plugins/sudoers/sudoreplay.c:346 #, c-format msgid "Replaying sudo session: %s" msgstr "Přehrává se relace sudo: %s" -#: plugins/sudoers/sudoreplay.c:541 plugins/sudoers/sudoreplay.c:588 -#: plugins/sudoers/sudoreplay.c:785 plugins/sudoers/sudoreplay.c:894 -#: plugins/sudoers/sudoreplay.c:979 plugins/sudoers/sudoreplay.c:994 -#: plugins/sudoers/sudoreplay.c:1001 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1170 +#: plugins/sudoers/sudoreplay.c:544 plugins/sudoers/sudoreplay.c:591 +#: plugins/sudoers/sudoreplay.c:789 plugins/sudoers/sudoreplay.c:898 +#: plugins/sudoers/sudoreplay.c:983 plugins/sudoers/sudoreplay.c:998 +#: plugins/sudoers/sudoreplay.c:1005 plugins/sudoers/sudoreplay.c:1012 +#: plugins/sudoers/sudoreplay.c:1019 plugins/sudoers/sudoreplay.c:1026 +#: plugins/sudoers/sudoreplay.c:1174 msgid "unable to add event to queue" msgstr "událost nelze přidat do fronty" -#: plugins/sudoers/sudoreplay.c:656 +#: plugins/sudoers/sudoreplay.c:659 msgid "unable to set tty to raw mode" msgstr "TTY nelze nastavit do přímého režimu" -#: plugins/sudoers/sudoreplay.c:707 -#, c-format +#: plugins/sudoers/sudoreplay.c:710 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Pozor: váš terminál je příliš malý pro správné zobrazení záznamu.\n" -#: plugins/sudoers/sudoreplay.c:708 +#: plugins/sudoers/sudoreplay.c:711 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "Rozměry záznamu jsou %d × %d, váš terminál má rozměry %d × %d." -#: plugins/sudoers/sudoreplay.c:736 +#: plugins/sudoers/sudoreplay.c:739 msgid "Replay finished, press any key to restore the terminal." msgstr "Přehrávání skončilo, pro obnovení terminálu stiskněte libovolnou klávesu." -#: plugins/sudoers/sudoreplay.c:768 +#: plugins/sudoers/sudoreplay.c:772 #, c-format msgid "invalid timing file line: %s" msgstr "neplatný řádek s časovacím souborem: %s" -#: plugins/sudoers/sudoreplay.c:1204 plugins/sudoers/sudoreplay.c:1229 +#: plugins/sudoers/sudoreplay.c:1208 plugins/sudoers/sudoreplay.c:1233 #, c-format msgid "ambiguous expression \"%s\"" msgstr "nejednoznačný výraz „%s“" -#: plugins/sudoers/sudoreplay.c:1251 +#: plugins/sudoers/sudoreplay.c:1255 msgid "unmatched ')' in expression" msgstr "ve výrazu neodpovídá „)“" -#: plugins/sudoers/sudoreplay.c:1255 +#: plugins/sudoers/sudoreplay.c:1259 #, c-format msgid "unknown search term \"%s\"" msgstr "neznámý vyhledávací výraz „%s“" -#: plugins/sudoers/sudoreplay.c:1270 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "%s requires an argument" msgstr "%s vyžaduje argument" -#: plugins/sudoers/sudoreplay.c:1273 plugins/sudoers/sudoreplay.c:1514 +#: plugins/sudoers/sudoreplay.c:1277 plugins/sudoers/sudoreplay.c:1518 #, c-format msgid "invalid regular expression: %s" msgstr "neplatný regulární výraz: %s" -#: plugins/sudoers/sudoreplay.c:1277 +#: plugins/sudoers/sudoreplay.c:1281 #, c-format msgid "could not parse date \"%s\"" msgstr "datum „%s“ se nepodařilo rozebrat" -#: plugins/sudoers/sudoreplay.c:1286 +#: plugins/sudoers/sudoreplay.c:1290 msgid "unmatched '(' in expression" msgstr "ve výrazu neodpovídá „(“" -#: plugins/sudoers/sudoreplay.c:1288 +#: plugins/sudoers/sudoreplay.c:1292 msgid "illegal trailing \"or\"" msgstr "zakázané zakončení „or“" -#: plugins/sudoers/sudoreplay.c:1290 +#: plugins/sudoers/sudoreplay.c:1294 msgid "illegal trailing \"!\"" msgstr "zakázané zakončení „!“" -#: plugins/sudoers/sudoreplay.c:1340 +#: plugins/sudoers/sudoreplay.c:1344 #, c-format msgid "unknown search type %d" msgstr "neznámý vyhledávácí typ %d" -#: plugins/sudoers/sudoreplay.c:1607 +#: plugins/sudoers/sudoreplay.c:1611 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "použití: %s [-hnRS] [-d adresář] [-m číslo] [-s číslo] ID\n" -#: plugins/sudoers/sudoreplay.c:1610 +#: plugins/sudoers/sudoreplay.c:1614 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "použití: %s [-h] [-d adresář] -l [vyhledávací_výraz]\n" -#: plugins/sudoers/sudoreplay.c:1619 +#: plugins/sudoers/sudoreplay.c:1623 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2085,7 +2098,7 @@ "%s – přehraje záznam relace sudo\n" "\n" -#: plugins/sudoers/sudoreplay.c:1621 +#: plugins/sudoers/sudoreplay.c:1625 msgid "" "\n" "Options:\n" @@ -2371,6 +2384,18 @@ msgid "too many levels of includes" msgstr "příliš mnoho úrovní zanoření" +#~ msgid "ignoring invalid attribute value: %s" +#~ msgstr "neplatná hodnota hodnota atributu se ignoruje: %s" + +#~ msgid "unable to cache user %s, out of memory" +#~ msgstr "nelze zapamatovat si uživatele %s, nedostatek paměti" + +#~ msgid "unable to cache group %s, out of memory" +#~ msgstr "nelze zapamatovat si skupinu %s, nedostatek paměti" + +#~ msgid "unable to cache group list for %s, out of memory" +#~ msgstr "nelze zapamatovat si seznam skupin pro %s, nedostatek paměti" + #~ msgid "" #~ "\n" #~ "LDAP Role: UNKNOWN\n" Binary files /tmp/tmpxQuIu2/iFUK1R4uMA/sudo-1.8.29/plugins/sudoers/po/de.mo and /tmp/tmpxQuIu2/W5KRB4HzHp/sudo-1.8.31/plugins/sudoers/po/de.mo differ diff -Nru sudo-1.8.29/plugins/sudoers/po/de.po sudo-1.8.31/plugins/sudoers/po/de.po --- sudo-1.8.29/plugins/sudoers/po/de.po 2019-10-28 12:31:06.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/po/de.po 2019-12-31 12:58:36.000000000 +0000 @@ -3,13 +3,13 @@ # Todd C. Miller , 2011-2013 # Hendrik Knackstedt , 2013 # Mario Blättermann , 2015. -# Jochen Hein , 2001-2018. +# Jochen Hein , 2001-2019. msgid "" msgstr "" -"Project-Id-Version: sudoers 1.8.28b1\n" +"Project-Id-Version: sudoers 1.8.29rc1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2019-07-19 10:39-0600\n" -"PO-Revision-Date: 2019-07-21 12:34+0200\n" +"POT-Creation-Date: 2019-10-21 19:55-0600\n" +"PO-Revision-Date: 2019-11-22 20:06+0100\n" "Last-Translator: Jochen Hein \n" "Language-Team: German \n" "Language: German\n" @@ -43,16 +43,16 @@ msgid "Sorry, try again." msgstr "Das hat nicht funktioniert, bitte nochmal probieren." -#: gram.y:194 gram.y:242 gram.y:249 gram.y:256 gram.y:263 gram.y:270 -#: gram.y:286 gram.y:310 gram.y:317 gram.y:324 gram.y:331 gram.y:338 -#: gram.y:401 gram.y:409 gram.y:419 gram.y:452 gram.y:459 gram.y:466 -#: gram.y:473 gram.y:555 gram.y:562 gram.y:571 gram.y:580 gram.y:597 -#: gram.y:709 gram.y:716 gram.y:723 gram.y:731 gram.y:831 gram.y:838 -#: gram.y:845 gram.y:852 gram.y:859 gram.y:885 gram.y:892 gram.y:899 -#: gram.y:1022 gram.y:1296 plugins/sudoers/alias.c:132 +#: gram.y:196 gram.y:244 gram.y:251 gram.y:258 gram.y:265 gram.y:272 +#: gram.y:288 gram.y:312 gram.y:319 gram.y:326 gram.y:333 gram.y:340 +#: gram.y:403 gram.y:412 gram.y:423 gram.y:456 gram.y:463 gram.y:470 +#: gram.y:477 gram.y:559 gram.y:566 gram.y:575 gram.y:584 gram.y:601 +#: gram.y:713 gram.y:720 gram.y:727 gram.y:735 gram.y:835 gram.y:842 +#: gram.y:849 gram.y:856 gram.y:863 gram.y:889 gram.y:896 gram.y:903 +#: gram.y:1026 gram.y:1303 plugins/sudoers/alias.c:132 #: plugins/sudoers/alias.c:139 plugins/sudoers/alias.c:155 #: plugins/sudoers/auth/bsdauth.c:148 plugins/sudoers/auth/kerb5.c:123 -#: plugins/sudoers/auth/kerb5.c:149 plugins/sudoers/auth/pam.c:656 +#: plugins/sudoers/auth/kerb5.c:149 plugins/sudoers/auth/pam.c:670 #: plugins/sudoers/auth/rfc1938.c:116 plugins/sudoers/auth/sia.c:64 #: plugins/sudoers/cvtsudoers.c:124 plugins/sudoers/cvtsudoers.c:165 #: plugins/sudoers/cvtsudoers.c:182 plugins/sudoers/cvtsudoers.c:193 @@ -66,64 +66,64 @@ #: plugins/sudoers/cvtsudoers_ldif.c:334 plugins/sudoers/cvtsudoers_ldif.c:389 #: plugins/sudoers/cvtsudoers_ldif.c:397 plugins/sudoers/cvtsudoers_ldif.c:414 #: plugins/sudoers/cvtsudoers_ldif.c:423 plugins/sudoers/cvtsudoers_ldif.c:570 -#: plugins/sudoers/defaults.c:664 plugins/sudoers/defaults.c:957 -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/editor.c:72 +#: plugins/sudoers/defaults.c:666 plugins/sudoers/defaults.c:959 +#: plugins/sudoers/defaults.c:1130 plugins/sudoers/editor.c:72 #: plugins/sudoers/editor.c:90 plugins/sudoers/editor.c:101 #: plugins/sudoers/env.c:268 plugins/sudoers/filedigest.c:66 #: plugins/sudoers/filedigest.c:82 plugins/sudoers/gc.c:59 #: plugins/sudoers/group_plugin.c:138 plugins/sudoers/interfaces.c:78 -#: plugins/sudoers/iolog.c:941 plugins/sudoers/iolog_path.c:174 -#: plugins/sudoers/iolog_util.c:85 plugins/sudoers/iolog_util.c:124 -#: plugins/sudoers/iolog_util.c:133 plugins/sudoers/iolog_util.c:143 -#: plugins/sudoers/iolog_util.c:151 plugins/sudoers/iolog_util.c:155 +#: plugins/sudoers/iolog.c:943 plugins/sudoers/iolog_path.c:174 +#: plugins/sudoers/iolog_util.c:86 plugins/sudoers/iolog_util.c:125 +#: plugins/sudoers/iolog_util.c:134 plugins/sudoers/iolog_util.c:144 +#: plugins/sudoers/iolog_util.c:152 plugins/sudoers/iolog_util.c:156 #: plugins/sudoers/ldap.c:185 plugins/sudoers/ldap.c:416 #: plugins/sudoers/ldap.c:420 plugins/sudoers/ldap.c:432 #: plugins/sudoers/ldap.c:723 plugins/sudoers/ldap.c:887 -#: plugins/sudoers/ldap.c:1235 plugins/sudoers/ldap.c:1662 -#: plugins/sudoers/ldap.c:1699 plugins/sudoers/ldap.c:1780 -#: plugins/sudoers/ldap.c:1915 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2032 plugins/sudoers/ldap_conf.c:223 +#: plugins/sudoers/ldap.c:1241 plugins/sudoers/ldap.c:1668 +#: plugins/sudoers/ldap.c:1705 plugins/sudoers/ldap.c:1786 +#: plugins/sudoers/ldap.c:1921 plugins/sudoers/ldap.c:2022 +#: plugins/sudoers/ldap.c:2038 plugins/sudoers/ldap_conf.c:223 #: plugins/sudoers/ldap_conf.c:254 plugins/sudoers/ldap_conf.c:306 -#: plugins/sudoers/ldap_conf.c:342 plugins/sudoers/ldap_conf.c:445 -#: plugins/sudoers/ldap_conf.c:460 plugins/sudoers/ldap_conf.c:557 -#: plugins/sudoers/ldap_conf.c:590 plugins/sudoers/ldap_conf.c:682 -#: plugins/sudoers/ldap_conf.c:764 plugins/sudoers/ldap_util.c:510 -#: plugins/sudoers/ldap_util.c:566 plugins/sudoers/linux_audit.c:83 -#: plugins/sudoers/logging.c:202 plugins/sudoers/logging.c:519 -#: plugins/sudoers/logging.c:545 plugins/sudoers/logging.c:586 -#: plugins/sudoers/logging.c:727 plugins/sudoers/logging.c:1087 +#: plugins/sudoers/ldap_conf.c:342 plugins/sudoers/ldap_conf.c:446 +#: plugins/sudoers/ldap_conf.c:461 plugins/sudoers/ldap_conf.c:558 +#: plugins/sudoers/ldap_conf.c:591 plugins/sudoers/ldap_conf.c:683 +#: plugins/sudoers/ldap_conf.c:765 plugins/sudoers/ldap_util.c:510 +#: plugins/sudoers/ldap_util.c:567 plugins/sudoers/linux_audit.c:83 +#: plugins/sudoers/logging.c:202 plugins/sudoers/logging.c:532 +#: plugins/sudoers/logging.c:558 plugins/sudoers/logging.c:599 +#: plugins/sudoers/logging.c:740 plugins/sudoers/logging.c:1100 #: plugins/sudoers/match_command.c:249 plugins/sudoers/match_command.c:367 -#: plugins/sudoers/match_command.c:414 plugins/sudoers/match_command.c:482 -#: plugins/sudoers/match_digest.c:67 plugins/sudoers/parse.c:200 +#: plugins/sudoers/match_command.c:414 plugins/sudoers/match_command.c:485 +#: plugins/sudoers/match_digest.c:70 plugins/sudoers/parse.c:200 #: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:227 -#: plugins/sudoers/parse.c:239 plugins/sudoers/parse_ldif.c:143 -#: plugins/sudoers/parse_ldif.c:170 plugins/sudoers/parse_ldif.c:239 -#: plugins/sudoers/parse_ldif.c:246 plugins/sudoers/parse_ldif.c:251 -#: plugins/sudoers/parse_ldif.c:327 plugins/sudoers/parse_ldif.c:338 -#: plugins/sudoers/parse_ldif.c:344 plugins/sudoers/parse_ldif.c:369 -#: plugins/sudoers/parse_ldif.c:381 plugins/sudoers/parse_ldif.c:385 -#: plugins/sudoers/parse_ldif.c:399 plugins/sudoers/parse_ldif.c:566 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:621 -#: plugins/sudoers/parse_ldif.c:681 plugins/sudoers/parse_ldif.c:700 -#: plugins/sudoers/parse_ldif.c:746 plugins/sudoers/parse_ldif.c:756 -#: plugins/sudoers/policy.c:504 plugins/sudoers/policy.c:746 +#: plugins/sudoers/parse.c:239 plugins/sudoers/parse_ldif.c:156 +#: plugins/sudoers/parse_ldif.c:187 plugins/sudoers/parse_ldif.c:256 +#: plugins/sudoers/parse_ldif.c:263 plugins/sudoers/parse_ldif.c:268 +#: plugins/sudoers/parse_ldif.c:344 plugins/sudoers/parse_ldif.c:355 +#: plugins/sudoers/parse_ldif.c:361 plugins/sudoers/parse_ldif.c:386 +#: plugins/sudoers/parse_ldif.c:398 plugins/sudoers/parse_ldif.c:402 +#: plugins/sudoers/parse_ldif.c:416 plugins/sudoers/parse_ldif.c:584 +#: plugins/sudoers/parse_ldif.c:614 plugins/sudoers/parse_ldif.c:639 +#: plugins/sudoers/parse_ldif.c:697 plugins/sudoers/parse_ldif.c:714 +#: plugins/sudoers/parse_ldif.c:742 plugins/sudoers/parse_ldif.c:749 +#: plugins/sudoers/policy.c:504 plugins/sudoers/policy.c:750 #: plugins/sudoers/prompt.c:100 plugins/sudoers/pwutil.c:199 -#: plugins/sudoers/pwutil.c:272 plugins/sudoers/pwutil.c:350 -#: plugins/sudoers/pwutil.c:524 plugins/sudoers/pwutil.c:590 -#: plugins/sudoers/pwutil.c:661 plugins/sudoers/pwutil.c:820 -#: plugins/sudoers/pwutil.c:878 plugins/sudoers/pwutil.c:923 -#: plugins/sudoers/pwutil.c:982 plugins/sudoers/sssd.c:154 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:586 +#: plugins/sudoers/pwutil.c:657 plugins/sudoers/pwutil.c:816 +#: plugins/sudoers/pwutil.c:873 plugins/sudoers/pwutil.c:917 +#: plugins/sudoers/pwutil.c:975 plugins/sudoers/sssd.c:154 #: plugins/sudoers/sssd.c:400 plugins/sudoers/sssd.c:463 #: plugins/sudoers/sssd.c:507 plugins/sudoers/sssd.c:554 -#: plugins/sudoers/sssd.c:745 plugins/sudoers/stubs.c:103 -#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:271 -#: plugins/sudoers/sudoers.c:281 plugins/sudoers/sudoers.c:290 -#: plugins/sudoers/sudoers.c:332 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:781 plugins/sudoers/sudoers.c:825 -#: plugins/sudoers/sudoers.c:1119 plugins/sudoers/sudoers_debug.c:114 -#: plugins/sudoers/sudoreplay.c:581 plugins/sudoers/sudoreplay.c:584 -#: plugins/sudoers/sudoreplay.c:1261 plugins/sudoers/sudoreplay.c:1461 -#: plugins/sudoers/sudoreplay.c:1465 plugins/sudoers/testsudoers.c:136 +#: plugins/sudoers/sssd.c:746 plugins/sudoers/stubs.c:103 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:273 +#: plugins/sudoers/sudoers.c:283 plugins/sudoers/sudoers.c:292 +#: plugins/sudoers/sudoers.c:334 plugins/sudoers/sudoers.c:657 +#: plugins/sudoers/sudoers.c:786 plugins/sudoers/sudoers.c:830 +#: plugins/sudoers/sudoers.c:1124 plugins/sudoers/sudoers_debug.c:114 +#: plugins/sudoers/sudoreplay.c:584 plugins/sudoers/sudoreplay.c:587 +#: plugins/sudoers/sudoreplay.c:1265 plugins/sudoers/sudoreplay.c:1465 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/testsudoers.c:136 #: plugins/sudoers/testsudoers.c:236 plugins/sudoers/testsudoers.c:253 #: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:439 #: plugins/sudoers/timestamp.c:483 plugins/sudoers/timestamp.c:960 @@ -137,27 +137,27 @@ msgid "unable to allocate memory" msgstr "Es kann kein Speicher mehr alloziert werden" -#: gram.y:484 +#: gram.y:488 msgid "a digest requires a path name" msgstr "Eine Prüfsumme erfordert einen Pfadnamen" -#: gram.y:610 +#: gram.y:614 msgid "invalid notbefore value" msgstr "ungültiger Wert für »notbefore«" -#: gram.y:618 +#: gram.y:622 msgid "invalid notafter value" msgstr "ungültiger Wert für »notafter«" -#: gram.y:627 plugins/sudoers/policy.c:320 +#: gram.y:631 plugins/sudoers/policy.c:320 msgid "timeout value too large" msgstr "Wert für Timeout ist zu groß" -#: gram.y:629 plugins/sudoers/policy.c:322 +#: gram.y:633 plugins/sudoers/policy.c:322 msgid "invalid timeout value" msgstr "ungültiger Wert für Timeout" -#: gram.y:1296 plugins/sudoers/auth/pam.c:468 plugins/sudoers/auth/pam.c:656 +#: gram.y:1303 plugins/sudoers/auth/pam.c:483 plugins/sudoers/auth/pam.c:670 #: plugins/sudoers/auth/rfc1938.c:116 plugins/sudoers/cvtsudoers.c:124 #: plugins/sudoers/cvtsudoers.c:164 plugins/sudoers/cvtsudoers.c:181 #: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:304 @@ -170,46 +170,46 @@ #: plugins/sudoers/cvtsudoers_ldif.c:262 plugins/sudoers/cvtsudoers_ldif.c:333 #: plugins/sudoers/cvtsudoers_ldif.c:388 plugins/sudoers/cvtsudoers_ldif.c:396 #: plugins/sudoers/cvtsudoers_ldif.c:413 plugins/sudoers/cvtsudoers_ldif.c:422 -#: plugins/sudoers/cvtsudoers_ldif.c:569 plugins/sudoers/defaults.c:664 -#: plugins/sudoers/defaults.c:957 plugins/sudoers/defaults.c:1128 +#: plugins/sudoers/cvtsudoers_ldif.c:569 plugins/sudoers/defaults.c:666 +#: plugins/sudoers/defaults.c:959 plugins/sudoers/defaults.c:1130 #: plugins/sudoers/editor.c:72 plugins/sudoers/editor.c:90 #: plugins/sudoers/editor.c:101 plugins/sudoers/env.c:268 #: plugins/sudoers/filedigest.c:66 plugins/sudoers/filedigest.c:82 #: plugins/sudoers/gc.c:59 plugins/sudoers/group_plugin.c:138 -#: plugins/sudoers/interfaces.c:78 plugins/sudoers/iolog.c:941 -#: plugins/sudoers/iolog_path.c:174 plugins/sudoers/iolog_util.c:85 -#: plugins/sudoers/iolog_util.c:124 plugins/sudoers/iolog_util.c:133 -#: plugins/sudoers/iolog_util.c:143 plugins/sudoers/iolog_util.c:151 -#: plugins/sudoers/iolog_util.c:155 plugins/sudoers/ldap.c:185 +#: plugins/sudoers/interfaces.c:78 plugins/sudoers/iolog.c:943 +#: plugins/sudoers/iolog_path.c:174 plugins/sudoers/iolog_util.c:86 +#: plugins/sudoers/iolog_util.c:125 plugins/sudoers/iolog_util.c:134 +#: plugins/sudoers/iolog_util.c:144 plugins/sudoers/iolog_util.c:152 +#: plugins/sudoers/iolog_util.c:156 plugins/sudoers/ldap.c:185 #: plugins/sudoers/ldap.c:416 plugins/sudoers/ldap.c:420 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:723 -#: plugins/sudoers/ldap.c:887 plugins/sudoers/ldap.c:1235 -#: plugins/sudoers/ldap.c:1662 plugins/sudoers/ldap.c:1699 -#: plugins/sudoers/ldap.c:1780 plugins/sudoers/ldap.c:1915 -#: plugins/sudoers/ldap.c:2016 plugins/sudoers/ldap.c:2032 +#: plugins/sudoers/ldap.c:887 plugins/sudoers/ldap.c:1241 +#: plugins/sudoers/ldap.c:1668 plugins/sudoers/ldap.c:1705 +#: plugins/sudoers/ldap.c:1786 plugins/sudoers/ldap.c:1921 +#: plugins/sudoers/ldap.c:2022 plugins/sudoers/ldap.c:2038 #: plugins/sudoers/ldap_conf.c:223 plugins/sudoers/ldap_conf.c:254 #: plugins/sudoers/ldap_conf.c:306 plugins/sudoers/ldap_conf.c:342 -#: plugins/sudoers/ldap_conf.c:445 plugins/sudoers/ldap_conf.c:460 -#: plugins/sudoers/ldap_conf.c:557 plugins/sudoers/ldap_conf.c:590 -#: plugins/sudoers/ldap_conf.c:681 plugins/sudoers/ldap_conf.c:764 -#: plugins/sudoers/ldap_util.c:510 plugins/sudoers/ldap_util.c:566 +#: plugins/sudoers/ldap_conf.c:446 plugins/sudoers/ldap_conf.c:461 +#: plugins/sudoers/ldap_conf.c:558 plugins/sudoers/ldap_conf.c:591 +#: plugins/sudoers/ldap_conf.c:682 plugins/sudoers/ldap_conf.c:765 +#: plugins/sudoers/ldap_util.c:510 plugins/sudoers/ldap_util.c:567 #: plugins/sudoers/linux_audit.c:83 plugins/sudoers/logging.c:202 -#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545 -#: plugins/sudoers/logging.c:585 plugins/sudoers/logging.c:1087 +#: plugins/sudoers/logging.c:532 plugins/sudoers/logging.c:558 +#: plugins/sudoers/logging.c:598 plugins/sudoers/logging.c:1100 #: plugins/sudoers/match_command.c:248 plugins/sudoers/match_command.c:366 -#: plugins/sudoers/match_command.c:413 plugins/sudoers/match_command.c:482 -#: plugins/sudoers/match_digest.c:67 plugins/sudoers/parse.c:199 +#: plugins/sudoers/match_command.c:413 plugins/sudoers/match_command.c:485 +#: plugins/sudoers/match_digest.c:70 plugins/sudoers/parse.c:199 #: plugins/sudoers/parse.c:211 plugins/sudoers/parse.c:226 -#: plugins/sudoers/parse.c:238 plugins/sudoers/parse_ldif.c:142 -#: plugins/sudoers/parse_ldif.c:169 plugins/sudoers/parse_ldif.c:238 -#: plugins/sudoers/parse_ldif.c:245 plugins/sudoers/parse_ldif.c:250 -#: plugins/sudoers/parse_ldif.c:326 plugins/sudoers/parse_ldif.c:337 -#: plugins/sudoers/parse_ldif.c:343 plugins/sudoers/parse_ldif.c:368 -#: plugins/sudoers/parse_ldif.c:380 plugins/sudoers/parse_ldif.c:384 -#: plugins/sudoers/parse_ldif.c:398 plugins/sudoers/parse_ldif.c:566 -#: plugins/sudoers/parse_ldif.c:595 plugins/sudoers/parse_ldif.c:620 -#: plugins/sudoers/parse_ldif.c:680 plugins/sudoers/parse_ldif.c:699 -#: plugins/sudoers/parse_ldif.c:745 plugins/sudoers/parse_ldif.c:755 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse_ldif.c:155 +#: plugins/sudoers/parse_ldif.c:186 plugins/sudoers/parse_ldif.c:255 +#: plugins/sudoers/parse_ldif.c:262 plugins/sudoers/parse_ldif.c:267 +#: plugins/sudoers/parse_ldif.c:343 plugins/sudoers/parse_ldif.c:354 +#: plugins/sudoers/parse_ldif.c:360 plugins/sudoers/parse_ldif.c:385 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:401 +#: plugins/sudoers/parse_ldif.c:415 plugins/sudoers/parse_ldif.c:584 +#: plugins/sudoers/parse_ldif.c:613 plugins/sudoers/parse_ldif.c:638 +#: plugins/sudoers/parse_ldif.c:696 plugins/sudoers/parse_ldif.c:713 +#: plugins/sudoers/parse_ldif.c:741 plugins/sudoers/parse_ldif.c:748 #: plugins/sudoers/policy.c:134 plugins/sudoers/policy.c:143 #: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:178 #: plugins/sudoers/policy.c:305 plugins/sudoers/policy.c:320 @@ -217,26 +217,26 @@ #: plugins/sudoers/policy.c:358 plugins/sudoers/policy.c:402 #: plugins/sudoers/policy.c:412 plugins/sudoers/policy.c:421 #: plugins/sudoers/policy.c:430 plugins/sudoers/policy.c:504 -#: plugins/sudoers/policy.c:746 plugins/sudoers/prompt.c:100 -#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:272 -#: plugins/sudoers/pwutil.c:350 plugins/sudoers/pwutil.c:524 -#: plugins/sudoers/pwutil.c:590 plugins/sudoers/pwutil.c:661 -#: plugins/sudoers/pwutil.c:820 plugins/sudoers/pwutil.c:878 -#: plugins/sudoers/pwutil.c:923 plugins/sudoers/pwutil.c:982 +#: plugins/sudoers/policy.c:750 plugins/sudoers/prompt.c:100 +#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 +#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 +#: plugins/sudoers/pwutil.c:586 plugins/sudoers/pwutil.c:657 +#: plugins/sudoers/pwutil.c:816 plugins/sudoers/pwutil.c:873 +#: plugins/sudoers/pwutil.c:917 plugins/sudoers/pwutil.c:975 #: plugins/sudoers/set_perms.c:396 plugins/sudoers/set_perms.c:775 #: plugins/sudoers/set_perms.c:1165 plugins/sudoers/set_perms.c:1493 #: plugins/sudoers/set_perms.c:1659 plugins/sudoers/sssd.c:153 #: plugins/sudoers/sssd.c:400 plugins/sudoers/sssd.c:463 #: plugins/sudoers/sssd.c:507 plugins/sudoers/sssd.c:554 -#: plugins/sudoers/sssd.c:745 plugins/sudoers/stubs.c:103 -#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:271 -#: plugins/sudoers/sudoers.c:281 plugins/sudoers/sudoers.c:290 -#: plugins/sudoers/sudoers.c:332 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:781 plugins/sudoers/sudoers.c:825 -#: plugins/sudoers/sudoers.c:1119 plugins/sudoers/sudoers_debug.c:113 -#: plugins/sudoers/sudoreplay.c:581 plugins/sudoers/sudoreplay.c:584 -#: plugins/sudoers/sudoreplay.c:1261 plugins/sudoers/sudoreplay.c:1461 -#: plugins/sudoers/sudoreplay.c:1465 plugins/sudoers/testsudoers.c:136 +#: plugins/sudoers/sssd.c:746 plugins/sudoers/stubs.c:103 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:273 +#: plugins/sudoers/sudoers.c:283 plugins/sudoers/sudoers.c:292 +#: plugins/sudoers/sudoers.c:334 plugins/sudoers/sudoers.c:657 +#: plugins/sudoers/sudoers.c:786 plugins/sudoers/sudoers.c:830 +#: plugins/sudoers/sudoers.c:1124 plugins/sudoers/sudoers_debug.c:113 +#: plugins/sudoers/sudoreplay.c:584 plugins/sudoers/sudoreplay.c:587 +#: plugins/sudoers/sudoreplay.c:1265 plugins/sudoers/sudoreplay.c:1465 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/testsudoers.c:136 #: plugins/sudoers/testsudoers.c:236 plugins/sudoers/testsudoers.c:253 #: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:439 #: plugins/sudoers/timestamp.c:483 plugins/sudoers/timestamp.c:960 @@ -256,11 +256,11 @@ msgid "Alias \"%s\" already defined" msgstr "Alias »%s« ist bereits definiert" -#: plugins/sudoers/auth/aix_auth.c:203 plugins/sudoers/logging.c:788 +#: plugins/sudoers/auth/aix_auth.c:203 plugins/sudoers/logging.c:801 msgid "unable to fork" msgstr "Fehler bei fork()" -#: plugins/sudoers/auth/aix_auth.c:281 +#: plugins/sudoers/auth/aix_auth.c:283 #, c-format msgid "unable to change password for %s" msgstr "Das Passwort für %s« kann nicht geändert werden" @@ -358,37 +358,38 @@ msgid "%s: Cannot verify TGT! Possible attack!: %s" msgstr "%s: TGT kann nicht verifiziert werden! Möglicher Angriff!: %s" -#: plugins/sudoers/auth/pam.c:200 -msgid "unable to initialize PAM" -msgstr "PAM kann nicht initialisiert werden" +#: plugins/sudoers/auth/pam.c:223 +#, c-format +msgid "unable to initialize PAM: %s" +msgstr "PAM kann nicht initialisiert werden: %s" -#: plugins/sudoers/auth/pam.c:299 +#: plugins/sudoers/auth/pam.c:319 #, c-format msgid "PAM authentication error: %s" msgstr "Fehler bei der PAM-Authentifizierung: %s" -#: plugins/sudoers/auth/pam.c:318 +#: plugins/sudoers/auth/pam.c:338 msgid "account validation failure, is your account locked?" msgstr "Fehler bei der Validierung des Kontos, ist das Konto gesperrt?" -#: plugins/sudoers/auth/pam.c:329 +#: plugins/sudoers/auth/pam.c:349 msgid "Account or password is expired, reset your password and try again" msgstr "Konto oder Passwort ist abgelaufen, bitte Passwort zurücksetzen und nochmal probieren" -#: plugins/sudoers/auth/pam.c:337 +#: plugins/sudoers/auth/pam.c:355 #, c-format msgid "unable to change expired password: %s" msgstr "Das abgelaufene Passwort kann nicht geändert werden: %s«" -#: plugins/sudoers/auth/pam.c:348 +#: plugins/sudoers/auth/pam.c:366 msgid "Password expired, contact your system administrator" msgstr "Das Passwort ist abgelaufen, bitte wenden Sie sich an den Systemadministrator" -#: plugins/sudoers/auth/pam.c:353 +#: plugins/sudoers/auth/pam.c:371 msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator" msgstr "Das Konto ist abgelaufen oder in der PAM-Konfiguration fehlt der »account«-Abschnitt für sudo. Bitte wenden Sie sich an den Systemadministrator" -#: plugins/sudoers/auth/pam.c:361 plugins/sudoers/auth/pam.c:367 +#: plugins/sudoers/auth/pam.c:379 plugins/sudoers/auth/pam.c:384 #, c-format msgid "PAM account management error: %s" msgstr "Fehler beim PAM-Account-Management: %s" @@ -487,14 +488,14 @@ "\n" #: plugins/sudoers/check.c:312 plugins/sudoers/check.c:322 -#: plugins/sudoers/sudoers.c:698 plugins/sudoers/sudoers.c:743 +#: plugins/sudoers/sudoers.c:700 plugins/sudoers/sudoers.c:748 #: plugins/sudoers/tsdump.c:126 #, c-format msgid "unknown uid: %u" msgstr "Unbekannte Benutzer-ID: %u" #: plugins/sudoers/check.c:317 plugins/sudoers/iolog.c:255 -#: plugins/sudoers/policy.c:917 plugins/sudoers/sudoers.c:1158 +#: plugins/sudoers/policy.c:921 plugins/sudoers/sudoers.c:1163 #: plugins/sudoers/testsudoers.c:227 plugins/sudoers/testsudoers.c:400 #, c-format msgid "unknown user: %s" @@ -541,13 +542,13 @@ msgid "%s: input and output files must be different" msgstr "%s: Eingabe- und Ausgabedatei müssen unterschiedlich sein" -#: plugins/sudoers/cvtsudoers.c:335 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/cvtsudoers.c:335 plugins/sudoers/sudoers.c:176 #: plugins/sudoers/testsudoers.c:266 plugins/sudoers/visudo.c:254 #: plugins/sudoers/visudo.c:610 plugins/sudoers/visudo.c:933 msgid "unable to initialize sudoers default values" msgstr "Standardwerte für sudoers können nicht initialisiert werden" -#: plugins/sudoers/cvtsudoers.c:421 plugins/sudoers/ldap_conf.c:435 +#: plugins/sudoers/cvtsudoers.c:421 plugins/sudoers/ldap_conf.c:436 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" @@ -575,8 +576,8 @@ #: plugins/sudoers/cvtsudoers.c:622 plugins/sudoers/cvtsudoers.c:639 #: plugins/sudoers/cvtsudoers.c:1245 plugins/sudoers/cvtsudoers_json.c:1130 #: plugins/sudoers/cvtsudoers_ldif.c:643 plugins/sudoers/iolog.c:413 -#: plugins/sudoers/iolog_util.c:74 plugins/sudoers/sudoers.c:909 -#: plugins/sudoers/sudoreplay.c:335 plugins/sudoers/sudoreplay.c:1427 +#: plugins/sudoers/iolog_util.c:75 plugins/sudoers/sudoers.c:914 +#: plugins/sudoers/sudoreplay.c:338 plugins/sudoers/sudoreplay.c:1431 #: plugins/sudoers/timestamp.c:448 plugins/sudoers/tsdump.c:135 #: plugins/sudoers/visudo.c:929 #, c-format @@ -599,7 +600,7 @@ msgstr "Analysefehler in %s\n" #: plugins/sudoers/cvtsudoers.c:1292 plugins/sudoers/iolog.c:500 -#: plugins/sudoers/sudoreplay.c:1131 plugins/sudoers/timestamp.c:332 +#: plugins/sudoers/sudoreplay.c:1135 plugins/sudoers/timestamp.c:332 #: plugins/sudoers/timestamp.c:335 #, c-format msgid "unable to write to %s" @@ -674,11 +675,11 @@ #: plugins/sudoers/cvtsudoers_ldif.c:526 plugins/sudoers/env.c:330 #: plugins/sudoers/env.c:337 plugins/sudoers/env.c:442 #: plugins/sudoers/ldap.c:496 plugins/sudoers/ldap.c:727 -#: plugins/sudoers/ldap.c:1054 plugins/sudoers/ldap_conf.c:227 +#: plugins/sudoers/ldap.c:1060 plugins/sudoers/ldap_conf.c:227 #: plugins/sudoers/ldap_conf.c:317 plugins/sudoers/linux_audit.c:89 -#: plugins/sudoers/logging.c:1092 plugins/sudoers/policy.c:625 +#: plugins/sudoers/logging.c:1105 plugins/sudoers/policy.c:625 #: plugins/sudoers/policy.c:635 plugins/sudoers/prompt.c:168 -#: plugins/sudoers/sudoers.c:847 plugins/sudoers/testsudoers.c:257 +#: plugins/sudoers/sudoers.c:852 plugins/sudoers/testsudoers.c:257 #: plugins/sudoers/toke_util.c:161 #, c-format msgid "internal error, %s overflow" @@ -1203,6 +1204,14 @@ msgid "Ignore case when matching group names" msgstr "Ignoriere Groß-/Kleinschreibung beim Matchen von Gruppennamen" +#: plugins/sudoers/def_data.c:502 +msgid "Log when a command is allowed by sudoers" +msgstr "Protokolliere von sudo erlaubte Kommandos" + +#: plugins/sudoers/def_data.c:506 +msgid "Log when a command is denied by sudoers" +msgstr "Protokolliere von sudo verweigerte Kommandos" + #: plugins/sudoers/defaults.c:231 #, c-format msgid "%s:%d unknown defaults entry \"%s\"" @@ -1306,7 +1315,7 @@ msgid "%s must only be writable by owner" msgstr "%s darf nur für den Eigentümer der Datei schreibbar sein" -#: plugins/sudoers/group_plugin.c:102 plugins/sudoers/sssd.c:563 +#: plugins/sudoers/group_plugin.c:102 plugins/sudoers/sssd.c:562 #, c-format msgid "unable to load %s: %s" msgstr "Laden von %s fehlgeschlagen: %s" @@ -1352,67 +1361,67 @@ msgid "unable to change mode of %s to 0%o" msgstr "Ändern des Modus von %s auf 0%o gescheitert" -#: plugins/sudoers/iolog.c:294 plugins/sudoers/sudoers.c:1189 +#: plugins/sudoers/iolog.c:294 plugins/sudoers/sudoers.c:1194 #: plugins/sudoers/testsudoers.c:424 #, c-format msgid "unknown group: %s" msgstr "Unbekannte Gruppe: %s" -#: plugins/sudoers/iolog.c:464 plugins/sudoers/sudoers.c:913 -#: plugins/sudoers/sudoreplay.c:842 plugins/sudoers/sudoreplay.c:1538 +#: plugins/sudoers/iolog.c:464 plugins/sudoers/sudoers.c:918 +#: plugins/sudoers/sudoreplay.c:846 plugins/sudoers/sudoreplay.c:1542 #: plugins/sudoers/tsdump.c:145 #, c-format msgid "unable to read %s" msgstr "Die Datei »%s« kann nicht gelesen werden" -#: plugins/sudoers/iolog.c:579 plugins/sudoers/iolog.c:799 +#: plugins/sudoers/iolog.c:579 plugins/sudoers/iolog.c:801 #, c-format msgid "unable to create %s" msgstr "Die Datei »%s« kann nicht erstellt werden" -#: plugins/sudoers/iolog.c:822 plugins/sudoers/iolog.c:1037 -#: plugins/sudoers/iolog.c:1113 plugins/sudoers/iolog.c:1207 -#: plugins/sudoers/iolog.c:1267 +#: plugins/sudoers/iolog.c:824 plugins/sudoers/iolog.c:1039 +#: plugins/sudoers/iolog.c:1115 plugins/sudoers/iolog.c:1209 +#: plugins/sudoers/iolog.c:1270 #, c-format msgid "unable to write to I/O log file: %s" msgstr "In die I/O Logdatei kann nicht geschrieben werden: %s" -#: plugins/sudoers/iolog.c:1071 +#: plugins/sudoers/iolog.c:1073 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: Interner Fehler, Logdatei für Event %d nicht geöffnet!" -#: plugins/sudoers/iolog.c:1230 +#: plugins/sudoers/iolog.c:1233 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: Interner Fehler, ungültiges Signal %d" -#: plugins/sudoers/iolog_util.c:89 +#: plugins/sudoers/iolog_util.c:90 #, c-format msgid "%s: invalid log file" msgstr "%s: ungültige Protokolldatei" -#: plugins/sudoers/iolog_util.c:107 +#: plugins/sudoers/iolog_util.c:108 #, c-format msgid "%s: time stamp field is missing" msgstr "%s: Das Feld für den Zeitstempel fehlt" -#: plugins/sudoers/iolog_util.c:113 +#: plugins/sudoers/iolog_util.c:114 #, c-format msgid "%s: time stamp %s: %s" msgstr "%s: Zeitstempel %s: %s" -#: plugins/sudoers/iolog_util.c:120 +#: plugins/sudoers/iolog_util.c:121 #, c-format msgid "%s: user field is missing" msgstr "%s: Das Benutzerfeld fehlt" -#: plugins/sudoers/iolog_util.c:129 +#: plugins/sudoers/iolog_util.c:130 #, c-format msgid "%s: runas user field is missing" msgstr "%s: Das Feld für den »runas«-Benutzer fehlt" -#: plugins/sudoers/iolog_util.c:138 +#: plugins/sudoers/iolog_util.c:139 #, c-format msgid "%s: runas group field is missing" msgstr "%s: Das Feld für die »runas«-Gruppe fehlt" @@ -1431,16 +1440,16 @@ msgid "you must set TLS_CERT in %s to use SSL" msgstr "In der Datei »%s« muss »TLS_CERT« angegeben sein, um SSL zu nutzen" -#: plugins/sudoers/ldap.c:1614 +#: plugins/sudoers/ldap.c:1620 #, c-format msgid "unable to initialize LDAP: %s" msgstr "LDAP kann nicht initialisiert werden: %s" -#: plugins/sudoers/ldap.c:1650 +#: plugins/sudoers/ldap.c:1656 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "start_tls ist angegeben, aber die LDAP-Bibliotheken unterstützen ldap_start_tls_s() und ldap_start_tls_s_np() nicht" -#: plugins/sudoers/ldap.c:1787 plugins/sudoers/parse_ldif.c:737 +#: plugins/sudoers/ldap.c:1793 plugins/sudoers/parse_ldif.c:734 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "Ungültiges »sudoOrder« Attribut: %s" @@ -1496,55 +1505,55 @@ msgid "unable to write log file: %s" msgstr "In die Logdatei kann nicht geschrieben werden: %s" -#: plugins/sudoers/logging.c:247 +#: plugins/sudoers/logging.c:248 msgid "No user or host" msgstr "Kein Benutzer oder Rechner angegeben" -#: plugins/sudoers/logging.c:249 +#: plugins/sudoers/logging.c:250 msgid "validation failure" msgstr "Fehler bei der Validierung" -#: plugins/sudoers/logging.c:256 +#: plugins/sudoers/logging.c:261 msgid "user NOT in sudoers" msgstr "Der Benutzer ist NICHT in der sudoers-Datei enthalten" -#: plugins/sudoers/logging.c:258 +#: plugins/sudoers/logging.c:263 msgid "user NOT authorized on host" msgstr "Der Benutzer ist NICHT auf dem Rechner autorisiert" -#: plugins/sudoers/logging.c:260 +#: plugins/sudoers/logging.c:265 msgid "command not allowed" msgstr "Der Befehl ist nicht erlaubt" -#: plugins/sudoers/logging.c:295 +#: plugins/sudoers/logging.c:301 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s ist nicht in der sudoers-Datei. Dieser Vorfall wird gemeldet.\n" -#: plugins/sudoers/logging.c:298 +#: plugins/sudoers/logging.c:304 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s darf sudo für %s nicht verwenden. Dieser Vorfall wird gemeldet.\n" -#: plugins/sudoers/logging.c:302 +#: plugins/sudoers/logging.c:308 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Leider darf der Benutzer %s sudo für %s nicht verwenden.\n" -#: plugins/sudoers/logging.c:305 +#: plugins/sudoers/logging.c:311 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "Leider darf der Benutzer %s »%s%s%s« als %s%s%s auf %s nicht ausführen.\n" -#: plugins/sudoers/logging.c:342 plugins/sudoers/sudoers.c:440 -#: plugins/sudoers/sudoers.c:442 plugins/sudoers/sudoers.c:444 -#: plugins/sudoers/sudoers.c:446 plugins/sudoers/sudoers.c:601 -#: plugins/sudoers/sudoers.c:603 +#: plugins/sudoers/logging.c:348 plugins/sudoers/sudoers.c:442 +#: plugins/sudoers/sudoers.c:444 plugins/sudoers/sudoers.c:446 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:603 +#: plugins/sudoers/sudoers.c:605 #, c-format msgid "%s: command not found" msgstr "%s: Befehl nicht gefunden" -#: plugins/sudoers/logging.c:344 plugins/sudoers/sudoers.c:436 +#: plugins/sudoers/logging.c:350 plugins/sudoers/sudoers.c:438 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -1553,47 +1562,47 @@ "Im aktuellen Verzeichnis ».« gefundenes »%s« wird ignoriert.\n" "Verwenden Sie »sudo ./%s«, wenn dies der gewünschte Befehl »%s« ist." -#: plugins/sudoers/logging.c:361 +#: plugins/sudoers/logging.c:367 msgid "authentication failure" msgstr "Fehler bei der Authentifizierung" -#: plugins/sudoers/logging.c:387 +#: plugins/sudoers/logging.c:393 msgid "a password is required" msgstr "Ein Passwort ist notwendig" -#: plugins/sudoers/logging.c:450 +#: plugins/sudoers/logging.c:463 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "%u Fehlversuch bei der Passwort-Eingabe" msgstr[1] "%u Fehlversuche bei der Passwort-Eingabe" -#: plugins/sudoers/logging.c:715 +#: plugins/sudoers/logging.c:728 #, c-format msgid "unable to dup stdin: %m" msgstr "Die Standardeingabe kann nicht dupliziert werden: %m" -#: plugins/sudoers/logging.c:755 +#: plugins/sudoers/logging.c:768 #, c-format msgid "unable to execute %s: %m" msgstr "%s kann nicht ausgeführt werden: %m" -#: plugins/sudoers/logging.c:796 plugins/sudoers/logging.c:852 +#: plugins/sudoers/logging.c:809 plugins/sudoers/logging.c:865 #, c-format msgid "unable to fork: %m" msgstr "Fehler bei fork(): %m" -#: plugins/sudoers/logging.c:842 +#: plugins/sudoers/logging.c:855 #, c-format msgid "unable to open pipe: %m" msgstr "Die Pipe kann nicht geöffnet werden: %m" -#: plugins/sudoers/match_digest.c:100 +#: plugins/sudoers/match_digest.c:103 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "Prüfsumme für %s (%s) ist nicht in der Form %s" -#: plugins/sudoers/mkdir_parents.c:77 plugins/sudoers/sudoers.c:938 +#: plugins/sudoers/mkdir_parents.c:77 plugins/sudoers/sudoers.c:943 #: plugins/sudoers/visudo.c:437 plugins/sudoers/visudo.c:733 #, c-format msgid "unable to stat %s" @@ -1632,41 +1641,41 @@ msgid " Options: " msgstr " Optionen: " -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:529 #, c-format msgid " Commands:\n" msgstr " Befehle:\n" -#: plugins/sudoers/parse.c:726 +#: plugins/sudoers/parse.c:720 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Passende Defaults-Einträge für %s auf %s:\n" -#: plugins/sudoers/parse.c:744 +#: plugins/sudoers/parse.c:738 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Runas und befehlsspezifische Standardwerte für %s:\n" -#: plugins/sudoers/parse.c:762 +#: plugins/sudoers/parse.c:756 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Der Benutzer %s darf die folgenden Befehle auf %s ausführen:\n" -#: plugins/sudoers/parse.c:777 +#: plugins/sudoers/parse.c:771 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Der Benutzer %s darf sudo auf dem Rechner %s nicht ausführen.\n" -#: plugins/sudoers/parse_ldif.c:147 -#, c-format -msgid "ignoring invalid attribute value: %s" -msgstr "ignoriere ungültigen Attribut-Wert: %s" - -#: plugins/sudoers/parse_ldif.c:586 +#: plugins/sudoers/parse_ldif.c:604 #, c-format msgid "ignoring incomplete sudoRole: cn: %s" msgstr "ignoriere die unvollständige sudoRole: cn: %s" +#: plugins/sudoers/parse_ldif.c:664 +#, c-format +msgid "invalid LDIF attribute: %s" +msgstr "Ungültiges LDIF-Attribut: %s" + #: plugins/sudoers/policy.c:90 plugins/sudoers/policy.c:116 #, c-format msgid "invalid %.*s set by sudo front-end" @@ -1681,34 +1690,34 @@ msgstr "Benutzername nicht durch das sudo-Frontend angegeben" #: plugins/sudoers/policy.c:443 -msgid "user ID not set by sudo front-end" +msgid "user-ID not set by sudo front-end" msgstr "User-ID nicht durch das sudo-Frontend angegeben" #: plugins/sudoers/policy.c:447 -msgid "group ID not set by sudo front-end" +msgid "group-ID not set by sudo front-end" msgstr "Gruppen-ID nicht durch das sudo-Frontend angegeben" #: plugins/sudoers/policy.c:451 msgid "host name not set by sudo front-end" msgstr "Hostname nicht durch das sudo-Frontend angegeben" -#: plugins/sudoers/policy.c:804 plugins/sudoers/visudo.c:236 +#: plugins/sudoers/policy.c:808 plugins/sudoers/visudo.c:236 #: plugins/sudoers/visudo.c:867 #, c-format msgid "unable to execute %s" msgstr "%s kann nicht ausgeführt werden" -#: plugins/sudoers/policy.c:935 +#: plugins/sudoers/policy.c:939 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Sudoers-Policy-Plugin Version %s\n" -#: plugins/sudoers/policy.c:937 +#: plugins/sudoers/policy.c:941 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Sudoers-Datei-Grammatik-Version %d\n" -#: plugins/sudoers/policy.c:941 +#: plugins/sudoers/policy.c:945 #, c-format msgid "" "\n" @@ -1717,86 +1726,86 @@ "\n" "Sudoers-Pfad: %s\n" -#: plugins/sudoers/policy.c:944 +#: plugins/sudoers/policy.c:948 #, c-format msgid "nsswitch path: %s\n" msgstr "nsswitch-Pfad: %s\n" -#: plugins/sudoers/policy.c:946 +#: plugins/sudoers/policy.c:950 #, c-format msgid "ldap.conf path: %s\n" msgstr "ldap.conf-Pfad: %s\n" -#: plugins/sudoers/policy.c:947 +#: plugins/sudoers/policy.c:951 #, c-format msgid "ldap.secret path: %s\n" msgstr "ldap.secret-Pfad: %s\n" -#: plugins/sudoers/policy.c:980 +#: plugins/sudoers/policy.c:984 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "Der Hook vom Typ %d kann nicht registriert werden (Version %d.%d)" -#: plugins/sudoers/pwutil.c:222 plugins/sudoers/pwutil.c:241 +#: plugins/sudoers/pwutil.c:222 plugins/sudoers/pwutil.c:240 #, c-format -msgid "unable to cache uid %u, out of memory" -msgstr "Die Benutzer-ID %u kann nicht zwischengespeichert werden, kein Speicher verfügbar" +msgid "unable to cache uid %u" +msgstr "Die Benutzer-ID %u kann nicht zwischengespeichert werden" -#: plugins/sudoers/pwutil.c:235 +#: plugins/sudoers/pwutil.c:234 #, c-format msgid "unable to cache uid %u, already exists" msgstr "Die Benutzer-ID %u kann nicht zwischengespeichert werden, sie existiert bereits" -#: plugins/sudoers/pwutil.c:296 plugins/sudoers/pwutil.c:314 -#: plugins/sudoers/pwutil.c:377 plugins/sudoers/pwutil.c:422 +#: plugins/sudoers/pwutil.c:294 plugins/sudoers/pwutil.c:312 +#: plugins/sudoers/pwutil.c:375 plugins/sudoers/pwutil.c:420 #, c-format -msgid "unable to cache user %s, out of memory" -msgstr "Der Benutzer %s kann nicht in den Zwischenspeicher aufgenommen werden, kein Speicher verfügbar" +msgid "unable to cache user %s" +msgstr "Der Benutzer %s kann nicht zwischengespeichert werden" -#: plugins/sudoers/pwutil.c:309 +#: plugins/sudoers/pwutil.c:307 #, c-format msgid "unable to cache user %s, already exists" msgstr "Der Benutzer %s kann nicht in den Zwischenspeicher aufgenommen werden, er existiert bereits" -#: plugins/sudoers/pwutil.c:541 plugins/sudoers/pwutil.c:560 +#: plugins/sudoers/pwutil.c:539 plugins/sudoers/pwutil.c:557 #, c-format -msgid "unable to cache gid %u, out of memory" -msgstr "Die Gruppen-ID %u kann nicht in den Zwischenspeicher aufgenommen werden, kein Speicher verfügbar" +msgid "unable to cache gid %u" +msgstr "Die Gruppen-ID %u kann nicht in den Zwischenspeicher aufgenommen werden" -#: plugins/sudoers/pwutil.c:554 +#: plugins/sudoers/pwutil.c:551 #, c-format msgid "unable to cache gid %u, already exists" msgstr "Die Gruppen-ID %u kann nicht in den Zwischenspeicher aufgenommen werden, sie existiert bereits" -#: plugins/sudoers/pwutil.c:608 plugins/sudoers/pwutil.c:626 -#: plugins/sudoers/pwutil.c:674 plugins/sudoers/pwutil.c:716 +#: plugins/sudoers/pwutil.c:604 plugins/sudoers/pwutil.c:622 +#: plugins/sudoers/pwutil.c:670 plugins/sudoers/pwutil.c:712 #, c-format -msgid "unable to cache group %s, out of memory" -msgstr "Die Gruppe %s kann nicht in den Zwischenspeicher aufgenommen werden, kein Speicher verfügbar" +msgid "unable to cache group %s" +msgstr "Die Gruppe %s kann nicht zwischengespeichert werden" -#: plugins/sudoers/pwutil.c:621 +#: plugins/sudoers/pwutil.c:617 #, c-format msgid "unable to cache group %s, already exists" msgstr "Die Gruppe %s kann nicht in den Zwischenspeicher aufgenommen werden, sie existiert bereits" -#: plugins/sudoers/pwutil.c:843 plugins/sudoers/pwutil.c:896 -#: plugins/sudoers/pwutil.c:947 plugins/sudoers/pwutil.c:1001 +#: plugins/sudoers/pwutil.c:839 plugins/sudoers/pwutil.c:891 +#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:994 #, c-format msgid "unable to cache group list for %s, already exists" msgstr "Die Gruppen-Liste für %s kann nicht in den Zwischenspeicher aufgenommen werden, sie existiert bereits" -#: plugins/sudoers/pwutil.c:849 plugins/sudoers/pwutil.c:901 -#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1006 +#: plugins/sudoers/pwutil.c:845 plugins/sudoers/pwutil.c:896 +#: plugins/sudoers/pwutil.c:947 plugins/sudoers/pwutil.c:999 #, c-format -msgid "unable to cache group list for %s, out of memory" -msgstr "Die Gruppen-Liste für %s kann nicht in den Zwischenspeicher aufgenommen werden, kein Speicher verfügbar" +msgid "unable to cache group list for %s" +msgstr "Die Gruppenliste für %s können nicht zwischengespeichert werden" -#: plugins/sudoers/pwutil.c:890 +#: plugins/sudoers/pwutil.c:885 #, c-format msgid "unable to parse groups for %s" msgstr "Die Gruppen für %s können nicht eingelesen werden" -#: plugins/sudoers/pwutil.c:995 +#: plugins/sudoers/pwutil.c:988 #, c-format msgid "unable to parse gids for %s" msgstr "Die Gruppen für %s können nicht geparst werden" @@ -1864,93 +1873,93 @@ msgid "audit_failure message too long" msgstr "audit_failure-Meldung ist zu lang" -#: plugins/sudoers/sssd.c:565 +#: plugins/sudoers/sssd.c:564 msgid "unable to initialize SSS source. Is SSSD installed on your machine?" msgstr "Die SSS-Quelle kann nicht initialisiert werden. Ist SSSD auf dem Rechner installiert?" -#: plugins/sudoers/sssd.c:573 plugins/sudoers/sssd.c:582 -#: plugins/sudoers/sssd.c:591 plugins/sudoers/sssd.c:600 -#: plugins/sudoers/sssd.c:609 +#: plugins/sudoers/sssd.c:572 plugins/sudoers/sssd.c:581 +#: plugins/sudoers/sssd.c:590 plugins/sudoers/sssd.c:599 +#: plugins/sudoers/sssd.c:608 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "Das Symbol »%s« kann in %s nicht gefunden werden" -#: plugins/sudoers/sudoers.c:210 plugins/sudoers/sudoers.c:866 +#: plugins/sudoers/sudoers.c:212 plugins/sudoers/sudoers.c:871 msgid "problem with defaults entries" msgstr "Problem mit den Standard-Einträgen" -#: plugins/sudoers/sudoers.c:214 +#: plugins/sudoers/sudoers.c:216 msgid "no valid sudoers sources found, quitting" msgstr "Keine gültige sudoers-Quelle gefunden, Programmende" -#: plugins/sudoers/sudoers.c:252 +#: plugins/sudoers/sudoers.c:254 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers gibt an, dass root sudo nicht verwenden darf" -#: plugins/sudoers/sudoers.c:310 +#: plugins/sudoers/sudoers.c:312 msgid "you are not permitted to use the -C option" msgstr "Sie dürfen die Option -C nicht verwenden" -#: plugins/sudoers/sudoers.c:357 +#: plugins/sudoers/sudoers.c:359 #, c-format msgid "timestamp owner (%s): No such user" msgstr "Zeitstempelbesitzer (%s): Benutzer existiert nicht" -#: plugins/sudoers/sudoers.c:372 +#: plugins/sudoers/sudoers.c:374 msgid "no tty" msgstr "Kein tty" -#: plugins/sudoers/sudoers.c:373 +#: plugins/sudoers/sudoers.c:375 msgid "sorry, you must have a tty to run sudo" msgstr "Sie müssen ein TTY haben, um sudo zu verwenden" -#: plugins/sudoers/sudoers.c:435 +#: plugins/sudoers/sudoers.c:437 msgid "command in current directory" msgstr "Befehl ist im aktuellen Verzeichnis" -#: plugins/sudoers/sudoers.c:454 +#: plugins/sudoers/sudoers.c:456 msgid "sorry, you are not allowed set a command timeout" msgstr "Sie dürfen keinen Timeout angeben" -#: plugins/sudoers/sudoers.c:462 +#: plugins/sudoers/sudoers.c:464 msgid "sorry, you are not allowed to preserve the environment" msgstr "Sie dürfen das Environment nicht erhalten" -#: plugins/sudoers/sudoers.c:810 +#: plugins/sudoers/sudoers.c:815 msgid "command too long" msgstr "Der Befehl ist zu lang" -#: plugins/sudoers/sudoers.c:942 +#: plugins/sudoers/sudoers.c:947 #, c-format msgid "%s is not a regular file" msgstr "%s ist keine reguläre Datei" -#: plugins/sudoers/sudoers.c:946 plugins/sudoers/timestamp.c:259 toke.l:967 +#: plugins/sudoers/sudoers.c:951 plugins/sudoers/timestamp.c:259 toke.l:967 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s gehört UID %u, sollte UID %u gehören" -#: plugins/sudoers/sudoers.c:950 toke.l:972 +#: plugins/sudoers/sudoers.c:955 toke.l:972 #, c-format msgid "%s is world writable" msgstr "%s ist für alle beschreibbar (world writable)" -#: plugins/sudoers/sudoers.c:954 toke.l:975 +#: plugins/sudoers/sudoers.c:959 toke.l:975 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s gehört GID %u, sollte allerdings %u gehören" -#: plugins/sudoers/sudoers.c:987 +#: plugins/sudoers/sudoers.c:992 #, c-format msgid "only root can use \"-c %s\"" msgstr "Nur root kann »-c %s« verwenden" -#: plugins/sudoers/sudoers.c:1006 +#: plugins/sudoers/sudoers.c:1011 #, c-format msgid "unknown login class: %s" msgstr "Unbekannte Anmeldeklasse: %s" -#: plugins/sudoers/sudoers.c:1091 plugins/sudoers/sudoers.c:1105 +#: plugins/sudoers/sudoers.c:1096 plugins/sudoers/sudoers.c:1110 #, c-format msgid "unable to resolve host %s" msgstr "Hostname %s kann nicht aufgelöst werden" @@ -1975,107 +1984,111 @@ msgid "%s/%.2s/%.2s/%.2s/timing: %s" msgstr "%s/%.2s/%.2s/%.2s/Zeit: %s" -#: plugins/sudoers/sudoreplay.c:327 +#: plugins/sudoers/sudoreplay.c:326 +#, c-format +msgid "%s/timing: %s" +msgstr "%s/Zeit: %s" + +#: plugins/sudoers/sudoreplay.c:330 #, c-format msgid "%s/%s/timing: %s" msgstr "%s/%s/Zeit: %s" -#: plugins/sudoers/sudoreplay.c:343 +#: plugins/sudoers/sudoreplay.c:346 #, c-format msgid "Replaying sudo session: %s" msgstr "Sudo-Sitzung wird abgespielt: %s" -#: plugins/sudoers/sudoreplay.c:541 plugins/sudoers/sudoreplay.c:588 -#: plugins/sudoers/sudoreplay.c:785 plugins/sudoers/sudoreplay.c:894 -#: plugins/sudoers/sudoreplay.c:979 plugins/sudoers/sudoreplay.c:994 -#: plugins/sudoers/sudoreplay.c:1001 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1170 +#: plugins/sudoers/sudoreplay.c:544 plugins/sudoers/sudoreplay.c:591 +#: plugins/sudoers/sudoreplay.c:789 plugins/sudoers/sudoreplay.c:898 +#: plugins/sudoers/sudoreplay.c:983 plugins/sudoers/sudoreplay.c:998 +#: plugins/sudoers/sudoreplay.c:1005 plugins/sudoers/sudoreplay.c:1012 +#: plugins/sudoers/sudoreplay.c:1019 plugins/sudoers/sudoreplay.c:1026 +#: plugins/sudoers/sudoreplay.c:1174 msgid "unable to add event to queue" msgstr "Event kann nicht zur Warteschlange hinzugefügt werden" -#: plugins/sudoers/sudoreplay.c:656 +#: plugins/sudoers/sudoreplay.c:659 msgid "unable to set tty to raw mode" msgstr "TTY konnte nicht in den Raw-Modus versetzt werden" -#: plugins/sudoers/sudoreplay.c:707 -#, c-format +#: plugins/sudoers/sudoreplay.c:710 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "" "Warnung: Ihr Terminal ist zu klein, um das Protokoll korrekt\n" "wiederzugeben.\n" -#: plugins/sudoers/sudoreplay.c:708 +#: plugins/sudoers/sudoreplay.c:711 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "Protokollgeometrie ist %d x %d, die Geometrie Ihres Terminals ist %d x %d." -#: plugins/sudoers/sudoreplay.c:736 +#: plugins/sudoers/sudoreplay.c:739 msgid "Replay finished, press any key to restore the terminal." msgstr "Wiedergabe beendet, eine Taste drücken um das Terminal wiederherzustellen." -#: plugins/sudoers/sudoreplay.c:768 +#: plugins/sudoers/sudoreplay.c:772 #, c-format msgid "invalid timing file line: %s" msgstr "Ungültige Zeitdateizeile: %s" -#: plugins/sudoers/sudoreplay.c:1204 plugins/sudoers/sudoreplay.c:1229 +#: plugins/sudoers/sudoreplay.c:1208 plugins/sudoers/sudoreplay.c:1233 #, c-format msgid "ambiguous expression \"%s\"" msgstr "Mehrdeutiger Ausdruck »%s«" -#: plugins/sudoers/sudoreplay.c:1251 +#: plugins/sudoers/sudoreplay.c:1255 msgid "unmatched ')' in expression" msgstr "»)« ohne öffnende Klammer im Ausdruck" -#: plugins/sudoers/sudoreplay.c:1255 +#: plugins/sudoers/sudoreplay.c:1259 #, c-format msgid "unknown search term \"%s\"" msgstr "Unbekannter Suchbegriff »%s«" -#: plugins/sudoers/sudoreplay.c:1270 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "%s requires an argument" msgstr "%s erfordert ein Argument" -#: plugins/sudoers/sudoreplay.c:1273 plugins/sudoers/sudoreplay.c:1514 +#: plugins/sudoers/sudoreplay.c:1277 plugins/sudoers/sudoreplay.c:1518 #, c-format msgid "invalid regular expression: %s" msgstr "ungültiger regulärer Ausdruck: %s" -#: plugins/sudoers/sudoreplay.c:1277 +#: plugins/sudoers/sudoreplay.c:1281 #, c-format msgid "could not parse date \"%s\"" msgstr "Datum »%s« konnte nicht analysiert werden" -#: plugins/sudoers/sudoreplay.c:1286 +#: plugins/sudoers/sudoreplay.c:1290 msgid "unmatched '(' in expression" msgstr "»(« ohne schließende Klammer im Ausdruck" -#: plugins/sudoers/sudoreplay.c:1288 +#: plugins/sudoers/sudoreplay.c:1292 msgid "illegal trailing \"or\"" msgstr "Ungültiges nachgestelltes »or«" -#: plugins/sudoers/sudoreplay.c:1290 +#: plugins/sudoers/sudoreplay.c:1294 msgid "illegal trailing \"!\"" msgstr "Ungültiges nachgestelltes »!«" -#: plugins/sudoers/sudoreplay.c:1340 +#: plugins/sudoers/sudoreplay.c:1344 #, c-format msgid "unknown search type %d" msgstr "Unbekannter Suchtyp %d" -#: plugins/sudoers/sudoreplay.c:1607 +#: plugins/sudoers/sudoreplay.c:1611 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "Aufruf: %s [-hnRS] [-d Verzeichnis] [-m Max_Wartezeit] [-s Geschwindigkeitsfaktor] ID\n" -#: plugins/sudoers/sudoreplay.c:1610 +#: plugins/sudoers/sudoreplay.c:1614 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "Aufruf: %s [-h] [-d Verzeichnis] -l [Suchausdruck]\n" -#: plugins/sudoers/sudoreplay.c:1619 +#: plugins/sudoers/sudoreplay.c:1623 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2084,7 +2097,7 @@ "%s – sudo-Sitzungsprotokolle abspielen\n" "\n" -#: plugins/sudoers/sudoreplay.c:1621 +#: plugins/sudoers/sudoreplay.c:1625 msgid "" "\n" "Options:\n" Binary files /tmp/tmpxQuIu2/iFUK1R4uMA/sudo-1.8.29/plugins/sudoers/po/fi.mo and /tmp/tmpxQuIu2/W5KRB4HzHp/sudo-1.8.31/plugins/sudoers/po/fi.mo differ diff -Nru sudo-1.8.29/plugins/sudoers/po/fi.po sudo-1.8.31/plugins/sudoers/po/fi.po --- sudo-1.8.29/plugins/sudoers/po/fi.po 2019-10-28 12:31:06.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/po/fi.po 2019-12-31 12:58:36.000000000 +0000 @@ -2,14 +2,15 @@ # This file is put in the public domain. # This file is distributed under the same license as the sudo package. # Jorma Karvonen , 2011-2017. +# Lauri Nurmi , 2019. # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.8.21b2\n" +"Project-Id-Version: sudoers 1.8.29rc1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2017-08-03 10:04-0600\n" -"PO-Revision-Date: 2017-08-20 16:23+0300\n" -"Last-Translator: Jorma Karvonen \n" +"POT-Creation-Date: 2019-10-21 19:55-0600\n" +"PO-Revision-Date: 2019-12-05 23:24+0200\n" +"Last-Translator: Lauri Nurmi \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" @@ -17,6 +18,7 @@ "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 2.2.4\n" #: confstr.sh:1 msgid "syntax error" @@ -24,11 +26,11 @@ #: confstr.sh:2 msgid "%p's password: " -msgstr "%p:n salasana: " +msgstr "%p, salasana: " #: confstr.sh:3 msgid "[sudo] password for %p: " -msgstr "[sudo] salasana henkilölle %p: " +msgstr "[sudo] %p-käyttäjän salasana: " #: confstr.sh:4 msgid "Password: " @@ -36,218 +38,276 @@ #: confstr.sh:5 msgid "*** SECURITY information for %h ***" -msgstr "*** TURVALLISUUS-tietoja kohteelle %h ***" +msgstr "*** TURVALLISUUStietoa %h-koneelta ***" #: confstr.sh:6 msgid "Sorry, try again." msgstr "Yritä uudelleen." -#: gram.y:192 gram.y:240 gram.y:247 gram.y:254 gram.y:261 gram.y:268 -#: gram.y:284 gram.y:307 gram.y:314 gram.y:321 gram.y:328 gram.y:335 -#: gram.y:398 gram.y:406 gram.y:416 gram.y:449 gram.y:456 gram.y:463 -#: gram.y:470 gram.y:552 gram.y:559 gram.y:568 gram.y:577 gram.y:594 -#: gram.y:706 gram.y:713 gram.y:720 gram.y:728 gram.y:824 gram.y:831 -#: gram.y:838 gram.y:845 gram.y:852 gram.y:878 gram.y:885 gram.y:892 -#: gram.y:1015 gram.y:1195 gram.y:1202 plugins/sudoers/alias.c:124 -#: plugins/sudoers/alias.c:139 plugins/sudoers/auth/bsdauth.c:141 -#: plugins/sudoers/auth/kerb5.c:119 plugins/sudoers/auth/kerb5.c:145 -#: plugins/sudoers/auth/pam.c:486 plugins/sudoers/auth/rfc1938.c:109 -#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/defaults.c:647 -#: plugins/sudoers/defaults.c:902 plugins/sudoers/defaults.c:1073 -#: plugins/sudoers/editor.c:64 plugins/sudoers/editor.c:82 -#: plugins/sudoers/editor.c:93 plugins/sudoers/env.c:233 -#: plugins/sudoers/filedigest.c:120 plugins/sudoers/filedigest_gcrypt.c:90 -#: plugins/sudoers/filedigest_openssl.c:111 plugins/sudoers/gc.c:52 -#: plugins/sudoers/group_plugin.c:134 plugins/sudoers/interfaces.c:71 -#: plugins/sudoers/iolog.c:941 plugins/sudoers/iolog_path.c:167 -#: plugins/sudoers/ldap.c:449 plugins/sudoers/ldap.c:480 -#: plugins/sudoers/ldap.c:532 plugins/sudoers/ldap.c:565 -#: plugins/sudoers/ldap.c:963 plugins/sudoers/ldap.c:1157 -#: plugins/sudoers/ldap.c:1168 plugins/sudoers/ldap.c:1184 -#: plugins/sudoers/ldap.c:1476 plugins/sudoers/ldap.c:1636 -#: plugins/sudoers/ldap.c:1718 plugins/sudoers/ldap.c:1858 -#: plugins/sudoers/ldap.c:1882 plugins/sudoers/ldap.c:1971 -#: plugins/sudoers/ldap.c:1986 plugins/sudoers/ldap.c:2082 -#: plugins/sudoers/ldap.c:2115 plugins/sudoers/ldap.c:2196 -#: plugins/sudoers/ldap.c:2278 plugins/sudoers/ldap.c:2375 -#: plugins/sudoers/ldap.c:3209 plugins/sudoers/ldap.c:3241 -#: plugins/sudoers/ldap.c:3550 plugins/sudoers/ldap.c:3578 -#: plugins/sudoers/ldap.c:3594 plugins/sudoers/ldap.c:3684 -#: plugins/sudoers/ldap.c:3700 plugins/sudoers/linux_audit.c:76 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:451 -#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:684 -#: plugins/sudoers/logging.c:942 plugins/sudoers/match.c:617 -#: plugins/sudoers/match.c:664 plugins/sudoers/match.c:714 -#: plugins/sudoers/match.c:738 plugins/sudoers/match.c:826 -#: plugins/sudoers/match.c:915 plugins/sudoers/parse.c:248 -#: plugins/sudoers/parse.c:260 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:287 plugins/sudoers/policy.c:419 -#: plugins/sudoers/policy.c:653 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:139 plugins/sudoers/pwutil.c:210 -#: plugins/sudoers/pwutil.c:286 plugins/sudoers/pwutil.c:457 -#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:591 -#: plugins/sudoers/pwutil.c:749 plugins/sudoers/pwutil.c:806 -#: plugins/sudoers/pwutil.c:851 plugins/sudoers/pwutil.c:908 -#: plugins/sudoers/sssd.c:162 plugins/sudoers/sssd.c:194 -#: plugins/sudoers/sssd.c:237 plugins/sudoers/sssd.c:244 -#: plugins/sudoers/sssd.c:280 plugins/sudoers/sssd.c:390 -#: plugins/sudoers/sssd.c:459 plugins/sudoers/sssd.c:1057 -#: plugins/sudoers/sssd.c:1236 plugins/sudoers/sssd.c:1250 -#: plugins/sudoers/sssd.c:1266 plugins/sudoers/sudoers.c:263 -#: plugins/sudoers/sudoers.c:273 plugins/sudoers/sudoers.c:281 -#: plugins/sudoers/sudoers.c:365 plugins/sudoers/sudoers.c:681 -#: plugins/sudoers/sudoers.c:806 plugins/sudoers/sudoers.c:850 -#: plugins/sudoers/sudoers.c:1122 plugins/sudoers/sudoers_debug.c:107 -#: plugins/sudoers/sudoreplay.c:1234 plugins/sudoers/sudoreplay.c:1346 -#: plugins/sudoers/sudoreplay.c:1386 plugins/sudoers/sudoreplay.c:1395 -#: plugins/sudoers/sudoreplay.c:1405 plugins/sudoers/sudoreplay.c:1413 -#: plugins/sudoers/sudoreplay.c:1417 plugins/sudoers/sudoreplay.c:1573 -#: plugins/sudoers/sudoreplay.c:1577 plugins/sudoers/testsudoers.c:131 -#: plugins/sudoers/testsudoers.c:217 plugins/sudoers/testsudoers.c:234 -#: plugins/sudoers/timestamp.c:389 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/timestamp.c:852 plugins/sudoers/toke_util.c:56 -#: plugins/sudoers/toke_util.c:109 plugins/sudoers/toke_util.c:146 -#: plugins/sudoers/visudo.c:153 plugins/sudoers/visudo.c:309 -#: plugins/sudoers/visudo.c:315 plugins/sudoers/visudo.c:446 -#: plugins/sudoers/visudo.c:624 plugins/sudoers/visudo.c:985 -#: plugins/sudoers/visudo.c:1051 plugins/sudoers/visudo.c:1095 -#: plugins/sudoers/visudo.c:1197 plugins/sudoers/visudo_json.c:1025 toke.l:849 -#: toke.l:949 toke.l:1106 +#: gram.y:196 gram.y:244 gram.y:251 gram.y:258 gram.y:265 gram.y:272 +#: gram.y:288 gram.y:312 gram.y:319 gram.y:326 gram.y:333 gram.y:340 +#: gram.y:403 gram.y:412 gram.y:423 gram.y:456 gram.y:463 gram.y:470 +#: gram.y:477 gram.y:559 gram.y:566 gram.y:575 gram.y:584 gram.y:601 +#: gram.y:713 gram.y:720 gram.y:727 gram.y:735 gram.y:835 gram.y:842 +#: gram.y:849 gram.y:856 gram.y:863 gram.y:889 gram.y:896 gram.y:903 +#: gram.y:1026 gram.y:1303 plugins/sudoers/alias.c:132 +#: plugins/sudoers/alias.c:139 plugins/sudoers/alias.c:155 +#: plugins/sudoers/auth/bsdauth.c:148 plugins/sudoers/auth/kerb5.c:123 +#: plugins/sudoers/auth/kerb5.c:149 plugins/sudoers/auth/pam.c:670 +#: plugins/sudoers/auth/rfc1938.c:116 plugins/sudoers/auth/sia.c:64 +#: plugins/sudoers/cvtsudoers.c:124 plugins/sudoers/cvtsudoers.c:165 +#: plugins/sudoers/cvtsudoers.c:182 plugins/sudoers/cvtsudoers.c:193 +#: plugins/sudoers/cvtsudoers.c:305 plugins/sudoers/cvtsudoers.c:433 +#: plugins/sudoers/cvtsudoers.c:566 plugins/sudoers/cvtsudoers.c:583 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1179 +#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285 +#: plugins/sudoers/cvtsudoers_ldif.c:154 plugins/sudoers/cvtsudoers_ldif.c:197 +#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:263 +#: plugins/sudoers/cvtsudoers_ldif.c:334 plugins/sudoers/cvtsudoers_ldif.c:389 +#: plugins/sudoers/cvtsudoers_ldif.c:397 plugins/sudoers/cvtsudoers_ldif.c:414 +#: plugins/sudoers/cvtsudoers_ldif.c:423 plugins/sudoers/cvtsudoers_ldif.c:570 +#: plugins/sudoers/defaults.c:666 plugins/sudoers/defaults.c:959 +#: plugins/sudoers/defaults.c:1130 plugins/sudoers/editor.c:72 +#: plugins/sudoers/editor.c:90 plugins/sudoers/editor.c:101 +#: plugins/sudoers/env.c:268 plugins/sudoers/filedigest.c:66 +#: plugins/sudoers/filedigest.c:82 plugins/sudoers/gc.c:59 +#: plugins/sudoers/group_plugin.c:138 plugins/sudoers/interfaces.c:78 +#: plugins/sudoers/iolog.c:943 plugins/sudoers/iolog_path.c:174 +#: plugins/sudoers/iolog_util.c:86 plugins/sudoers/iolog_util.c:125 +#: plugins/sudoers/iolog_util.c:134 plugins/sudoers/iolog_util.c:144 +#: plugins/sudoers/iolog_util.c:152 plugins/sudoers/iolog_util.c:156 +#: plugins/sudoers/ldap.c:185 plugins/sudoers/ldap.c:416 +#: plugins/sudoers/ldap.c:420 plugins/sudoers/ldap.c:432 +#: plugins/sudoers/ldap.c:723 plugins/sudoers/ldap.c:887 +#: plugins/sudoers/ldap.c:1241 plugins/sudoers/ldap.c:1668 +#: plugins/sudoers/ldap.c:1705 plugins/sudoers/ldap.c:1786 +#: plugins/sudoers/ldap.c:1921 plugins/sudoers/ldap.c:2022 +#: plugins/sudoers/ldap.c:2038 plugins/sudoers/ldap_conf.c:223 +#: plugins/sudoers/ldap_conf.c:254 plugins/sudoers/ldap_conf.c:306 +#: plugins/sudoers/ldap_conf.c:342 plugins/sudoers/ldap_conf.c:446 +#: plugins/sudoers/ldap_conf.c:461 plugins/sudoers/ldap_conf.c:558 +#: plugins/sudoers/ldap_conf.c:591 plugins/sudoers/ldap_conf.c:683 +#: plugins/sudoers/ldap_conf.c:765 plugins/sudoers/ldap_util.c:510 +#: plugins/sudoers/ldap_util.c:567 plugins/sudoers/linux_audit.c:83 +#: plugins/sudoers/logging.c:202 plugins/sudoers/logging.c:532 +#: plugins/sudoers/logging.c:558 plugins/sudoers/logging.c:599 +#: plugins/sudoers/logging.c:740 plugins/sudoers/logging.c:1100 +#: plugins/sudoers/match_command.c:249 plugins/sudoers/match_command.c:367 +#: plugins/sudoers/match_command.c:414 plugins/sudoers/match_command.c:485 +#: plugins/sudoers/match_digest.c:70 plugins/sudoers/parse.c:200 +#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:227 +#: plugins/sudoers/parse.c:239 plugins/sudoers/parse_ldif.c:156 +#: plugins/sudoers/parse_ldif.c:187 plugins/sudoers/parse_ldif.c:256 +#: plugins/sudoers/parse_ldif.c:263 plugins/sudoers/parse_ldif.c:268 +#: plugins/sudoers/parse_ldif.c:344 plugins/sudoers/parse_ldif.c:355 +#: plugins/sudoers/parse_ldif.c:361 plugins/sudoers/parse_ldif.c:386 +#: plugins/sudoers/parse_ldif.c:398 plugins/sudoers/parse_ldif.c:402 +#: plugins/sudoers/parse_ldif.c:416 plugins/sudoers/parse_ldif.c:584 +#: plugins/sudoers/parse_ldif.c:614 plugins/sudoers/parse_ldif.c:639 +#: plugins/sudoers/parse_ldif.c:697 plugins/sudoers/parse_ldif.c:714 +#: plugins/sudoers/parse_ldif.c:742 plugins/sudoers/parse_ldif.c:749 +#: plugins/sudoers/policy.c:504 plugins/sudoers/policy.c:750 +#: plugins/sudoers/prompt.c:100 plugins/sudoers/pwutil.c:199 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:586 +#: plugins/sudoers/pwutil.c:657 plugins/sudoers/pwutil.c:816 +#: plugins/sudoers/pwutil.c:873 plugins/sudoers/pwutil.c:917 +#: plugins/sudoers/pwutil.c:975 plugins/sudoers/sssd.c:154 +#: plugins/sudoers/sssd.c:400 plugins/sudoers/sssd.c:463 +#: plugins/sudoers/sssd.c:507 plugins/sudoers/sssd.c:554 +#: plugins/sudoers/sssd.c:746 plugins/sudoers/stubs.c:103 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:273 +#: plugins/sudoers/sudoers.c:283 plugins/sudoers/sudoers.c:292 +#: plugins/sudoers/sudoers.c:334 plugins/sudoers/sudoers.c:657 +#: plugins/sudoers/sudoers.c:786 plugins/sudoers/sudoers.c:830 +#: plugins/sudoers/sudoers.c:1124 plugins/sudoers/sudoers_debug.c:114 +#: plugins/sudoers/sudoreplay.c:584 plugins/sudoers/sudoreplay.c:587 +#: plugins/sudoers/sudoreplay.c:1265 plugins/sudoers/sudoreplay.c:1465 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/testsudoers.c:136 +#: plugins/sudoers/testsudoers.c:236 plugins/sudoers/testsudoers.c:253 +#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:439 +#: plugins/sudoers/timestamp.c:483 plugins/sudoers/timestamp.c:960 +#: plugins/sudoers/toke_util.c:59 plugins/sudoers/toke_util.c:112 +#: plugins/sudoers/toke_util.c:149 plugins/sudoers/tsdump.c:130 +#: plugins/sudoers/visudo.c:152 plugins/sudoers/visudo.c:328 +#: plugins/sudoers/visudo.c:334 plugins/sudoers/visudo.c:444 +#: plugins/sudoers/visudo.c:622 plugins/sudoers/visudo.c:942 +#: plugins/sudoers/visudo.c:1029 plugins/sudoers/visudo.c:1118 toke.l:846 +#: toke.l:947 toke.l:1104 msgid "unable to allocate memory" msgstr "muistin varaaminen epäonnistui" -#: gram.y:481 +#: gram.y:488 msgid "a digest requires a path name" msgstr "tiiviste vaatii polkunimen" -#: gram.y:607 +#: gram.y:614 msgid "invalid notbefore value" msgstr "virheellinen notbefore-arvo" -#: gram.y:615 +#: gram.y:622 msgid "invalid notafter value" msgstr "virheellinen notafter-arvo" -#: gram.y:624 plugins/sudoers/policy.c:266 +#: gram.y:631 plugins/sudoers/policy.c:320 msgid "timeout value too large" -msgstr "aikavalvonta-arvo on liian iso" +msgstr "aikakatkaisuarvo on liian suuri" -#: gram.y:626 plugins/sudoers/policy.c:268 +#: gram.y:633 plugins/sudoers/policy.c:322 msgid "invalid timeout value" msgstr "virheellinen aikavalvonta-arvo" -#: gram.y:1195 gram.y:1202 plugins/sudoers/auth/pam.c:320 -#: plugins/sudoers/auth/pam.c:486 plugins/sudoers/auth/rfc1938.c:109 -#: plugins/sudoers/defaults.c:647 plugins/sudoers/defaults.c:902 -#: plugins/sudoers/defaults.c:1073 plugins/sudoers/editor.c:64 -#: plugins/sudoers/editor.c:82 plugins/sudoers/editor.c:93 -#: plugins/sudoers/env.c:233 plugins/sudoers/filedigest.c:120 -#: plugins/sudoers/filedigest_gcrypt.c:72 -#: plugins/sudoers/filedigest_gcrypt.c:90 -#: plugins/sudoers/filedigest_openssl.c:111 plugins/sudoers/gc.c:52 -#: plugins/sudoers/group_plugin.c:134 plugins/sudoers/interfaces.c:71 -#: plugins/sudoers/iolog.c:941 plugins/sudoers/iolog_path.c:167 -#: plugins/sudoers/ldap.c:449 plugins/sudoers/ldap.c:480 -#: plugins/sudoers/ldap.c:532 plugins/sudoers/ldap.c:565 -#: plugins/sudoers/ldap.c:963 plugins/sudoers/ldap.c:1157 -#: plugins/sudoers/ldap.c:1168 plugins/sudoers/ldap.c:1184 -#: plugins/sudoers/ldap.c:1476 plugins/sudoers/ldap.c:1636 -#: plugins/sudoers/ldap.c:1718 plugins/sudoers/ldap.c:1858 -#: plugins/sudoers/ldap.c:1882 plugins/sudoers/ldap.c:1971 -#: plugins/sudoers/ldap.c:1986 plugins/sudoers/ldap.c:2082 -#: plugins/sudoers/ldap.c:2115 plugins/sudoers/ldap.c:2195 -#: plugins/sudoers/ldap.c:2278 plugins/sudoers/ldap.c:2375 -#: plugins/sudoers/ldap.c:3209 plugins/sudoers/ldap.c:3241 -#: plugins/sudoers/ldap.c:3550 plugins/sudoers/ldap.c:3577 -#: plugins/sudoers/ldap.c:3593 plugins/sudoers/ldap.c:3684 -#: plugins/sudoers/ldap.c:3700 plugins/sudoers/linux_audit.c:76 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:451 -#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:942 -#: plugins/sudoers/match.c:616 plugins/sudoers/match.c:663 -#: plugins/sudoers/match.c:714 plugins/sudoers/match.c:738 -#: plugins/sudoers/match.c:826 plugins/sudoers/match.c:914 -#: plugins/sudoers/parse.c:248 plugins/sudoers/parse.c:260 -#: plugins/sudoers/parse.c:275 plugins/sudoers/parse.c:287 -#: plugins/sudoers/policy.c:99 plugins/sudoers/policy.c:108 -#: plugins/sudoers/policy.c:117 plugins/sudoers/policy.c:141 -#: plugins/sudoers/policy.c:252 plugins/sudoers/policy.c:266 -#: plugins/sudoers/policy.c:268 plugins/sudoers/policy.c:292 -#: plugins/sudoers/policy.c:301 plugins/sudoers/policy.c:340 -#: plugins/sudoers/policy.c:350 plugins/sudoers/policy.c:359 -#: plugins/sudoers/policy.c:368 plugins/sudoers/policy.c:419 -#: plugins/sudoers/policy.c:653 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:139 plugins/sudoers/pwutil.c:210 -#: plugins/sudoers/pwutil.c:286 plugins/sudoers/pwutil.c:457 -#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:591 -#: plugins/sudoers/pwutil.c:749 plugins/sudoers/pwutil.c:806 -#: plugins/sudoers/pwutil.c:851 plugins/sudoers/pwutil.c:908 -#: plugins/sudoers/set_perms.c:387 plugins/sudoers/set_perms.c:766 -#: plugins/sudoers/set_perms.c:1150 plugins/sudoers/set_perms.c:1476 -#: plugins/sudoers/set_perms.c:1641 plugins/sudoers/sssd.c:162 -#: plugins/sudoers/sssd.c:194 plugins/sudoers/sssd.c:237 -#: plugins/sudoers/sssd.c:244 plugins/sudoers/sssd.c:280 -#: plugins/sudoers/sssd.c:390 plugins/sudoers/sssd.c:459 -#: plugins/sudoers/sssd.c:1057 plugins/sudoers/sssd.c:1235 -#: plugins/sudoers/sssd.c:1250 plugins/sudoers/sssd.c:1266 -#: plugins/sudoers/sudoers.c:263 plugins/sudoers/sudoers.c:273 -#: plugins/sudoers/sudoers.c:281 plugins/sudoers/sudoers.c:365 -#: plugins/sudoers/sudoers.c:681 plugins/sudoers/sudoers.c:806 -#: plugins/sudoers/sudoers.c:850 plugins/sudoers/sudoers.c:1122 -#: plugins/sudoers/sudoers_debug.c:106 plugins/sudoers/sudoreplay.c:1234 -#: plugins/sudoers/sudoreplay.c:1346 plugins/sudoers/sudoreplay.c:1386 -#: plugins/sudoers/sudoreplay.c:1395 plugins/sudoers/sudoreplay.c:1405 -#: plugins/sudoers/sudoreplay.c:1413 plugins/sudoers/sudoreplay.c:1417 -#: plugins/sudoers/sudoreplay.c:1573 plugins/sudoers/sudoreplay.c:1577 -#: plugins/sudoers/testsudoers.c:131 plugins/sudoers/testsudoers.c:217 -#: plugins/sudoers/testsudoers.c:234 plugins/sudoers/timestamp.c:389 -#: plugins/sudoers/timestamp.c:433 plugins/sudoers/timestamp.c:852 -#: plugins/sudoers/toke_util.c:56 plugins/sudoers/toke_util.c:109 -#: plugins/sudoers/toke_util.c:146 plugins/sudoers/visudo.c:153 -#: plugins/sudoers/visudo.c:309 plugins/sudoers/visudo.c:315 -#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:624 -#: plugins/sudoers/visudo.c:985 plugins/sudoers/visudo.c:1051 -#: plugins/sudoers/visudo.c:1095 plugins/sudoers/visudo.c:1197 -#: plugins/sudoers/visudo_json.c:1025 toke.l:849 toke.l:949 toke.l:1106 +#: gram.y:1303 plugins/sudoers/auth/pam.c:483 plugins/sudoers/auth/pam.c:670 +#: plugins/sudoers/auth/rfc1938.c:116 plugins/sudoers/cvtsudoers.c:124 +#: plugins/sudoers/cvtsudoers.c:164 plugins/sudoers/cvtsudoers.c:181 +#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:304 +#: plugins/sudoers/cvtsudoers.c:432 plugins/sudoers/cvtsudoers.c:565 +#: plugins/sudoers/cvtsudoers.c:582 plugins/sudoers/cvtsudoers.c:646 +#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 +#: plugins/sudoers/cvtsudoers.c:1179 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1285 plugins/sudoers/cvtsudoers_ldif.c:153 +#: plugins/sudoers/cvtsudoers_ldif.c:196 plugins/sudoers/cvtsudoers_ldif.c:243 +#: plugins/sudoers/cvtsudoers_ldif.c:262 plugins/sudoers/cvtsudoers_ldif.c:333 +#: plugins/sudoers/cvtsudoers_ldif.c:388 plugins/sudoers/cvtsudoers_ldif.c:396 +#: plugins/sudoers/cvtsudoers_ldif.c:413 plugins/sudoers/cvtsudoers_ldif.c:422 +#: plugins/sudoers/cvtsudoers_ldif.c:569 plugins/sudoers/defaults.c:666 +#: plugins/sudoers/defaults.c:959 plugins/sudoers/defaults.c:1130 +#: plugins/sudoers/editor.c:72 plugins/sudoers/editor.c:90 +#: plugins/sudoers/editor.c:101 plugins/sudoers/env.c:268 +#: plugins/sudoers/filedigest.c:66 plugins/sudoers/filedigest.c:82 +#: plugins/sudoers/gc.c:59 plugins/sudoers/group_plugin.c:138 +#: plugins/sudoers/interfaces.c:78 plugins/sudoers/iolog.c:943 +#: plugins/sudoers/iolog_path.c:174 plugins/sudoers/iolog_util.c:86 +#: plugins/sudoers/iolog_util.c:125 plugins/sudoers/iolog_util.c:134 +#: plugins/sudoers/iolog_util.c:144 plugins/sudoers/iolog_util.c:152 +#: plugins/sudoers/iolog_util.c:156 plugins/sudoers/ldap.c:185 +#: plugins/sudoers/ldap.c:416 plugins/sudoers/ldap.c:420 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:723 +#: plugins/sudoers/ldap.c:887 plugins/sudoers/ldap.c:1241 +#: plugins/sudoers/ldap.c:1668 plugins/sudoers/ldap.c:1705 +#: plugins/sudoers/ldap.c:1786 plugins/sudoers/ldap.c:1921 +#: plugins/sudoers/ldap.c:2022 plugins/sudoers/ldap.c:2038 +#: plugins/sudoers/ldap_conf.c:223 plugins/sudoers/ldap_conf.c:254 +#: plugins/sudoers/ldap_conf.c:306 plugins/sudoers/ldap_conf.c:342 +#: plugins/sudoers/ldap_conf.c:446 plugins/sudoers/ldap_conf.c:461 +#: plugins/sudoers/ldap_conf.c:558 plugins/sudoers/ldap_conf.c:591 +#: plugins/sudoers/ldap_conf.c:682 plugins/sudoers/ldap_conf.c:765 +#: plugins/sudoers/ldap_util.c:510 plugins/sudoers/ldap_util.c:567 +#: plugins/sudoers/linux_audit.c:83 plugins/sudoers/logging.c:202 +#: plugins/sudoers/logging.c:532 plugins/sudoers/logging.c:558 +#: plugins/sudoers/logging.c:598 plugins/sudoers/logging.c:1100 +#: plugins/sudoers/match_command.c:248 plugins/sudoers/match_command.c:366 +#: plugins/sudoers/match_command.c:413 plugins/sudoers/match_command.c:485 +#: plugins/sudoers/match_digest.c:70 plugins/sudoers/parse.c:199 +#: plugins/sudoers/parse.c:211 plugins/sudoers/parse.c:226 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse_ldif.c:155 +#: plugins/sudoers/parse_ldif.c:186 plugins/sudoers/parse_ldif.c:255 +#: plugins/sudoers/parse_ldif.c:262 plugins/sudoers/parse_ldif.c:267 +#: plugins/sudoers/parse_ldif.c:343 plugins/sudoers/parse_ldif.c:354 +#: plugins/sudoers/parse_ldif.c:360 plugins/sudoers/parse_ldif.c:385 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:401 +#: plugins/sudoers/parse_ldif.c:415 plugins/sudoers/parse_ldif.c:584 +#: plugins/sudoers/parse_ldif.c:613 plugins/sudoers/parse_ldif.c:638 +#: plugins/sudoers/parse_ldif.c:696 plugins/sudoers/parse_ldif.c:713 +#: plugins/sudoers/parse_ldif.c:741 plugins/sudoers/parse_ldif.c:748 +#: plugins/sudoers/policy.c:134 plugins/sudoers/policy.c:143 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:178 +#: plugins/sudoers/policy.c:305 plugins/sudoers/policy.c:320 +#: plugins/sudoers/policy.c:322 plugins/sudoers/policy.c:348 +#: plugins/sudoers/policy.c:358 plugins/sudoers/policy.c:402 +#: plugins/sudoers/policy.c:412 plugins/sudoers/policy.c:421 +#: plugins/sudoers/policy.c:430 plugins/sudoers/policy.c:504 +#: plugins/sudoers/policy.c:750 plugins/sudoers/prompt.c:100 +#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 +#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 +#: plugins/sudoers/pwutil.c:586 plugins/sudoers/pwutil.c:657 +#: plugins/sudoers/pwutil.c:816 plugins/sudoers/pwutil.c:873 +#: plugins/sudoers/pwutil.c:917 plugins/sudoers/pwutil.c:975 +#: plugins/sudoers/set_perms.c:396 plugins/sudoers/set_perms.c:775 +#: plugins/sudoers/set_perms.c:1165 plugins/sudoers/set_perms.c:1493 +#: plugins/sudoers/set_perms.c:1659 plugins/sudoers/sssd.c:153 +#: plugins/sudoers/sssd.c:400 plugins/sudoers/sssd.c:463 +#: plugins/sudoers/sssd.c:507 plugins/sudoers/sssd.c:554 +#: plugins/sudoers/sssd.c:746 plugins/sudoers/stubs.c:103 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:273 +#: plugins/sudoers/sudoers.c:283 plugins/sudoers/sudoers.c:292 +#: plugins/sudoers/sudoers.c:334 plugins/sudoers/sudoers.c:657 +#: plugins/sudoers/sudoers.c:786 plugins/sudoers/sudoers.c:830 +#: plugins/sudoers/sudoers.c:1124 plugins/sudoers/sudoers_debug.c:113 +#: plugins/sudoers/sudoreplay.c:584 plugins/sudoers/sudoreplay.c:587 +#: plugins/sudoers/sudoreplay.c:1265 plugins/sudoers/sudoreplay.c:1465 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/testsudoers.c:136 +#: plugins/sudoers/testsudoers.c:236 plugins/sudoers/testsudoers.c:253 +#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:439 +#: plugins/sudoers/timestamp.c:483 plugins/sudoers/timestamp.c:960 +#: plugins/sudoers/toke_util.c:59 plugins/sudoers/toke_util.c:112 +#: plugins/sudoers/toke_util.c:149 plugins/sudoers/tsdump.c:130 +#: plugins/sudoers/visudo.c:152 plugins/sudoers/visudo.c:328 +#: plugins/sudoers/visudo.c:334 plugins/sudoers/visudo.c:444 +#: plugins/sudoers/visudo.c:622 plugins/sudoers/visudo.c:942 +#: plugins/sudoers/visudo.c:1029 plugins/sudoers/visudo.c:1118 toke.l:846 +#: toke.l:947 toke.l:1104 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: plugins/sudoers/alias.c:135 +#: plugins/sudoers/alias.c:151 #, c-format msgid "Alias \"%s\" already defined" -msgstr "Alias \"%s\" on jo määritelty" +msgstr "Alias ”%s” on jo määritelty" -#: plugins/sudoers/auth/bsdauth.c:68 +#: plugins/sudoers/auth/aix_auth.c:203 plugins/sudoers/logging.c:801 +msgid "unable to fork" +msgstr "haarauttaminen epäonnistui" + +#: plugins/sudoers/auth/aix_auth.c:283 +#, fuzzy, c-format +#| msgid "unable to change expired password: %s" +msgid "unable to change password for %s" +msgstr "vanhentuneen salasanan vaihtaminen epäonnistui: %s" + +#: plugins/sudoers/auth/bsdauth.c:75 #, c-format msgid "unable to get login class for user %s" msgstr "kirjautumisluokan saaminen käyttäjälle %s epäonnistui" -#: plugins/sudoers/auth/bsdauth.c:73 +#: plugins/sudoers/auth/bsdauth.c:80 msgid "unable to begin bsd authentication" msgstr "bsd-todentamisen aloittaminen epäonnistui" -#: plugins/sudoers/auth/bsdauth.c:81 +#: plugins/sudoers/auth/bsdauth.c:88 msgid "invalid authentication type" msgstr "virheellinen todennustyyppi" -#: plugins/sudoers/auth/bsdauth.c:90 +#: plugins/sudoers/auth/bsdauth.c:97 msgid "unable to initialize BSD authentication" -msgstr "BSD-todentamisen alustaminen epäonnistui" +msgstr "BSD-todennuksen alustaminen epäonnistui" -#: plugins/sudoers/auth/fwtk.c:52 +#: plugins/sudoers/auth/bsdauth.c:185 +msgid "your account has expired" +msgstr "tilisi on vanhentunut" + +#: plugins/sudoers/auth/bsdauth.c:187 +#, fuzzy +#| msgid "au_open: failed" +msgid "approval failed" +msgstr "au_open: epäonnistui" + +#: plugins/sudoers/auth/fwtk.c:59 msgid "unable to read fwtk config" msgstr "fwtk config -asetuksen lukeminen epäonnistui" -#: plugins/sudoers/auth/fwtk.c:57 +#: plugins/sudoers/auth/fwtk.c:64 msgid "unable to connect to authentication server" msgstr "todentamispalvelimelle yhdistäminen epäonnistui" -#: plugins/sudoers/auth/fwtk.c:63 plugins/sudoers/auth/fwtk.c:87 -#: plugins/sudoers/auth/fwtk.c:121 +#: plugins/sudoers/auth/fwtk.c:70 plugins/sudoers/auth/fwtk.c:94 +#: plugins/sudoers/auth/fwtk.c:126 msgid "lost connection to authentication server" msgstr "kadotettiin yhteys todentamispalvelimelle" -#: plugins/sudoers/auth/fwtk.c:67 +#: plugins/sudoers/auth/fwtk.c:74 #, c-format msgid "" "authentication server error:\n" @@ -256,156 +316,163 @@ "todentamispalvelinvirhe:\n" "%s" -#: plugins/sudoers/auth/kerb5.c:111 +#: plugins/sudoers/auth/kerb5.c:115 #, c-format msgid "%s: unable to convert principal to string ('%s'): %s" msgstr "%s: valtuutetun (’%s’) muuntaminen merkkijonoksi epäonnistui: %s" # Ensimmäinen parametri on auth name -#: plugins/sudoers/auth/kerb5.c:161 +#: plugins/sudoers/auth/kerb5.c:165 #, c-format msgid "%s: unable to parse '%s': %s" msgstr "%s: todentamisnimen ’%s’ jäsentäminen epäonnistui: %s" -#: plugins/sudoers/auth/kerb5.c:170 +#: plugins/sudoers/auth/kerb5.c:174 #, c-format msgid "%s: unable to resolve credential cache: %s" msgstr "%s: valtuustietovälimuistin ratkaiseminen epäonnistui: %s" -#: plugins/sudoers/auth/kerb5.c:217 +#: plugins/sudoers/auth/kerb5.c:221 #, c-format msgid "%s: unable to allocate options: %s" msgstr "%s: muistin varaaminen valitsimille epäonnistui: %s" -#: plugins/sudoers/auth/kerb5.c:232 +#: plugins/sudoers/auth/kerb5.c:236 #, c-format msgid "%s: unable to get credentials: %s" msgstr "%s: valtuustietojen hakeminen epäonnistui: %s" -#: plugins/sudoers/auth/kerb5.c:245 +#: plugins/sudoers/auth/kerb5.c:249 #, c-format msgid "%s: unable to initialize credential cache: %s" msgstr "%s: valtuustietovälimuistin alustaminen epäonnistui: %s" -#: plugins/sudoers/auth/kerb5.c:248 +#: plugins/sudoers/auth/kerb5.c:252 #, c-format msgid "%s: unable to store credential in cache: %s" msgstr "%s: valtuustietojen tallentaminen valtuustietovälimuistiin epäonnistui: %s" -#: plugins/sudoers/auth/kerb5.c:312 +#: plugins/sudoers/auth/kerb5.c:316 #, c-format msgid "%s: unable to get host principal: %s" msgstr "%s: tietokoneen valtuutetun hakeminen epäonnistui: %s" -#: plugins/sudoers/auth/kerb5.c:326 +#: plugins/sudoers/auth/kerb5.c:330 #, c-format msgid "%s: Cannot verify TGT! Possible attack!: %s" msgstr "%s: TGT-lipun todentaminen epäonnistui! Mahdollinen hyökkäys!: %s" -#: plugins/sudoers/auth/pam.c:108 -msgid "unable to initialize PAM" -msgstr "PAM:in alustaminen epäonnistui" +#: plugins/sudoers/auth/pam.c:223 +#, c-format +msgid "unable to initialize PAM: %s" +msgstr "PAMin alustaminen epäonnistui: %s" -#: plugins/sudoers/auth/pam.c:194 +#: plugins/sudoers/auth/pam.c:319 +#, c-format +msgid "PAM authentication error: %s" +msgstr "PAM-todentamisvirhe: %s" + +#: plugins/sudoers/auth/pam.c:338 msgid "account validation failure, is your account locked?" msgstr "tilikelpuutushäiriö, onko tilisi lukittu?" -#: plugins/sudoers/auth/pam.c:198 +#: plugins/sudoers/auth/pam.c:349 msgid "Account or password is expired, reset your password and try again" msgstr "Tili tai salasana on vanhentunut, nollaa salasanasi tai yritä uudelleen" -#: plugins/sudoers/auth/pam.c:206 +#: plugins/sudoers/auth/pam.c:355 #, c-format msgid "unable to change expired password: %s" msgstr "vanhentuneen salasanan vaihtaminen epäonnistui: %s" -#: plugins/sudoers/auth/pam.c:211 +#: plugins/sudoers/auth/pam.c:366 msgid "Password expired, contact your system administrator" msgstr "Salasana vanhentunut, ota yhteyttä järjestelmän ylläpitäjään" -#: plugins/sudoers/auth/pam.c:215 +#: plugins/sudoers/auth/pam.c:371 msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator" msgstr "Tili vanhentunut tai PAM-asetuksista puuttuu ”account”-lohko sudo-komennolle, ota yhteyttä järjestelmän ylläpitäjään" -#: plugins/sudoers/auth/pam.c:229 -#, c-format -msgid "PAM authentication error: %s" +#: plugins/sudoers/auth/pam.c:379 plugins/sudoers/auth/pam.c:384 +#, fuzzy, c-format +#| msgid "PAM authentication error: %s" +msgid "PAM account management error: %s" msgstr "PAM-todentamisvirhe: %s" -#: plugins/sudoers/auth/rfc1938.c:97 plugins/sudoers/visudo.c:227 +#: plugins/sudoers/auth/rfc1938.c:104 plugins/sudoers/visudo.c:248 #, c-format msgid "you do not exist in the %s database" msgstr "ei ole olemassa %s-tietokannassa" -#: plugins/sudoers/auth/securid5.c:73 +#: plugins/sudoers/auth/securid5.c:77 msgid "failed to initialise the ACE API library" msgstr "ACE API -kirjaston alustaminen epäonnistui" -#: plugins/sudoers/auth/securid5.c:99 +#: plugins/sudoers/auth/securid5.c:103 msgid "unable to contact the SecurID server" msgstr "yhteyden ottaminen SecurID-palvelimeen epäonnistui" -#: plugins/sudoers/auth/securid5.c:108 +#: plugins/sudoers/auth/securid5.c:112 msgid "User ID locked for SecurID Authentication" msgstr "Käyttäjätunniste lukittu SecurID-todennukselle" -#: plugins/sudoers/auth/securid5.c:112 plugins/sudoers/auth/securid5.c:163 +#: plugins/sudoers/auth/securid5.c:116 plugins/sudoers/auth/securid5.c:167 msgid "invalid username length for SecurID" msgstr "virheellinen käyttäjänimipituus kohteelle SecurID" -#: plugins/sudoers/auth/securid5.c:116 plugins/sudoers/auth/securid5.c:168 +#: plugins/sudoers/auth/securid5.c:120 plugins/sudoers/auth/securid5.c:172 msgid "invalid Authentication Handle for SecurID" msgstr "virheellinen todentamiskäsittelijä kohteelle SecurID" -#: plugins/sudoers/auth/securid5.c:120 +#: plugins/sudoers/auth/securid5.c:124 msgid "SecurID communication failed" msgstr "SecurID-viestintä epäonnistui" -#: plugins/sudoers/auth/securid5.c:124 plugins/sudoers/auth/securid5.c:213 +#: plugins/sudoers/auth/securid5.c:128 plugins/sudoers/auth/securid5.c:217 msgid "unknown SecurID error" msgstr "tuntematon SecurID-virhe" -#: plugins/sudoers/auth/securid5.c:158 +#: plugins/sudoers/auth/securid5.c:162 msgid "invalid passcode length for SecurID" msgstr "virheellinen salasanakoodipituus kohteelle SecurID" -#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:125 +#: plugins/sudoers/auth/sia.c:74 plugins/sudoers/auth/sia.c:129 msgid "unable to initialize SIA session" msgstr "SIA-istunnon alustaminen epäonnistui" -#: plugins/sudoers/auth/sudo_auth.c:126 +#: plugins/sudoers/auth/sudo_auth.c:138 msgid "invalid authentication methods" msgstr "virheelliset todennusmetodit" -#: plugins/sudoers/auth/sudo_auth.c:128 +#: plugins/sudoers/auth/sudo_auth.c:140 msgid "Invalid authentication methods compiled into sudo! You may not mix standalone and non-standalone authentication." msgstr "Virheellisiä todennusmenetelmiä käännetty sudo-ohjelmaan! Yksittäisiä ja ei-yksittäisiä todennuksia ei voi sekoittaa keskenään." -#: plugins/sudoers/auth/sudo_auth.c:224 plugins/sudoers/auth/sudo_auth.c:274 +#: plugins/sudoers/auth/sudo_auth.c:261 plugins/sudoers/auth/sudo_auth.c:311 msgid "no authentication methods" -msgstr "ei todennusmenetelmiä:" +msgstr "ei todennusmenetelmiä" -#: plugins/sudoers/auth/sudo_auth.c:226 +#: plugins/sudoers/auth/sudo_auth.c:263 msgid "There are no authentication methods compiled into sudo! If you want to turn off authentication, use the --disable-authentication configure option." msgstr "Sudo-ohjelmaan ei ole käännetty todentamismenelmiä! Jos haluat kääntää pois todentamisen, käytä asetusvalitsinta --disable-authentication." -#: plugins/sudoers/auth/sudo_auth.c:276 +#: plugins/sudoers/auth/sudo_auth.c:313 msgid "Unable to initialize authentication methods." msgstr "Todentamismenetelmien alustaminen epäonnistui." -#: plugins/sudoers/auth/sudo_auth.c:441 +#: plugins/sudoers/auth/sudo_auth.c:479 msgid "Authentication methods:" msgstr "Todennusmenetelmät:" -#: plugins/sudoers/bsm_audit.c:120 plugins/sudoers/bsm_audit.c:211 +#: plugins/sudoers/bsm_audit.c:125 plugins/sudoers/bsm_audit.c:217 msgid "Could not determine audit condition" msgstr "Audit-ehdon määrittely epäonnistui" -#: plugins/sudoers/bsm_audit.c:183 plugins/sudoers/bsm_audit.c:273 +#: plugins/sudoers/bsm_audit.c:190 plugins/sudoers/bsm_audit.c:281 msgid "unable to commit audit record" msgstr "commit-toiminnon suorittaminen audit-tietueelle epäonnistui" -#: plugins/sudoers/check.c:252 +#: plugins/sudoers/check.c:269 msgid "" "\n" "We trust you have received the usual lecture from the local System\n" @@ -425,883 +492,1077 @@ " #3) Suuren voiman mukana tulee suuri vastuu.\n" "\n" -#: plugins/sudoers/check.c:295 plugins/sudoers/check.c:305 -#: plugins/sudoers/sudoers.c:724 plugins/sudoers/sudoers.c:769 +#: plugins/sudoers/check.c:312 plugins/sudoers/check.c:322 +#: plugins/sudoers/sudoers.c:700 plugins/sudoers/sudoers.c:748 +#: plugins/sudoers/tsdump.c:126 #, c-format msgid "unknown uid: %u" msgstr "tuntematon uid-käyttäjätunniste: %u" -#: plugins/sudoers/check.c:300 plugins/sudoers/iolog.c:260 -#: plugins/sudoers/policy.c:826 plugins/sudoers/sudoers.c:1161 -#: plugins/sudoers/testsudoers.c:208 plugins/sudoers/testsudoers.c:366 +#: plugins/sudoers/check.c:317 plugins/sudoers/iolog.c:255 +#: plugins/sudoers/policy.c:921 plugins/sudoers/sudoers.c:1163 +#: plugins/sudoers/testsudoers.c:227 plugins/sudoers/testsudoers.c:400 #, c-format msgid "unknown user: %s" msgstr "tuntematon käyttäjä: %s" -#: plugins/sudoers/def_data.c:41 +#: plugins/sudoers/cvtsudoers.c:199 +#, c-format +msgid "order increment: %s: %s" +msgstr "" + +#: plugins/sudoers/cvtsudoers.c:215 +#, c-format +msgid "starting order: %s: %s" +msgstr "" + +#: plugins/sudoers/cvtsudoers.c:225 +#, c-format +msgid "order padding: %s: %s" +msgstr "" + +#: plugins/sudoers/cvtsudoers.c:233 plugins/sudoers/sudoreplay.c:289 +#: plugins/sudoers/visudo.c:184 +#, c-format +msgid "%s version %s\n" +msgstr "%s versio %s\n" + +#: plugins/sudoers/cvtsudoers.c:235 plugins/sudoers/visudo.c:186 +#, c-format +msgid "%s grammar version %d\n" +msgstr "%s kielioppiversio %d\n" + +#: plugins/sudoers/cvtsudoers.c:252 plugins/sudoers/testsudoers.c:175 +#, fuzzy, c-format +#| msgid "unsupported digest type %d for %s" +msgid "unsupported input format %s" +msgstr "tukematon tiivistetyyppi %d kohteelle %s" + +#: plugins/sudoers/cvtsudoers.c:267 +#, fuzzy, c-format +#| msgid "unsupported digest type %d for %s" +msgid "unsupported output format %s" +msgstr "tukematon tiivistetyyppi %d kohteelle %s" + +#: plugins/sudoers/cvtsudoers.c:319 +#, c-format +msgid "%s: input and output files must be different" +msgstr "%s: syöte- ja tulostetiedostojen on oltava erilaiset" + +#: plugins/sudoers/cvtsudoers.c:335 plugins/sudoers/sudoers.c:176 +#: plugins/sudoers/testsudoers.c:266 plugins/sudoers/visudo.c:254 +#: plugins/sudoers/visudo.c:610 plugins/sudoers/visudo.c:933 +msgid "unable to initialize sudoers default values" +msgstr "sudoers-oletusarvojen alustaminen epäonnistui" + +#: plugins/sudoers/cvtsudoers.c:421 plugins/sudoers/ldap_conf.c:436 +#, c-format +msgid "%s: %s: %s: %s" +msgstr "%s: %s: %s: %s" + +#: plugins/sudoers/cvtsudoers.c:480 +#, fuzzy, c-format +#| msgid "unknown user: %s" +msgid "%s: unknown key word: %s" +msgstr "tuntematon käyttäjä: %s" + +#: plugins/sudoers/cvtsudoers.c:526 +#, fuzzy, c-format +#| msgid "invalid filter option: %s" +msgid "invalid defaults type: %s" +msgstr "virheellinen suodatinvalitsin: %s" + +#: plugins/sudoers/cvtsudoers.c:549 +#, fuzzy, c-format +#| msgid "invalid regular expression: %s" +msgid "invalid suppression type: %s" +msgstr "virheellinen säännöllinen lauseke: %s" + +#: plugins/sudoers/cvtsudoers.c:589 plugins/sudoers/cvtsudoers.c:603 +#, c-format +msgid "invalid filter: %s" +msgstr "virheellinen suodatin: %s" + +# Avaamisen kohde voi olla timestamp file, sudoers file tai pathbuf +#: plugins/sudoers/cvtsudoers.c:622 plugins/sudoers/cvtsudoers.c:639 +#: plugins/sudoers/cvtsudoers.c:1245 plugins/sudoers/cvtsudoers_json.c:1130 +#: plugins/sudoers/cvtsudoers_ldif.c:643 plugins/sudoers/iolog.c:413 +#: plugins/sudoers/iolog_util.c:75 plugins/sudoers/sudoers.c:914 +#: plugins/sudoers/sudoreplay.c:338 plugins/sudoers/sudoreplay.c:1431 +#: plugins/sudoers/timestamp.c:448 plugins/sudoers/tsdump.c:135 +#: plugins/sudoers/visudo.c:929 +#, c-format +msgid "unable to open %s" +msgstr "kohteen %s avaaminen epäonnistui" + +#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:938 +#, c-format +msgid "failed to parse %s file, unknown error" +msgstr "tiedoston %s jäsentäminen epäonnistui, tuntematon virhe" + +#: plugins/sudoers/cvtsudoers.c:650 plugins/sudoers/visudo.c:955 +#, c-format +msgid "parse error in %s near line %d\n" +msgstr "jäsentämisvirhe tiedostossa %s lähellä riviä %d\n" + +#: plugins/sudoers/cvtsudoers.c:653 plugins/sudoers/visudo.c:958 +#, c-format +msgid "parse error in %s\n" +msgstr "jäsentämisvirhe tiedostossa %s\n" + +# Kirjoittamisen kohde voi olla timestamp file tai pathbuf +#: plugins/sudoers/cvtsudoers.c:1292 plugins/sudoers/iolog.c:500 +#: plugins/sudoers/sudoreplay.c:1135 plugins/sudoers/timestamp.c:332 +#: plugins/sudoers/timestamp.c:335 +#, c-format +msgid "unable to write to %s" +msgstr "kohteeseen %s kirjoittaminen epäonnistui" + +#: plugins/sudoers/cvtsudoers.c:1315 +#, fuzzy, c-format +#| msgid "" +#| "%s - safely edit the sudoers file\n" +#| "\n" +msgid "" +"%s - convert between sudoers file formats\n" +"\n" +msgstr "" +"%s - muokkaa sudoers-tiedostoa turvallisesti\n" +"\n" + +#: plugins/sudoers/cvtsudoers.c:1317 +msgid "" +"\n" +"Options:\n" +" -b, --base=dn the base DN for sudo LDAP queries\n" +" -c, --config=conf_file the path to the configuration file\n" +" -d, --defaults=deftypes only convert Defaults of the specified types\n" +" -e, --expand-aliases expand aliases when converting\n" +" -f, --output-format=format set output format: JSON, LDIF or sudoers\n" +" -i, --input-format=format set input format: LDIF or sudoers\n" +" -I, --increment=num amount to increase each sudoOrder by\n" +" -h, --help display help message and exit\n" +" -m, --match=filter only convert entries that match the filter\n" +" -M, --match-local match filter uses passwd and group databases\n" +" -o, --output=output_file write converted sudoers to output_file\n" +" -O, --order-start=num starting point for first sudoOrder\n" +" -p, --prune-matches prune non-matching users, groups and hosts\n" +" -P, --padding=num base padding for sudoOrder increment\n" +" -s, --suppress=sections suppress output of certain sections\n" +" -V, --version display version information and exit" +msgstr "" + +#: plugins/sudoers/cvtsudoers_json.c:684 plugins/sudoers/cvtsudoers_json.c:720 +#: plugins/sudoers/cvtsudoers_json.c:938 +#, c-format +msgid "unknown defaults entry \"%s\"" +msgstr "tuntematon oletusrivi \"%s\"" + +#: plugins/sudoers/cvtsudoers_json.c:858 plugins/sudoers/cvtsudoers_json.c:873 +#: plugins/sudoers/cvtsudoers_ldif.c:308 plugins/sudoers/cvtsudoers_ldif.c:319 +#: plugins/sudoers/ldap.c:482 +msgid "unable to get GMT time" +msgstr "GMT-ajan noutaminen epäonnistui" + +#: plugins/sudoers/cvtsudoers_json.c:861 plugins/sudoers/cvtsudoers_json.c:876 +#: plugins/sudoers/cvtsudoers_ldif.c:311 plugins/sudoers/cvtsudoers_ldif.c:322 +#: plugins/sudoers/ldap.c:488 +msgid "unable to format timestamp" +msgstr "aikaleiman muotoileminen epäonnistui" + +#: plugins/sudoers/cvtsudoers_ldif.c:526 plugins/sudoers/env.c:330 +#: plugins/sudoers/env.c:337 plugins/sudoers/env.c:442 +#: plugins/sudoers/ldap.c:496 plugins/sudoers/ldap.c:727 +#: plugins/sudoers/ldap.c:1060 plugins/sudoers/ldap_conf.c:227 +#: plugins/sudoers/ldap_conf.c:317 plugins/sudoers/linux_audit.c:89 +#: plugins/sudoers/logging.c:1105 plugins/sudoers/policy.c:625 +#: plugins/sudoers/policy.c:635 plugins/sudoers/prompt.c:168 +#: plugins/sudoers/sudoers.c:852 plugins/sudoers/testsudoers.c:257 +#: plugins/sudoers/toke_util.c:161 +#, c-format +msgid "internal error, %s overflow" +msgstr "sisäinen virhe, %s-ylivuoto" + +#: plugins/sudoers/cvtsudoers_ldif.c:595 +#, c-format +msgid "too many sudoers entries, maximum %u" +msgstr "liian monta sudoers-merkintää, enimmäismäärä %u" + +#: plugins/sudoers/cvtsudoers_ldif.c:638 +msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." +msgstr "SUDOERS_BASE-ympäristömuuttujaa ei ole määritelty eikä -b-valitsinta annettu." + +#: plugins/sudoers/def_data.c:42 #, c-format msgid "Syslog facility if syslog is being used for logging: %s" msgstr "Syslog-apuneuvo, jos syslog-lokia käytetään kirjautumista varten: %s" -#: plugins/sudoers/def_data.c:45 +#: plugins/sudoers/def_data.c:46 #, c-format msgid "Syslog priority to use when user authenticates successfully: %s" msgstr "Käytettävä syslog-prioriteetti, kun käyttäjä todennetaan onnistuneesti: %s" -#: plugins/sudoers/def_data.c:49 +#: plugins/sudoers/def_data.c:50 #, c-format msgid "Syslog priority to use when user authenticates unsuccessfully: %s" msgstr "Käytettävä syslog-prioriteetti, kun käyttäjän todennus epäonnistui: %s" -#: plugins/sudoers/def_data.c:53 +#: plugins/sudoers/def_data.c:54 msgid "Put OTP prompt on its own line" msgstr "Laita OPT-kehote omalle rivilleen" -#: plugins/sudoers/def_data.c:57 +#: plugins/sudoers/def_data.c:58 msgid "Ignore '.' in $PATH" -msgstr "Ohita ’.’ $PATH-asetuksessa" +msgstr "Ohita ’.’ $PATHissa" -#: plugins/sudoers/def_data.c:61 +#: plugins/sudoers/def_data.c:62 msgid "Always send mail when sudo is run" -msgstr "Lähetä aina sähkopostia, kun sudo suoritetaan" +msgstr "Lähetä aina sähköpostia, kun sudo suoritetaan" -#: plugins/sudoers/def_data.c:65 +#: plugins/sudoers/def_data.c:66 msgid "Send mail if user authentication fails" msgstr "Lähetä sähköpostia, jos käyttäjän todennus epäonnistuu" -#: plugins/sudoers/def_data.c:69 +#: plugins/sudoers/def_data.c:70 msgid "Send mail if the user is not in sudoers" msgstr "Lähetä sähköpostia, jos käyttäjä ei ole sudoers-määrittelyssä" -#: plugins/sudoers/def_data.c:73 +#: plugins/sudoers/def_data.c:74 msgid "Send mail if the user is not in sudoers for this host" msgstr "Lähetä sähköpostia, jos käyttäjä ei ole tällä tietokoneella sudoers-määrittelyssä" -#: plugins/sudoers/def_data.c:77 +#: plugins/sudoers/def_data.c:78 msgid "Send mail if the user is not allowed to run a command" msgstr "Lähetä sähköpostia, jos käyttäjän ei sallita suorittaa komentoa" -#: plugins/sudoers/def_data.c:81 +#: plugins/sudoers/def_data.c:82 msgid "Send mail if the user tries to run a command" msgstr "Lähetä sähköpostia, jos käyttäjä yrittää suorittaa komennon" -#: plugins/sudoers/def_data.c:85 +#: plugins/sudoers/def_data.c:86 msgid "Use a separate timestamp for each user/tty combo" msgstr "Käytä erillistä aikaleimaa jokaiselle käyttäjä/tty -yhdistelmälle" -#: plugins/sudoers/def_data.c:89 +#: plugins/sudoers/def_data.c:90 msgid "Lecture user the first time they run sudo" msgstr "Saarnaa ensimmäistä kertaa sudo-ohjelmaa käyttävälle" -#: plugins/sudoers/def_data.c:93 +#: plugins/sudoers/def_data.c:94 #, c-format msgid "File containing the sudo lecture: %s" -msgstr "Tiedosto, joka sisältää sudo-saarnan: %s" +msgstr "Sudo-saarnan sisältävä tiedosto: %s" -#: plugins/sudoers/def_data.c:97 +#: plugins/sudoers/def_data.c:98 msgid "Require users to authenticate by default" msgstr "Vaadi käyttäjien todennus oletuksena" -#: plugins/sudoers/def_data.c:101 +#: plugins/sudoers/def_data.c:102 msgid "Root may run sudo" msgstr "Root voi suorittaa sudo-ohjelman" -#: plugins/sudoers/def_data.c:105 +#: plugins/sudoers/def_data.c:106 msgid "Log the hostname in the (non-syslog) log file" msgstr "Kirjaa tietokonenimi (ei-syslog)lokitiedostoon" -#: plugins/sudoers/def_data.c:109 +#: plugins/sudoers/def_data.c:110 msgid "Log the year in the (non-syslog) log file" msgstr "Kirjaa vuosi (ei-syslog)lokitiedostoon" -#: plugins/sudoers/def_data.c:113 +#: plugins/sudoers/def_data.c:114 msgid "If sudo is invoked with no arguments, start a shell" msgstr "Jos sudo-ohjelmaa kutsutaan ilman argumentteja, käynnistä käyttöjärjestelmäkuori" -#: plugins/sudoers/def_data.c:117 +#: plugins/sudoers/def_data.c:118 msgid "Set $HOME to the target user when starting a shell with -s" msgstr "Aseta $HOME-muuttujaksi kohdekäyttäjä kun käyttöjärjestelmäkuori käynnistetään valitsimella -s" -#: plugins/sudoers/def_data.c:121 +#: plugins/sudoers/def_data.c:122 msgid "Always set $HOME to the target user's home directory" msgstr "Aseta $HOME-muuttujaksi aina kohdekäyttäjän kotihakemisto" -#: plugins/sudoers/def_data.c:125 +#: plugins/sudoers/def_data.c:126 msgid "Allow some information gathering to give useful error messages" msgstr "Salli jotain tietojenkeräystä hyödyllisten virheilmoitusten tarjoamiseksi" -#: plugins/sudoers/def_data.c:129 +#: plugins/sudoers/def_data.c:130 msgid "Require fully-qualified hostnames in the sudoers file" msgstr "Vaadi täysin rakennettu tietokonenimi suoders-tiedostossa" -#: plugins/sudoers/def_data.c:133 +#: plugins/sudoers/def_data.c:134 msgid "Insult the user when they enter an incorrect password" msgstr "Solvaa käyttäjiä, kun he kirjoittavat väärän salasanan" -#: plugins/sudoers/def_data.c:137 +#: plugins/sudoers/def_data.c:138 msgid "Only allow the user to run sudo if they have a tty" msgstr "Salli käyttäjien suorittaa sudo-ohjelma vain jos heillä on tty" -#: plugins/sudoers/def_data.c:141 +#: plugins/sudoers/def_data.c:142 msgid "Visudo will honor the EDITOR environment variable" msgstr "Visudo noudattaa EDITOR-ympäristömuuttujaa" -#: plugins/sudoers/def_data.c:145 +#: plugins/sudoers/def_data.c:146 msgid "Prompt for root's password, not the users's" msgstr "Kysy root-käyttäjän salasana, ei käyttäjän" -#: plugins/sudoers/def_data.c:149 +#: plugins/sudoers/def_data.c:150 msgid "Prompt for the runas_default user's password, not the users's" msgstr "Kysy runas_default-käyttäjän salasana, ei käyttäjän" -#: plugins/sudoers/def_data.c:153 +#: plugins/sudoers/def_data.c:154 msgid "Prompt for the target user's password, not the users's" msgstr "Kysy kohdekäyttäjän salasana, ei käyttäjän" -#: plugins/sudoers/def_data.c:157 +#: plugins/sudoers/def_data.c:158 msgid "Apply defaults in the target user's login class if there is one" msgstr "Käytä oletuksia kohdekäyttäjän kirjautumisluokassa, jos siinä on yhtään" -#: plugins/sudoers/def_data.c:161 +#: plugins/sudoers/def_data.c:162 msgid "Set the LOGNAME and USER environment variables" msgstr "Aseta LOGNAME- ja USER-ympäristömuuttujat" -#: plugins/sudoers/def_data.c:165 +#: plugins/sudoers/def_data.c:166 msgid "Only set the effective uid to the target user, not the real uid" msgstr "Aseta vain voimassa oleva uid-käyttäjätunniste kohdekäyttäjälle, ei oikeaa uid-tunnistetta" -#: plugins/sudoers/def_data.c:169 +#: plugins/sudoers/def_data.c:170 msgid "Don't initialize the group vector to that of the target user" msgstr "Älä alusta ryhmävektoria kohdekäyttäjän vastaavaan arvoon" -#: plugins/sudoers/def_data.c:173 +#: plugins/sudoers/def_data.c:174 #, c-format msgid "Length at which to wrap log file lines (0 for no wrap): %u" msgstr "Pituus, jossa pitkät lokitiedostorivit jaetaan seuraavalle riville (0 ei jaeta): %u" -#: plugins/sudoers/def_data.c:177 +#: plugins/sudoers/def_data.c:178 #, c-format msgid "Authentication timestamp timeout: %.1f minutes" msgstr "Todennusaikaleiman aikavalvonta: %.1f minuuttia" -#: plugins/sudoers/def_data.c:181 +#: plugins/sudoers/def_data.c:182 #, c-format msgid "Password prompt timeout: %.1f minutes" msgstr "Salasanakehotteen aikavalvonta: %.1f minuuttia" -#: plugins/sudoers/def_data.c:185 +#: plugins/sudoers/def_data.c:186 #, c-format msgid "Number of tries to enter a password: %u" msgstr "Salasanayritysten lukumäärä: %u" -#: plugins/sudoers/def_data.c:189 +#: plugins/sudoers/def_data.c:190 #, c-format msgid "Umask to use or 0777 to use user's: 0%o" msgstr "Käytettävä umask-määrittely tai 0777 käytettäväksi käyttäjän umask-määrittelyksi: 0%o" -#: plugins/sudoers/def_data.c:193 +#: plugins/sudoers/def_data.c:194 #, c-format msgid "Path to log file: %s" msgstr "Polku lokitiedostoon: %s" -#: plugins/sudoers/def_data.c:197 +#: plugins/sudoers/def_data.c:198 #, c-format msgid "Path to mail program: %s" -msgstr "Polku sähköpostiohjelmaan: %s" +msgstr "Sähköpostiohjelman polku: %s" -#: plugins/sudoers/def_data.c:201 +#: plugins/sudoers/def_data.c:202 #, c-format msgid "Flags for mail program: %s" msgstr "Sähköpostiohjelman liput: %s" -#: plugins/sudoers/def_data.c:205 +#: plugins/sudoers/def_data.c:206 #, c-format msgid "Address to send mail to: %s" -msgstr "Osoite, johon sähköposti lähetetään: %s" +msgstr "Sähköpostin vastaanottajan osoite: %s" -#: plugins/sudoers/def_data.c:209 +#: plugins/sudoers/def_data.c:210 #, c-format msgid "Address to send mail from: %s" -msgstr "Osoite, josta sähköposti lähetetään: %s" +msgstr "Sähköpostin lähettäjän osoite: %s" -#: plugins/sudoers/def_data.c:213 +#: plugins/sudoers/def_data.c:214 #, c-format msgid "Subject line for mail messages: %s" -msgstr "Sähköpostiviestin Aihe-rivi: %s" +msgstr "Sähköpostiviestien aihe-rivi: %s" -#: plugins/sudoers/def_data.c:217 +#: plugins/sudoers/def_data.c:218 #, c-format msgid "Incorrect password message: %s" msgstr "Virheellinen salasanaviesti: %s" -#: plugins/sudoers/def_data.c:221 +#: plugins/sudoers/def_data.c:222 #, c-format msgid "Path to lecture status dir: %s" msgstr "Polku luentotilahakemistoon: %s" -#: plugins/sudoers/def_data.c:225 +#: plugins/sudoers/def_data.c:226 #, c-format msgid "Path to authentication timestamp dir: %s" msgstr "Polku todennusaikaleimahakemistoon: %s" -#: plugins/sudoers/def_data.c:229 +#: plugins/sudoers/def_data.c:230 #, c-format msgid "Owner of the authentication timestamp dir: %s" msgstr "Todennusaikaleimahakemiston omistaja: %s" -#: plugins/sudoers/def_data.c:233 +#: plugins/sudoers/def_data.c:234 #, c-format msgid "Users in this group are exempt from password and PATH requirements: %s" msgstr "Käyttäjät tässä ryhmässä on vapautettu salasana- ja PATH-vaatimuksista: %s" -#: plugins/sudoers/def_data.c:237 +#: plugins/sudoers/def_data.c:238 #, c-format msgid "Default password prompt: %s" msgstr "Oletussalasanakehote: %s" -#: plugins/sudoers/def_data.c:241 +#: plugins/sudoers/def_data.c:242 msgid "If set, passprompt will override system prompt in all cases." msgstr "Jos asetettu, salasanakehote korvaa järjestelmäkehotteen kaikissa tapauksissa." # Tämä on tekemisessä runas_default -määrittelyn kanssa -#: plugins/sudoers/def_data.c:245 +#: plugins/sudoers/def_data.c:246 #, c-format msgid "Default user to run commands as: %s" msgstr "Oletuskäyttäjä suorittaa komennot käyttäjänä: %s" -#: plugins/sudoers/def_data.c:249 +#: plugins/sudoers/def_data.c:250 #, c-format msgid "Value to override user's $PATH with: %s" msgstr "Arvo, jolla korvataan käyttäjän $PATH-asetus: %s" -#: plugins/sudoers/def_data.c:253 +#: plugins/sudoers/def_data.c:254 #, c-format msgid "Path to the editor for use by visudo: %s" msgstr "Visudo-editorin käyttämä polku: %s" -#: plugins/sudoers/def_data.c:257 +#: plugins/sudoers/def_data.c:258 #, c-format msgid "When to require a password for 'list' pseudocommand: %s" msgstr "Kun vaaditaan salasana ’list’-näennäiskomennolle: %s" -#: plugins/sudoers/def_data.c:261 +#: plugins/sudoers/def_data.c:262 #, c-format msgid "When to require a password for 'verify' pseudocommand: %s" msgstr "Kun vaaditaan salasana ’verify’-näennäiskomennolle: %s" -#: plugins/sudoers/def_data.c:265 +#: plugins/sudoers/def_data.c:266 msgid "Preload the dummy exec functions contained in the sudo_noexec library" msgstr "Esilataa vale-exec-funktiot, jotka sisältyvät sudo_noexec-kirjastoon" -#: plugins/sudoers/def_data.c:269 +#: plugins/sudoers/def_data.c:270 msgid "If LDAP directory is up, do we ignore local sudoers file" msgstr "Jos LDAP-hakemisto on ylhäällä, ohitammeko paikallisen sudoers-tiedoston" -#: plugins/sudoers/def_data.c:273 +#: plugins/sudoers/def_data.c:274 #, c-format msgid "File descriptors >= %d will be closed before executing a command" msgstr "Tiedostokuvaajat >= %d suljetaan ennen komennon suoritusta" -#: plugins/sudoers/def_data.c:277 +#: plugins/sudoers/def_data.c:278 msgid "If set, users may override the value of `closefrom' with the -C option" msgstr "Jos asetettu, käyttäjä voi korvata ’closefrom’-arvon valitsimella -C" -#: plugins/sudoers/def_data.c:281 +#: plugins/sudoers/def_data.c:282 msgid "Allow users to set arbitrary environment variables" msgstr "Salli käyttäjien asettaa mielivaltaisia ympäristömuuttujia" -#: plugins/sudoers/def_data.c:285 +#: plugins/sudoers/def_data.c:286 msgid "Reset the environment to a default set of variables" msgstr "Nollaa ympäristö muuttujien oletusjoukoksi" -#: plugins/sudoers/def_data.c:289 +#: plugins/sudoers/def_data.c:290 msgid "Environment variables to check for sanity:" msgstr "Ympäristömuuttujat, joille tehdään järkevyystarkistus:" -#: plugins/sudoers/def_data.c:293 +#: plugins/sudoers/def_data.c:294 msgid "Environment variables to remove:" msgstr "Poistettavat ympäristömuuttujat:" -#: plugins/sudoers/def_data.c:297 +#: plugins/sudoers/def_data.c:298 msgid "Environment variables to preserve:" msgstr "Säilytettävät ympäristömuuttujat:" -#: plugins/sudoers/def_data.c:301 +#: plugins/sudoers/def_data.c:302 #, c-format msgid "SELinux role to use in the new security context: %s" msgstr "Uudessa turva-asiayhteydessä käytettävä SELinux-rooli: %s" -#: plugins/sudoers/def_data.c:305 +#: plugins/sudoers/def_data.c:306 #, c-format msgid "SELinux type to use in the new security context: %s" msgstr "Uudessa turva-asiayhteydessä käytettävä SELinux-tyyppi: %s" -#: plugins/sudoers/def_data.c:309 +#: plugins/sudoers/def_data.c:310 #, c-format msgid "Path to the sudo-specific environment file: %s" msgstr "Polku sudo-kohtaiseen ympäristötiedostoon: %s" -#: plugins/sudoers/def_data.c:313 +#: plugins/sudoers/def_data.c:314 #, c-format msgid "Path to the restricted sudo-specific environment file: %s" msgstr "Polku rajoitettuun sudo-kohtaiseen ympäristötiedostoon: %s" -#: plugins/sudoers/def_data.c:317 +#: plugins/sudoers/def_data.c:318 #, c-format msgid "Locale to use while parsing sudoers: %s" msgstr "Locale-asetus, jota käytetään sudoers-jäsentämisessä: %s" -#: plugins/sudoers/def_data.c:321 +#: plugins/sudoers/def_data.c:322 msgid "Allow sudo to prompt for a password even if it would be visible" msgstr "Salli sudo-ohjelman kysyä salasana vieläpä jos se olisi näkyvä" -#: plugins/sudoers/def_data.c:325 +#: plugins/sudoers/def_data.c:326 msgid "Provide visual feedback at the password prompt when there is user input" msgstr "Tarjoa visuaalista palautetta salasanakehotteelta silloin kun on käyttäjäsyöte" -#: plugins/sudoers/def_data.c:329 +#: plugins/sudoers/def_data.c:330 msgid "Use faster globbing that is less accurate but does not access the filesystem" msgstr "Käyttää nopeampaa jokerimerkkien korvausta, joka on epätarkempi, mutta ei lue tiedostojärjestelmää" -#: plugins/sudoers/def_data.c:333 +#: plugins/sudoers/def_data.c:334 msgid "The umask specified in sudoers will override the user's, even if it is more permissive" msgstr "Sudoers umask korvaa käyttäjän umask-määrittelyn, vieläpä jos se on sallivampi" -#: plugins/sudoers/def_data.c:337 +#: plugins/sudoers/def_data.c:338 msgid "Log user's input for the command being run" msgstr "Kirjaa lokiin käyttäjän syöte suoritettavalle komennolle" -#: plugins/sudoers/def_data.c:341 +#: plugins/sudoers/def_data.c:342 msgid "Log the output of the command being run" msgstr "Kirjaa lokiin suoritettavan komennon tuloste" -#: plugins/sudoers/def_data.c:345 +#: plugins/sudoers/def_data.c:346 msgid "Compress I/O logs using zlib" msgstr "Tiivistä siirräntälokit käyttäen zlib-ohjelmaa" -#: plugins/sudoers/def_data.c:349 +#: plugins/sudoers/def_data.c:350 msgid "Always run commands in a pseudo-tty" msgstr "Suorita aina komennot näennäis-tty:ssä" -#: plugins/sudoers/def_data.c:353 +#: plugins/sudoers/def_data.c:354 #, c-format msgid "Plugin for non-Unix group support: %s" msgstr "Lisäosa ei-Unix-ryhmätuelle: %s" -#: plugins/sudoers/def_data.c:357 +#: plugins/sudoers/def_data.c:358 #, c-format msgid "Directory in which to store input/output logs: %s" msgstr "Hakemisto, johon tallennetaan syöte-/tulostelokit: %s" -#: plugins/sudoers/def_data.c:361 +#: plugins/sudoers/def_data.c:362 #, c-format msgid "File in which to store the input/output log: %s" msgstr "Tiedosto, johon tallennetaan syöte-/tulosteloki: %s" -#: plugins/sudoers/def_data.c:365 +#: plugins/sudoers/def_data.c:366 msgid "Add an entry to the utmp/utmpx file when allocating a pty" msgstr "Lisää rivi utmp-/utmpx-tiedostoon, kun varataan pty" -#: plugins/sudoers/def_data.c:369 +#: plugins/sudoers/def_data.c:370 msgid "Set the user in utmp to the runas user, not the invoking user" msgstr "Aseta käyttäjäksi utmp-tiedostoon suorittava käyttäjä, ei kutsuva käyttäjä" -#: plugins/sudoers/def_data.c:373 +#: plugins/sudoers/def_data.c:374 #, c-format msgid "Set of permitted privileges: %s" msgstr "Sallittujen käyttöoikeuksien joukko: %s" -#: plugins/sudoers/def_data.c:377 +#: plugins/sudoers/def_data.c:378 #, c-format msgid "Set of limit privileges: %s" msgstr "Rajoitettujen käyttöoikeuksien joukko: %s" -#: plugins/sudoers/def_data.c:381 +#: plugins/sudoers/def_data.c:382 msgid "Run commands on a pty in the background" msgstr "Suorita komentoja pty:llä taustalla" -#: plugins/sudoers/def_data.c:385 +#: plugins/sudoers/def_data.c:386 #, c-format msgid "PAM service name to use: %s" msgstr "Käytettävä PAM-palvelunimi: %s" -#: plugins/sudoers/def_data.c:389 +#: plugins/sudoers/def_data.c:390 #, c-format msgid "PAM service name to use for login shells: %s" msgstr "Kirjautumiskomentotulkeille käytettävä PAM-palvelunimi: %s" -#: plugins/sudoers/def_data.c:393 +#: plugins/sudoers/def_data.c:394 msgid "Attempt to establish PAM credentials for the target user" msgstr "Yritys perustaa PAM-valtuustiedot kohdekäyttäjälle" -#: plugins/sudoers/def_data.c:397 +#: plugins/sudoers/def_data.c:398 msgid "Create a new PAM session for the command to run in" msgstr "Luo uusi PAM-istunto suoritettavalle komennolle" -#: plugins/sudoers/def_data.c:401 +#: plugins/sudoers/def_data.c:402 +msgid "Perform PAM account validation management" +msgstr "" + +#: plugins/sudoers/def_data.c:406 #, c-format msgid "Maximum I/O log sequence number: %u" msgstr "Suurin siirräntälokin sarjanumero: %u" -#: plugins/sudoers/def_data.c:405 +#: plugins/sudoers/def_data.c:410 msgid "Enable sudoers netgroup support" msgstr "Ota käyttöön sudoers-verkkoryhmätuki" -#: plugins/sudoers/def_data.c:409 +#: plugins/sudoers/def_data.c:414 msgid "Check parent directories for writability when editing files with sudoedit" msgstr "Tarkista yläpuolella olevan hakemistojen kirjoituskelpoisuus kun tiedostoja muokataan sudoedit-ohjelmalla" -#: plugins/sudoers/def_data.c:413 +#: plugins/sudoers/def_data.c:418 msgid "Follow symbolic links when editing files with sudoedit" msgstr "Seuraa symbolisia linkejä kun tiedostoja muokataan sudoedit-ohjelmalla" -#: plugins/sudoers/def_data.c:417 +#: plugins/sudoers/def_data.c:422 msgid "Query the group plugin for unknown system groups" msgstr "Kysy ryhmälisäosaa tuntemattomille järjestelmäryhmille" -#: plugins/sudoers/def_data.c:421 +#: plugins/sudoers/def_data.c:426 msgid "Match netgroups based on the entire tuple: user, host and domain" msgstr "Täsmäävät verkkoryhmät perustuen koko monikolle: käyttäjä, tietokone ja verkkotunnus" -#: plugins/sudoers/def_data.c:425 +#: plugins/sudoers/def_data.c:430 msgid "Allow commands to be run even if sudo cannot write to the audit log" msgstr "Salli komentojen suorittaminen silloinkin kun sudo ei kykene kirjoittamaan valvontatarkastuslokiin" -#: plugins/sudoers/def_data.c:429 +#: plugins/sudoers/def_data.c:434 msgid "Allow commands to be run even if sudo cannot write to the I/O log" msgstr "Salli komentojen suorittaminen silloinkin kun sudo ei kykene kirjoittamaan siirtolokiin" -#: plugins/sudoers/def_data.c:433 +#: plugins/sudoers/def_data.c:438 msgid "Allow commands to be run even if sudo cannot write to the log file" msgstr "Salli komentojen suorittaminen silloinkin kun sudo ei kykene kirjoittamaan lokitiedostoon" -#: plugins/sudoers/def_data.c:437 +#: plugins/sudoers/def_data.c:442 msgid "Resolve groups in sudoers and match on the group ID, not the name" msgstr "Ratkaise sudoers-ryhmät ja täsmäytä ryhmätunnisteeseen, ei nimeen" -#: plugins/sudoers/def_data.c:441 +#: plugins/sudoers/def_data.c:446 #, c-format msgid "Log entries larger than this value will be split into multiple syslog messages: %u" msgstr "Lokirivit, jotka ovat pitempiä kuin tämä arvo, jaetaan useisiin syslog-viesteihin: %u" -#: plugins/sudoers/def_data.c:445 +#: plugins/sudoers/def_data.c:450 #, c-format msgid "User that will own the I/O log files: %s" msgstr "Käyttäjä, joka omistaa siirräntälokitiedostot: %s" -#: plugins/sudoers/def_data.c:449 +#: plugins/sudoers/def_data.c:454 #, c-format msgid "Group that will own the I/O log files: %s" msgstr "Ryhmä, joka omistaa siirräntälokitiedostot: %s" -#: plugins/sudoers/def_data.c:453 +#: plugins/sudoers/def_data.c:458 #, c-format msgid "File mode to use for the I/O log files: 0%o" msgstr "Tiedostotila käytettäväksi siirräntälokitiedostoissa: 0%o" -#: plugins/sudoers/def_data.c:457 +#: plugins/sudoers/def_data.c:462 #, c-format msgid "Execute commands by file descriptor instead of by path: %s" msgstr "Suorita komentoja tiedostokuvaan avulla eikä polun avulla: %s" -#: plugins/sudoers/def_data.c:461 +#: plugins/sudoers/def_data.c:466 msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning" msgstr "Ohita tuntemattomat Defaults-rivit sudoers-tiedostossa sen sijaan että tuottaisit varoituksia" -#: plugins/sudoers/def_data.c:465 +#: plugins/sudoers/def_data.c:470 #, c-format msgid "Time in seconds after which the command will be terminated: %u" msgstr "Sekuntimäärä, jossa komento päätetään: %u" -#: plugins/sudoers/def_data.c:469 +#: plugins/sudoers/def_data.c:474 msgid "Allow the user to specify a timeout on the command line" msgstr "Salli käyttäjän määritellä aikavalvonta komentorivillä" -#: plugins/sudoers/def_data.c:473 +#: plugins/sudoers/def_data.c:478 msgid "Flush I/O log data to disk immediately instead of buffering it" msgstr "Tyhjennä siirräntälokitiedot levylle välittömästi sen sijaan että puskuroisit ne" -#: plugins/sudoers/def_data.c:477 +#: plugins/sudoers/def_data.c:482 msgid "Include the process ID when logging via syslog" msgstr "Sisällytä prosessitunniste, kun kirjataan syslog-tiedostoon" -#: plugins/sudoers/def_data.c:481 +#: plugins/sudoers/def_data.c:486 #, c-format msgid "Type of authentication timestamp record: %s" msgstr "Todennusaikaleimatietueen tyyppi: %s" -#: plugins/sudoers/defaults.c:220 +#: plugins/sudoers/def_data.c:490 +#, c-format +msgid "Authentication failure message: %s" +msgstr "todentamisen virheviesti: %s" + +#: plugins/sudoers/def_data.c:494 +msgid "Ignore case when matching user names" +msgstr "" + +#: plugins/sudoers/def_data.c:498 +msgid "Ignore case when matching group names" +msgstr "" + +#: plugins/sudoers/def_data.c:502 +msgid "Log when a command is allowed by sudoers" +msgstr "" + +#: plugins/sudoers/def_data.c:506 +msgid "Log when a command is denied by sudoers" +msgstr "" + +#: plugins/sudoers/defaults.c:231 #, c-format msgid "%s:%d unknown defaults entry \"%s\"" msgstr "%s:%d tuntematon oletusrivi ”%s”" -#: plugins/sudoers/defaults.c:223 +#: plugins/sudoers/defaults.c:234 #, c-format msgid "%s: unknown defaults entry \"%s\"" msgstr "%s: tuntematon oletusrivi ”%s”" # parametrinä on variable -#: plugins/sudoers/defaults.c:263 +#: plugins/sudoers/defaults.c:277 #, c-format msgid "%s:%d no value specified for \"%s\"" msgstr "%s:%d arvoa ei ole määritelty muuttujalle ”%s”" # parametrinä on variable -#: plugins/sudoers/defaults.c:266 +#: plugins/sudoers/defaults.c:280 #, c-format msgid "%s: no value specified for \"%s\"" msgstr "%s: arvoa ei ole määritelty muuttujalle ”%s”" # Parametri on muuttuja -#: plugins/sudoers/defaults.c:286 +#: plugins/sudoers/defaults.c:300 #, c-format msgid "%s:%d values for \"%s\" must start with a '/'" msgstr "%s:%d muuttujan ”%s” arvojen on alettava merkillä ’/’" # Parametri on muuttuja -#: plugins/sudoers/defaults.c:289 +#: plugins/sudoers/defaults.c:303 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s: muuttujan ”%s” arvojen on alettava merkillä ’/’" -#: plugins/sudoers/defaults.c:314 +#: plugins/sudoers/defaults.c:325 #, c-format msgid "%s:%d option \"%s\" does not take a value" msgstr "%s:%d valitsin ”%s” ei ota arvoa" -#: plugins/sudoers/defaults.c:317 +#: plugins/sudoers/defaults.c:328 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: valitsin ”%s” ei ota arvoa" -#: plugins/sudoers/defaults.c:339 +#: plugins/sudoers/defaults.c:353 #, c-format msgid "%s:%d invalid Defaults type 0x%x for option \"%s\"" msgstr "%s:%d virheellinen Defaults-tyyppi 0x%x valitsimelle ”%s”" -#: plugins/sudoers/defaults.c:342 +#: plugins/sudoers/defaults.c:356 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s: virheellinen Defaults-tyyppi 0x%x valitsimelle ”%s”" -#: plugins/sudoers/defaults.c:352 +#: plugins/sudoers/defaults.c:366 #, c-format msgid "%s:%d value \"%s\" is invalid for option \"%s\"" msgstr "%s:%d arvo ”%s” on virheellinen valitsimelle ”%s”" -#: plugins/sudoers/defaults.c:355 +#: plugins/sudoers/defaults.c:369 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: arvo ”%s” on virheellinen valitsimelle ”%s”" -#: plugins/sudoers/env.c:295 plugins/sudoers/env.c:302 -#: plugins/sudoers/env.c:407 plugins/sudoers/ldap.c:453 -#: plugins/sudoers/ldap.c:543 plugins/sudoers/ldap.c:1253 -#: plugins/sudoers/ldap.c:1480 plugins/sudoers/ldap.c:1806 -#: plugins/sudoers/linux_audit.c:82 plugins/sudoers/logging.c:947 -#: plugins/sudoers/policy.c:537 plugins/sudoers/policy.c:547 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/sudoers.c:872 -#: plugins/sudoers/testsudoers.c:238 plugins/sudoers/toke_util.c:158 -#, c-format -msgid "internal error, %s overflow" -msgstr "sisäinen virhe, %s-ylivuoto" - -#: plugins/sudoers/env.c:376 +#: plugins/sudoers/env.c:411 msgid "sudo_putenv: corrupted envp, length mismatch" msgstr "sudo_putenv: rikkoutunut envp, pituus ei täsmää" -#: plugins/sudoers/env.c:1055 +#: plugins/sudoers/env.c:1132 msgid "unable to rebuild the environment" msgstr "ympäristön rakentaminen uudelleen epäonnistui" -#: plugins/sudoers/env.c:1129 +#: plugins/sudoers/env.c:1206 #, c-format msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "seuraavia ympäristömuuttujia ei ole lupa asettaa: %s" -#: plugins/sudoers/filedigest.c:104 plugins/sudoers/filedigest_gcrypt.c:66 -#: plugins/sudoers/filedigest_openssl.c:95 +#: plugins/sudoers/file.c:116 +#, c-format +msgid "parse error in %s near line %d" +msgstr "jäsentämisvirhe tiedostossa %s lähellä riviä %d" + +#: plugins/sudoers/file.c:119 +#, c-format +msgid "parse error in %s" +msgstr "jäsentämisvirhe tiedostossa %s" + +#: plugins/sudoers/filedigest.c:61 #, c-format msgid "unsupported digest type %d for %s" msgstr "tukematon tiivistetyyppi %d kohteelle %s" -#: plugins/sudoers/filedigest.c:129 plugins/sudoers/filedigest_gcrypt.c:98 -#: plugins/sudoers/filedigest_openssl.c:120 +#: plugins/sudoers/filedigest.c:90 #, c-format msgid "%s: read error" msgstr "%s: kirjoitusvirhe" -#: plugins/sudoers/group_plugin.c:86 +#: plugins/sudoers/group_plugin.c:90 #, c-format msgid "%s must be owned by uid %d" msgstr "%s-omistajan on oltava uid %d" -#: plugins/sudoers/group_plugin.c:90 +#: plugins/sudoers/group_plugin.c:94 #, c-format msgid "%s must only be writable by owner" msgstr "%s on vain omistajan kirjoitettava" -#: plugins/sudoers/group_plugin.c:98 plugins/sudoers/sssd.c:398 +#: plugins/sudoers/group_plugin.c:102 plugins/sudoers/sssd.c:562 #, c-format msgid "unable to load %s: %s" msgstr "kohteen %s lataaminen epäonnistui: %s" # parametrina on path -#: plugins/sudoers/group_plugin.c:104 +#: plugins/sudoers/group_plugin.c:108 #, c-format msgid "unable to find symbol \"group_plugin\" in %s" msgstr "symbolin ”group_plugin” löytäminen polusta %s epäonnistui" -#: plugins/sudoers/group_plugin.c:109 +#: plugins/sudoers/group_plugin.c:113 #, c-format msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s: yhteensopimaton ryhmälisäosan major-versio %d, odotettiin %d" -#: plugins/sudoers/interfaces.c:79 plugins/sudoers/interfaces.c:96 +#: plugins/sudoers/interfaces.c:86 plugins/sudoers/interfaces.c:103 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "verkko-osoitteen ”%s” jäsentäminen epäonnistui" # Parametri on sudoers file -#: plugins/sudoers/interfaces.c:84 plugins/sudoers/interfaces.c:101 +#: plugins/sudoers/interfaces.c:91 plugins/sudoers/interfaces.c:108 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "verkkopeitteen ”%s” jäsentäminen epäonnistui" -#: plugins/sudoers/interfaces.c:129 +#: plugins/sudoers/interfaces.c:136 msgid "Local IP address and netmask pairs:\n" msgstr "Paikallinen verkko-osoite ja verkkopeiteparit:\n" -#: plugins/sudoers/iolog.c:121 plugins/sudoers/mkdir_parents.c:75 +#: plugins/sudoers/iolog.c:117 plugins/sudoers/mkdir_parents.c:82 #, c-format msgid "%s exists but is not a directory (0%o)" msgstr "%s on olemassa, mutta ei ole hakemisto (0%o)" -#: plugins/sudoers/iolog.c:146 plugins/sudoers/iolog.c:187 -#: plugins/sudoers/mkdir_parents.c:64 plugins/sudoers/timestamp.c:170 +#: plugins/sudoers/iolog.c:142 plugins/sudoers/iolog.c:182 +#: plugins/sudoers/mkdir_parents.c:71 plugins/sudoers/timestamp.c:212 #, c-format msgid "unable to mkdir %s" msgstr "käskyn mkdir %s suorittaminen epäonnistui" -#: plugins/sudoers/iolog.c:191 plugins/sudoers/visudo.c:740 +#: plugins/sudoers/iolog.c:186 plugins/sudoers/visudo.c:739 #: plugins/sudoers/visudo.c:750 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "tilan %s vaihtaminen arvoon 0%o epäonnistui" -#: plugins/sudoers/iolog.c:299 plugins/sudoers/sudoers.c:1192 -#: plugins/sudoers/testsudoers.c:390 +#: plugins/sudoers/iolog.c:294 plugins/sudoers/sudoers.c:1194 +#: plugins/sudoers/testsudoers.c:424 #, c-format msgid "unknown group: %s" msgstr "tuntematon ryhmä: %s" -# Avaamisen kohde voi olla timestamp file, sudoers file tai pathbuf -#: plugins/sudoers/iolog.c:418 plugins/sudoers/sudoers.c:928 -#: plugins/sudoers/sudoreplay.c:349 plugins/sudoers/sudoreplay.c:1335 -#: plugins/sudoers/sudoreplay.c:1539 plugins/sudoers/timestamp.c:398 -#: plugins/sudoers/visudo.c:972 plugins/sudoers/visudo_json.c:1001 -#: plugins/sudoers/visudo_json.c:1014 -#, c-format -msgid "unable to open %s" -msgstr "kohteen %s avaaminen epäonnistui" - # Parametrinä on sudoers-tiedosto tai pathbuf -#: plugins/sudoers/iolog.c:469 plugins/sudoers/sudoers.c:932 -#: plugins/sudoers/sudoreplay.c:831 plugins/sudoers/sudoreplay.c:1650 +#: plugins/sudoers/iolog.c:464 plugins/sudoers/sudoers.c:918 +#: plugins/sudoers/sudoreplay.c:846 plugins/sudoers/sudoreplay.c:1542 +#: plugins/sudoers/tsdump.c:145 #, c-format msgid "unable to read %s" msgstr "kohteen %s lukeminen epäonnistui" -# Kirjoittamisen kohde voi olla timestamp file tai pathbuf -#: plugins/sudoers/iolog.c:505 plugins/sudoers/sudoreplay.c:1104 -#: plugins/sudoers/timestamp.c:290 plugins/sudoers/timestamp.c:293 -#, c-format -msgid "unable to write to %s" -msgstr "kohteeseen %s kirjoittaminen epäonnistui" - # Parametrina on pathbuf -#: plugins/sudoers/iolog.c:584 plugins/sudoers/iolog.c:803 +#: plugins/sudoers/iolog.c:579 plugins/sudoers/iolog.c:801 #, c-format msgid "unable to create %s" msgstr "hakemistopolun %s luominen epäonnistui" -#: plugins/sudoers/iolog.c:1035 plugins/sudoers/iolog.c:1110 -#: plugins/sudoers/iolog.c:1191 +#: plugins/sudoers/iolog.c:824 plugins/sudoers/iolog.c:1039 +#: plugins/sudoers/iolog.c:1115 plugins/sudoers/iolog.c:1209 +#: plugins/sudoers/iolog.c:1270 #, c-format msgid "unable to write to I/O log file: %s" msgstr "siirtolokitiedostoon: %s kirjoittaminen epäonnistui" -#: plugins/sudoers/iolog.c:1069 -#, c-format -msgid "%s: internal error, file index %d not open" +#: plugins/sudoers/iolog.c:1073 +#, fuzzy, c-format +#| msgid "%s: internal error, file index %d not open" +msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: sisäinen virhe, tiedostoindeksi %d ei ole avoin" -#: plugins/sudoers/ldap.c:431 -msgid "sudo_ldap_conf_add_ports: port too large" -msgstr "sudo_ldap_conf_add_ports: portti on liian suuri" +#: plugins/sudoers/iolog.c:1233 +#, fuzzy, c-format +#| msgid "%s: internal error, file index %d not open" +msgid "%s: internal error, invalid signal %d" +msgstr "%s: sisäinen virhe, tiedostoindeksi %d ei ole avoin" -# URL on verkko-osoite, loogisesti URI on verkkoresurssi(osoite) -#: plugins/sudoers/ldap.c:491 +#: plugins/sudoers/iolog_util.c:90 #, c-format -msgid "unsupported LDAP uri type: %s" -msgstr "tukematon LDAP-verkkoresurssin tunnustyyppi: %s" - -#: plugins/sudoers/ldap.c:518 -msgid "unable to mix ldap and ldaps URIs" -msgstr "ldap:n ja ldap-verkkoresurssitunnuksien sekoittaminen epäonnistui" - -#: plugins/sudoers/ldap.c:522 plugins/sudoers/ldap.c:558 -msgid "starttls not supported when using ldaps" -msgstr "starttls ei ole tuettu ldaps-käytössä" +msgid "%s: invalid log file" +msgstr "%s: virheellinen lokitiedosto" -#: plugins/sudoers/ldap.c:629 +#: plugins/sudoers/iolog_util.c:108 #, c-format -msgid "unable to initialize SSL cert and key db: %s" -msgstr "SSL-varmenne- ja -avaintietokannan alustaminen epäonnistui: %s" +msgid "%s: time stamp field is missing" +msgstr "%s: aikaleimakenttä puuttuu" -#: plugins/sudoers/ldap.c:632 +#: plugins/sudoers/iolog_util.c:114 #, c-format -msgid "you must set TLS_CERT in %s to use SSL" -msgstr "kohteessa %s TLS_CERT on asetettava käyttämään SSL:ää" - -#: plugins/sudoers/ldap.c:1239 -msgid "unable to get GMT time" -msgstr "GMT-ajan saaminen epäonnistui" - -#: plugins/sudoers/ldap.c:1245 -msgid "unable to format timestamp" -msgstr "aikaleiman muotoileminen epäonnistui" +msgid "%s: time stamp %s: %s" +msgstr "%s: aikaleima %s: %s" -#: plugins/sudoers/ldap.c:1961 +#: plugins/sudoers/iolog_util.c:121 #, c-format -msgid "%s: %s: %s: %s" -msgstr "%s: %s: %s: %s" +msgid "%s: user field is missing" +msgstr "%s: käyttäjäkenttä puuttuu" -#: plugins/sudoers/ldap.c:2533 +#: plugins/sudoers/iolog_util.c:130 #, c-format -msgid "" -"\n" -"LDAP Role: %s\n" -msgstr "" -"\n" -"LDAP-rooli: %s\n" +msgid "%s: runas user field is missing" +msgstr "%s: suorita käyttäjänä-kenttä puuttuu" -#: plugins/sudoers/ldap.c:2535 +#: plugins/sudoers/iolog_util.c:139 #, c-format -msgid "" -"\n" -"LDAP Role: UNKNOWN\n" -msgstr "" -"\n" -"LDAP-rooli: TUNTEMATON\n" +msgid "%s: runas group field is missing" +msgstr "%s: suorita ryhmänä-kenttä puuttuu" + +#: plugins/sudoers/ldap.c:178 plugins/sudoers/ldap_conf.c:296 +msgid "starttls not supported when using ldaps" +msgstr "starttls ei ole tuettu ldaps-käytössä" -#: plugins/sudoers/ldap.c:2591 +#: plugins/sudoers/ldap.c:249 #, c-format -msgid " Order: %s\n" -msgstr " Järjestys: %s\n" +msgid "unable to initialize SSL cert and key db: %s" +msgstr "SSL-varmenne- ja avaintietokannan alustaminen epäonnistui: %s" -#: plugins/sudoers/ldap.c:2599 plugins/sudoers/parse.c:614 -#: plugins/sudoers/sssd.c:1628 +#: plugins/sudoers/ldap.c:252 #, c-format -msgid " Commands:\n" -msgstr " Komennot:\n" +msgid "you must set TLS_CERT in %s to use SSL" +msgstr "kohteessa %s TLS_CERT on asetettava käyttämään SSL:ää" -#: plugins/sudoers/ldap.c:3161 +#: plugins/sudoers/ldap.c:1620 #, c-format msgid "unable to initialize LDAP: %s" msgstr "kohteen LDAP alustaminen epäonnistui: %s" -#: plugins/sudoers/ldap.c:3197 +#: plugins/sudoers/ldap.c:1656 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "start_tls määritelty, mutta LDAP-kirjastot ei tue funktiota ldap_start_tls_s() tai funktiota ldap_start_tls_s_np()" -#: plugins/sudoers/ldap.c:3446 +#: plugins/sudoers/ldap.c:1793 plugins/sudoers/parse_ldif.c:734 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "virheellinen sudoOrder-attribuutti: %s" -#: plugins/sudoers/linux_audit.c:52 +#: plugins/sudoers/ldap_conf.c:205 +msgid "sudo_ldap_conf_add_ports: port too large" +msgstr "sudo_ldap_conf_add_ports: portti on liian suuri" + +# URL on verkko-osoite, loogisesti URI on verkkoresurssi(osoite) +#: plugins/sudoers/ldap_conf.c:265 +#, c-format +msgid "unsupported LDAP uri type: %s" +msgstr "tukematon LDAP-verkkoresurssin tunnustyyppi: %s" + +#: plugins/sudoers/ldap_conf.c:292 +msgid "unable to mix ldap and ldaps URIs" +msgstr "ldap:n ja ldap-verkkoresurssitunnuksien sekoittaminen epäonnistui" + +#: plugins/sudoers/ldap_util.c:456 plugins/sudoers/ldap_util.c:458 +#, fuzzy, c-format +#| msgid "%s: unable to allocate options: %s" +msgid "unable to convert sudoOption: %s%s%s" +msgstr "%s: muistin varaaminen valitsimille epäonnistui: %s" + +#: plugins/sudoers/linux_audit.c:59 msgid "unable to open audit system" msgstr "audit-järjestelmän avaaminen epäonnistui" -#: plugins/sudoers/linux_audit.c:93 +#: plugins/sudoers/linux_audit.c:100 msgid "unable to send audit message" msgstr "audit-viestin lähettäminen epäonnistui" -#: plugins/sudoers/logging.c:107 +#: plugins/sudoers/logging.c:120 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: plugins/sudoers/logging.c:135 +#: plugins/sudoers/logging.c:148 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s: (komento jatkui) %s" -#: plugins/sudoers/logging.c:164 +#: plugins/sudoers/logging.c:177 #, c-format msgid "unable to open log file: %s" msgstr "lokitiedoston avaaminen epäonnistui: %s" -#: plugins/sudoers/logging.c:172 +#: plugins/sudoers/logging.c:185 #, c-format msgid "unable to lock log file: %s" msgstr "lokitiedoston lukitseminen epäonnistui: %s" -#: plugins/sudoers/logging.c:205 +#: plugins/sudoers/logging.c:218 #, c-format msgid "unable to write log file: %s" msgstr "lokitiedostoon: %s kirjoittaminen epäonnistui" -#: plugins/sudoers/logging.c:234 +#: plugins/sudoers/logging.c:248 msgid "No user or host" msgstr "Ei käyttäjä eikä tietokone" -#: plugins/sudoers/logging.c:236 +#: plugins/sudoers/logging.c:250 msgid "validation failure" msgstr "kelpuutushäiriö" -#: plugins/sudoers/logging.c:243 +#: plugins/sudoers/logging.c:261 msgid "user NOT in sudoers" msgstr "käyttäjä EI ole sudoers-tiedostossa" -#: plugins/sudoers/logging.c:245 +#: plugins/sudoers/logging.c:263 msgid "user NOT authorized on host" msgstr "käyttäjä ei ole varmennettu tietokoneella" -#: plugins/sudoers/logging.c:247 +#: plugins/sudoers/logging.c:265 msgid "command not allowed" msgstr "komento ei ole sallittu" -#: plugins/sudoers/logging.c:282 +#: plugins/sudoers/logging.c:301 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "käyttäjä %s ei ole sudoers-tiedostossa. Tästä tapahtumasta ilmoitetaan.\n" -#: plugins/sudoers/logging.c:285 +#: plugins/sudoers/logging.c:304 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "käyttäjä %s ei saa suorittaa komentoa sudo tietokoneella %s. Tästä tapahtumasta ilmoitetaan.\n" -#: plugins/sudoers/logging.c:289 +#: plugins/sudoers/logging.c:308 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Käyttäjä %s ei voi suorittaa komentoa sudo tietokoneella %s.\n" -#: plugins/sudoers/logging.c:292 +#: plugins/sudoers/logging.c:311 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "Käyttäjän %s ei sallita suorittaa ’%s%s%s’ käyttäjänä %s%s%s tietokoneella %s.\n" -#: plugins/sudoers/logging.c:329 plugins/sudoers/sudoers.c:472 -#: plugins/sudoers/sudoers.c:474 plugins/sudoers/sudoers.c:476 -#: plugins/sudoers/sudoers.c:478 plugins/sudoers/sudoers.c:1297 -#: plugins/sudoers/sudoers.c:1299 +#: plugins/sudoers/logging.c:348 plugins/sudoers/sudoers.c:442 +#: plugins/sudoers/sudoers.c:444 plugins/sudoers/sudoers.c:446 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:603 +#: plugins/sudoers/sudoers.c:605 #, c-format msgid "%s: command not found" msgstr "%s: komentoa ei löytynyt" -#: plugins/sudoers/logging.c:331 plugins/sudoers/sudoers.c:468 +#: plugins/sudoers/logging.c:350 plugins/sudoers/sudoers.c:438 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -1310,67 +1571,62 @@ "ohitetaan komento ”%s”, joka löytyi kohteesta ’.’\n" "Käytä ”sudo ./%s”, jos tämä on ”%s”-komento, joka halutaan suorittaa." -#: plugins/sudoers/logging.c:348 +#: plugins/sudoers/logging.c:367 msgid "authentication failure" msgstr "todentamishäiriö" -#: plugins/sudoers/logging.c:374 +#: plugins/sudoers/logging.c:393 msgid "a password is required" msgstr "vaaditaan salasana" -#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:511 +#: plugins/sudoers/logging.c:463 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "%u väärä salasana yritetty" msgstr[1] "%u väärää salasanaa yritetty" -#: plugins/sudoers/logging.c:598 -msgid "unable to fork" -msgstr "fork-funktion kutsuminen epäonnistui" +#: plugins/sudoers/logging.c:728 +#, c-format +msgid "unable to dup stdin: %m" +msgstr "funktion dup kutsuminen vakiosyötteellä epäonnistui: %m" -#: plugins/sudoers/logging.c:606 plugins/sudoers/logging.c:658 +#: plugins/sudoers/logging.c:768 +#, c-format +msgid "unable to execute %s: %m" +msgstr "käskyn %s suorittaminen epäonnistui: %m" + +#: plugins/sudoers/logging.c:809 plugins/sudoers/logging.c:865 #, c-format msgid "unable to fork: %m" msgstr "fork-funktion kutsuminen epäonnistui: %m" -#: plugins/sudoers/logging.c:648 +#: plugins/sudoers/logging.c:855 #, c-format msgid "unable to open pipe: %m" msgstr "putken avaaminen epäonnistui: %m" -#: plugins/sudoers/logging.c:673 -#, c-format -msgid "unable to dup stdin: %m" -msgstr "funktion dup kutsuminen vakiosyötteellä epäonnistui: %m" - -#: plugins/sudoers/logging.c:711 -#, c-format -msgid "unable to execute %s: %m" -msgstr "käskyn %s suorittaminen epäonnistui: %m" - -#: plugins/sudoers/match.c:771 +#: plugins/sudoers/match_digest.c:103 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "tiiviste kohteelle %s (%s) ei ole %s-muodossa" -#: plugins/sudoers/mkdir_parents.c:70 plugins/sudoers/sudoers.c:943 -#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:734 +#: plugins/sudoers/mkdir_parents.c:77 plugins/sudoers/sudoers.c:943 +#: plugins/sudoers/visudo.c:437 plugins/sudoers/visudo.c:733 #, c-format msgid "unable to stat %s" msgstr "funktion stat %s kutsuminen epäonnistui" -#: plugins/sudoers/parse.c:115 -#, c-format -msgid "parse error in %s near line %d" -msgstr "jäsentämisvirhe tiedostossa %s lähellä riviä %d" - -#: plugins/sudoers/parse.c:118 +#: plugins/sudoers/parse.c:449 #, c-format -msgid "parse error in %s" -msgstr "jäsentämisvirhe tiedostossa %s" +msgid "" +"\n" +"LDAP Role: %s\n" +msgstr "" +"\n" +"LDAP-rooli: %s\n" -#: plugins/sudoers/parse.c:540 +#: plugins/sudoers/parse.c:452 #, c-format msgid "" "\n" @@ -1379,42 +1635,100 @@ "\n" "Sudoers-rivi:\n" -#: plugins/sudoers/parse.c:541 +#: plugins/sudoers/parse.c:454 #, c-format msgid " RunAsUsers: " msgstr " SuoritaKäyttäjänä: " -#: plugins/sudoers/parse.c:555 +#: plugins/sudoers/parse.c:469 #, c-format msgid " RunAsGroups: " msgstr " SuoritaRyhmänä: " -#: plugins/sudoers/parse.c:564 +#: plugins/sudoers/parse.c:479 #, c-format msgid " Options: " msgstr " Valitsimet: " -#: plugins/sudoers/policy.c:242 plugins/sudoers/testsudoers.c:261 +#: plugins/sudoers/parse.c:529 +#, c-format +msgid " Commands:\n" +msgstr " Komennot:\n" + +#: plugins/sudoers/parse.c:720 +#, c-format +msgid "Matching Defaults entries for %s on %s:\n" +msgstr "Täsmäävät Defaults-rivit kohteelle %s kohteella %s:\n" + +#: plugins/sudoers/parse.c:738 +#, c-format +msgid "Runas and Command-specific defaults for %s:\n" +msgstr "Runas- ja Command-kohtaiset oletukset kohteelle %s:\n" + +#: plugins/sudoers/parse.c:756 +#, c-format +msgid "User %s may run the following commands on %s:\n" +msgstr "Käyttäjä %s voi suorittaa seuraavat komennot kohteella %s:\n" + +#: plugins/sudoers/parse.c:771 +#, c-format +msgid "User %s is not allowed to run sudo on %s.\n" +msgstr "Käyttäjä %s ei saa suorittaa komentoa sudo tietokoneella %s.\n" + +#: plugins/sudoers/parse_ldif.c:604 +#, c-format +msgid "ignoring incomplete sudoRole: cn: %s" +msgstr "" + +#: plugins/sudoers/parse_ldif.c:664 +#, fuzzy, c-format +#| msgid "invalid sudoOrder attribute: %s" +msgid "invalid LDIF attribute: %s" +msgstr "virheellinen sudoOrder-attribuutti: %s" + +#: plugins/sudoers/policy.c:90 plugins/sudoers/policy.c:116 +#, c-format +msgid "invalid %.*s set by sudo front-end" +msgstr "" + +#: plugins/sudoers/policy.c:295 plugins/sudoers/testsudoers.c:280 msgid "unable to parse network address list" msgstr "verkko-osoiteluettelon jäsentäminen epäonnistui" +#: plugins/sudoers/policy.c:439 +msgid "user name not set by sudo front-end" +msgstr "" + +#: plugins/sudoers/policy.c:443 +msgid "user-ID not set by sudo front-end" +msgstr "" + +#: plugins/sudoers/policy.c:447 +msgid "group-ID not set by sudo front-end" +msgstr "" + +#: plugins/sudoers/policy.c:451 +msgid "host name not set by sudo front-end" +msgstr "" + # Parametri on path, mutta saattaa sisältää suoritettavan ohjelman -#: plugins/sudoers/policy.c:711 plugins/sudoers/visudo.c:910 +#: plugins/sudoers/policy.c:808 plugins/sudoers/visudo.c:236 +#: plugins/sudoers/visudo.c:867 #, c-format msgid "unable to execute %s" msgstr "kohteen %s suorittaminen epäonnistui" -#: plugins/sudoers/policy.c:844 +#: plugins/sudoers/policy.c:939 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Sudoers-menettelytapalisäosaversio %s\n" -#: plugins/sudoers/policy.c:846 +#: plugins/sudoers/policy.c:941 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Sudoers-tiedostokielioppiversio %d\n" -#: plugins/sudoers/policy.c:850 +#: plugins/sudoers/policy.c:945 #, c-format msgid "" "\n" @@ -1423,253 +1737,217 @@ "\n" "Sudoers-polku: %s\n" -#: plugins/sudoers/policy.c:853 +#: plugins/sudoers/policy.c:948 #, c-format msgid "nsswitch path: %s\n" msgstr "nsswitch-polku: %s\n" -#: plugins/sudoers/policy.c:855 +#: plugins/sudoers/policy.c:950 #, c-format msgid "ldap.conf path: %s\n" msgstr "ldap.conf-polku: %s\n" -#: plugins/sudoers/policy.c:856 +#: plugins/sudoers/policy.c:951 #, c-format msgid "ldap.secret path: %s\n" msgstr "ldap.secret-polku: %s\n" -#: plugins/sudoers/policy.c:889 +#: plugins/sudoers/policy.c:984 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "kytkentätyypin %d (version %d.%d) rekisteröiminen epäonnistui" -#: plugins/sudoers/pwutil.c:162 plugins/sudoers/pwutil.c:180 -#, c-format -msgid "unable to cache uid %u, out of memory" +#: plugins/sudoers/pwutil.c:222 plugins/sudoers/pwutil.c:240 +#, fuzzy, c-format +#| msgid "unable to cache uid %u, out of memory" +msgid "unable to cache uid %u" msgstr "käyttäjän uid %u laittaminen välimuistiin epäonnistui, muistia ei riittävästi" -#: plugins/sudoers/pwutil.c:174 +#: plugins/sudoers/pwutil.c:234 #, c-format msgid "unable to cache uid %u, already exists" msgstr "käyttäjän uid %u laittaminen välimuistiin epäonnistui, käyttäjä on jo siellä" -#: plugins/sudoers/pwutil.c:234 plugins/sudoers/pwutil.c:251 -#: plugins/sudoers/pwutil.c:313 plugins/sudoers/pwutil.c:358 -#, c-format -msgid "unable to cache user %s, out of memory" -msgstr "käyttäjän %s laittaminen välimuistiin epäonnistui, muistia ei riittävästi" +# Parametrina on pathbuf +#: plugins/sudoers/pwutil.c:294 plugins/sudoers/pwutil.c:312 +#: plugins/sudoers/pwutil.c:375 plugins/sudoers/pwutil.c:420 +#, fuzzy, c-format +#| msgid "unable to create %s" +msgid "unable to cache user %s" +msgstr "hakemistopolun %s luominen epäonnistui" -#: plugins/sudoers/pwutil.c:246 +#: plugins/sudoers/pwutil.c:307 #, c-format msgid "unable to cache user %s, already exists" msgstr "käyttäjän %s laittaminen välimuistiin epäonnistui, käyttäjä on jo siellä" -#: plugins/sudoers/pwutil.c:474 plugins/sudoers/pwutil.c:492 -#, c-format -msgid "unable to cache gid %u, out of memory" +#: plugins/sudoers/pwutil.c:539 plugins/sudoers/pwutil.c:557 +#, fuzzy, c-format +#| msgid "unable to cache gid %u, out of memory" +msgid "unable to cache gid %u" msgstr "ryhmän gid %u laittaminen välimuistiin epäonnistui, muistia ei riittävästi" -#: plugins/sudoers/pwutil.c:486 +#: plugins/sudoers/pwutil.c:551 #, c-format msgid "unable to cache gid %u, already exists" msgstr "ryhmän gid %u laittaminen välimuistiin epäonnistui, ryhmä on jo siellä" -#: plugins/sudoers/pwutil.c:540 plugins/sudoers/pwutil.c:557 -#: plugins/sudoers/pwutil.c:604 plugins/sudoers/pwutil.c:646 -#, c-format -msgid "unable to cache group %s, out of memory" -msgstr "ryhmän %s laittaminen välimuistiin epäonnistui, muistia ei riittävästi" +# Parametri on sudoers file +#: plugins/sudoers/pwutil.c:604 plugins/sudoers/pwutil.c:622 +#: plugins/sudoers/pwutil.c:670 plugins/sudoers/pwutil.c:712 +#, fuzzy, c-format +#| msgid "unable to parse groups for %s" +msgid "unable to cache group %s" +msgstr "ryhmien jäsentäminen tiedostossa %s epäonnistui" -#: plugins/sudoers/pwutil.c:552 +#: plugins/sudoers/pwutil.c:617 #, c-format msgid "unable to cache group %s, already exists" msgstr "ryhmän %s laittaminen välimuistiin epäonnistui, ryhmä on jo siellä" -#: plugins/sudoers/pwutil.c:772 plugins/sudoers/pwutil.c:824 -#: plugins/sudoers/pwutil.c:874 plugins/sudoers/pwutil.c:926 +#: plugins/sudoers/pwutil.c:839 plugins/sudoers/pwutil.c:891 +#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:994 #, c-format msgid "unable to cache group list for %s, already exists" msgstr "ryhmäluettelon laittaminen välimuistiin tiedostossa %s epäonnistui, ryhmäluettelo on jo siellä" -#: plugins/sudoers/pwutil.c:778 plugins/sudoers/pwutil.c:829 -#: plugins/sudoers/pwutil.c:880 plugins/sudoers/pwutil.c:931 -#, c-format -msgid "unable to cache group list for %s, out of memory" -msgstr "ryhmäluettelon laittaminen välimuistiin tiedostossa %s epäonnistui, muistia ei riittävästi" +# Parametri on sudoers file +#: plugins/sudoers/pwutil.c:845 plugins/sudoers/pwutil.c:896 +#: plugins/sudoers/pwutil.c:947 plugins/sudoers/pwutil.c:999 +#, fuzzy, c-format +#| msgid "unable to parse groups for %s" +msgid "unable to cache group list for %s" +msgstr "ryhmien jäsentäminen tiedostossa %s epäonnistui" # Parametri on sudoers file -#: plugins/sudoers/pwutil.c:818 +#: plugins/sudoers/pwutil.c:885 #, c-format msgid "unable to parse groups for %s" msgstr "ryhmien jäsentäminen tiedostossa %s epäonnistui" # Parametri on sudoers file -#: plugins/sudoers/pwutil.c:920 +#: plugins/sudoers/pwutil.c:988 #, c-format msgid "unable to parse gids for %s" msgstr "ryhmätunnisteiden jäsentäminen tiedostolle %s epäonnistui" -#: plugins/sudoers/set_perms.c:113 plugins/sudoers/set_perms.c:469 -#: plugins/sudoers/set_perms.c:912 plugins/sudoers/set_perms.c:1239 -#: plugins/sudoers/set_perms.c:1556 +#: plugins/sudoers/set_perms.c:120 plugins/sudoers/set_perms.c:478 +#: plugins/sudoers/set_perms.c:921 plugins/sudoers/set_perms.c:1254 +#: plugins/sudoers/set_perms.c:1573 msgid "perm stack overflow" msgstr "käyttöoikeuspinoylivuoto" -#: plugins/sudoers/set_perms.c:121 plugins/sudoers/set_perms.c:400 -#: plugins/sudoers/set_perms.c:477 plugins/sudoers/set_perms.c:779 -#: plugins/sudoers/set_perms.c:920 plugins/sudoers/set_perms.c:1163 -#: plugins/sudoers/set_perms.c:1247 plugins/sudoers/set_perms.c:1489 -#: plugins/sudoers/set_perms.c:1564 plugins/sudoers/set_perms.c:1654 +#: plugins/sudoers/set_perms.c:128 plugins/sudoers/set_perms.c:409 +#: plugins/sudoers/set_perms.c:486 plugins/sudoers/set_perms.c:788 +#: plugins/sudoers/set_perms.c:929 plugins/sudoers/set_perms.c:1178 +#: plugins/sudoers/set_perms.c:1262 plugins/sudoers/set_perms.c:1506 +#: plugins/sudoers/set_perms.c:1581 plugins/sudoers/set_perms.c:1672 msgid "perm stack underflow" msgstr "käyttöoikeuspinovajaus" -#: plugins/sudoers/set_perms.c:180 plugins/sudoers/set_perms.c:523 -#: plugins/sudoers/set_perms.c:1298 plugins/sudoers/set_perms.c:1596 +#: plugins/sudoers/set_perms.c:187 plugins/sudoers/set_perms.c:532 +#: plugins/sudoers/set_perms.c:1315 plugins/sudoers/set_perms.c:1614 msgid "unable to change to root gid" msgstr "vaihtaminen root gid -tunnisteeksi epäonnistui" -#: plugins/sudoers/set_perms.c:269 plugins/sudoers/set_perms.c:620 -#: plugins/sudoers/set_perms.c:1049 plugins/sudoers/set_perms.c:1375 +#: plugins/sudoers/set_perms.c:278 plugins/sudoers/set_perms.c:629 +#: plugins/sudoers/set_perms.c:1060 plugins/sudoers/set_perms.c:1392 msgid "unable to change to runas gid" msgstr "vaihtaminen runas gid -tunnisteeksi epäonnistui" -#: plugins/sudoers/set_perms.c:274 plugins/sudoers/set_perms.c:625 -#: plugins/sudoers/set_perms.c:1054 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:283 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1065 plugins/sudoers/set_perms.c:1397 msgid "unable to set runas group vector" msgstr "runas-ryhmävektorin asettaminen epäonnistui" -#: plugins/sudoers/set_perms.c:285 plugins/sudoers/set_perms.c:636 -#: plugins/sudoers/set_perms.c:1063 plugins/sudoers/set_perms.c:1389 +#: plugins/sudoers/set_perms.c:294 plugins/sudoers/set_perms.c:645 +#: plugins/sudoers/set_perms.c:1074 plugins/sudoers/set_perms.c:1406 msgid "unable to change to runas uid" msgstr "vaihtaminen runas uid -tunnisteeksi epäonnistui" -#: plugins/sudoers/set_perms.c:303 plugins/sudoers/set_perms.c:654 -#: plugins/sudoers/set_perms.c:1079 plugins/sudoers/set_perms.c:1405 +#: plugins/sudoers/set_perms.c:312 plugins/sudoers/set_perms.c:663 +#: plugins/sudoers/set_perms.c:1090 plugins/sudoers/set_perms.c:1422 msgid "unable to change to sudoers gid" msgstr "vaihtaminen sudoers gid-tunnisteeksi epäonnistui" -#: plugins/sudoers/set_perms.c:387 plugins/sudoers/set_perms.c:766 -#: plugins/sudoers/set_perms.c:1150 plugins/sudoers/set_perms.c:1476 -#: plugins/sudoers/set_perms.c:1641 +#: plugins/sudoers/set_perms.c:396 plugins/sudoers/set_perms.c:775 +#: plugins/sudoers/set_perms.c:1165 plugins/sudoers/set_perms.c:1493 +#: plugins/sudoers/set_perms.c:1659 msgid "too many processes" msgstr "liian monta prosessia" -#: plugins/sudoers/solaris_audit.c:51 +#: plugins/sudoers/solaris_audit.c:58 msgid "unable to get current working directory" msgstr "nykyisen työhakemiston hakeminen epäonnistui" -#: plugins/sudoers/solaris_audit.c:59 +#: plugins/sudoers/solaris_audit.c:66 #, c-format msgid "truncated audit path user_cmnd: %s" msgstr "typistetty audit-polku user_cmnd: %s" -#: plugins/sudoers/solaris_audit.c:66 +#: plugins/sudoers/solaris_audit.c:73 #, c-format msgid "truncated audit path argv[0]: %s" msgstr "typistetty audit-polku argv[0]: %s" -#: plugins/sudoers/solaris_audit.c:115 +#: plugins/sudoers/solaris_audit.c:122 msgid "audit_failure message too long" msgstr "audit_failure-viesti on liian pitkä" -#: plugins/sudoers/sssd.c:400 +#: plugins/sudoers/sssd.c:564 msgid "unable to initialize SSS source. Is SSSD installed on your machine?" msgstr "lähteen SSS alustaminen epäonnistui. Onko SSSD asennettu tietokoneeseesi?" # parametrina on path -#: plugins/sudoers/sssd.c:408 plugins/sudoers/sssd.c:417 -#: plugins/sudoers/sssd.c:426 plugins/sudoers/sssd.c:435 -#: plugins/sudoers/sssd.c:444 +#: plugins/sudoers/sssd.c:572 plugins/sudoers/sssd.c:581 +#: plugins/sudoers/sssd.c:590 plugins/sudoers/sssd.c:599 +#: plugins/sudoers/sssd.c:608 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "symbolin ”%s” löytäminen polusta %s epäonnistui" -#: plugins/sudoers/sssd.c:1543 -#, c-format -msgid "" -"\n" -"SSSD Role: %s\n" -msgstr "" -"\n" -"SSSD-rooli: %s\n" - -#: plugins/sudoers/sssd.c:1548 -#, c-format -msgid "" -"\n" -"SSSD Role: UNKNOWN\n" -msgstr "" -"\n" -"SSSD-rooli: TUNTEMATON\n" - -#: plugins/sudoers/sudo_nss.c:290 -#, c-format -msgid "Matching Defaults entries for %s on %s:\n" -msgstr "Täsmäävät Defaults-rivit kohteelle %s kohteella %s:\n" - -#: plugins/sudoers/sudo_nss.c:308 -#, c-format -msgid "Runas and Command-specific defaults for %s:\n" -msgstr "Runas- ja Command-kohtaiset oletukset kohteelle %s:\n" - -#: plugins/sudoers/sudo_nss.c:326 -#, c-format -msgid "User %s may run the following commands on %s:\n" -msgstr "Käyttäjä %s voi suorittaa seuraavat komennot kohteella %s:\n" - -#: plugins/sudoers/sudo_nss.c:339 -#, c-format -msgid "User %s is not allowed to run sudo on %s.\n" -msgstr "Käyttäjä %s ei saa suorittaa komentoa sudo tietokoneella %s.\n" - -#: plugins/sudoers/sudoers.c:168 plugins/sudoers/testsudoers.c:247 -#: plugins/sudoers/visudo.c:233 plugins/sudoers/visudo.c:612 -#: plugins/sudoers/visudo.c:976 -msgid "unable to initialize sudoers default values" -msgstr "sudoers-oletusarvojen alustaminen epäonnistui" - -#: plugins/sudoers/sudoers.c:198 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:212 plugins/sudoers/sudoers.c:871 msgid "problem with defaults entries" msgstr "oletusrivien pulma" -#: plugins/sudoers/sudoers.c:205 +#: plugins/sudoers/sudoers.c:216 msgid "no valid sudoers sources found, quitting" msgstr "ei löytynyt kelvollisia sudoers-lähteitä, poistutaan" -#: plugins/sudoers/sudoers.c:244 +#: plugins/sudoers/sudoers.c:254 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers määrittelee, että root ei saa suorittaa sudo-komentoa" -#: plugins/sudoers/sudoers.c:301 +#: plugins/sudoers/sudoers.c:312 msgid "you are not permitted to use the -C option" msgstr "ei käyttöoikeuksia valitsimelle -C" -#: plugins/sudoers/sudoers.c:390 +#: plugins/sudoers/sudoers.c:359 #, c-format msgid "timestamp owner (%s): No such user" msgstr "aikaleimaomistaja (%s): Tuntematon käyttäjä" -#: plugins/sudoers/sudoers.c:405 +#: plugins/sudoers/sudoers.c:374 msgid "no tty" msgstr "ei tty:tä" -#: plugins/sudoers/sudoers.c:406 +#: plugins/sudoers/sudoers.c:375 msgid "sorry, you must have a tty to run sudo" msgstr "sudo-komennon suorittamiseksi on oltava tty" -#: plugins/sudoers/sudoers.c:467 +#: plugins/sudoers/sudoers.c:437 msgid "command in current directory" msgstr "komento nykyisessä hakemistossa" -#: plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:456 msgid "sorry, you are not allowed set a command timeout" msgstr "komennon aikavalvonnan asettaminen ei ole sallittua" -#: plugins/sudoers/sudoers.c:494 +#: plugins/sudoers/sudoers.c:464 msgid "sorry, you are not allowed to preserve the environment" msgstr "ympäristöä ei ole lupa säilyttää" -#: plugins/sudoers/sudoers.c:835 +#: plugins/sudoers/sudoers.c:815 msgid "command too long" msgstr "komento on liian pitkä" @@ -1678,17 +1956,17 @@ msgid "%s is not a regular file" msgstr "%s ei ole tavallinen tiedosto" -#: plugins/sudoers/sudoers.c:951 plugins/sudoers/timestamp.c:217 toke.l:969 +#: plugins/sudoers/sudoers.c:951 plugins/sudoers/timestamp.c:259 toke.l:967 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s on uid %u -käyttäjän omistama, pitäisi olla %u" -#: plugins/sudoers/sudoers.c:955 toke.l:974 +#: plugins/sudoers/sudoers.c:955 toke.l:972 #, c-format msgid "%s is world writable" msgstr "%s on yleiskirjoitettava" -#: plugins/sudoers/sudoers.c:959 toke.l:977 +#: plugins/sudoers/sudoers.c:959 toke.l:975 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s on gid %u -ryhmän omistama, pitäisi olla %u" @@ -1703,165 +1981,136 @@ msgid "unknown login class: %s" msgstr "tuntematon kirjautumisluokka: %s" -#: plugins/sudoers/sudoers.c:1094 plugins/sudoers/sudoers.c:1108 +#: plugins/sudoers/sudoers.c:1096 plugins/sudoers/sudoers.c:1110 #, c-format msgid "unable to resolve host %s" msgstr "tietokoneen %s ratkaiseminen epäonnistui" -#: plugins/sudoers/sudoreplay.c:275 +#: plugins/sudoers/sudoreplay.c:250 #, c-format msgid "invalid filter option: %s" msgstr "virheellinen suodatinvalitsin: %s" -#: plugins/sudoers/sudoreplay.c:288 +#: plugins/sudoers/sudoreplay.c:263 #, c-format msgid "invalid max wait: %s" msgstr "virheellinen enimmäisodotusaika: %s" -#: plugins/sudoers/sudoreplay.c:300 +#: plugins/sudoers/sudoreplay.c:286 #, c-format msgid "invalid speed factor: %s" msgstr "virheellinen nopeustekijä: %s" -#: plugins/sudoers/sudoreplay.c:303 plugins/sudoers/visudo.c:186 -#, c-format -msgid "%s version %s\n" -msgstr "%s versio %s\n" - -#: plugins/sudoers/sudoreplay.c:335 +#: plugins/sudoers/sudoreplay.c:321 #, c-format msgid "%s/%.2s/%.2s/%.2s/timing: %s" msgstr "%s/%.2s/%.2s/%.2s/ajoitus: %s" -#: plugins/sudoers/sudoreplay.c:341 +#: plugins/sudoers/sudoreplay.c:326 +#, fuzzy, c-format +#| msgid "%s/%s/timing: %s" +msgid "%s/timing: %s" +msgstr "%s/%s/ajoitus: %s" + +#: plugins/sudoers/sudoreplay.c:330 #, c-format msgid "%s/%s/timing: %s" msgstr "%s/%s/ajoitus: %s" -#: plugins/sudoers/sudoreplay.c:357 +#: plugins/sudoers/sudoreplay.c:346 #, c-format msgid "Replaying sudo session: %s" msgstr "Toistetaan sudo-istunto: %s" -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:602 -#: plugins/sudoers/sudoreplay.c:804 plugins/sudoers/sudoreplay.c:879 -#: plugins/sudoers/sudoreplay.c:958 plugins/sudoers/sudoreplay.c:973 -#: plugins/sudoers/sudoreplay.c:980 plugins/sudoers/sudoreplay.c:987 -#: plugins/sudoers/sudoreplay.c:994 plugins/sudoers/sudoreplay.c:1001 -#: plugins/sudoers/sudoreplay.c:1143 +#: plugins/sudoers/sudoreplay.c:544 plugins/sudoers/sudoreplay.c:591 +#: plugins/sudoers/sudoreplay.c:789 plugins/sudoers/sudoreplay.c:898 +#: plugins/sudoers/sudoreplay.c:983 plugins/sudoers/sudoreplay.c:998 +#: plugins/sudoers/sudoreplay.c:1005 plugins/sudoers/sudoreplay.c:1012 +#: plugins/sudoers/sudoreplay.c:1019 plugins/sudoers/sudoreplay.c:1026 +#: plugins/sudoers/sudoreplay.c:1174 msgid "unable to add event to queue" msgstr "tapahtuman lisääminen jonoon epäonnistui" -#: plugins/sudoers/sudoreplay.c:670 +#: plugins/sudoers/sudoreplay.c:659 msgid "unable to set tty to raw mode" msgstr "tty:n asettaminen raakatilaan epäonnistui" -#: plugins/sudoers/sudoreplay.c:721 -#, c-format +#: plugins/sudoers/sudoreplay.c:710 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Varoitus: pääteikkunasi on liian pieni tämän lokin toistamiseksi oikein.\n" -#: plugins/sudoers/sudoreplay.c:722 +#: plugins/sudoers/sudoreplay.c:711 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "Lokigeometria on %d x %d, pääteikkunasi geometria on %d x %d." -#: plugins/sudoers/sudoreplay.c:749 +#: plugins/sudoers/sudoreplay.c:739 msgid "Replay finished, press any key to restore the terminal." msgstr "Toistaminen päättyi, palaa pääteikkunaan painamalla mitä tahansa näppäintä." -#: plugins/sudoers/sudoreplay.c:782 +#: plugins/sudoers/sudoreplay.c:772 #, c-format msgid "invalid timing file line: %s" msgstr "virheellinen ajoitustiedostorivi: %s" -#: plugins/sudoers/sudoreplay.c:1177 plugins/sudoers/sudoreplay.c:1202 +#: plugins/sudoers/sudoreplay.c:1208 plugins/sudoers/sudoreplay.c:1233 #, c-format msgid "ambiguous expression \"%s\"" msgstr "monimerkityksellinen lauseke ”%s”" -#: plugins/sudoers/sudoreplay.c:1224 +#: plugins/sudoers/sudoreplay.c:1255 msgid "unmatched ')' in expression" msgstr "täsmäämätön ’)’ lausekkeessa" -#: plugins/sudoers/sudoreplay.c:1228 +#: plugins/sudoers/sudoreplay.c:1259 #, c-format msgid "unknown search term \"%s\"" msgstr "tuntematon hakutermi ”%s”" -#: plugins/sudoers/sudoreplay.c:1243 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "%s requires an argument" msgstr "%s vaatii argumentin" -#: plugins/sudoers/sudoreplay.c:1246 plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1277 plugins/sudoers/sudoreplay.c:1518 #, c-format msgid "invalid regular expression: %s" msgstr "virheellinen säännöllinen lauseke: %s" -#: plugins/sudoers/sudoreplay.c:1250 +#: plugins/sudoers/sudoreplay.c:1281 #, c-format msgid "could not parse date \"%s\"" msgstr "päivämäärän ”%s” jäsentäminen epäonnistui" -#: plugins/sudoers/sudoreplay.c:1259 +#: plugins/sudoers/sudoreplay.c:1290 msgid "unmatched '(' in expression" msgstr "täsmäämätön ’(’ lausekkeessa" -#: plugins/sudoers/sudoreplay.c:1261 +#: plugins/sudoers/sudoreplay.c:1292 msgid "illegal trailing \"or\"" msgstr "virheellinen jäljessä oleva ”or”" -#: plugins/sudoers/sudoreplay.c:1263 +#: plugins/sudoers/sudoreplay.c:1294 msgid "illegal trailing \"!\"" msgstr "virheellinen jäljessä oleva ”!”" -#: plugins/sudoers/sudoreplay.c:1312 +#: plugins/sudoers/sudoreplay.c:1344 #, c-format msgid "unknown search type %d" msgstr "tuntematon hakutyyppi %d" -#: plugins/sudoers/sudoreplay.c:1350 -#, c-format -msgid "%s: invalid log file" -msgstr "%s: virheellinen lokitiedosto" - -#: plugins/sudoers/sudoreplay.c:1368 -#, c-format -msgid "%s: time stamp field is missing" -msgstr "%s: aikaleimakenttä puuttuu" - -#: plugins/sudoers/sudoreplay.c:1375 -#, c-format -msgid "%s: time stamp %s: %s" -msgstr "%s: aikaleima %s: %s" - -#: plugins/sudoers/sudoreplay.c:1382 -#, c-format -msgid "%s: user field is missing" -msgstr "%s: käyttäjäkenttä puuttuu" - -#: plugins/sudoers/sudoreplay.c:1391 -#, c-format -msgid "%s: runas user field is missing" -msgstr "%s: suorita käyttäjänä-kenttä puuttuu" - -#: plugins/sudoers/sudoreplay.c:1400 -#, c-format -msgid "%s: runas group field is missing" -msgstr "%s: suorita ryhmänä-kenttä puuttuu" - -#: plugins/sudoers/sudoreplay.c:1806 -#, c-format -msgid "usage: %s [-hnR] [-d dir] [-m num] [-s num] ID\n" +#: plugins/sudoers/sudoreplay.c:1611 +#, fuzzy, c-format +#| msgid "usage: %s [-hnR] [-d dir] [-m num] [-s num] ID\n" +msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "käyttö: %s [-hnR] [-d hakemisto] [-m numero] [-s numero] ID-tunniste\n" -#: plugins/sudoers/sudoreplay.c:1809 +#: plugins/sudoers/sudoreplay.c:1614 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "käyttö: %s [-h] [-d hakemisto] -l [hakulauseke]\n" -#: plugins/sudoers/sudoreplay.c:1818 +#: plugins/sudoers/sudoreplay.c:1623 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -1870,17 +2119,31 @@ "%s - toista sudo-istuntolokit\n" "\n" -#: plugins/sudoers/sudoreplay.c:1820 +#: plugins/sudoers/sudoreplay.c:1625 +#, fuzzy +#| msgid "" +#| "\n" +#| "Options:\n" +#| " -d, --directory=dir specify directory for session logs\n" +#| " -f, --filter=filter specify which I/O type(s) to display\n" +#| " -h, --help display help message and exit\n" +#| " -l, --list list available session IDs, with optional expression\n" +#| " -m, --max-wait=num max number of seconds to wait between events\n" +#| " -s, --speed=num speed up or slow down output\n" +#| " -V, --version display version information and exit" msgid "" "\n" "Options:\n" -" -d, --directory=dir specify directory for session logs\n" -" -f, --filter=filter specify which I/O type(s) to display\n" -" -h, --help display help message and exit\n" -" -l, --list list available session IDs, with optional expression\n" -" -m, --max-wait=num max number of seconds to wait between events\n" -" -s, --speed=num speed up or slow down output\n" -" -V, --version display version information and exit" +" -d, --directory=dir specify directory for session logs\n" +" -f, --filter=filter specify which I/O type(s) to display\n" +" -h, --help display help message and exit\n" +" -l, --list list available session IDs, with optional expression\n" +" -m, --max-wait=num max number of seconds to wait between events\n" +" -n, --non-interactive no prompts, session is sent to the standard output\n" +" -R, --no-resize do not attempt to re-size the terminal\n" +" -S, --suspend-wait wait while the command was suspended\n" +" -s, --speed=num speed up or slow down output\n" +" -V, --version display version information and exit" msgstr "" "\n" "Valitsimet:\n" @@ -1892,11 +2155,11 @@ " -s, --speed=numero nopeustekijä nopeuta tai hidasta tulostusta\n" " -V, --version näytä versiotiedot ja poistu" -#: plugins/sudoers/testsudoers.c:329 +#: plugins/sudoers/testsudoers.c:362 msgid "\thost unmatched" msgstr "\ttietokone täsmäämätön" -#: plugins/sudoers/testsudoers.c:332 +#: plugins/sudoers/testsudoers.c:365 msgid "" "\n" "Command allowed" @@ -1904,7 +2167,7 @@ "\n" "Komento sallittu" -#: plugins/sudoers/testsudoers.c:333 +#: plugins/sudoers/testsudoers.c:366 msgid "" "\n" "Command denied" @@ -1912,7 +2175,7 @@ "\n" "Komento kielletty" -#: plugins/sudoers/testsudoers.c:333 +#: plugins/sudoers/testsudoers.c:366 msgid "" "\n" "Command unmatched" @@ -1920,100 +2183,103 @@ "\n" "Täsmäämätön komento" -#: plugins/sudoers/timestamp.c:225 +#: plugins/sudoers/timestamp.c:267 #, c-format msgid "%s is group writable" msgstr "%s on ryhmäkirjoitettava" -#: plugins/sudoers/timestamp.c:301 +#: plugins/sudoers/timestamp.c:343 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "aikaleimatiedoston typistäminen %lld-tavun kokoiseksi epäonnistui" -#: plugins/sudoers/timestamp.c:756 plugins/sudoers/timestamp.c:823 -#: plugins/sudoers/visudo.c:500 plugins/sudoers/visudo.c:506 +#: plugins/sudoers/timestamp.c:829 plugins/sudoers/timestamp.c:921 +#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:504 msgid "unable to read the clock" msgstr "kellon lukeminen epäonnistui" -#: plugins/sudoers/timestamp.c:770 +#: plugins/sudoers/timestamp.c:840 msgid "ignoring time stamp from the future" msgstr "ohitetaan aikaleima tulevaisuudesta" -#: plugins/sudoers/timestamp.c:782 +#: plugins/sudoers/timestamp.c:863 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "aikaleima liian kaukana tulevaisuudessa: %20.20s" -#: plugins/sudoers/timestamp.c:877 +#: plugins/sudoers/timestamp.c:985 #, c-format msgid "unable to lock time stamp file %s" msgstr "aikaleimatiedoston %s lukitseminen epäonnistui" -#: plugins/sudoers/timestamp.c:921 plugins/sudoers/timestamp.c:941 +#: plugins/sudoers/timestamp.c:1029 plugins/sudoers/timestamp.c:1049 #, c-format msgid "lecture status path too long: %s/%s" msgstr "luentotilapolku on liian pitkä: %s/%s" -#: plugins/sudoers/visudo.c:188 -#, c-format -msgid "%s grammar version %d\n" -msgstr "%s kielioppiversio %d\n" +#: plugins/sudoers/visudo.c:232 +msgid "the -x option will be removed in a future release" +msgstr "valitsin -x poistetaan jossakin tulevassa versiossa" -#: plugins/sudoers/visudo.c:266 plugins/sudoers/visudo.c:667 +#: plugins/sudoers/visudo.c:233 +msgid "please consider using the cvtsudoers utility instead" +msgstr "" + +#: plugins/sudoers/visudo.c:284 plugins/sudoers/visudo.c:666 #, c-format msgid "press return to edit %s: " msgstr "muokkaa %s painamalla enter-painiketta: " -#: plugins/sudoers/visudo.c:331 +#: plugins/sudoers/visudo.c:345 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "määritelty editori (%s) ei ole olemassa" -#: plugins/sudoers/visudo.c:349 +#: plugins/sudoers/visudo.c:347 #, c-format msgid "no editor found (editor path = %s)" msgstr "editoria ei löytynyt (editoripolku = %s)" -#: plugins/sudoers/visudo.c:459 plugins/sudoers/visudo.c:467 +#: plugins/sudoers/visudo.c:457 plugins/sudoers/visudo.c:465 msgid "write error" msgstr "kirjoitusvirhe" -#: plugins/sudoers/visudo.c:513 +#: plugins/sudoers/visudo.c:511 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "funktion stat kutsuminen tilapäiselle tiedostolle (%s) epäonnistui, %s ennallaan" -#: plugins/sudoers/visudo.c:520 +#: plugins/sudoers/visudo.c:518 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "nollapituinen tilapäinen tiedosto (%s), %s ennallaan" -#: plugins/sudoers/visudo.c:526 +#: plugins/sudoers/visudo.c:524 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "editori (%s) epäonnistui, %s ennallaan" -#: plugins/sudoers/visudo.c:548 +#: plugins/sudoers/visudo.c:546 #, c-format msgid "%s unchanged" msgstr "%s ennallaan" -#: plugins/sudoers/visudo.c:607 +#: plugins/sudoers/visudo.c:605 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "tilapäisen tiedoston (%s) avaaminen uudelleen epäonnistui, %s ennallaan." -#: plugins/sudoers/visudo.c:619 +#: plugins/sudoers/visudo.c:617 #, c-format msgid "unabled to parse temporary file (%s), unknown error" msgstr "tilapäisen tiedoston (%s) jäsentäminen epäonnistui, tuntematon virhe" -#: plugins/sudoers/visudo.c:656 +#: plugins/sudoers/visudo.c:655 #, c-format msgid "internal error, unable to find %s in list!" msgstr "sisäinen virhe, kohteen %s löytäminen luettelosta epäonnistui!" -#: plugins/sudoers/visudo.c:736 plugins/sudoers/visudo.c:745 +#: plugins/sudoers/visudo.c:735 plugins/sudoers/visudo.c:744 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "kohteen %s (uid, gid) asettaminen arvoihin (%u, %u) epäonnistui" @@ -2033,11 +2299,11 @@ msgid "error renaming %s, %s unchanged" msgstr "virhe nimettäessä %s uudelleen, %s ennallaan" -#: plugins/sudoers/visudo.c:855 +#: plugins/sudoers/visudo.c:812 msgid "What now? " -msgstr "Mitä nyt?" +msgstr "Mitä nyt? " -#: plugins/sudoers/visudo.c:869 +#: plugins/sudoers/visudo.c:826 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -2050,72 +2316,68 @@ " (Q) poistu ja tallenna muutokset sudoers-tiedostoon (VAARA!)\n" # Parametri on path, mutta saattaa sisältää suoritettavan ohjelman -#: plugins/sudoers/visudo.c:915 +#: plugins/sudoers/visudo.c:872 #, c-format msgid "unable to run %s" msgstr "kohteen %s suorittaminen epäonnistui" -#: plugins/sudoers/visudo.c:945 +#: plugins/sudoers/visudo.c:902 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s: väärä omistaja (uid, gid), pitäisi olla (%u, %u)\n" -#: plugins/sudoers/visudo.c:952 +#: plugins/sudoers/visudo.c:909 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s: väärät käyttöoikeudet, pitäisi olla tila 0%o\n" -#: plugins/sudoers/visudo.c:981 plugins/sudoers/visudo_json.c:1021 -#, c-format -msgid "failed to parse %s file, unknown error" -msgstr "tiedoston %s jäsentäminen epäonnistui, tuntematon virhe" - -#: plugins/sudoers/visudo.c:997 plugins/sudoers/visudo_json.c:1032 -#, c-format -msgid "parse error in %s near line %d\n" -msgstr "jäsentämisvirhe tiedostossa %s lähellä riviä %d\n" - -#: plugins/sudoers/visudo.c:1000 plugins/sudoers/visudo_json.c:1035 -#, c-format -msgid "parse error in %s\n" -msgstr "jäsentämisvirhe tiedostossa %s\n" - -#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1015 +#: plugins/sudoers/visudo.c:966 plugins/sudoers/visudo.c:973 #, c-format msgid "%s: parsed OK\n" msgstr "%s: jäsentäminen valmis\n" -#: plugins/sudoers/visudo.c:1062 +#: plugins/sudoers/visudo.c:992 #, c-format msgid "%s busy, try again later" msgstr "%s varattu, yritä myöhemmin uudelleen" -#: plugins/sudoers/visudo.c:1159 +# Avaamisen kohde voi olla timestamp file, sudoers file tai pathbuf +#: plugins/sudoers/visudo.c:995 +#, fuzzy, c-format +#| msgid "unable to open %s" +msgid "unable to lock %s" +msgstr "kohteen %s avaaminen epäonnistui" + +#: plugins/sudoers/visudo.c:996 +msgid "Edit anyway? [y/N]" +msgstr "Muokataanko silti? [y/N]" + +#: plugins/sudoers/visudo.c:1080 #, c-format msgid "Error: %s:%d cycle in %s \"%s\"" msgstr "Virhe: %s:%d jakso kohteessa %s \"%s\"" -#: plugins/sudoers/visudo.c:1160 +#: plugins/sudoers/visudo.c:1081 #, c-format msgid "Warning: %s:%d cycle in %s \"%s\"" msgstr "Varoitus: %s:%d jakso kohteessa %s \"%s\"" -#: plugins/sudoers/visudo.c:1164 +#: plugins/sudoers/visudo.c:1085 #, c-format msgid "Error: %s:%d %s \"%s\" referenced but not defined" msgstr "Virhe: %s:%d %s \"%s\" uudelleenviitattu, mutta ei määritelty" -#: plugins/sudoers/visudo.c:1165 +#: plugins/sudoers/visudo.c:1086 #, c-format msgid "Warning: %s:%d %s \"%s\" referenced but not defined" msgstr "Varoitus: %s:%d %s \"%s\" uudelleenviitattu, mutta ei määritelty" -#: plugins/sudoers/visudo.c:1318 +#: plugins/sudoers/visudo.c:1177 #, c-format msgid "Warning: %s:%d unused %s \"%s\"" msgstr "Varoitus: %s:%d käyttämätön %s \"%s\"" -#: plugins/sudoers/visudo.c:1433 +#: plugins/sudoers/visudo.c:1292 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -2124,7 +2386,7 @@ "%s - muokkaa sudoers-tiedostoa turvallisesti\n" "\n" -#: plugins/sudoers/visudo.c:1435 +#: plugins/sudoers/visudo.c:1294 msgid "" "\n" "Options:\n" @@ -2134,7 +2396,6 @@ " -q, --quiet less verbose (quiet) syntax error messages\n" " -s, --strict strict syntax checking\n" " -V, --version display version information and exit\n" -" -x, --export=output_file write sudoers in JSON format to output_file" msgstr "" "\n" "Valitsimet:\n" @@ -2144,22 +2405,44 @@ " -q, --quiet vähemmän laveat (hiljaiset) syntaksivirheviestit\n" " -s, --strict tiukka syntaksitarkistus\n" " -V, --version näytä versiotiedot ja poistu\n" -" -x, --export=output_file kirjoita sudoers-tiedosto JSON-muodossa tiedostoon output_file" - -#: plugins/sudoers/visudo_json.c:616 plugins/sudoers/visudo_json.c:651 -#, c-format -msgid "unknown defaults entry \"%s\"" -msgstr "tuntematon oletusrivi \"%s\"" -#: plugins/sudoers/visudo_json.c:1007 -#, c-format -msgid "%s: input and output files must be different" -msgstr "%s: syöte- ja tulostetiedostojen on oltava erilaiset" - -#: toke.l:943 +#: toke.l:941 msgid "too many levels of includes" msgstr "liian monta include-tasoa" +#~ msgid "" +#~ "\n" +#~ "LDAP Role: UNKNOWN\n" +#~ msgstr "" +#~ "\n" +#~ "LDAP-rooli: TUNTEMATON\n" + +#~ msgid " Order: %s\n" +#~ msgstr " Järjestys: %s\n" + +#~ msgid "unable to cache user %s, out of memory" +#~ msgstr "käyttäjän %s laittaminen välimuistiin epäonnistui, muistia ei riittävästi" + +#~ msgid "unable to cache group %s, out of memory" +#~ msgstr "ryhmän %s laittaminen välimuistiin epäonnistui, muistia ei riittävästi" + +#~ msgid "unable to cache group list for %s, out of memory" +#~ msgstr "ryhmäluettelon laittaminen välimuistiin tiedostossa %s epäonnistui, muistia ei riittävästi" + +#~ msgid "" +#~ "\n" +#~ "SSSD Role: %s\n" +#~ msgstr "" +#~ "\n" +#~ "SSSD-rooli: %s\n" + +#~ msgid "" +#~ "\n" +#~ "SSSD Role: UNKNOWN\n" +#~ msgstr "" +#~ "\n" +#~ "SSSD-rooli: TUNTEMATON\n" + #~ msgid "timestamp path too long: %s/%s" #~ msgstr "aikaleimapolku on liian pitkä: %s/%s" @@ -2248,9 +2531,6 @@ #~ msgid "getauid: failed" #~ msgstr "getauid: epäonnistui" -#~ msgid "au_open: failed" -#~ msgstr "au_open: epäonnistui" - #~ msgid "au_to_subject: failed" #~ msgstr "au_to_subject: epäonnistui" Binary files /tmp/tmpxQuIu2/iFUK1R4uMA/sudo-1.8.29/plugins/sudoers/po/nb.mo and /tmp/tmpxQuIu2/W5KRB4HzHp/sudo-1.8.31/plugins/sudoers/po/nb.mo differ diff -Nru sudo-1.8.29/plugins/sudoers/po/nb.po sudo-1.8.31/plugins/sudoers/po/nb.po --- sudo-1.8.29/plugins/sudoers/po/nb.po 2019-10-28 12:31:06.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/po/nb.po 2019-12-31 12:58:36.000000000 +0000 @@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers-1.8.28b1\n" +"Project-Id-Version: sudoers-1.8.29rc1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2019-07-19 10:39-0600\n" -"PO-Revision-Date: 2019-07-21 11:18+0200\n" +"POT-Creation-Date: 2019-10-21 19:55-0600\n" +"PO-Revision-Date: 2019-10-29 09:15+0100\n" "Last-Translator: Åka Sikrom \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb\n" @@ -44,16 +44,16 @@ msgid "Sorry, try again." msgstr "Feil. Prøv igjen." -#: gram.y:194 gram.y:242 gram.y:249 gram.y:256 gram.y:263 gram.y:270 -#: gram.y:286 gram.y:310 gram.y:317 gram.y:324 gram.y:331 gram.y:338 -#: gram.y:401 gram.y:409 gram.y:419 gram.y:452 gram.y:459 gram.y:466 -#: gram.y:473 gram.y:555 gram.y:562 gram.y:571 gram.y:580 gram.y:597 -#: gram.y:709 gram.y:716 gram.y:723 gram.y:731 gram.y:831 gram.y:838 -#: gram.y:845 gram.y:852 gram.y:859 gram.y:885 gram.y:892 gram.y:899 -#: gram.y:1022 gram.y:1296 plugins/sudoers/alias.c:132 +#: gram.y:196 gram.y:244 gram.y:251 gram.y:258 gram.y:265 gram.y:272 +#: gram.y:288 gram.y:312 gram.y:319 gram.y:326 gram.y:333 gram.y:340 +#: gram.y:403 gram.y:412 gram.y:423 gram.y:456 gram.y:463 gram.y:470 +#: gram.y:477 gram.y:559 gram.y:566 gram.y:575 gram.y:584 gram.y:601 +#: gram.y:713 gram.y:720 gram.y:727 gram.y:735 gram.y:835 gram.y:842 +#: gram.y:849 gram.y:856 gram.y:863 gram.y:889 gram.y:896 gram.y:903 +#: gram.y:1026 gram.y:1303 plugins/sudoers/alias.c:132 #: plugins/sudoers/alias.c:139 plugins/sudoers/alias.c:155 #: plugins/sudoers/auth/bsdauth.c:148 plugins/sudoers/auth/kerb5.c:123 -#: plugins/sudoers/auth/kerb5.c:149 plugins/sudoers/auth/pam.c:656 +#: plugins/sudoers/auth/kerb5.c:149 plugins/sudoers/auth/pam.c:670 #: plugins/sudoers/auth/rfc1938.c:116 plugins/sudoers/auth/sia.c:64 #: plugins/sudoers/cvtsudoers.c:124 plugins/sudoers/cvtsudoers.c:165 #: plugins/sudoers/cvtsudoers.c:182 plugins/sudoers/cvtsudoers.c:193 @@ -67,64 +67,64 @@ #: plugins/sudoers/cvtsudoers_ldif.c:334 plugins/sudoers/cvtsudoers_ldif.c:389 #: plugins/sudoers/cvtsudoers_ldif.c:397 plugins/sudoers/cvtsudoers_ldif.c:414 #: plugins/sudoers/cvtsudoers_ldif.c:423 plugins/sudoers/cvtsudoers_ldif.c:570 -#: plugins/sudoers/defaults.c:664 plugins/sudoers/defaults.c:957 -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/editor.c:72 +#: plugins/sudoers/defaults.c:666 plugins/sudoers/defaults.c:959 +#: plugins/sudoers/defaults.c:1130 plugins/sudoers/editor.c:72 #: plugins/sudoers/editor.c:90 plugins/sudoers/editor.c:101 #: plugins/sudoers/env.c:268 plugins/sudoers/filedigest.c:66 #: plugins/sudoers/filedigest.c:82 plugins/sudoers/gc.c:59 #: plugins/sudoers/group_plugin.c:138 plugins/sudoers/interfaces.c:78 -#: plugins/sudoers/iolog.c:941 plugins/sudoers/iolog_path.c:174 -#: plugins/sudoers/iolog_util.c:85 plugins/sudoers/iolog_util.c:124 -#: plugins/sudoers/iolog_util.c:133 plugins/sudoers/iolog_util.c:143 -#: plugins/sudoers/iolog_util.c:151 plugins/sudoers/iolog_util.c:155 +#: plugins/sudoers/iolog.c:943 plugins/sudoers/iolog_path.c:174 +#: plugins/sudoers/iolog_util.c:86 plugins/sudoers/iolog_util.c:125 +#: plugins/sudoers/iolog_util.c:134 plugins/sudoers/iolog_util.c:144 +#: plugins/sudoers/iolog_util.c:152 plugins/sudoers/iolog_util.c:156 #: plugins/sudoers/ldap.c:185 plugins/sudoers/ldap.c:416 #: plugins/sudoers/ldap.c:420 plugins/sudoers/ldap.c:432 #: plugins/sudoers/ldap.c:723 plugins/sudoers/ldap.c:887 -#: plugins/sudoers/ldap.c:1235 plugins/sudoers/ldap.c:1662 -#: plugins/sudoers/ldap.c:1699 plugins/sudoers/ldap.c:1780 -#: plugins/sudoers/ldap.c:1915 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2032 plugins/sudoers/ldap_conf.c:223 +#: plugins/sudoers/ldap.c:1241 plugins/sudoers/ldap.c:1668 +#: plugins/sudoers/ldap.c:1705 plugins/sudoers/ldap.c:1786 +#: plugins/sudoers/ldap.c:1921 plugins/sudoers/ldap.c:2022 +#: plugins/sudoers/ldap.c:2038 plugins/sudoers/ldap_conf.c:223 #: plugins/sudoers/ldap_conf.c:254 plugins/sudoers/ldap_conf.c:306 -#: plugins/sudoers/ldap_conf.c:342 plugins/sudoers/ldap_conf.c:445 -#: plugins/sudoers/ldap_conf.c:460 plugins/sudoers/ldap_conf.c:557 -#: plugins/sudoers/ldap_conf.c:590 plugins/sudoers/ldap_conf.c:682 -#: plugins/sudoers/ldap_conf.c:764 plugins/sudoers/ldap_util.c:510 -#: plugins/sudoers/ldap_util.c:566 plugins/sudoers/linux_audit.c:83 -#: plugins/sudoers/logging.c:202 plugins/sudoers/logging.c:519 -#: plugins/sudoers/logging.c:545 plugins/sudoers/logging.c:586 -#: plugins/sudoers/logging.c:727 plugins/sudoers/logging.c:1087 +#: plugins/sudoers/ldap_conf.c:342 plugins/sudoers/ldap_conf.c:446 +#: plugins/sudoers/ldap_conf.c:461 plugins/sudoers/ldap_conf.c:558 +#: plugins/sudoers/ldap_conf.c:591 plugins/sudoers/ldap_conf.c:683 +#: plugins/sudoers/ldap_conf.c:765 plugins/sudoers/ldap_util.c:510 +#: plugins/sudoers/ldap_util.c:567 plugins/sudoers/linux_audit.c:83 +#: plugins/sudoers/logging.c:202 plugins/sudoers/logging.c:532 +#: plugins/sudoers/logging.c:558 plugins/sudoers/logging.c:599 +#: plugins/sudoers/logging.c:740 plugins/sudoers/logging.c:1100 #: plugins/sudoers/match_command.c:249 plugins/sudoers/match_command.c:367 -#: plugins/sudoers/match_command.c:414 plugins/sudoers/match_command.c:482 -#: plugins/sudoers/match_digest.c:67 plugins/sudoers/parse.c:200 +#: plugins/sudoers/match_command.c:414 plugins/sudoers/match_command.c:485 +#: plugins/sudoers/match_digest.c:70 plugins/sudoers/parse.c:200 #: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:227 -#: plugins/sudoers/parse.c:239 plugins/sudoers/parse_ldif.c:143 -#: plugins/sudoers/parse_ldif.c:170 plugins/sudoers/parse_ldif.c:239 -#: plugins/sudoers/parse_ldif.c:246 plugins/sudoers/parse_ldif.c:251 -#: plugins/sudoers/parse_ldif.c:327 plugins/sudoers/parse_ldif.c:338 -#: plugins/sudoers/parse_ldif.c:344 plugins/sudoers/parse_ldif.c:369 -#: plugins/sudoers/parse_ldif.c:381 plugins/sudoers/parse_ldif.c:385 -#: plugins/sudoers/parse_ldif.c:399 plugins/sudoers/parse_ldif.c:566 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:621 -#: plugins/sudoers/parse_ldif.c:681 plugins/sudoers/parse_ldif.c:700 -#: plugins/sudoers/parse_ldif.c:746 plugins/sudoers/parse_ldif.c:756 -#: plugins/sudoers/policy.c:504 plugins/sudoers/policy.c:746 +#: plugins/sudoers/parse.c:239 plugins/sudoers/parse_ldif.c:156 +#: plugins/sudoers/parse_ldif.c:187 plugins/sudoers/parse_ldif.c:256 +#: plugins/sudoers/parse_ldif.c:263 plugins/sudoers/parse_ldif.c:268 +#: plugins/sudoers/parse_ldif.c:344 plugins/sudoers/parse_ldif.c:355 +#: plugins/sudoers/parse_ldif.c:361 plugins/sudoers/parse_ldif.c:386 +#: plugins/sudoers/parse_ldif.c:398 plugins/sudoers/parse_ldif.c:402 +#: plugins/sudoers/parse_ldif.c:416 plugins/sudoers/parse_ldif.c:584 +#: plugins/sudoers/parse_ldif.c:614 plugins/sudoers/parse_ldif.c:639 +#: plugins/sudoers/parse_ldif.c:697 plugins/sudoers/parse_ldif.c:714 +#: plugins/sudoers/parse_ldif.c:742 plugins/sudoers/parse_ldif.c:749 +#: plugins/sudoers/policy.c:504 plugins/sudoers/policy.c:750 #: plugins/sudoers/prompt.c:100 plugins/sudoers/pwutil.c:199 -#: plugins/sudoers/pwutil.c:272 plugins/sudoers/pwutil.c:350 -#: plugins/sudoers/pwutil.c:524 plugins/sudoers/pwutil.c:590 -#: plugins/sudoers/pwutil.c:661 plugins/sudoers/pwutil.c:820 -#: plugins/sudoers/pwutil.c:878 plugins/sudoers/pwutil.c:923 -#: plugins/sudoers/pwutil.c:982 plugins/sudoers/sssd.c:154 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:586 +#: plugins/sudoers/pwutil.c:657 plugins/sudoers/pwutil.c:816 +#: plugins/sudoers/pwutil.c:873 plugins/sudoers/pwutil.c:917 +#: plugins/sudoers/pwutil.c:975 plugins/sudoers/sssd.c:154 #: plugins/sudoers/sssd.c:400 plugins/sudoers/sssd.c:463 #: plugins/sudoers/sssd.c:507 plugins/sudoers/sssd.c:554 -#: plugins/sudoers/sssd.c:745 plugins/sudoers/stubs.c:103 -#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:271 -#: plugins/sudoers/sudoers.c:281 plugins/sudoers/sudoers.c:290 -#: plugins/sudoers/sudoers.c:332 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:781 plugins/sudoers/sudoers.c:825 -#: plugins/sudoers/sudoers.c:1119 plugins/sudoers/sudoers_debug.c:114 -#: plugins/sudoers/sudoreplay.c:581 plugins/sudoers/sudoreplay.c:584 -#: plugins/sudoers/sudoreplay.c:1261 plugins/sudoers/sudoreplay.c:1461 -#: plugins/sudoers/sudoreplay.c:1465 plugins/sudoers/testsudoers.c:136 +#: plugins/sudoers/sssd.c:746 plugins/sudoers/stubs.c:103 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:273 +#: plugins/sudoers/sudoers.c:283 plugins/sudoers/sudoers.c:292 +#: plugins/sudoers/sudoers.c:334 plugins/sudoers/sudoers.c:657 +#: plugins/sudoers/sudoers.c:786 plugins/sudoers/sudoers.c:830 +#: plugins/sudoers/sudoers.c:1124 plugins/sudoers/sudoers_debug.c:114 +#: plugins/sudoers/sudoreplay.c:584 plugins/sudoers/sudoreplay.c:587 +#: plugins/sudoers/sudoreplay.c:1265 plugins/sudoers/sudoreplay.c:1465 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/testsudoers.c:136 #: plugins/sudoers/testsudoers.c:236 plugins/sudoers/testsudoers.c:253 #: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:439 #: plugins/sudoers/timestamp.c:483 plugins/sudoers/timestamp.c:960 @@ -138,27 +138,27 @@ msgid "unable to allocate memory" msgstr "klarte ikke å tildele minne" -#: gram.y:484 +#: gram.y:488 msgid "a digest requires a path name" msgstr "kontrollsummering krever at du velger et stinavn" -#: gram.y:610 +#: gram.y:614 msgid "invalid notbefore value" msgstr "ugyldig «notbefore»-verdi" -#: gram.y:618 +#: gram.y:622 msgid "invalid notafter value" msgstr "ugyldig «notafter»-verdi" -#: gram.y:627 plugins/sudoers/policy.c:320 +#: gram.y:631 plugins/sudoers/policy.c:320 msgid "timeout value too large" msgstr "for langt tidsavbrudd" -#: gram.y:629 plugins/sudoers/policy.c:322 +#: gram.y:633 plugins/sudoers/policy.c:322 msgid "invalid timeout value" msgstr "ugyldig tidsavbrudd" -#: gram.y:1296 plugins/sudoers/auth/pam.c:468 plugins/sudoers/auth/pam.c:656 +#: gram.y:1303 plugins/sudoers/auth/pam.c:483 plugins/sudoers/auth/pam.c:670 #: plugins/sudoers/auth/rfc1938.c:116 plugins/sudoers/cvtsudoers.c:124 #: plugins/sudoers/cvtsudoers.c:164 plugins/sudoers/cvtsudoers.c:181 #: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:304 @@ -171,46 +171,46 @@ #: plugins/sudoers/cvtsudoers_ldif.c:262 plugins/sudoers/cvtsudoers_ldif.c:333 #: plugins/sudoers/cvtsudoers_ldif.c:388 plugins/sudoers/cvtsudoers_ldif.c:396 #: plugins/sudoers/cvtsudoers_ldif.c:413 plugins/sudoers/cvtsudoers_ldif.c:422 -#: plugins/sudoers/cvtsudoers_ldif.c:569 plugins/sudoers/defaults.c:664 -#: plugins/sudoers/defaults.c:957 plugins/sudoers/defaults.c:1128 +#: plugins/sudoers/cvtsudoers_ldif.c:569 plugins/sudoers/defaults.c:666 +#: plugins/sudoers/defaults.c:959 plugins/sudoers/defaults.c:1130 #: plugins/sudoers/editor.c:72 plugins/sudoers/editor.c:90 #: plugins/sudoers/editor.c:101 plugins/sudoers/env.c:268 #: plugins/sudoers/filedigest.c:66 plugins/sudoers/filedigest.c:82 #: plugins/sudoers/gc.c:59 plugins/sudoers/group_plugin.c:138 -#: plugins/sudoers/interfaces.c:78 plugins/sudoers/iolog.c:941 -#: plugins/sudoers/iolog_path.c:174 plugins/sudoers/iolog_util.c:85 -#: plugins/sudoers/iolog_util.c:124 plugins/sudoers/iolog_util.c:133 -#: plugins/sudoers/iolog_util.c:143 plugins/sudoers/iolog_util.c:151 -#: plugins/sudoers/iolog_util.c:155 plugins/sudoers/ldap.c:185 +#: plugins/sudoers/interfaces.c:78 plugins/sudoers/iolog.c:943 +#: plugins/sudoers/iolog_path.c:174 plugins/sudoers/iolog_util.c:86 +#: plugins/sudoers/iolog_util.c:125 plugins/sudoers/iolog_util.c:134 +#: plugins/sudoers/iolog_util.c:144 plugins/sudoers/iolog_util.c:152 +#: plugins/sudoers/iolog_util.c:156 plugins/sudoers/ldap.c:185 #: plugins/sudoers/ldap.c:416 plugins/sudoers/ldap.c:420 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:723 -#: plugins/sudoers/ldap.c:887 plugins/sudoers/ldap.c:1235 -#: plugins/sudoers/ldap.c:1662 plugins/sudoers/ldap.c:1699 -#: plugins/sudoers/ldap.c:1780 plugins/sudoers/ldap.c:1915 -#: plugins/sudoers/ldap.c:2016 plugins/sudoers/ldap.c:2032 +#: plugins/sudoers/ldap.c:887 plugins/sudoers/ldap.c:1241 +#: plugins/sudoers/ldap.c:1668 plugins/sudoers/ldap.c:1705 +#: plugins/sudoers/ldap.c:1786 plugins/sudoers/ldap.c:1921 +#: plugins/sudoers/ldap.c:2022 plugins/sudoers/ldap.c:2038 #: plugins/sudoers/ldap_conf.c:223 plugins/sudoers/ldap_conf.c:254 #: plugins/sudoers/ldap_conf.c:306 plugins/sudoers/ldap_conf.c:342 -#: plugins/sudoers/ldap_conf.c:445 plugins/sudoers/ldap_conf.c:460 -#: plugins/sudoers/ldap_conf.c:557 plugins/sudoers/ldap_conf.c:590 -#: plugins/sudoers/ldap_conf.c:681 plugins/sudoers/ldap_conf.c:764 -#: plugins/sudoers/ldap_util.c:510 plugins/sudoers/ldap_util.c:566 +#: plugins/sudoers/ldap_conf.c:446 plugins/sudoers/ldap_conf.c:461 +#: plugins/sudoers/ldap_conf.c:558 plugins/sudoers/ldap_conf.c:591 +#: plugins/sudoers/ldap_conf.c:682 plugins/sudoers/ldap_conf.c:765 +#: plugins/sudoers/ldap_util.c:510 plugins/sudoers/ldap_util.c:567 #: plugins/sudoers/linux_audit.c:83 plugins/sudoers/logging.c:202 -#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545 -#: plugins/sudoers/logging.c:585 plugins/sudoers/logging.c:1087 +#: plugins/sudoers/logging.c:532 plugins/sudoers/logging.c:558 +#: plugins/sudoers/logging.c:598 plugins/sudoers/logging.c:1100 #: plugins/sudoers/match_command.c:248 plugins/sudoers/match_command.c:366 -#: plugins/sudoers/match_command.c:413 plugins/sudoers/match_command.c:482 -#: plugins/sudoers/match_digest.c:67 plugins/sudoers/parse.c:199 +#: plugins/sudoers/match_command.c:413 plugins/sudoers/match_command.c:485 +#: plugins/sudoers/match_digest.c:70 plugins/sudoers/parse.c:199 #: plugins/sudoers/parse.c:211 plugins/sudoers/parse.c:226 -#: plugins/sudoers/parse.c:238 plugins/sudoers/parse_ldif.c:142 -#: plugins/sudoers/parse_ldif.c:169 plugins/sudoers/parse_ldif.c:238 -#: plugins/sudoers/parse_ldif.c:245 plugins/sudoers/parse_ldif.c:250 -#: plugins/sudoers/parse_ldif.c:326 plugins/sudoers/parse_ldif.c:337 -#: plugins/sudoers/parse_ldif.c:343 plugins/sudoers/parse_ldif.c:368 -#: plugins/sudoers/parse_ldif.c:380 plugins/sudoers/parse_ldif.c:384 -#: plugins/sudoers/parse_ldif.c:398 plugins/sudoers/parse_ldif.c:566 -#: plugins/sudoers/parse_ldif.c:595 plugins/sudoers/parse_ldif.c:620 -#: plugins/sudoers/parse_ldif.c:680 plugins/sudoers/parse_ldif.c:699 -#: plugins/sudoers/parse_ldif.c:745 plugins/sudoers/parse_ldif.c:755 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse_ldif.c:155 +#: plugins/sudoers/parse_ldif.c:186 plugins/sudoers/parse_ldif.c:255 +#: plugins/sudoers/parse_ldif.c:262 plugins/sudoers/parse_ldif.c:267 +#: plugins/sudoers/parse_ldif.c:343 plugins/sudoers/parse_ldif.c:354 +#: plugins/sudoers/parse_ldif.c:360 plugins/sudoers/parse_ldif.c:385 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:401 +#: plugins/sudoers/parse_ldif.c:415 plugins/sudoers/parse_ldif.c:584 +#: plugins/sudoers/parse_ldif.c:613 plugins/sudoers/parse_ldif.c:638 +#: plugins/sudoers/parse_ldif.c:696 plugins/sudoers/parse_ldif.c:713 +#: plugins/sudoers/parse_ldif.c:741 plugins/sudoers/parse_ldif.c:748 #: plugins/sudoers/policy.c:134 plugins/sudoers/policy.c:143 #: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:178 #: plugins/sudoers/policy.c:305 plugins/sudoers/policy.c:320 @@ -218,26 +218,26 @@ #: plugins/sudoers/policy.c:358 plugins/sudoers/policy.c:402 #: plugins/sudoers/policy.c:412 plugins/sudoers/policy.c:421 #: plugins/sudoers/policy.c:430 plugins/sudoers/policy.c:504 -#: plugins/sudoers/policy.c:746 plugins/sudoers/prompt.c:100 -#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:272 -#: plugins/sudoers/pwutil.c:350 plugins/sudoers/pwutil.c:524 -#: plugins/sudoers/pwutil.c:590 plugins/sudoers/pwutil.c:661 -#: plugins/sudoers/pwutil.c:820 plugins/sudoers/pwutil.c:878 -#: plugins/sudoers/pwutil.c:923 plugins/sudoers/pwutil.c:982 +#: plugins/sudoers/policy.c:750 plugins/sudoers/prompt.c:100 +#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 +#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 +#: plugins/sudoers/pwutil.c:586 plugins/sudoers/pwutil.c:657 +#: plugins/sudoers/pwutil.c:816 plugins/sudoers/pwutil.c:873 +#: plugins/sudoers/pwutil.c:917 plugins/sudoers/pwutil.c:975 #: plugins/sudoers/set_perms.c:396 plugins/sudoers/set_perms.c:775 #: plugins/sudoers/set_perms.c:1165 plugins/sudoers/set_perms.c:1493 #: plugins/sudoers/set_perms.c:1659 plugins/sudoers/sssd.c:153 #: plugins/sudoers/sssd.c:400 plugins/sudoers/sssd.c:463 #: plugins/sudoers/sssd.c:507 plugins/sudoers/sssd.c:554 -#: plugins/sudoers/sssd.c:745 plugins/sudoers/stubs.c:103 -#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:271 -#: plugins/sudoers/sudoers.c:281 plugins/sudoers/sudoers.c:290 -#: plugins/sudoers/sudoers.c:332 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:781 plugins/sudoers/sudoers.c:825 -#: plugins/sudoers/sudoers.c:1119 plugins/sudoers/sudoers_debug.c:113 -#: plugins/sudoers/sudoreplay.c:581 plugins/sudoers/sudoreplay.c:584 -#: plugins/sudoers/sudoreplay.c:1261 plugins/sudoers/sudoreplay.c:1461 -#: plugins/sudoers/sudoreplay.c:1465 plugins/sudoers/testsudoers.c:136 +#: plugins/sudoers/sssd.c:746 plugins/sudoers/stubs.c:103 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:273 +#: plugins/sudoers/sudoers.c:283 plugins/sudoers/sudoers.c:292 +#: plugins/sudoers/sudoers.c:334 plugins/sudoers/sudoers.c:657 +#: plugins/sudoers/sudoers.c:786 plugins/sudoers/sudoers.c:830 +#: plugins/sudoers/sudoers.c:1124 plugins/sudoers/sudoers_debug.c:113 +#: plugins/sudoers/sudoreplay.c:584 plugins/sudoers/sudoreplay.c:587 +#: plugins/sudoers/sudoreplay.c:1265 plugins/sudoers/sudoreplay.c:1465 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/testsudoers.c:136 #: plugins/sudoers/testsudoers.c:236 plugins/sudoers/testsudoers.c:253 #: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:439 #: plugins/sudoers/timestamp.c:483 plugins/sudoers/timestamp.c:960 @@ -257,11 +257,11 @@ msgid "Alias \"%s\" already defined" msgstr "Alias «%s» er allerede definert" -#: plugins/sudoers/auth/aix_auth.c:203 plugins/sudoers/logging.c:788 +#: plugins/sudoers/auth/aix_auth.c:203 plugins/sudoers/logging.c:801 msgid "unable to fork" msgstr "klarte ikke å kopiere prosess" -#: plugins/sudoers/auth/aix_auth.c:281 +#: plugins/sudoers/auth/aix_auth.c:283 #, c-format msgid "unable to change password for %s" msgstr "klarte ikke å endre passord for %s" @@ -358,37 +358,38 @@ msgid "%s: Cannot verify TGT! Possible attack!: %s" msgstr "%s: Klarte ikke å bekrefte TGT! Dette kan være et tegn på at du er under angrep! %s" -#: plugins/sudoers/auth/pam.c:200 -msgid "unable to initialize PAM" -msgstr "klarte ikke å starte opp PAM" +#: plugins/sudoers/auth/pam.c:223 +#, c-format +msgid "unable to initialize PAM: %s" +msgstr "klarte ikke å starte opp PAM: %s" -#: plugins/sudoers/auth/pam.c:299 +#: plugins/sudoers/auth/pam.c:319 #, c-format msgid "PAM authentication error: %s" msgstr "Feil ved PAM-autentisering. %s" -#: plugins/sudoers/auth/pam.c:318 +#: plugins/sudoers/auth/pam.c:338 msgid "account validation failure, is your account locked?" msgstr "det oppstod en feil ved validering av brukerkonto. Er kontoen din sperret?" -#: plugins/sudoers/auth/pam.c:329 +#: plugins/sudoers/auth/pam.c:349 msgid "Account or password is expired, reset your password and try again" msgstr "Kontoen eller passordet er utgått. Tilbakestill passordet ditt og prøv igjen" -#: plugins/sudoers/auth/pam.c:337 +#: plugins/sudoers/auth/pam.c:355 #, c-format msgid "unable to change expired password: %s" msgstr "klarte ikke å endre et utgått passord. %s" -#: plugins/sudoers/auth/pam.c:348 +#: plugins/sudoers/auth/pam.c:366 msgid "Password expired, contact your system administrator" msgstr "Passordet er utgått. Kontakt systemadministratoren" -#: plugins/sudoers/auth/pam.c:353 +#: plugins/sudoers/auth/pam.c:371 msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator" msgstr "Kontoen er utgått, eller PAM-innstillingene mangler en «account»-del for sudo. Kontakt systemadministratoren" -#: plugins/sudoers/auth/pam.c:361 plugins/sudoers/auth/pam.c:367 +#: plugins/sudoers/auth/pam.c:379 plugins/sudoers/auth/pam.c:384 #, c-format msgid "PAM account management error: %s" msgstr "Feil med PAM-kontohåndtering: %s" @@ -487,14 +488,14 @@ "\n" #: plugins/sudoers/check.c:312 plugins/sudoers/check.c:322 -#: plugins/sudoers/sudoers.c:698 plugins/sudoers/sudoers.c:743 +#: plugins/sudoers/sudoers.c:700 plugins/sudoers/sudoers.c:748 #: plugins/sudoers/tsdump.c:126 #, c-format msgid "unknown uid: %u" msgstr "uid-en «%u» er ukjent" #: plugins/sudoers/check.c:317 plugins/sudoers/iolog.c:255 -#: plugins/sudoers/policy.c:917 plugins/sudoers/sudoers.c:1158 +#: plugins/sudoers/policy.c:921 plugins/sudoers/sudoers.c:1163 #: plugins/sudoers/testsudoers.c:227 plugins/sudoers/testsudoers.c:400 #, c-format msgid "unknown user: %s" @@ -541,13 +542,13 @@ msgid "%s: input and output files must be different" msgstr "%s: inndata- og utdatafiler må være ulike" -#: plugins/sudoers/cvtsudoers.c:335 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/cvtsudoers.c:335 plugins/sudoers/sudoers.c:176 #: plugins/sudoers/testsudoers.c:266 plugins/sudoers/visudo.c:254 #: plugins/sudoers/visudo.c:610 plugins/sudoers/visudo.c:933 msgid "unable to initialize sudoers default values" msgstr "klarte ikke å laste inn standardverdier for sudoers" -#: plugins/sudoers/cvtsudoers.c:421 plugins/sudoers/ldap_conf.c:435 +#: plugins/sudoers/cvtsudoers.c:421 plugins/sudoers/ldap_conf.c:436 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" @@ -575,8 +576,8 @@ #: plugins/sudoers/cvtsudoers.c:622 plugins/sudoers/cvtsudoers.c:639 #: plugins/sudoers/cvtsudoers.c:1245 plugins/sudoers/cvtsudoers_json.c:1130 #: plugins/sudoers/cvtsudoers_ldif.c:643 plugins/sudoers/iolog.c:413 -#: plugins/sudoers/iolog_util.c:74 plugins/sudoers/sudoers.c:909 -#: plugins/sudoers/sudoreplay.c:335 plugins/sudoers/sudoreplay.c:1427 +#: plugins/sudoers/iolog_util.c:75 plugins/sudoers/sudoers.c:914 +#: plugins/sudoers/sudoreplay.c:338 plugins/sudoers/sudoreplay.c:1431 #: plugins/sudoers/timestamp.c:448 plugins/sudoers/tsdump.c:135 #: plugins/sudoers/visudo.c:929 #, c-format @@ -599,7 +600,7 @@ msgstr "tolkefeil i %s\n" #: plugins/sudoers/cvtsudoers.c:1292 plugins/sudoers/iolog.c:500 -#: plugins/sudoers/sudoreplay.c:1131 plugins/sudoers/timestamp.c:332 +#: plugins/sudoers/sudoreplay.c:1135 plugins/sudoers/timestamp.c:332 #: plugins/sudoers/timestamp.c:335 #, c-format msgid "unable to write to %s" @@ -675,11 +676,11 @@ #: plugins/sudoers/cvtsudoers_ldif.c:526 plugins/sudoers/env.c:330 #: plugins/sudoers/env.c:337 plugins/sudoers/env.c:442 #: plugins/sudoers/ldap.c:496 plugins/sudoers/ldap.c:727 -#: plugins/sudoers/ldap.c:1054 plugins/sudoers/ldap_conf.c:227 +#: plugins/sudoers/ldap.c:1060 plugins/sudoers/ldap_conf.c:227 #: plugins/sudoers/ldap_conf.c:317 plugins/sudoers/linux_audit.c:89 -#: plugins/sudoers/logging.c:1092 plugins/sudoers/policy.c:625 +#: plugins/sudoers/logging.c:1105 plugins/sudoers/policy.c:625 #: plugins/sudoers/policy.c:635 plugins/sudoers/prompt.c:168 -#: plugins/sudoers/sudoers.c:847 plugins/sudoers/testsudoers.c:257 +#: plugins/sudoers/sudoers.c:852 plugins/sudoers/testsudoers.c:257 #: plugins/sudoers/toke_util.c:161 #, c-format msgid "internal error, %s overflow" @@ -1202,6 +1203,14 @@ msgid "Ignore case when matching group names" msgstr "Ignorer små/store bokstaver i gruppenavn" +#: plugins/sudoers/def_data.c:502 +msgid "Log when a command is allowed by sudoers" +msgstr "" + +#: plugins/sudoers/def_data.c:506 +msgid "Log when a command is denied by sudoers" +msgstr "" + #: plugins/sudoers/defaults.c:231 #, c-format msgid "%s:%d unknown defaults entry \"%s\"" @@ -1305,7 +1314,7 @@ msgid "%s must only be writable by owner" msgstr "%s kan ikke gi skrivetillatelse til andre enn eieren" -#: plugins/sudoers/group_plugin.c:102 plugins/sudoers/sssd.c:563 +#: plugins/sudoers/group_plugin.c:102 plugins/sudoers/sssd.c:562 #, c-format msgid "unable to load %s: %s" msgstr "klarte ikke å laste inn %s. %s" @@ -1351,67 +1360,67 @@ msgid "unable to change mode of %s to 0%o" msgstr "klarte ikke å endre %s modus til 0%o" -#: plugins/sudoers/iolog.c:294 plugins/sudoers/sudoers.c:1189 +#: plugins/sudoers/iolog.c:294 plugins/sudoers/sudoers.c:1194 #: plugins/sudoers/testsudoers.c:424 #, c-format msgid "unknown group: %s" msgstr "%s er en ukjent gruppe" -#: plugins/sudoers/iolog.c:464 plugins/sudoers/sudoers.c:913 -#: plugins/sudoers/sudoreplay.c:842 plugins/sudoers/sudoreplay.c:1538 +#: plugins/sudoers/iolog.c:464 plugins/sudoers/sudoers.c:918 +#: plugins/sudoers/sudoreplay.c:846 plugins/sudoers/sudoreplay.c:1542 #: plugins/sudoers/tsdump.c:145 #, c-format msgid "unable to read %s" msgstr "klarte ikke å lese %s" -#: plugins/sudoers/iolog.c:579 plugins/sudoers/iolog.c:799 +#: plugins/sudoers/iolog.c:579 plugins/sudoers/iolog.c:801 #, c-format msgid "unable to create %s" msgstr "klarte ikke å opprette %s" -#: plugins/sudoers/iolog.c:822 plugins/sudoers/iolog.c:1037 -#: plugins/sudoers/iolog.c:1113 plugins/sudoers/iolog.c:1207 -#: plugins/sudoers/iolog.c:1267 +#: plugins/sudoers/iolog.c:824 plugins/sudoers/iolog.c:1039 +#: plugins/sudoers/iolog.c:1115 plugins/sudoers/iolog.c:1209 +#: plugins/sudoers/iolog.c:1270 #, c-format msgid "unable to write to I/O log file: %s" msgstr "klarte ikke å skrive til I/O-loggfil: %s" -#: plugins/sudoers/iolog.c:1071 +#: plugins/sudoers/iolog.c:1073 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: intern feil. Inn-/ut-loggfil for hendelse %d er ikke åpen" -#: plugins/sudoers/iolog.c:1230 +#: plugins/sudoers/iolog.c:1233 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: intern feil. Signal %d er ugyldig" -#: plugins/sudoers/iolog_util.c:89 +#: plugins/sudoers/iolog_util.c:90 #, c-format msgid "%s: invalid log file" msgstr "%s: ugyldig loggfil" -#: plugins/sudoers/iolog_util.c:107 +#: plugins/sudoers/iolog_util.c:108 #, c-format msgid "%s: time stamp field is missing" msgstr "%s: tidsstempel-felt mangler" -#: plugins/sudoers/iolog_util.c:113 +#: plugins/sudoers/iolog_util.c:114 #, c-format msgid "%s: time stamp %s: %s" msgstr "%s: tidsstempel %s: %s" -#: plugins/sudoers/iolog_util.c:120 +#: plugins/sudoers/iolog_util.c:121 #, c-format msgid "%s: user field is missing" msgstr "%s: brukerfelt mangler" -#: plugins/sudoers/iolog_util.c:129 +#: plugins/sudoers/iolog_util.c:130 #, c-format msgid "%s: runas user field is missing" msgstr "%s: «kjør som bruker»-felt mangler" -#: plugins/sudoers/iolog_util.c:138 +#: plugins/sudoers/iolog_util.c:139 #, c-format msgid "%s: runas group field is missing" msgstr "%s: «kjør som gruppe»-felt mangler" @@ -1430,16 +1439,16 @@ msgid "you must set TLS_CERT in %s to use SSL" msgstr "du må velge TLS_CERT i %s for å bruke SSL" -#: plugins/sudoers/ldap.c:1614 +#: plugins/sudoers/ldap.c:1620 #, c-format msgid "unable to initialize LDAP: %s" msgstr "klarte ikke å starte opp LDAP. %s" -#: plugins/sudoers/ldap.c:1650 +#: plugins/sudoers/ldap.c:1656 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "start_tls er valgt, men LDAP-bibliotekene støtter hverken «ldap_start_tls_s()» eller «ldap_start_tls_s_np()»" -#: plugins/sudoers/ldap.c:1787 plugins/sudoers/parse_ldif.c:737 +#: plugins/sudoers/ldap.c:1793 plugins/sudoers/parse_ldif.c:734 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "«%s» er en ugyldig sudoOrder-attributt" @@ -1495,55 +1504,55 @@ msgid "unable to write log file: %s" msgstr "klarte ikke å skrive loggfil: %s" -#: plugins/sudoers/logging.c:247 +#: plugins/sudoers/logging.c:248 msgid "No user or host" msgstr "Ingen bruker eller vert" -#: plugins/sudoers/logging.c:249 +#: plugins/sudoers/logging.c:250 msgid "validation failure" msgstr "feil ved gyldighetssjekk" -#: plugins/sudoers/logging.c:256 +#: plugins/sudoers/logging.c:261 msgid "user NOT in sudoers" msgstr "brukeren er IKKE i sudoers" -#: plugins/sudoers/logging.c:258 +#: plugins/sudoers/logging.c:263 msgid "user NOT authorized on host" msgstr "brukeren er IKKE autorisert på verten" -#: plugins/sudoers/logging.c:260 +#: plugins/sudoers/logging.c:265 msgid "command not allowed" msgstr "denne kommandoen tillates ikke" -#: plugins/sudoers/logging.c:295 +#: plugins/sudoers/logging.c:301 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s finnes ikke i sudoers-fil. Denne hendelsen blir rapportert.\n" -#: plugins/sudoers/logging.c:298 +#: plugins/sudoers/logging.c:304 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s has ikke tillatelse til å kjøre sudo på %s. Denne hendelsen blir rapportert.\n" -#: plugins/sudoers/logging.c:302 +#: plugins/sudoers/logging.c:308 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Brukeren %s kan ikke kjøre sudo på %s.\n" -#: plugins/sudoers/logging.c:305 +#: plugins/sudoers/logging.c:311 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "Brukeren %s har ikke tillatelse til å kjøre «%s%s%s» som %s%s%s på %s.\n" -#: plugins/sudoers/logging.c:342 plugins/sudoers/sudoers.c:440 -#: plugins/sudoers/sudoers.c:442 plugins/sudoers/sudoers.c:444 -#: plugins/sudoers/sudoers.c:446 plugins/sudoers/sudoers.c:601 -#: plugins/sudoers/sudoers.c:603 +#: plugins/sudoers/logging.c:348 plugins/sudoers/sudoers.c:442 +#: plugins/sudoers/sudoers.c:444 plugins/sudoers/sudoers.c:446 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:603 +#: plugins/sudoers/sudoers.c:605 #, c-format msgid "%s: command not found" msgstr "%s: fant ikke kommando" -#: plugins/sudoers/logging.c:344 plugins/sudoers/sudoers.c:436 +#: plugins/sudoers/logging.c:350 plugins/sudoers/sudoers.c:438 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -1552,47 +1561,47 @@ "ignorerer «%s» i «.».\n" "Bruk «sudo ./%s» hvis dette er «%s»-programmet du prøver å kjøre." -#: plugins/sudoers/logging.c:361 +#: plugins/sudoers/logging.c:367 msgid "authentication failure" msgstr "feil ved autentisering" -#: plugins/sudoers/logging.c:387 +#: plugins/sudoers/logging.c:393 msgid "a password is required" msgstr "du må oppgi et passord" -#: plugins/sudoers/logging.c:450 +#: plugins/sudoers/logging.c:463 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "%u mislykket passordforsøk" msgstr[1] "%u mislykkede passordforsøk" -#: plugins/sudoers/logging.c:715 +#: plugins/sudoers/logging.c:728 #, c-format msgid "unable to dup stdin: %m" msgstr "klarte ikke å duplisere standard innkanal. %m" -#: plugins/sudoers/logging.c:755 +#: plugins/sudoers/logging.c:768 #, c-format msgid "unable to execute %s: %m" msgstr "klarte ikke å kjøre %s. %m" -#: plugins/sudoers/logging.c:796 plugins/sudoers/logging.c:852 +#: plugins/sudoers/logging.c:809 plugins/sudoers/logging.c:865 #, c-format msgid "unable to fork: %m" msgstr "klarte ikke å kopiere prosess. %m" -#: plugins/sudoers/logging.c:842 +#: plugins/sudoers/logging.c:855 #, c-format msgid "unable to open pipe: %m" msgstr "klarte ikke å åpne datarør. %m" -#: plugins/sudoers/match_digest.c:100 +#: plugins/sudoers/match_digest.c:103 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "behandlingen for %s (%s) er ikke i %s-skjemaet" -#: plugins/sudoers/mkdir_parents.c:77 plugins/sudoers/sudoers.c:938 +#: plugins/sudoers/mkdir_parents.c:77 plugins/sudoers/sudoers.c:943 #: plugins/sudoers/visudo.c:437 plugins/sudoers/visudo.c:733 #, c-format msgid "unable to stat %s" @@ -1631,41 +1640,41 @@ msgid " Options: " msgstr " Valg: " -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:529 #, c-format msgid " Commands:\n" msgstr " Kommandoer:\n" -#: plugins/sudoers/parse.c:726 +#: plugins/sudoers/parse.c:720 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Standardoppføringer som gjelder for %s på %s:\n" -#: plugins/sudoers/parse.c:744 +#: plugins/sudoers/parse.c:738 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Kjør-som- og kommandospesifikke standardoppføringer for %s:\n" -#: plugins/sudoers/parse.c:762 +#: plugins/sudoers/parse.c:756 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Brukeren %s kan kjøre følgende kommandoer på %s:\n" -#: plugins/sudoers/parse.c:777 +#: plugins/sudoers/parse.c:771 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Brukeren %s har ikke tillatelse til å kjøre sudo på %s.\n" -#: plugins/sudoers/parse_ldif.c:147 -#, c-format -msgid "ignoring invalid attribute value: %s" -msgstr "ignorerer ugyldig attributtverdi: %s" - -#: plugins/sudoers/parse_ldif.c:586 +#: plugins/sudoers/parse_ldif.c:604 #, c-format msgid "ignoring incomplete sudoRole: cn: %s" msgstr "ignorerer ufullstendig sudoRole: cn: %s" +#: plugins/sudoers/parse_ldif.c:664 +#, c-format +msgid "invalid LDIF attribute: %s" +msgstr "«%s» er en ugyldig LDIF-attributt" + #: plugins/sudoers/policy.c:90 plugins/sudoers/policy.c:116 #, c-format msgid "invalid %.*s set by sudo front-end" @@ -1680,34 +1689,34 @@ msgstr "sudo-grenseflate har ikke angitt brukernavn" #: plugins/sudoers/policy.c:443 -msgid "user ID not set by sudo front-end" +msgid "user-ID not set by sudo front-end" msgstr "sudo-grenseflate har ikke angitt bruker-ID" #: plugins/sudoers/policy.c:447 -msgid "group ID not set by sudo front-end" -msgstr "sudo-grenseflate har ikke angitt gruppe-ID" +msgid "group-ID not set by sudo front-end" +msgstr "sudo-grenseflate har ikke valgt gruppe-ID" #: plugins/sudoers/policy.c:451 msgid "host name not set by sudo front-end" msgstr "sudo-grenseflate har ikke angitt vertsnavn" -#: plugins/sudoers/policy.c:804 plugins/sudoers/visudo.c:236 +#: plugins/sudoers/policy.c:808 plugins/sudoers/visudo.c:236 #: plugins/sudoers/visudo.c:867 #, c-format msgid "unable to execute %s" msgstr "klarte ikke å kjøre %s" -#: plugins/sudoers/policy.c:935 +#: plugins/sudoers/policy.c:939 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Sudoers regeltillegg versjon %s\n" -#: plugins/sudoers/policy.c:937 +#: plugins/sudoers/policy.c:941 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Sudoers-grammatikkversjon %d\n" -#: plugins/sudoers/policy.c:941 +#: plugins/sudoers/policy.c:945 #, c-format msgid "" "\n" @@ -1716,86 +1725,86 @@ "\n" "Sti til «sudoers»-fil: %s\n" -#: plugins/sudoers/policy.c:944 +#: plugins/sudoers/policy.c:948 #, c-format msgid "nsswitch path: %s\n" msgstr "Sti til «nsswitch»: %s\n" -#: plugins/sudoers/policy.c:946 +#: plugins/sudoers/policy.c:950 #, c-format msgid "ldap.conf path: %s\n" msgstr "Sti til «ldap.conf»: %s\n" -#: plugins/sudoers/policy.c:947 +#: plugins/sudoers/policy.c:951 #, c-format msgid "ldap.secret path: %s\n" msgstr "Stil til «ldap.secret»: %s\n" -#: plugins/sudoers/policy.c:980 +#: plugins/sudoers/policy.c:984 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "klarte ikke å tildele krok av typen %d (versjon %d.%d)" -#: plugins/sudoers/pwutil.c:222 plugins/sudoers/pwutil.c:241 +#: plugins/sudoers/pwutil.c:222 plugins/sudoers/pwutil.c:240 #, c-format -msgid "unable to cache uid %u, out of memory" -msgstr "klarte ikke å hurtiglagre uid %u. Minnet er fullt" +msgid "unable to cache uid %u" +msgstr "klarte ikke å hurtiglagre uid %u" -#: plugins/sudoers/pwutil.c:235 +#: plugins/sudoers/pwutil.c:234 #, c-format msgid "unable to cache uid %u, already exists" msgstr "klarte ikke å hurtiglagre uid %u. Uid-en eksisterer allerede" -#: plugins/sudoers/pwutil.c:296 plugins/sudoers/pwutil.c:314 -#: plugins/sudoers/pwutil.c:377 plugins/sudoers/pwutil.c:422 +#: plugins/sudoers/pwutil.c:294 plugins/sudoers/pwutil.c:312 +#: plugins/sudoers/pwutil.c:375 plugins/sudoers/pwutil.c:420 #, c-format -msgid "unable to cache user %s, out of memory" -msgstr "klarte ikke å hurtiglagre brukeren %s. Minnet er fullt" +msgid "unable to cache user %s" +msgstr "klarte ikke å hurtiglagre bruker %s" -#: plugins/sudoers/pwutil.c:309 +#: plugins/sudoers/pwutil.c:307 #, c-format msgid "unable to cache user %s, already exists" msgstr "klarte ikke å hurtiglagre brukeren %s. Brukeren eksisterer allerede" -#: plugins/sudoers/pwutil.c:541 plugins/sudoers/pwutil.c:560 +#: plugins/sudoers/pwutil.c:539 plugins/sudoers/pwutil.c:557 #, c-format -msgid "unable to cache gid %u, out of memory" -msgstr "klarte ikke å hurtiglagre gid %u. Minnet er fullt" +msgid "unable to cache gid %u" +msgstr "klarte ikke å hurtiglagre gid %u" -#: plugins/sudoers/pwutil.c:554 +#: plugins/sudoers/pwutil.c:551 #, c-format msgid "unable to cache gid %u, already exists" msgstr "klarte ikke å hurtiglagre gid %u. Gid-en eksisterer allerede" -#: plugins/sudoers/pwutil.c:608 plugins/sudoers/pwutil.c:626 -#: plugins/sudoers/pwutil.c:674 plugins/sudoers/pwutil.c:716 +#: plugins/sudoers/pwutil.c:604 plugins/sudoers/pwutil.c:622 +#: plugins/sudoers/pwutil.c:670 plugins/sudoers/pwutil.c:712 #, c-format -msgid "unable to cache group %s, out of memory" -msgstr "klarte ikke å hurtiglagre gruppa %s. Minnet er fullt" +msgid "unable to cache group %s" +msgstr "klarte ikke å hurtiglagre gruppe %s" -#: plugins/sudoers/pwutil.c:621 +#: plugins/sudoers/pwutil.c:617 #, c-format msgid "unable to cache group %s, already exists" msgstr "klarte ikke å hurtiglagre gruppa %s. Gruppa eksisterer allerede" -#: plugins/sudoers/pwutil.c:843 plugins/sudoers/pwutil.c:896 -#: plugins/sudoers/pwutil.c:947 plugins/sudoers/pwutil.c:1001 +#: plugins/sudoers/pwutil.c:839 plugins/sudoers/pwutil.c:891 +#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:994 #, c-format msgid "unable to cache group list for %s, already exists" msgstr "klarte ikke å hurtiglagre liste over %s. Lista eksisterer allerede" -#: plugins/sudoers/pwutil.c:849 plugins/sudoers/pwutil.c:901 -#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1006 +#: plugins/sudoers/pwutil.c:845 plugins/sudoers/pwutil.c:896 +#: plugins/sudoers/pwutil.c:947 plugins/sudoers/pwutil.c:999 #, c-format -msgid "unable to cache group list for %s, out of memory" -msgstr "klarte ikke å hurtiglagre liste over %s. Minnet er fullt" +msgid "unable to cache group list for %s" +msgstr "klarte ikke å hurtiglagre gruppeliste for %s" -#: plugins/sudoers/pwutil.c:890 +#: plugins/sudoers/pwutil.c:885 #, c-format msgid "unable to parse groups for %s" msgstr "klarte ikke å tolke grupper for %s" -#: plugins/sudoers/pwutil.c:995 +#: plugins/sudoers/pwutil.c:988 #, c-format msgid "unable to parse gids for %s" msgstr "klarte ikke å tolke gid-er for %s" @@ -1863,93 +1872,93 @@ msgid "audit_failure message too long" msgstr "audit_failure-meldinga er for lang" -#: plugins/sudoers/sssd.c:565 +#: plugins/sudoers/sssd.c:564 msgid "unable to initialize SSS source. Is SSSD installed on your machine?" msgstr "klarte ikke å starte opp SSS-kilde. Har du installert SSSD på maskinen?" -#: plugins/sudoers/sssd.c:573 plugins/sudoers/sssd.c:582 -#: plugins/sudoers/sssd.c:591 plugins/sudoers/sssd.c:600 -#: plugins/sudoers/sssd.c:609 +#: plugins/sudoers/sssd.c:572 plugins/sudoers/sssd.c:581 +#: plugins/sudoers/sssd.c:590 plugins/sudoers/sssd.c:599 +#: plugins/sudoers/sssd.c:608 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "fant ikke symbolet «%s» i %s" -#: plugins/sudoers/sudoers.c:210 plugins/sudoers/sudoers.c:866 +#: plugins/sudoers/sudoers.c:212 plugins/sudoers/sudoers.c:871 msgid "problem with defaults entries" msgstr "det har oppstått et problem med én eller flere standardoppføringer" -#: plugins/sudoers/sudoers.c:214 +#: plugins/sudoers/sudoers.c:216 msgid "no valid sudoers sources found, quitting" msgstr "fant ingen gyldig sudoers-kilde. Avslutter." -#: plugins/sudoers/sudoers.c:252 +#: plugins/sudoers/sudoers.c:254 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers-fil tillater ikke rotbruker å kjøre sudo" -#: plugins/sudoers/sudoers.c:310 +#: plugins/sudoers/sudoers.c:312 msgid "you are not permitted to use the -C option" msgstr "du har ikke tillatelse til å bruke valget «-C»" -#: plugins/sudoers/sudoers.c:357 +#: plugins/sudoers/sudoers.c:359 #, c-format msgid "timestamp owner (%s): No such user" msgstr "eier («%s») av tidsstempel finnes ikke" -#: plugins/sudoers/sudoers.c:372 +#: plugins/sudoers/sudoers.c:374 msgid "no tty" msgstr "ingen tty" -#: plugins/sudoers/sudoers.c:373 +#: plugins/sudoers/sudoers.c:375 msgid "sorry, you must have a tty to run sudo" msgstr "du må ha en tty for å kunne kjøre sudo" -#: plugins/sudoers/sudoers.c:435 +#: plugins/sudoers/sudoers.c:437 msgid "command in current directory" msgstr "kommando i gjeldende mappe" -#: plugins/sudoers/sudoers.c:454 +#: plugins/sudoers/sudoers.c:456 msgid "sorry, you are not allowed set a command timeout" msgstr "du har ikke tillatelse til å velge tidsavbrudd for kommandoer" -#: plugins/sudoers/sudoers.c:462 +#: plugins/sudoers/sudoers.c:464 msgid "sorry, you are not allowed to preserve the environment" msgstr "du har ikke tillatelse til å beholde brukermiljøet" -#: plugins/sudoers/sudoers.c:810 +#: plugins/sudoers/sudoers.c:815 msgid "command too long" msgstr "kommandoen er for lang" -#: plugins/sudoers/sudoers.c:942 +#: plugins/sudoers/sudoers.c:947 #, c-format msgid "%s is not a regular file" msgstr "%s er ikke en vanlig fil" -#: plugins/sudoers/sudoers.c:946 plugins/sudoers/timestamp.c:259 toke.l:967 +#: plugins/sudoers/sudoers.c:951 plugins/sudoers/timestamp.c:259 toke.l:967 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s eies av uid %u, som skulle vært %u" -#: plugins/sudoers/sudoers.c:950 toke.l:972 +#: plugins/sudoers/sudoers.c:955 toke.l:972 #, c-format msgid "%s is world writable" msgstr "%s kan overskrives av alle" -#: plugins/sudoers/sudoers.c:954 toke.l:975 +#: plugins/sudoers/sudoers.c:959 toke.l:975 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s eies av gid %u, som skulle vært %u" -#: plugins/sudoers/sudoers.c:987 +#: plugins/sudoers/sudoers.c:992 #, c-format msgid "only root can use \"-c %s\"" msgstr "du må være rotbruker for å velge «-c %s»" -#: plugins/sudoers/sudoers.c:1006 +#: plugins/sudoers/sudoers.c:1011 #, c-format msgid "unknown login class: %s" msgstr "innloggingsklasse %s er ukjent" -#: plugins/sudoers/sudoers.c:1091 plugins/sudoers/sudoers.c:1105 +#: plugins/sudoers/sudoers.c:1096 plugins/sudoers/sudoers.c:1110 #, c-format msgid "unable to resolve host %s" msgstr "klarte ikke å slå opp vertsnavn %s" @@ -1974,105 +1983,109 @@ msgid "%s/%.2s/%.2s/%.2s/timing: %s" msgstr "%s/%.2s/%.2s/%.2s/tidsberegning: %s" -#: plugins/sudoers/sudoreplay.c:327 +#: plugins/sudoers/sudoreplay.c:326 +#, c-format +msgid "%s/timing: %s" +msgstr "%s/tidsberegning: %s" + +#: plugins/sudoers/sudoreplay.c:330 #, c-format msgid "%s/%s/timing: %s" msgstr "%s/%s/tidsberegning: %s" -#: plugins/sudoers/sudoreplay.c:343 +#: plugins/sudoers/sudoreplay.c:346 #, c-format msgid "Replaying sudo session: %s" msgstr "Spiller av sudo-økt i reprise: %s" -#: plugins/sudoers/sudoreplay.c:541 plugins/sudoers/sudoreplay.c:588 -#: plugins/sudoers/sudoreplay.c:785 plugins/sudoers/sudoreplay.c:894 -#: plugins/sudoers/sudoreplay.c:979 plugins/sudoers/sudoreplay.c:994 -#: plugins/sudoers/sudoreplay.c:1001 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1170 +#: plugins/sudoers/sudoreplay.c:544 plugins/sudoers/sudoreplay.c:591 +#: plugins/sudoers/sudoreplay.c:789 plugins/sudoers/sudoreplay.c:898 +#: plugins/sudoers/sudoreplay.c:983 plugins/sudoers/sudoreplay.c:998 +#: plugins/sudoers/sudoreplay.c:1005 plugins/sudoers/sudoreplay.c:1012 +#: plugins/sudoers/sudoreplay.c:1019 plugins/sudoers/sudoreplay.c:1026 +#: plugins/sudoers/sudoreplay.c:1174 msgid "unable to add event to queue" msgstr "klarte ikke å legge hendelse i kø" -#: plugins/sudoers/sudoreplay.c:656 +#: plugins/sudoers/sudoreplay.c:659 msgid "unable to set tty to raw mode" msgstr "klarte ikke å velge råmodus for tty" -#: plugins/sudoers/sudoreplay.c:707 -#, c-format +#: plugins/sudoers/sudoreplay.c:710 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Advarsel: terminalen din er for liten for å spille av loggen skikkelig.\n" -#: plugins/sudoers/sudoreplay.c:708 +#: plugins/sudoers/sudoreplay.c:711 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "Loggens størrelse er %d x %d, mens terminalstørrelsen din er %d x %d." -#: plugins/sudoers/sudoreplay.c:736 +#: plugins/sudoers/sudoreplay.c:739 msgid "Replay finished, press any key to restore the terminal." msgstr "Sudo-reprise ferdig. Trykk på en knapp for å gå tilbake til terminal." -#: plugins/sudoers/sudoreplay.c:768 +#: plugins/sudoers/sudoreplay.c:772 #, c-format msgid "invalid timing file line: %s" msgstr "linja for tidsberegningsfil er ugyldig: %s" -#: plugins/sudoers/sudoreplay.c:1204 plugins/sudoers/sudoreplay.c:1229 +#: plugins/sudoers/sudoreplay.c:1208 plugins/sudoers/sudoreplay.c:1233 #, c-format msgid "ambiguous expression \"%s\"" msgstr "uttrykket «%s» er flertydig" -#: plugins/sudoers/sudoreplay.c:1251 +#: plugins/sudoers/sudoreplay.c:1255 msgid "unmatched ')' in expression" msgstr "fant ingenting som samsvarer med deluttrykket «)»" -#: plugins/sudoers/sudoreplay.c:1255 +#: plugins/sudoers/sudoreplay.c:1259 #, c-format msgid "unknown search term \"%s\"" msgstr "«%s» er et ukjent søkevalg" -#: plugins/sudoers/sudoreplay.c:1270 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "%s requires an argument" msgstr "%s krever at du bruker et argument" -#: plugins/sudoers/sudoreplay.c:1273 plugins/sudoers/sudoreplay.c:1514 +#: plugins/sudoers/sudoreplay.c:1277 plugins/sudoers/sudoreplay.c:1518 #, c-format msgid "invalid regular expression: %s" msgstr "%s er et ugyldig regulært uttrykk" -#: plugins/sudoers/sudoreplay.c:1277 +#: plugins/sudoers/sudoreplay.c:1281 #, c-format msgid "could not parse date \"%s\"" msgstr "klarte ikke å tolke datoen «%s»" -#: plugins/sudoers/sudoreplay.c:1286 +#: plugins/sudoers/sudoreplay.c:1290 msgid "unmatched '(' in expression" msgstr "uttrykkets «(» samsvarer ikke" -#: plugins/sudoers/sudoreplay.c:1288 +#: plugins/sudoers/sudoreplay.c:1292 msgid "illegal trailing \"or\"" msgstr "du kan ikke avslutte med «or»" -#: plugins/sudoers/sudoreplay.c:1290 +#: plugins/sudoers/sudoreplay.c:1294 msgid "illegal trailing \"!\"" msgstr "du kan ikke avslutte med «!»" -#: plugins/sudoers/sudoreplay.c:1340 +#: plugins/sudoers/sudoreplay.c:1344 #, c-format msgid "unknown search type %d" msgstr "«%d» er en ukjent søketype" -#: plugins/sudoers/sudoreplay.c:1607 +#: plugins/sudoers/sudoreplay.c:1611 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "bruk: %s [-hnRS] [-d mappe] [-m tall] [-s tall] ID\n" -#: plugins/sudoers/sudoreplay.c:1610 +#: plugins/sudoers/sudoreplay.c:1614 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "bruk: %s [-h] [-d dir] -l [søkeuttrykk]\n" -#: plugins/sudoers/sudoreplay.c:1619 +#: plugins/sudoers/sudoreplay.c:1623 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2081,7 +2094,7 @@ "%s - spill av sudo-øktlogg\n" "\n" -#: plugins/sudoers/sudoreplay.c:1621 +#: plugins/sudoers/sudoreplay.c:1625 msgid "" "\n" "Options:\n" @@ -2361,6 +2374,18 @@ msgid "too many levels of includes" msgstr "du har for mange nivåer av inkluderte filer" +#~ msgid "ignoring invalid attribute value: %s" +#~ msgstr "ignorerer ugyldig attributtverdi: %s" + +#~ msgid "unable to cache user %s, out of memory" +#~ msgstr "klarte ikke å hurtiglagre brukeren %s. Minnet er fullt" + +#~ msgid "unable to cache group %s, out of memory" +#~ msgstr "klarte ikke å hurtiglagre gruppa %s. Minnet er fullt" + +#~ msgid "unable to cache group list for %s, out of memory" +#~ msgstr "klarte ikke å hurtiglagre liste over %s. Minnet er fullt" + #~ msgid "" #~ "\n" #~ "LDAP Role: UNKNOWN\n" Binary files /tmp/tmpxQuIu2/iFUK1R4uMA/sudo-1.8.29/plugins/sudoers/po/zh_CN.mo and /tmp/tmpxQuIu2/W5KRB4HzHp/sudo-1.8.31/plugins/sudoers/po/zh_CN.mo differ diff -Nru sudo-1.8.29/plugins/sudoers/po/zh_CN.po sudo-1.8.31/plugins/sudoers/po/zh_CN.po --- sudo-1.8.29/plugins/sudoers/po/zh_CN.po 2019-10-28 12:31:06.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/po/zh_CN.po 2019-12-31 12:58:36.000000000 +0000 @@ -1,14 +1,15 @@ # Chinese simplified translation for sudoers. # This file is put in the public domain. # Wylmer Wang , 2011-2018 +# Boyuan Yang <073plan@gmail.com>, 2019 # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.8.26b1\n" +"Project-Id-Version: sudoers 1.8.29rc1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2018-10-29 08:31-0600\n" -"PO-Revision-Date: 2018-11-05 09:13+0800\n" -"Last-Translator: Wylmer Wang \n" +"POT-Creation-Date: 2019-10-21 19:55-0600\n" +"PO-Revision-Date: 2019-12-17 15:51-0500\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" @@ -16,6 +17,7 @@ "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.2.4\n" #: confstr.sh:1 msgid "syntax error" @@ -41,258 +43,267 @@ msgid "Sorry, try again." msgstr "对不起,请重试。" -#: gram.y:192 gram.y:240 gram.y:247 gram.y:254 gram.y:261 gram.y:268 -#: gram.y:284 gram.y:308 gram.y:315 gram.y:322 gram.y:329 gram.y:336 -#: gram.y:399 gram.y:407 gram.y:417 gram.y:450 gram.y:457 gram.y:464 -#: gram.y:471 gram.y:553 gram.y:560 gram.y:569 gram.y:578 gram.y:595 -#: gram.y:707 gram.y:714 gram.y:721 gram.y:729 gram.y:829 gram.y:836 -#: gram.y:843 gram.y:850 gram.y:857 gram.y:883 gram.y:890 gram.y:897 -#: gram.y:1020 gram.y:1294 plugins/sudoers/alias.c:130 -#: plugins/sudoers/alias.c:137 plugins/sudoers/alias.c:153 -#: plugins/sudoers/auth/bsdauth.c:146 plugins/sudoers/auth/kerb5.c:121 -#: plugins/sudoers/auth/kerb5.c:147 plugins/sudoers/auth/pam.c:524 -#: plugins/sudoers/auth/rfc1938.c:114 plugins/sudoers/auth/sia.c:62 -#: plugins/sudoers/cvtsudoers.c:123 plugins/sudoers/cvtsudoers.c:164 -#: plugins/sudoers/cvtsudoers.c:181 plugins/sudoers/cvtsudoers.c:192 -#: plugins/sudoers/cvtsudoers.c:304 plugins/sudoers/cvtsudoers.c:432 -#: plugins/sudoers/cvtsudoers.c:565 plugins/sudoers/cvtsudoers.c:582 -#: plugins/sudoers/cvtsudoers.c:645 plugins/sudoers/cvtsudoers.c:760 -#: plugins/sudoers/cvtsudoers.c:768 plugins/sudoers/cvtsudoers.c:1178 -#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284 -#: plugins/sudoers/cvtsudoers_ldif.c:152 plugins/sudoers/cvtsudoers_ldif.c:195 -#: plugins/sudoers/cvtsudoers_ldif.c:242 plugins/sudoers/cvtsudoers_ldif.c:261 -#: plugins/sudoers/cvtsudoers_ldif.c:332 plugins/sudoers/cvtsudoers_ldif.c:387 -#: plugins/sudoers/cvtsudoers_ldif.c:395 plugins/sudoers/cvtsudoers_ldif.c:412 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:568 -#: plugins/sudoers/defaults.c:661 plugins/sudoers/defaults.c:954 -#: plugins/sudoers/defaults.c:1125 plugins/sudoers/editor.c:70 -#: plugins/sudoers/editor.c:88 plugins/sudoers/editor.c:99 -#: plugins/sudoers/env.c:247 plugins/sudoers/filedigest.c:64 -#: plugins/sudoers/filedigest.c:80 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:136 plugins/sudoers/interfaces.c:76 -#: plugins/sudoers/iolog.c:939 plugins/sudoers/iolog_path.c:172 -#: plugins/sudoers/iolog_util.c:83 plugins/sudoers/iolog_util.c:122 -#: plugins/sudoers/iolog_util.c:131 plugins/sudoers/iolog_util.c:141 -#: plugins/sudoers/iolog_util.c:149 plugins/sudoers/iolog_util.c:153 -#: plugins/sudoers/ldap.c:183 plugins/sudoers/ldap.c:414 -#: plugins/sudoers/ldap.c:418 plugins/sudoers/ldap.c:430 -#: plugins/sudoers/ldap.c:721 plugins/sudoers/ldap.c:885 -#: plugins/sudoers/ldap.c:1233 plugins/sudoers/ldap.c:1660 -#: plugins/sudoers/ldap.c:1697 plugins/sudoers/ldap.c:1778 -#: plugins/sudoers/ldap.c:1913 plugins/sudoers/ldap.c:2014 -#: plugins/sudoers/ldap.c:2030 plugins/sudoers/ldap_conf.c:221 -#: plugins/sudoers/ldap_conf.c:252 plugins/sudoers/ldap_conf.c:304 -#: plugins/sudoers/ldap_conf.c:340 plugins/sudoers/ldap_conf.c:443 -#: plugins/sudoers/ldap_conf.c:458 plugins/sudoers/ldap_conf.c:555 -#: plugins/sudoers/ldap_conf.c:588 plugins/sudoers/ldap_conf.c:680 -#: plugins/sudoers/ldap_conf.c:762 plugins/sudoers/ldap_util.c:508 -#: plugins/sudoers/ldap_util.c:564 plugins/sudoers/linux_audit.c:81 -#: plugins/sudoers/logging.c:195 plugins/sudoers/logging.c:511 -#: plugins/sudoers/logging.c:532 plugins/sudoers/logging.c:573 -#: plugins/sudoers/logging.c:752 plugins/sudoers/logging.c:1010 -#: plugins/sudoers/match.c:725 plugins/sudoers/match.c:772 -#: plugins/sudoers/match.c:813 plugins/sudoers/match.c:841 -#: plugins/sudoers/match.c:929 plugins/sudoers/match.c:1009 -#: plugins/sudoers/parse.c:195 plugins/sudoers/parse.c:207 -#: plugins/sudoers/parse.c:222 plugins/sudoers/parse.c:234 -#: plugins/sudoers/parse_ldif.c:141 plugins/sudoers/parse_ldif.c:168 -#: plugins/sudoers/parse_ldif.c:237 plugins/sudoers/parse_ldif.c:244 -#: plugins/sudoers/parse_ldif.c:249 plugins/sudoers/parse_ldif.c:325 -#: plugins/sudoers/parse_ldif.c:336 plugins/sudoers/parse_ldif.c:342 -#: plugins/sudoers/parse_ldif.c:367 plugins/sudoers/parse_ldif.c:379 -#: plugins/sudoers/parse_ldif.c:383 plugins/sudoers/parse_ldif.c:397 -#: plugins/sudoers/parse_ldif.c:564 plugins/sudoers/parse_ldif.c:594 -#: plugins/sudoers/parse_ldif.c:619 plugins/sudoers/parse_ldif.c:679 -#: plugins/sudoers/parse_ldif.c:698 plugins/sudoers/parse_ldif.c:744 -#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/policy.c:502 -#: plugins/sudoers/policy.c:744 plugins/sudoers/prompt.c:98 -#: plugins/sudoers/pwutil.c:197 plugins/sudoers/pwutil.c:269 -#: plugins/sudoers/pwutil.c:346 plugins/sudoers/pwutil.c:520 -#: plugins/sudoers/pwutil.c:586 plugins/sudoers/pwutil.c:656 -#: plugins/sudoers/pwutil.c:814 plugins/sudoers/pwutil.c:871 -#: plugins/sudoers/pwutil.c:916 plugins/sudoers/pwutil.c:974 -#: plugins/sudoers/sssd.c:152 plugins/sudoers/sssd.c:398 -#: plugins/sudoers/sssd.c:461 plugins/sudoers/sssd.c:505 -#: plugins/sudoers/sssd.c:552 plugins/sudoers/sssd.c:743 -#: plugins/sudoers/stubs.c:101 plugins/sudoers/stubs.c:109 -#: plugins/sudoers/sudoers.c:269 plugins/sudoers/sudoers.c:279 -#: plugins/sudoers/sudoers.c:288 plugins/sudoers/sudoers.c:330 -#: plugins/sudoers/sudoers.c:653 plugins/sudoers/sudoers.c:779 -#: plugins/sudoers/sudoers.c:823 plugins/sudoers/sudoers.c:1097 -#: plugins/sudoers/sudoers_debug.c:112 plugins/sudoers/sudoreplay.c:579 -#: plugins/sudoers/sudoreplay.c:582 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1459 plugins/sudoers/sudoreplay.c:1463 -#: plugins/sudoers/testsudoers.c:134 plugins/sudoers/testsudoers.c:234 -#: plugins/sudoers/testsudoers.c:251 plugins/sudoers/testsudoers.c:585 -#: plugins/sudoers/timestamp.c:437 plugins/sudoers/timestamp.c:481 -#: plugins/sudoers/timestamp.c:958 plugins/sudoers/toke_util.c:57 -#: plugins/sudoers/toke_util.c:110 plugins/sudoers/toke_util.c:147 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:150 -#: plugins/sudoers/visudo.c:312 plugins/sudoers/visudo.c:318 -#: plugins/sudoers/visudo.c:428 plugins/sudoers/visudo.c:606 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:1013 -#: plugins/sudoers/visudo.c:1102 toke.l:844 toke.l:945 toke.l:1102 +#: gram.y:196 gram.y:244 gram.y:251 gram.y:258 gram.y:265 gram.y:272 +#: gram.y:288 gram.y:312 gram.y:319 gram.y:326 gram.y:333 gram.y:340 +#: gram.y:403 gram.y:412 gram.y:423 gram.y:456 gram.y:463 gram.y:470 +#: gram.y:477 gram.y:559 gram.y:566 gram.y:575 gram.y:584 gram.y:601 +#: gram.y:713 gram.y:720 gram.y:727 gram.y:735 gram.y:835 gram.y:842 +#: gram.y:849 gram.y:856 gram.y:863 gram.y:889 gram.y:896 gram.y:903 +#: gram.y:1026 gram.y:1303 plugins/sudoers/alias.c:132 +#: plugins/sudoers/alias.c:139 plugins/sudoers/alias.c:155 +#: plugins/sudoers/auth/bsdauth.c:148 plugins/sudoers/auth/kerb5.c:123 +#: plugins/sudoers/auth/kerb5.c:149 plugins/sudoers/auth/pam.c:670 +#: plugins/sudoers/auth/rfc1938.c:116 plugins/sudoers/auth/sia.c:64 +#: plugins/sudoers/cvtsudoers.c:124 plugins/sudoers/cvtsudoers.c:165 +#: plugins/sudoers/cvtsudoers.c:182 plugins/sudoers/cvtsudoers.c:193 +#: plugins/sudoers/cvtsudoers.c:305 plugins/sudoers/cvtsudoers.c:433 +#: plugins/sudoers/cvtsudoers.c:566 plugins/sudoers/cvtsudoers.c:583 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1179 +#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285 +#: plugins/sudoers/cvtsudoers_ldif.c:154 plugins/sudoers/cvtsudoers_ldif.c:197 +#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:263 +#: plugins/sudoers/cvtsudoers_ldif.c:334 plugins/sudoers/cvtsudoers_ldif.c:389 +#: plugins/sudoers/cvtsudoers_ldif.c:397 plugins/sudoers/cvtsudoers_ldif.c:414 +#: plugins/sudoers/cvtsudoers_ldif.c:423 plugins/sudoers/cvtsudoers_ldif.c:570 +#: plugins/sudoers/defaults.c:666 plugins/sudoers/defaults.c:959 +#: plugins/sudoers/defaults.c:1130 plugins/sudoers/editor.c:72 +#: plugins/sudoers/editor.c:90 plugins/sudoers/editor.c:101 +#: plugins/sudoers/env.c:268 plugins/sudoers/filedigest.c:66 +#: plugins/sudoers/filedigest.c:82 plugins/sudoers/gc.c:59 +#: plugins/sudoers/group_plugin.c:138 plugins/sudoers/interfaces.c:78 +#: plugins/sudoers/iolog.c:943 plugins/sudoers/iolog_path.c:174 +#: plugins/sudoers/iolog_util.c:86 plugins/sudoers/iolog_util.c:125 +#: plugins/sudoers/iolog_util.c:134 plugins/sudoers/iolog_util.c:144 +#: plugins/sudoers/iolog_util.c:152 plugins/sudoers/iolog_util.c:156 +#: plugins/sudoers/ldap.c:185 plugins/sudoers/ldap.c:416 +#: plugins/sudoers/ldap.c:420 plugins/sudoers/ldap.c:432 +#: plugins/sudoers/ldap.c:723 plugins/sudoers/ldap.c:887 +#: plugins/sudoers/ldap.c:1241 plugins/sudoers/ldap.c:1668 +#: plugins/sudoers/ldap.c:1705 plugins/sudoers/ldap.c:1786 +#: plugins/sudoers/ldap.c:1921 plugins/sudoers/ldap.c:2022 +#: plugins/sudoers/ldap.c:2038 plugins/sudoers/ldap_conf.c:223 +#: plugins/sudoers/ldap_conf.c:254 plugins/sudoers/ldap_conf.c:306 +#: plugins/sudoers/ldap_conf.c:342 plugins/sudoers/ldap_conf.c:446 +#: plugins/sudoers/ldap_conf.c:461 plugins/sudoers/ldap_conf.c:558 +#: plugins/sudoers/ldap_conf.c:591 plugins/sudoers/ldap_conf.c:683 +#: plugins/sudoers/ldap_conf.c:765 plugins/sudoers/ldap_util.c:510 +#: plugins/sudoers/ldap_util.c:567 plugins/sudoers/linux_audit.c:83 +#: plugins/sudoers/logging.c:202 plugins/sudoers/logging.c:532 +#: plugins/sudoers/logging.c:558 plugins/sudoers/logging.c:599 +#: plugins/sudoers/logging.c:740 plugins/sudoers/logging.c:1100 +#: plugins/sudoers/match_command.c:249 plugins/sudoers/match_command.c:367 +#: plugins/sudoers/match_command.c:414 plugins/sudoers/match_command.c:485 +#: plugins/sudoers/match_digest.c:70 plugins/sudoers/parse.c:200 +#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:227 +#: plugins/sudoers/parse.c:239 plugins/sudoers/parse_ldif.c:156 +#: plugins/sudoers/parse_ldif.c:187 plugins/sudoers/parse_ldif.c:256 +#: plugins/sudoers/parse_ldif.c:263 plugins/sudoers/parse_ldif.c:268 +#: plugins/sudoers/parse_ldif.c:344 plugins/sudoers/parse_ldif.c:355 +#: plugins/sudoers/parse_ldif.c:361 plugins/sudoers/parse_ldif.c:386 +#: plugins/sudoers/parse_ldif.c:398 plugins/sudoers/parse_ldif.c:402 +#: plugins/sudoers/parse_ldif.c:416 plugins/sudoers/parse_ldif.c:584 +#: plugins/sudoers/parse_ldif.c:614 plugins/sudoers/parse_ldif.c:639 +#: plugins/sudoers/parse_ldif.c:697 plugins/sudoers/parse_ldif.c:714 +#: plugins/sudoers/parse_ldif.c:742 plugins/sudoers/parse_ldif.c:749 +#: plugins/sudoers/policy.c:504 plugins/sudoers/policy.c:750 +#: plugins/sudoers/prompt.c:100 plugins/sudoers/pwutil.c:199 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:586 +#: plugins/sudoers/pwutil.c:657 plugins/sudoers/pwutil.c:816 +#: plugins/sudoers/pwutil.c:873 plugins/sudoers/pwutil.c:917 +#: plugins/sudoers/pwutil.c:975 plugins/sudoers/sssd.c:154 +#: plugins/sudoers/sssd.c:400 plugins/sudoers/sssd.c:463 +#: plugins/sudoers/sssd.c:507 plugins/sudoers/sssd.c:554 +#: plugins/sudoers/sssd.c:746 plugins/sudoers/stubs.c:103 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:273 +#: plugins/sudoers/sudoers.c:283 plugins/sudoers/sudoers.c:292 +#: plugins/sudoers/sudoers.c:334 plugins/sudoers/sudoers.c:657 +#: plugins/sudoers/sudoers.c:786 plugins/sudoers/sudoers.c:830 +#: plugins/sudoers/sudoers.c:1124 plugins/sudoers/sudoers_debug.c:114 +#: plugins/sudoers/sudoreplay.c:584 plugins/sudoers/sudoreplay.c:587 +#: plugins/sudoers/sudoreplay.c:1265 plugins/sudoers/sudoreplay.c:1465 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/testsudoers.c:136 +#: plugins/sudoers/testsudoers.c:236 plugins/sudoers/testsudoers.c:253 +#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:439 +#: plugins/sudoers/timestamp.c:483 plugins/sudoers/timestamp.c:960 +#: plugins/sudoers/toke_util.c:59 plugins/sudoers/toke_util.c:112 +#: plugins/sudoers/toke_util.c:149 plugins/sudoers/tsdump.c:130 +#: plugins/sudoers/visudo.c:152 plugins/sudoers/visudo.c:328 +#: plugins/sudoers/visudo.c:334 plugins/sudoers/visudo.c:444 +#: plugins/sudoers/visudo.c:622 plugins/sudoers/visudo.c:942 +#: plugins/sudoers/visudo.c:1029 plugins/sudoers/visudo.c:1118 toke.l:846 +#: toke.l:947 toke.l:1104 msgid "unable to allocate memory" msgstr "无法分配内存" -#: gram.y:482 +#: gram.y:488 msgid "a digest requires a path name" msgstr "摘要需要路径参数" -#: gram.y:608 +#: gram.y:614 msgid "invalid notbefore value" msgstr "无效的 notbefore 值" -#: gram.y:616 +#: gram.y:622 msgid "invalid notafter value" msgstr "无效的 notafter 值" -#: gram.y:625 plugins/sudoers/policy.c:318 +#: gram.y:631 plugins/sudoers/policy.c:320 msgid "timeout value too large" msgstr "超时值过大" -#: gram.y:627 plugins/sudoers/policy.c:320 +#: gram.y:633 plugins/sudoers/policy.c:322 msgid "invalid timeout value" msgstr "无效的超时值" -#: gram.y:1294 plugins/sudoers/auth/pam.c:354 plugins/sudoers/auth/pam.c:524 -#: plugins/sudoers/auth/rfc1938.c:114 plugins/sudoers/cvtsudoers.c:123 -#: plugins/sudoers/cvtsudoers.c:163 plugins/sudoers/cvtsudoers.c:180 -#: plugins/sudoers/cvtsudoers.c:191 plugins/sudoers/cvtsudoers.c:303 -#: plugins/sudoers/cvtsudoers.c:431 plugins/sudoers/cvtsudoers.c:564 -#: plugins/sudoers/cvtsudoers.c:581 plugins/sudoers/cvtsudoers.c:645 -#: plugins/sudoers/cvtsudoers.c:760 plugins/sudoers/cvtsudoers.c:767 -#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182 -#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_ldif.c:151 -#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:241 -#: plugins/sudoers/cvtsudoers_ldif.c:260 plugins/sudoers/cvtsudoers_ldif.c:331 -#: plugins/sudoers/cvtsudoers_ldif.c:386 plugins/sudoers/cvtsudoers_ldif.c:394 -#: plugins/sudoers/cvtsudoers_ldif.c:411 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:567 plugins/sudoers/defaults.c:661 -#: plugins/sudoers/defaults.c:954 plugins/sudoers/defaults.c:1125 -#: plugins/sudoers/editor.c:70 plugins/sudoers/editor.c:88 -#: plugins/sudoers/editor.c:99 plugins/sudoers/env.c:247 -#: plugins/sudoers/filedigest.c:64 plugins/sudoers/filedigest.c:80 -#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:136 -#: plugins/sudoers/interfaces.c:76 plugins/sudoers/iolog.c:939 -#: plugins/sudoers/iolog_path.c:172 plugins/sudoers/iolog_util.c:83 -#: plugins/sudoers/iolog_util.c:122 plugins/sudoers/iolog_util.c:131 -#: plugins/sudoers/iolog_util.c:141 plugins/sudoers/iolog_util.c:149 -#: plugins/sudoers/iolog_util.c:153 plugins/sudoers/ldap.c:183 -#: plugins/sudoers/ldap.c:414 plugins/sudoers/ldap.c:418 -#: plugins/sudoers/ldap.c:430 plugins/sudoers/ldap.c:721 -#: plugins/sudoers/ldap.c:885 plugins/sudoers/ldap.c:1233 -#: plugins/sudoers/ldap.c:1660 plugins/sudoers/ldap.c:1697 -#: plugins/sudoers/ldap.c:1778 plugins/sudoers/ldap.c:1913 -#: plugins/sudoers/ldap.c:2014 plugins/sudoers/ldap.c:2030 -#: plugins/sudoers/ldap_conf.c:221 plugins/sudoers/ldap_conf.c:252 -#: plugins/sudoers/ldap_conf.c:304 plugins/sudoers/ldap_conf.c:340 -#: plugins/sudoers/ldap_conf.c:443 plugins/sudoers/ldap_conf.c:458 -#: plugins/sudoers/ldap_conf.c:555 plugins/sudoers/ldap_conf.c:588 -#: plugins/sudoers/ldap_conf.c:679 plugins/sudoers/ldap_conf.c:762 -#: plugins/sudoers/ldap_util.c:508 plugins/sudoers/ldap_util.c:564 -#: plugins/sudoers/linux_audit.c:81 plugins/sudoers/logging.c:195 -#: plugins/sudoers/logging.c:511 plugins/sudoers/logging.c:532 -#: plugins/sudoers/logging.c:572 plugins/sudoers/logging.c:1010 -#: plugins/sudoers/match.c:724 plugins/sudoers/match.c:771 -#: plugins/sudoers/match.c:813 plugins/sudoers/match.c:841 -#: plugins/sudoers/match.c:929 plugins/sudoers/match.c:1008 -#: plugins/sudoers/parse.c:194 plugins/sudoers/parse.c:206 -#: plugins/sudoers/parse.c:221 plugins/sudoers/parse.c:233 -#: plugins/sudoers/parse_ldif.c:140 plugins/sudoers/parse_ldif.c:167 -#: plugins/sudoers/parse_ldif.c:236 plugins/sudoers/parse_ldif.c:243 -#: plugins/sudoers/parse_ldif.c:248 plugins/sudoers/parse_ldif.c:324 -#: plugins/sudoers/parse_ldif.c:335 plugins/sudoers/parse_ldif.c:341 -#: plugins/sudoers/parse_ldif.c:366 plugins/sudoers/parse_ldif.c:378 -#: plugins/sudoers/parse_ldif.c:382 plugins/sudoers/parse_ldif.c:396 -#: plugins/sudoers/parse_ldif.c:564 plugins/sudoers/parse_ldif.c:593 -#: plugins/sudoers/parse_ldif.c:618 plugins/sudoers/parse_ldif.c:678 -#: plugins/sudoers/parse_ldif.c:697 plugins/sudoers/parse_ldif.c:743 -#: plugins/sudoers/parse_ldif.c:753 plugins/sudoers/policy.c:132 -#: plugins/sudoers/policy.c:141 plugins/sudoers/policy.c:150 -#: plugins/sudoers/policy.c:176 plugins/sudoers/policy.c:303 -#: plugins/sudoers/policy.c:318 plugins/sudoers/policy.c:320 -#: plugins/sudoers/policy.c:346 plugins/sudoers/policy.c:356 -#: plugins/sudoers/policy.c:400 plugins/sudoers/policy.c:410 -#: plugins/sudoers/policy.c:419 plugins/sudoers/policy.c:428 -#: plugins/sudoers/policy.c:502 plugins/sudoers/policy.c:744 -#: plugins/sudoers/prompt.c:98 plugins/sudoers/pwutil.c:197 -#: plugins/sudoers/pwutil.c:269 plugins/sudoers/pwutil.c:346 -#: plugins/sudoers/pwutil.c:520 plugins/sudoers/pwutil.c:586 -#: plugins/sudoers/pwutil.c:656 plugins/sudoers/pwutil.c:814 -#: plugins/sudoers/pwutil.c:871 plugins/sudoers/pwutil.c:916 -#: plugins/sudoers/pwutil.c:974 plugins/sudoers/set_perms.c:392 -#: plugins/sudoers/set_perms.c:771 plugins/sudoers/set_perms.c:1155 -#: plugins/sudoers/set_perms.c:1481 plugins/sudoers/set_perms.c:1646 -#: plugins/sudoers/sssd.c:151 plugins/sudoers/sssd.c:398 -#: plugins/sudoers/sssd.c:461 plugins/sudoers/sssd.c:505 -#: plugins/sudoers/sssd.c:552 plugins/sudoers/sssd.c:743 -#: plugins/sudoers/stubs.c:101 plugins/sudoers/stubs.c:109 -#: plugins/sudoers/sudoers.c:269 plugins/sudoers/sudoers.c:279 -#: plugins/sudoers/sudoers.c:288 plugins/sudoers/sudoers.c:330 -#: plugins/sudoers/sudoers.c:653 plugins/sudoers/sudoers.c:779 -#: plugins/sudoers/sudoers.c:823 plugins/sudoers/sudoers.c:1097 -#: plugins/sudoers/sudoers_debug.c:111 plugins/sudoers/sudoreplay.c:579 -#: plugins/sudoers/sudoreplay.c:582 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1459 plugins/sudoers/sudoreplay.c:1463 -#: plugins/sudoers/testsudoers.c:134 plugins/sudoers/testsudoers.c:234 -#: plugins/sudoers/testsudoers.c:251 plugins/sudoers/testsudoers.c:585 -#: plugins/sudoers/timestamp.c:437 plugins/sudoers/timestamp.c:481 -#: plugins/sudoers/timestamp.c:958 plugins/sudoers/toke_util.c:57 -#: plugins/sudoers/toke_util.c:110 plugins/sudoers/toke_util.c:147 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:150 -#: plugins/sudoers/visudo.c:312 plugins/sudoers/visudo.c:318 -#: plugins/sudoers/visudo.c:428 plugins/sudoers/visudo.c:606 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:1013 -#: plugins/sudoers/visudo.c:1102 toke.l:844 toke.l:945 toke.l:1102 +#: gram.y:1303 plugins/sudoers/auth/pam.c:483 plugins/sudoers/auth/pam.c:670 +#: plugins/sudoers/auth/rfc1938.c:116 plugins/sudoers/cvtsudoers.c:124 +#: plugins/sudoers/cvtsudoers.c:164 plugins/sudoers/cvtsudoers.c:181 +#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:304 +#: plugins/sudoers/cvtsudoers.c:432 plugins/sudoers/cvtsudoers.c:565 +#: plugins/sudoers/cvtsudoers.c:582 plugins/sudoers/cvtsudoers.c:646 +#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 +#: plugins/sudoers/cvtsudoers.c:1179 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1285 plugins/sudoers/cvtsudoers_ldif.c:153 +#: plugins/sudoers/cvtsudoers_ldif.c:196 plugins/sudoers/cvtsudoers_ldif.c:243 +#: plugins/sudoers/cvtsudoers_ldif.c:262 plugins/sudoers/cvtsudoers_ldif.c:333 +#: plugins/sudoers/cvtsudoers_ldif.c:388 plugins/sudoers/cvtsudoers_ldif.c:396 +#: plugins/sudoers/cvtsudoers_ldif.c:413 plugins/sudoers/cvtsudoers_ldif.c:422 +#: plugins/sudoers/cvtsudoers_ldif.c:569 plugins/sudoers/defaults.c:666 +#: plugins/sudoers/defaults.c:959 plugins/sudoers/defaults.c:1130 +#: plugins/sudoers/editor.c:72 plugins/sudoers/editor.c:90 +#: plugins/sudoers/editor.c:101 plugins/sudoers/env.c:268 +#: plugins/sudoers/filedigest.c:66 plugins/sudoers/filedigest.c:82 +#: plugins/sudoers/gc.c:59 plugins/sudoers/group_plugin.c:138 +#: plugins/sudoers/interfaces.c:78 plugins/sudoers/iolog.c:943 +#: plugins/sudoers/iolog_path.c:174 plugins/sudoers/iolog_util.c:86 +#: plugins/sudoers/iolog_util.c:125 plugins/sudoers/iolog_util.c:134 +#: plugins/sudoers/iolog_util.c:144 plugins/sudoers/iolog_util.c:152 +#: plugins/sudoers/iolog_util.c:156 plugins/sudoers/ldap.c:185 +#: plugins/sudoers/ldap.c:416 plugins/sudoers/ldap.c:420 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:723 +#: plugins/sudoers/ldap.c:887 plugins/sudoers/ldap.c:1241 +#: plugins/sudoers/ldap.c:1668 plugins/sudoers/ldap.c:1705 +#: plugins/sudoers/ldap.c:1786 plugins/sudoers/ldap.c:1921 +#: plugins/sudoers/ldap.c:2022 plugins/sudoers/ldap.c:2038 +#: plugins/sudoers/ldap_conf.c:223 plugins/sudoers/ldap_conf.c:254 +#: plugins/sudoers/ldap_conf.c:306 plugins/sudoers/ldap_conf.c:342 +#: plugins/sudoers/ldap_conf.c:446 plugins/sudoers/ldap_conf.c:461 +#: plugins/sudoers/ldap_conf.c:558 plugins/sudoers/ldap_conf.c:591 +#: plugins/sudoers/ldap_conf.c:682 plugins/sudoers/ldap_conf.c:765 +#: plugins/sudoers/ldap_util.c:510 plugins/sudoers/ldap_util.c:567 +#: plugins/sudoers/linux_audit.c:83 plugins/sudoers/logging.c:202 +#: plugins/sudoers/logging.c:532 plugins/sudoers/logging.c:558 +#: plugins/sudoers/logging.c:598 plugins/sudoers/logging.c:1100 +#: plugins/sudoers/match_command.c:248 plugins/sudoers/match_command.c:366 +#: plugins/sudoers/match_command.c:413 plugins/sudoers/match_command.c:485 +#: plugins/sudoers/match_digest.c:70 plugins/sudoers/parse.c:199 +#: plugins/sudoers/parse.c:211 plugins/sudoers/parse.c:226 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse_ldif.c:155 +#: plugins/sudoers/parse_ldif.c:186 plugins/sudoers/parse_ldif.c:255 +#: plugins/sudoers/parse_ldif.c:262 plugins/sudoers/parse_ldif.c:267 +#: plugins/sudoers/parse_ldif.c:343 plugins/sudoers/parse_ldif.c:354 +#: plugins/sudoers/parse_ldif.c:360 plugins/sudoers/parse_ldif.c:385 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:401 +#: plugins/sudoers/parse_ldif.c:415 plugins/sudoers/parse_ldif.c:584 +#: plugins/sudoers/parse_ldif.c:613 plugins/sudoers/parse_ldif.c:638 +#: plugins/sudoers/parse_ldif.c:696 plugins/sudoers/parse_ldif.c:713 +#: plugins/sudoers/parse_ldif.c:741 plugins/sudoers/parse_ldif.c:748 +#: plugins/sudoers/policy.c:134 plugins/sudoers/policy.c:143 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:178 +#: plugins/sudoers/policy.c:305 plugins/sudoers/policy.c:320 +#: plugins/sudoers/policy.c:322 plugins/sudoers/policy.c:348 +#: plugins/sudoers/policy.c:358 plugins/sudoers/policy.c:402 +#: plugins/sudoers/policy.c:412 plugins/sudoers/policy.c:421 +#: plugins/sudoers/policy.c:430 plugins/sudoers/policy.c:504 +#: plugins/sudoers/policy.c:750 plugins/sudoers/prompt.c:100 +#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 +#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 +#: plugins/sudoers/pwutil.c:586 plugins/sudoers/pwutil.c:657 +#: plugins/sudoers/pwutil.c:816 plugins/sudoers/pwutil.c:873 +#: plugins/sudoers/pwutil.c:917 plugins/sudoers/pwutil.c:975 +#: plugins/sudoers/set_perms.c:396 plugins/sudoers/set_perms.c:775 +#: plugins/sudoers/set_perms.c:1165 plugins/sudoers/set_perms.c:1493 +#: plugins/sudoers/set_perms.c:1659 plugins/sudoers/sssd.c:153 +#: plugins/sudoers/sssd.c:400 plugins/sudoers/sssd.c:463 +#: plugins/sudoers/sssd.c:507 plugins/sudoers/sssd.c:554 +#: plugins/sudoers/sssd.c:746 plugins/sudoers/stubs.c:103 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/sudoers.c:273 +#: plugins/sudoers/sudoers.c:283 plugins/sudoers/sudoers.c:292 +#: plugins/sudoers/sudoers.c:334 plugins/sudoers/sudoers.c:657 +#: plugins/sudoers/sudoers.c:786 plugins/sudoers/sudoers.c:830 +#: plugins/sudoers/sudoers.c:1124 plugins/sudoers/sudoers_debug.c:113 +#: plugins/sudoers/sudoreplay.c:584 plugins/sudoers/sudoreplay.c:587 +#: plugins/sudoers/sudoreplay.c:1265 plugins/sudoers/sudoreplay.c:1465 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/testsudoers.c:136 +#: plugins/sudoers/testsudoers.c:236 plugins/sudoers/testsudoers.c:253 +#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:439 +#: plugins/sudoers/timestamp.c:483 plugins/sudoers/timestamp.c:960 +#: plugins/sudoers/toke_util.c:59 plugins/sudoers/toke_util.c:112 +#: plugins/sudoers/toke_util.c:149 plugins/sudoers/tsdump.c:130 +#: plugins/sudoers/visudo.c:152 plugins/sudoers/visudo.c:328 +#: plugins/sudoers/visudo.c:334 plugins/sudoers/visudo.c:444 +#: plugins/sudoers/visudo.c:622 plugins/sudoers/visudo.c:942 +#: plugins/sudoers/visudo.c:1029 plugins/sudoers/visudo.c:1118 toke.l:846 +#: toke.l:947 toke.l:1104 #, c-format msgid "%s: %s" msgstr "%s:%s" -#: plugins/sudoers/alias.c:148 +#: plugins/sudoers/alias.c:151 #, c-format msgid "Alias \"%s\" already defined" msgstr "别名“%s”已定义过" -#: plugins/sudoers/auth/bsdauth.c:73 +#: plugins/sudoers/auth/aix_auth.c:203 plugins/sudoers/logging.c:801 +msgid "unable to fork" +msgstr "无法执行 fork" + +#: plugins/sudoers/auth/aix_auth.c:283 +#, c-format +msgid "unable to change password for %s" +msgstr "无法为 %s 更改密码" + +#: plugins/sudoers/auth/bsdauth.c:75 #, c-format msgid "unable to get login class for user %s" msgstr "无法获取用户 %s 的登录类别(login class)" -#: plugins/sudoers/auth/bsdauth.c:78 +#: plugins/sudoers/auth/bsdauth.c:80 msgid "unable to begin bsd authentication" msgstr "无法开始 bsd 认证" -#: plugins/sudoers/auth/bsdauth.c:86 +#: plugins/sudoers/auth/bsdauth.c:88 msgid "invalid authentication type" msgstr "无效的认证类型" -#: plugins/sudoers/auth/bsdauth.c:95 +#: plugins/sudoers/auth/bsdauth.c:97 msgid "unable to initialize BSD authentication" msgstr "无法初始化 bsd 认证" -#: plugins/sudoers/auth/bsdauth.c:183 +#: plugins/sudoers/auth/bsdauth.c:185 msgid "your account has expired" msgstr "您的账户已过期" -#: plugins/sudoers/auth/bsdauth.c:185 +#: plugins/sudoers/auth/bsdauth.c:187 msgid "approval failed" msgstr "批准失败" -#: plugins/sudoers/auth/fwtk.c:57 +#: plugins/sudoers/auth/fwtk.c:59 msgid "unable to read fwtk config" msgstr "无法读取 fwtk 配置" -#: plugins/sudoers/auth/fwtk.c:62 +#: plugins/sudoers/auth/fwtk.c:64 msgid "unable to connect to authentication server" msgstr "无法连接到认证服务器" -#: plugins/sudoers/auth/fwtk.c:68 plugins/sudoers/auth/fwtk.c:92 -#: plugins/sudoers/auth/fwtk.c:124 +#: plugins/sudoers/auth/fwtk.c:70 plugins/sudoers/auth/fwtk.c:94 +#: plugins/sudoers/auth/fwtk.c:126 msgid "lost connection to authentication server" msgstr "丢失了到认证服务器的连接" -#: plugins/sudoers/auth/fwtk.c:72 +#: plugins/sudoers/auth/fwtk.c:74 #, c-format msgid "" "authentication server error:\n" @@ -301,160 +312,161 @@ "认证服务器错误:\n" "%s" -#: plugins/sudoers/auth/kerb5.c:113 +#: plugins/sudoers/auth/kerb5.c:115 #, c-format msgid "%s: unable to convert principal to string ('%s'): %s" msgstr "%s:无法将主体(principal)转换为字符串(“%s”):%s" -#: plugins/sudoers/auth/kerb5.c:163 +#: plugins/sudoers/auth/kerb5.c:165 #, c-format msgid "%s: unable to parse '%s': %s" msgstr "%s:无法解析“%s”:%s" -#: plugins/sudoers/auth/kerb5.c:172 +#: plugins/sudoers/auth/kerb5.c:174 #, c-format msgid "%s: unable to resolve credential cache: %s" msgstr "%s:无法解析凭据缓存:%s" -#: plugins/sudoers/auth/kerb5.c:219 +#: plugins/sudoers/auth/kerb5.c:221 #, c-format msgid "%s: unable to allocate options: %s" msgstr "%s:无法分配选项:%s" -#: plugins/sudoers/auth/kerb5.c:234 +#: plugins/sudoers/auth/kerb5.c:236 #, c-format msgid "%s: unable to get credentials: %s" msgstr "%s:无法获取凭据:%s" -#: plugins/sudoers/auth/kerb5.c:247 +#: plugins/sudoers/auth/kerb5.c:249 #, c-format msgid "%s: unable to initialize credential cache: %s" msgstr "%s:无法初始化凭据缓存:%s" -#: plugins/sudoers/auth/kerb5.c:250 +#: plugins/sudoers/auth/kerb5.c:252 #, c-format msgid "%s: unable to store credential in cache: %s" msgstr "%s:无法在缓存中储存凭据:%s" -#: plugins/sudoers/auth/kerb5.c:314 +#: plugins/sudoers/auth/kerb5.c:316 #, c-format msgid "%s: unable to get host principal: %s" msgstr "%s:无法获取主机主体(principal):%s" -#: plugins/sudoers/auth/kerb5.c:328 +#: plugins/sudoers/auth/kerb5.c:330 #, c-format msgid "%s: Cannot verify TGT! Possible attack!: %s" msgstr "%s:无法验证目标!可能遭到了攻击!:%s" -#: plugins/sudoers/auth/pam.c:113 -msgid "unable to initialize PAM" -msgstr "无法初始化 PAM" +#: plugins/sudoers/auth/pam.c:223 +#, c-format +msgid "unable to initialize PAM: %s" +msgstr "无法初始化 PAM:%s" -#: plugins/sudoers/auth/pam.c:204 +#: plugins/sudoers/auth/pam.c:319 #, c-format msgid "PAM authentication error: %s" msgstr "PAM 认证出错:%s" -#: plugins/sudoers/auth/pam.c:221 +#: plugins/sudoers/auth/pam.c:338 msgid "account validation failure, is your account locked?" msgstr "账户验证失败,您的账户是不是上锁了?" -#: plugins/sudoers/auth/pam.c:229 +#: plugins/sudoers/auth/pam.c:349 msgid "Account or password is expired, reset your password and try again" msgstr "账户或密码过期,重置您的密码并重试" -#: plugins/sudoers/auth/pam.c:238 +#: plugins/sudoers/auth/pam.c:355 #, c-format msgid "unable to change expired password: %s" msgstr "无法更改过期的密码:%s" -#: plugins/sudoers/auth/pam.c:246 +#: plugins/sudoers/auth/pam.c:366 msgid "Password expired, contact your system administrator" msgstr "密码过期,联系您的系统管理员" -#: plugins/sudoers/auth/pam.c:250 +#: plugins/sudoers/auth/pam.c:371 msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator" msgstr "账户过期,或 PAM 配置缺少 sudo 使用的“account”节,联系您的系统管理员" -#: plugins/sudoers/auth/pam.c:257 plugins/sudoers/auth/pam.c:262 +#: plugins/sudoers/auth/pam.c:379 plugins/sudoers/auth/pam.c:384 #, c-format msgid "PAM account management error: %s" msgstr "PAM 账户管理出错:%s" -#: plugins/sudoers/auth/rfc1938.c:102 plugins/sudoers/visudo.c:232 +#: plugins/sudoers/auth/rfc1938.c:104 plugins/sudoers/visudo.c:248 #, c-format msgid "you do not exist in the %s database" msgstr "%s 数据库中没有您" -#: plugins/sudoers/auth/securid5.c:75 +#: plugins/sudoers/auth/securid5.c:77 msgid "failed to initialise the ACE API library" msgstr "初始化 ACE API 库失败" -#: plugins/sudoers/auth/securid5.c:101 +#: plugins/sudoers/auth/securid5.c:103 msgid "unable to contact the SecurID server" msgstr "无法联络 SecurID 服务器" -#: plugins/sudoers/auth/securid5.c:110 +#: plugins/sudoers/auth/securid5.c:112 msgid "User ID locked for SecurID Authentication" msgstr "为进行 SecurID 认证,已锁定用户 ID" -#: plugins/sudoers/auth/securid5.c:114 plugins/sudoers/auth/securid5.c:165 +#: plugins/sudoers/auth/securid5.c:116 plugins/sudoers/auth/securid5.c:167 msgid "invalid username length for SecurID" msgstr "SecurID 的用户名长度无效" -#: plugins/sudoers/auth/securid5.c:118 plugins/sudoers/auth/securid5.c:170 +#: plugins/sudoers/auth/securid5.c:120 plugins/sudoers/auth/securid5.c:172 msgid "invalid Authentication Handle for SecurID" msgstr "SecurID 的认证句柄无效" -#: plugins/sudoers/auth/securid5.c:122 +#: plugins/sudoers/auth/securid5.c:124 msgid "SecurID communication failed" msgstr "SecurID 通讯失败" -#: plugins/sudoers/auth/securid5.c:126 plugins/sudoers/auth/securid5.c:215 +#: plugins/sudoers/auth/securid5.c:128 plugins/sudoers/auth/securid5.c:217 msgid "unknown SecurID error" msgstr "未知的 SecurID 错误" -#: plugins/sudoers/auth/securid5.c:160 +#: plugins/sudoers/auth/securid5.c:162 msgid "invalid passcode length for SecurID" msgstr "无效的 SecurID 密码长度" -#: plugins/sudoers/auth/sia.c:72 plugins/sudoers/auth/sia.c:127 +#: plugins/sudoers/auth/sia.c:74 plugins/sudoers/auth/sia.c:129 msgid "unable to initialize SIA session" msgstr "无法初始化 SIA 会话" -#: plugins/sudoers/auth/sudo_auth.c:136 +#: plugins/sudoers/auth/sudo_auth.c:138 msgid "invalid authentication methods" msgstr "无效的认证方法" -#: plugins/sudoers/auth/sudo_auth.c:138 +#: plugins/sudoers/auth/sudo_auth.c:140 msgid "Invalid authentication methods compiled into sudo! You may not mix standalone and non-standalone authentication." msgstr "编译进 sudo 的认证方法无效!您不能混用独立和非独立认证。" -#: plugins/sudoers/auth/sudo_auth.c:259 plugins/sudoers/auth/sudo_auth.c:309 +#: plugins/sudoers/auth/sudo_auth.c:261 plugins/sudoers/auth/sudo_auth.c:311 msgid "no authentication methods" msgstr "无认证方法" -#: plugins/sudoers/auth/sudo_auth.c:261 +#: plugins/sudoers/auth/sudo_auth.c:263 msgid "There are no authentication methods compiled into sudo! If you want to turn off authentication, use the --disable-authentication configure option." msgstr "sudo 编译时没有加入任何认证方法!如果您想关闭认证,使用 --disable-authentication 配置选项。" -#: plugins/sudoers/auth/sudo_auth.c:311 +#: plugins/sudoers/auth/sudo_auth.c:313 msgid "Unable to initialize authentication methods." msgstr "无法初始化认证方法。" -#: plugins/sudoers/auth/sudo_auth.c:477 +#: plugins/sudoers/auth/sudo_auth.c:479 msgid "Authentication methods:" msgstr "认证方法:" -#: plugins/sudoers/bsm_audit.c:123 plugins/sudoers/bsm_audit.c:215 +#: plugins/sudoers/bsm_audit.c:125 plugins/sudoers/bsm_audit.c:217 msgid "Could not determine audit condition" msgstr "无法确定审核条件" -#: plugins/sudoers/bsm_audit.c:188 plugins/sudoers/bsm_audit.c:279 +#: plugins/sudoers/bsm_audit.c:190 plugins/sudoers/bsm_audit.c:281 msgid "unable to commit audit record" msgstr "无法提交审核记录" -#: plugins/sudoers/check.c:267 +#: plugins/sudoers/check.c:269 msgid "" "\n" "We trust you have received the usual lecture from the local System\n" @@ -474,126 +486,126 @@ " #3) 权力越大,责任越大。\n" "\n" -#: plugins/sudoers/check.c:310 plugins/sudoers/check.c:320 -#: plugins/sudoers/sudoers.c:696 plugins/sudoers/sudoers.c:741 -#: plugins/sudoers/tsdump.c:124 +#: plugins/sudoers/check.c:312 plugins/sudoers/check.c:322 +#: plugins/sudoers/sudoers.c:700 plugins/sudoers/sudoers.c:748 +#: plugins/sudoers/tsdump.c:126 #, c-format msgid "unknown uid: %u" msgstr "未知的用户 ID:%u" -#: plugins/sudoers/check.c:315 plugins/sudoers/iolog.c:253 -#: plugins/sudoers/policy.c:915 plugins/sudoers/sudoers.c:1136 -#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:398 +#: plugins/sudoers/check.c:317 plugins/sudoers/iolog.c:255 +#: plugins/sudoers/policy.c:921 plugins/sudoers/sudoers.c:1163 +#: plugins/sudoers/testsudoers.c:227 plugins/sudoers/testsudoers.c:400 #, c-format msgid "unknown user: %s" msgstr "未知用户:%s" -#: plugins/sudoers/cvtsudoers.c:198 +#: plugins/sudoers/cvtsudoers.c:199 #, c-format msgid "order increment: %s: %s" msgstr "顺序增量:%s: %s" -#: plugins/sudoers/cvtsudoers.c:214 +#: plugins/sudoers/cvtsudoers.c:215 #, c-format msgid "starting order: %s: %s" msgstr "起始顺序:%s:%s" -#: plugins/sudoers/cvtsudoers.c:224 +#: plugins/sudoers/cvtsudoers.c:225 #, c-format msgid "order padding: %s: %s" msgstr "顺序填充:%s: %s" -#: plugins/sudoers/cvtsudoers.c:232 plugins/sudoers/sudoreplay.c:287 -#: plugins/sudoers/visudo.c:182 +#: plugins/sudoers/cvtsudoers.c:233 plugins/sudoers/sudoreplay.c:289 +#: plugins/sudoers/visudo.c:184 #, c-format msgid "%s version %s\n" msgstr "%s 版本 %s\n" -#: plugins/sudoers/cvtsudoers.c:234 plugins/sudoers/visudo.c:184 +#: plugins/sudoers/cvtsudoers.c:235 plugins/sudoers/visudo.c:186 #, c-format msgid "%s grammar version %d\n" msgstr "%s 语法版本 %d\n" -#: plugins/sudoers/cvtsudoers.c:251 plugins/sudoers/testsudoers.c:173 +#: plugins/sudoers/cvtsudoers.c:252 plugins/sudoers/testsudoers.c:175 #, c-format msgid "unsupported input format %s" msgstr "不支持的输入格式 %s" -#: plugins/sudoers/cvtsudoers.c:266 +#: plugins/sudoers/cvtsudoers.c:267 #, c-format msgid "unsupported output format %s" msgstr "不支持的输出格式 %s" -#: plugins/sudoers/cvtsudoers.c:318 +#: plugins/sudoers/cvtsudoers.c:319 #, c-format msgid "%s: input and output files must be different" msgstr "%s:输入和输出文件不能相同" -#: plugins/sudoers/cvtsudoers.c:334 plugins/sudoers/sudoers.c:172 -#: plugins/sudoers/testsudoers.c:264 plugins/sudoers/visudo.c:238 -#: plugins/sudoers/visudo.c:594 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:335 plugins/sudoers/sudoers.c:176 +#: plugins/sudoers/testsudoers.c:266 plugins/sudoers/visudo.c:254 +#: plugins/sudoers/visudo.c:610 plugins/sudoers/visudo.c:933 msgid "unable to initialize sudoers default values" msgstr "无法初始化 sudoers 默认值" -#: plugins/sudoers/cvtsudoers.c:420 plugins/sudoers/ldap_conf.c:433 +#: plugins/sudoers/cvtsudoers.c:421 plugins/sudoers/ldap_conf.c:436 #, c-format msgid "%s: %s: %s: %s" msgstr "%s:%s:%s:%s" -#: plugins/sudoers/cvtsudoers.c:479 +#: plugins/sudoers/cvtsudoers.c:480 #, c-format msgid "%s: unknown key word: %s" msgstr "%s:未知的关键词:%s" -#: plugins/sudoers/cvtsudoers.c:525 +#: plugins/sudoers/cvtsudoers.c:526 #, c-format msgid "invalid defaults type: %s" msgstr "无效的默认值类型:%s" -#: plugins/sudoers/cvtsudoers.c:548 +#: plugins/sudoers/cvtsudoers.c:549 #, c-format msgid "invalid suppression type: %s" msgstr "无效的压缩类型:%s" -#: plugins/sudoers/cvtsudoers.c:588 plugins/sudoers/cvtsudoers.c:602 +#: plugins/sudoers/cvtsudoers.c:589 plugins/sudoers/cvtsudoers.c:603 #, c-format msgid "invalid filter: %s" msgstr "无效的过滤器:%s" -#: plugins/sudoers/cvtsudoers.c:621 plugins/sudoers/cvtsudoers.c:638 -#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:1128 -#: plugins/sudoers/cvtsudoers_ldif.c:641 plugins/sudoers/iolog.c:411 -#: plugins/sudoers/iolog_util.c:72 plugins/sudoers/sudoers.c:903 -#: plugins/sudoers/sudoreplay.c:333 plugins/sudoers/sudoreplay.c:1425 -#: plugins/sudoers/timestamp.c:446 plugins/sudoers/tsdump.c:133 -#: plugins/sudoers/visudo.c:913 +#: plugins/sudoers/cvtsudoers.c:622 plugins/sudoers/cvtsudoers.c:639 +#: plugins/sudoers/cvtsudoers.c:1245 plugins/sudoers/cvtsudoers_json.c:1130 +#: plugins/sudoers/cvtsudoers_ldif.c:643 plugins/sudoers/iolog.c:413 +#: plugins/sudoers/iolog_util.c:75 plugins/sudoers/sudoers.c:914 +#: plugins/sudoers/sudoreplay.c:338 plugins/sudoers/sudoreplay.c:1431 +#: plugins/sudoers/timestamp.c:448 plugins/sudoers/tsdump.c:135 +#: plugins/sudoers/visudo.c:929 #, c-format msgid "unable to open %s" msgstr "无法打开 %s" -#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/visudo.c:922 +#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:938 #, c-format msgid "failed to parse %s file, unknown error" msgstr "解析 %s 文件失败,未知错误" -#: plugins/sudoers/cvtsudoers.c:649 plugins/sudoers/visudo.c:939 +#: plugins/sudoers/cvtsudoers.c:650 plugins/sudoers/visudo.c:955 #, c-format msgid "parse error in %s near line %d\n" msgstr "%s 中第 %d 行附近出现解析错误\n" -#: plugins/sudoers/cvtsudoers.c:652 plugins/sudoers/visudo.c:942 +#: plugins/sudoers/cvtsudoers.c:653 plugins/sudoers/visudo.c:958 #, c-format msgid "parse error in %s\n" msgstr "%s 中出现解析错误\n" -#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/iolog.c:498 -#: plugins/sudoers/sudoreplay.c:1129 plugins/sudoers/timestamp.c:330 -#: plugins/sudoers/timestamp.c:333 +#: plugins/sudoers/cvtsudoers.c:1292 plugins/sudoers/iolog.c:500 +#: plugins/sudoers/sudoreplay.c:1135 plugins/sudoers/timestamp.c:332 +#: plugins/sudoers/timestamp.c:335 #, c-format msgid "unable to write to %s" msgstr "无法写入 %s" -#: plugins/sudoers/cvtsudoers.c:1314 +#: plugins/sudoers/cvtsudoers.c:1315 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -602,11 +614,12 @@ "%s - 转换 sudoers 文件格式\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1316 +#: plugins/sudoers/cvtsudoers.c:1317 msgid "" "\n" "Options:\n" " -b, --base=dn the base DN for sudo LDAP queries\n" +" -c, --config=conf_file the path to the configuration file\n" " -d, --defaults=deftypes only convert Defaults of the specified types\n" " -e, --expand-aliases expand aliases when converting\n" " -f, --output-format=format set output format: JSON, LDIF or sudoers\n" @@ -625,6 +638,7 @@ "\n" "选项:\n" " -b, --base=dn 用于 sudo LDAP 查询的基础 DN\n" +" -c, --config=conf_file 指向配置文件的路径\n" " -d, --defaults=deftypes 只转换指定类型的默认值\n" " -e, --expand-aliases 在转换时展开别名\n" " -f, --output-format=format 设置输出格式:JSON、LDIF 或 sudoers\n" @@ -640,43 +654,43 @@ " -s, --suppress=sections 压缩某些部分的输出\n" " -V, --version 显示版本信息并退出" -#: plugins/sudoers/cvtsudoers_json.c:682 plugins/sudoers/cvtsudoers_json.c:718 -#: plugins/sudoers/cvtsudoers_json.c:936 +#: plugins/sudoers/cvtsudoers_json.c:684 plugins/sudoers/cvtsudoers_json.c:720 +#: plugins/sudoers/cvtsudoers_json.c:938 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "未知的默认条目“%s”" -#: plugins/sudoers/cvtsudoers_json.c:856 plugins/sudoers/cvtsudoers_json.c:871 -#: plugins/sudoers/cvtsudoers_ldif.c:306 plugins/sudoers/cvtsudoers_ldif.c:317 -#: plugins/sudoers/ldap.c:480 +#: plugins/sudoers/cvtsudoers_json.c:858 plugins/sudoers/cvtsudoers_json.c:873 +#: plugins/sudoers/cvtsudoers_ldif.c:308 plugins/sudoers/cvtsudoers_ldif.c:319 +#: plugins/sudoers/ldap.c:482 msgid "unable to get GMT time" msgstr "无法获取 GMT 时间" -#: plugins/sudoers/cvtsudoers_json.c:859 plugins/sudoers/cvtsudoers_json.c:874 -#: plugins/sudoers/cvtsudoers_ldif.c:309 plugins/sudoers/cvtsudoers_ldif.c:320 -#: plugins/sudoers/ldap.c:486 +#: plugins/sudoers/cvtsudoers_json.c:861 plugins/sudoers/cvtsudoers_json.c:876 +#: plugins/sudoers/cvtsudoers_ldif.c:311 plugins/sudoers/cvtsudoers_ldif.c:322 +#: plugins/sudoers/ldap.c:488 msgid "unable to format timestamp" msgstr "无法格式化时间戳" -#: plugins/sudoers/cvtsudoers_ldif.c:524 plugins/sudoers/env.c:309 -#: plugins/sudoers/env.c:316 plugins/sudoers/env.c:421 -#: plugins/sudoers/ldap.c:494 plugins/sudoers/ldap.c:725 -#: plugins/sudoers/ldap.c:1052 plugins/sudoers/ldap_conf.c:225 -#: plugins/sudoers/ldap_conf.c:315 plugins/sudoers/linux_audit.c:87 -#: plugins/sudoers/logging.c:1015 plugins/sudoers/policy.c:623 -#: plugins/sudoers/policy.c:633 plugins/sudoers/prompt.c:166 -#: plugins/sudoers/sudoers.c:845 plugins/sudoers/testsudoers.c:255 -#: plugins/sudoers/toke_util.c:159 +#: plugins/sudoers/cvtsudoers_ldif.c:526 plugins/sudoers/env.c:330 +#: plugins/sudoers/env.c:337 plugins/sudoers/env.c:442 +#: plugins/sudoers/ldap.c:496 plugins/sudoers/ldap.c:727 +#: plugins/sudoers/ldap.c:1060 plugins/sudoers/ldap_conf.c:227 +#: plugins/sudoers/ldap_conf.c:317 plugins/sudoers/linux_audit.c:89 +#: plugins/sudoers/logging.c:1105 plugins/sudoers/policy.c:625 +#: plugins/sudoers/policy.c:635 plugins/sudoers/prompt.c:168 +#: plugins/sudoers/sudoers.c:852 plugins/sudoers/testsudoers.c:257 +#: plugins/sudoers/toke_util.c:161 #, c-format msgid "internal error, %s overflow" msgstr "内部错误,%s 溢出" -#: plugins/sudoers/cvtsudoers_ldif.c:593 +#: plugins/sudoers/cvtsudoers_ldif.c:595 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "sudoers 条目过多,最多为 %u" -#: plugins/sudoers/cvtsudoers_ldif.c:636 +#: plugins/sudoers/cvtsudoers_ldif.c:638 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "没有设置 SUDOERS_BASE 环境变量,并且没有指定 -b 选项。" @@ -1080,452 +1094,464 @@ msgstr "创建一个新的 PAM 会话来运行该命令" #: plugins/sudoers/def_data.c:402 +msgid "Perform PAM account validation management" +msgstr "执行 PAM 账户验证管理" + +#: plugins/sudoers/def_data.c:406 #, c-format msgid "Maximum I/O log sequence number: %u" msgstr "最大 I/O 日志序列号:%u" -#: plugins/sudoers/def_data.c:406 +#: plugins/sudoers/def_data.c:410 msgid "Enable sudoers netgroup support" msgstr "启用 support netgroup 支持" -#: plugins/sudoers/def_data.c:410 +#: plugins/sudoers/def_data.c:414 msgid "Check parent directories for writability when editing files with sudoedit" msgstr "在使用 sudoedit 编辑文件时检查上级目录是否可写" -#: plugins/sudoers/def_data.c:414 +#: plugins/sudoers/def_data.c:418 msgid "Follow symbolic links when editing files with sudoedit" msgstr "使用 sudoedit 编辑文件时循符号连接(定位到原文件)" -#: plugins/sudoers/def_data.c:418 +#: plugins/sudoers/def_data.c:422 msgid "Query the group plugin for unknown system groups" msgstr "通过 组 插件查询未知的系统组" -#: plugins/sudoers/def_data.c:422 +#: plugins/sudoers/def_data.c:426 msgid "Match netgroups based on the entire tuple: user, host and domain" msgstr "基于整个元组(用户、主机和域)来匹配网络组" -#: plugins/sudoers/def_data.c:426 +#: plugins/sudoers/def_data.c:430 msgid "Allow commands to be run even if sudo cannot write to the audit log" msgstr "即使 sudo 无法写入审核日志也允许命令运行" -#: plugins/sudoers/def_data.c:430 +#: plugins/sudoers/def_data.c:434 msgid "Allow commands to be run even if sudo cannot write to the I/O log" msgstr "即使 sudo 无法写入 I/O 日志也允许命令运行" -#: plugins/sudoers/def_data.c:434 +#: plugins/sudoers/def_data.c:438 msgid "Allow commands to be run even if sudo cannot write to the log file" msgstr "即使 sudo 无法写入日志文件也允许命令允许" -#: plugins/sudoers/def_data.c:438 +#: plugins/sudoers/def_data.c:442 msgid "Resolve groups in sudoers and match on the group ID, not the name" msgstr "解析 sudoers 中的组并与 组 ID (而不是名字) 匹配" -#: plugins/sudoers/def_data.c:442 +#: plugins/sudoers/def_data.c:446 #, c-format msgid "Log entries larger than this value will be split into multiple syslog messages: %u" msgstr "大于此数值的日志条目会分为多条 syslog 消息:%u" -#: plugins/sudoers/def_data.c:446 +#: plugins/sudoers/def_data.c:450 #, c-format msgid "User that will own the I/O log files: %s" msgstr "将拥有 I/O 日志文件的用户:%s" -#: plugins/sudoers/def_data.c:450 +#: plugins/sudoers/def_data.c:454 #, c-format msgid "Group that will own the I/O log files: %s" msgstr "将拥有 I/O 日志文件的组:%s" -#: plugins/sudoers/def_data.c:454 +#: plugins/sudoers/def_data.c:458 #, c-format msgid "File mode to use for the I/O log files: 0%o" msgstr "I/O 日志文件要使用的文件模式:0%o" -#: plugins/sudoers/def_data.c:458 +#: plugins/sudoers/def_data.c:462 #, c-format msgid "Execute commands by file descriptor instead of by path: %s" msgstr "根据文件描述符执行命令,而非根据路径:%s" -#: plugins/sudoers/def_data.c:462 +#: plugins/sudoers/def_data.c:466 msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning" msgstr "忽略 sudoers 中未知的 Defaults 条目而非产生警告" -#: plugins/sudoers/def_data.c:466 +#: plugins/sudoers/def_data.c:470 #, c-format msgid "Time in seconds after which the command will be terminated: %u" msgstr "超过指定时间后终止命令(秒):%u" -#: plugins/sudoers/def_data.c:470 +#: plugins/sudoers/def_data.c:474 msgid "Allow the user to specify a timeout on the command line" msgstr "允许用户在命令行中指定超时时间" -#: plugins/sudoers/def_data.c:474 +#: plugins/sudoers/def_data.c:478 msgid "Flush I/O log data to disk immediately instead of buffering it" msgstr "立即冲洗(flush) I/O 日志数据而非将其缓存" -#: plugins/sudoers/def_data.c:478 +#: plugins/sudoers/def_data.c:482 msgid "Include the process ID when logging via syslog" msgstr "通过 syslog 登录时包含进程 ID" -#: plugins/sudoers/def_data.c:482 +#: plugins/sudoers/def_data.c:486 #, c-format msgid "Type of authentication timestamp record: %s" msgstr "认证时间戳记录的类型:%s" -#: plugins/sudoers/def_data.c:486 +#: plugins/sudoers/def_data.c:490 #, c-format msgid "Authentication failure message: %s" msgstr "认证失败消息:%s" -#: plugins/sudoers/def_data.c:490 +#: plugins/sudoers/def_data.c:494 msgid "Ignore case when matching user names" msgstr "在匹配 用户 名时忽略大小写" -#: plugins/sudoers/def_data.c:494 +#: plugins/sudoers/def_data.c:498 msgid "Ignore case when matching group names" msgstr "在匹配 组 名时忽略大小写" -#: plugins/sudoers/defaults.c:229 +#: plugins/sudoers/def_data.c:502 +msgid "Log when a command is allowed by sudoers" +msgstr "命令被 sudoers 允许时的日志" + +#: plugins/sudoers/def_data.c:506 +msgid "Log when a command is denied by sudoers" +msgstr "命令被 sudoers 拒绝时的日志" + +#: plugins/sudoers/defaults.c:231 #, c-format msgid "%s:%d unknown defaults entry \"%s\"" msgstr "%s:%d 未知的默认条目“%s”" -#: plugins/sudoers/defaults.c:232 +#: plugins/sudoers/defaults.c:234 #, c-format msgid "%s: unknown defaults entry \"%s\"" msgstr "%s:未知的默认条目“%s”" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:277 #, c-format msgid "%s:%d no value specified for \"%s\"" msgstr "%s:%d 没有给“%s”指定值" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:280 #, c-format msgid "%s: no value specified for \"%s\"" msgstr "%s:没有给“%s”指定值" -#: plugins/sudoers/defaults.c:298 +#: plugins/sudoers/defaults.c:300 #, c-format msgid "%s:%d values for \"%s\" must start with a '/'" msgstr "%s:%d “%s”的值必须以“/”开头" -#: plugins/sudoers/defaults.c:301 +#: plugins/sudoers/defaults.c:303 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s:“%s”的值必须以“/”开头" -#: plugins/sudoers/defaults.c:323 +#: plugins/sudoers/defaults.c:325 #, c-format msgid "%s:%d option \"%s\" does not take a value" msgstr "%s:%d “%s”选项不带值" -#: plugins/sudoers/defaults.c:326 +#: plugins/sudoers/defaults.c:328 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s:“%s”选项不带值" -#: plugins/sudoers/defaults.c:351 +#: plugins/sudoers/defaults.c:353 #, c-format msgid "%s:%d invalid Defaults type 0x%x for option \"%s\"" msgstr "%1$s:%2$d 选项“%4$s”的默认类型 0x%3$x 无效" -#: plugins/sudoers/defaults.c:354 +#: plugins/sudoers/defaults.c:356 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%1$s:选项“%3$s”的默认类型 0x%2$x 无效" -#: plugins/sudoers/defaults.c:364 +#: plugins/sudoers/defaults.c:366 #, c-format msgid "%s:%d value \"%s\" is invalid for option \"%s\"" msgstr "%1$s:%2$d 值“%3$s”对选项“%4$s”无效" -#: plugins/sudoers/defaults.c:367 +#: plugins/sudoers/defaults.c:369 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s:值“%s”对选项“%s”无效" -#: plugins/sudoers/env.c:390 +#: plugins/sudoers/env.c:411 msgid "sudo_putenv: corrupted envp, length mismatch" msgstr "sudo_putenv:envp 损坏,长度不符" -#: plugins/sudoers/env.c:1111 +#: plugins/sudoers/env.c:1132 msgid "unable to rebuild the environment" msgstr "无法重建环境" -#: plugins/sudoers/env.c:1185 +#: plugins/sudoers/env.c:1206 #, c-format msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "对不起,您无权设置以下环境变量:%s" -#: plugins/sudoers/file.c:114 +#: plugins/sudoers/file.c:116 #, c-format msgid "parse error in %s near line %d" msgstr "%s 中第 %d 行附近有解析错误" -#: plugins/sudoers/file.c:117 +#: plugins/sudoers/file.c:119 #, c-format msgid "parse error in %s" msgstr "%s 中出现解析错误" -#: plugins/sudoers/filedigest.c:59 +#: plugins/sudoers/filedigest.c:61 #, c-format msgid "unsupported digest type %d for %s" msgstr "%2$s 的摘要类型 %1$d 不支持" -#: plugins/sudoers/filedigest.c:88 +#: plugins/sudoers/filedigest.c:90 #, c-format msgid "%s: read error" msgstr "%s:写错误" -#: plugins/sudoers/group_plugin.c:88 +#: plugins/sudoers/group_plugin.c:90 #, c-format msgid "%s must be owned by uid %d" msgstr "%s 必须属于用户 ID %d" -#: plugins/sudoers/group_plugin.c:92 +#: plugins/sudoers/group_plugin.c:94 #, c-format msgid "%s must only be writable by owner" msgstr "%s 必须只对所有者可写" -#: plugins/sudoers/group_plugin.c:100 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/group_plugin.c:102 plugins/sudoers/sssd.c:562 #, c-format msgid "unable to load %s: %s" msgstr "无法加载 %s:%s" -#: plugins/sudoers/group_plugin.c:106 +#: plugins/sudoers/group_plugin.c:108 #, c-format msgid "unable to find symbol \"group_plugin\" in %s" msgstr "无法在 %s 中找到符号“group_plugin”" -#: plugins/sudoers/group_plugin.c:111 +#: plugins/sudoers/group_plugin.c:113 #, c-format msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s:不兼容的组插件主版本号 %d,应为 %d" -#: plugins/sudoers/interfaces.c:84 plugins/sudoers/interfaces.c:101 +#: plugins/sudoers/interfaces.c:86 plugins/sudoers/interfaces.c:103 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "无法解析 IP 地址列表“%s”" -#: plugins/sudoers/interfaces.c:89 plugins/sudoers/interfaces.c:106 +#: plugins/sudoers/interfaces.c:91 plugins/sudoers/interfaces.c:108 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "无法解析网络掩码“%s”" -#: plugins/sudoers/interfaces.c:134 +#: plugins/sudoers/interfaces.c:136 msgid "Local IP address and netmask pairs:\n" msgstr "本地 IP 地址和网络掩码对:\n" -#: plugins/sudoers/iolog.c:115 plugins/sudoers/mkdir_parents.c:80 +#: plugins/sudoers/iolog.c:117 plugins/sudoers/mkdir_parents.c:82 #, c-format msgid "%s exists but is not a directory (0%o)" msgstr "%s 存在,但不是目录(0%o)" -#: plugins/sudoers/iolog.c:140 plugins/sudoers/iolog.c:180 -#: plugins/sudoers/mkdir_parents.c:69 plugins/sudoers/timestamp.c:210 +#: plugins/sudoers/iolog.c:142 plugins/sudoers/iolog.c:182 +#: plugins/sudoers/mkdir_parents.c:71 plugins/sudoers/timestamp.c:212 #, c-format msgid "unable to mkdir %s" msgstr "无法创建目录 %s" -#: plugins/sudoers/iolog.c:184 plugins/sudoers/visudo.c:723 -#: plugins/sudoers/visudo.c:734 +#: plugins/sudoers/iolog.c:186 plugins/sudoers/visudo.c:739 +#: plugins/sudoers/visudo.c:750 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "无法将 %s 的模式更改为 0%o" -#: plugins/sudoers/iolog.c:292 plugins/sudoers/sudoers.c:1167 -#: plugins/sudoers/testsudoers.c:422 +#: plugins/sudoers/iolog.c:294 plugins/sudoers/sudoers.c:1194 +#: plugins/sudoers/testsudoers.c:424 #, c-format msgid "unknown group: %s" msgstr "未知组:%s" -#: plugins/sudoers/iolog.c:462 plugins/sudoers/sudoers.c:907 -#: plugins/sudoers/sudoreplay.c:840 plugins/sudoers/sudoreplay.c:1536 -#: plugins/sudoers/tsdump.c:143 +#: plugins/sudoers/iolog.c:464 plugins/sudoers/sudoers.c:918 +#: plugins/sudoers/sudoreplay.c:846 plugins/sudoers/sudoreplay.c:1542 +#: plugins/sudoers/tsdump.c:145 #, c-format msgid "unable to read %s" msgstr "无法读取 %s" -#: plugins/sudoers/iolog.c:577 plugins/sudoers/iolog.c:797 +#: plugins/sudoers/iolog.c:579 plugins/sudoers/iolog.c:801 #, c-format msgid "unable to create %s" msgstr "无法创建 %s" -#: plugins/sudoers/iolog.c:820 plugins/sudoers/iolog.c:1035 -#: plugins/sudoers/iolog.c:1111 plugins/sudoers/iolog.c:1205 -#: plugins/sudoers/iolog.c:1265 +#: plugins/sudoers/iolog.c:824 plugins/sudoers/iolog.c:1039 +#: plugins/sudoers/iolog.c:1115 plugins/sudoers/iolog.c:1209 +#: plugins/sudoers/iolog.c:1270 #, c-format msgid "unable to write to I/O log file: %s" msgstr "无法写入 I/O 日志文件:%s" -#: plugins/sudoers/iolog.c:1069 +#: plugins/sudoers/iolog.c:1073 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s:内部错误,事件 %d 的 I/O 日志文件未打开" -#: plugins/sudoers/iolog.c:1228 +#: plugins/sudoers/iolog.c:1233 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s:内部错误,信号 %d 无效" -#: plugins/sudoers/iolog_util.c:87 +#: plugins/sudoers/iolog_util.c:90 #, c-format msgid "%s: invalid log file" msgstr "%s:无效的日志文件" -#: plugins/sudoers/iolog_util.c:105 +#: plugins/sudoers/iolog_util.c:108 #, c-format msgid "%s: time stamp field is missing" msgstr "%s:缺少 时间戳 字段" -#: plugins/sudoers/iolog_util.c:111 +#: plugins/sudoers/iolog_util.c:114 #, c-format msgid "%s: time stamp %s: %s" msgstr "%s:时间戳 %s:%s" -#: plugins/sudoers/iolog_util.c:118 +#: plugins/sudoers/iolog_util.c:121 #, c-format msgid "%s: user field is missing" msgstr "%s:缺少 用户 字段" -#: plugins/sudoers/iolog_util.c:127 +#: plugins/sudoers/iolog_util.c:130 #, c-format msgid "%s: runas user field is missing" msgstr "%s:缺少 runas 用户 字段" -#: plugins/sudoers/iolog_util.c:136 +#: plugins/sudoers/iolog_util.c:139 #, c-format msgid "%s: runas group field is missing" msgstr "%s:缺少 runas 组 字段" -#: plugins/sudoers/ldap.c:176 plugins/sudoers/ldap_conf.c:294 +#: plugins/sudoers/ldap.c:178 plugins/sudoers/ldap_conf.c:296 msgid "starttls not supported when using ldaps" msgstr "使用 ldaps 时不支持 starttls" -#: plugins/sudoers/ldap.c:247 +#: plugins/sudoers/ldap.c:249 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "无法初始化 SSL 证书和密钥数据库:%s" -#: plugins/sudoers/ldap.c:250 +#: plugins/sudoers/ldap.c:252 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "要使用 SSL,您必须在 %s 中设置 TLS_CERT" -#: plugins/sudoers/ldap.c:1612 +#: plugins/sudoers/ldap.c:1620 #, c-format msgid "unable to initialize LDAP: %s" msgstr "无法初始化 LDAP:%s" -#: plugins/sudoers/ldap.c:1648 +#: plugins/sudoers/ldap.c:1656 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "指定了 start_tls,但 LDAP 库不支持 ldap_start_tls_s() 或 ldap_start_tls_s_np()" -#: plugins/sudoers/ldap.c:1785 plugins/sudoers/parse_ldif.c:735 +#: plugins/sudoers/ldap.c:1793 plugins/sudoers/parse_ldif.c:734 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "无效的 sudoOrder 属性:%s" -#: plugins/sudoers/ldap_conf.c:203 +#: plugins/sudoers/ldap_conf.c:205 msgid "sudo_ldap_conf_add_ports: port too large" msgstr "sudo_ldap_conf_add_ports:端口太大" -#: plugins/sudoers/ldap_conf.c:263 +#: plugins/sudoers/ldap_conf.c:265 #, c-format msgid "unsupported LDAP uri type: %s" msgstr "不支持的 LDAP URI 类型:%s" -#: plugins/sudoers/ldap_conf.c:290 +#: plugins/sudoers/ldap_conf.c:292 msgid "unable to mix ldap and ldaps URIs" msgstr "无法混合 ldap 和 ldaps URI" -#: plugins/sudoers/ldap_util.c:454 plugins/sudoers/ldap_util.c:456 +#: plugins/sudoers/ldap_util.c:456 plugins/sudoers/ldap_util.c:458 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "无法转换 sudoOption: %s%s%s" -#: plugins/sudoers/linux_audit.c:57 +#: plugins/sudoers/linux_audit.c:59 msgid "unable to open audit system" msgstr "无法打开审核系统" -#: plugins/sudoers/linux_audit.c:98 +#: plugins/sudoers/linux_audit.c:100 msgid "unable to send audit message" msgstr "无法发送审核消息" -#: plugins/sudoers/logging.c:113 +#: plugins/sudoers/logging.c:120 #, c-format msgid "%8s : %s" msgstr "%8s:%s" -#: plugins/sudoers/logging.c:141 +#: plugins/sudoers/logging.c:148 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s:(命令继续执行) %s" -#: plugins/sudoers/logging.c:170 +#: plugins/sudoers/logging.c:177 #, c-format msgid "unable to open log file: %s" msgstr "无法打开日志文件:%s" -#: plugins/sudoers/logging.c:178 +#: plugins/sudoers/logging.c:185 #, c-format msgid "unable to lock log file: %s" msgstr "无法锁定日志文件:%s" -#: plugins/sudoers/logging.c:211 +#: plugins/sudoers/logging.c:218 #, c-format msgid "unable to write log file: %s" msgstr "无法写入日志文件: %s" -#: plugins/sudoers/logging.c:240 +#: plugins/sudoers/logging.c:248 msgid "No user or host" msgstr "无用户或主机" -#: plugins/sudoers/logging.c:242 +#: plugins/sudoers/logging.c:250 msgid "validation failure" msgstr "校验失败" -#: plugins/sudoers/logging.c:249 +#: plugins/sudoers/logging.c:261 msgid "user NOT in sudoers" msgstr "用户不在 sudoers 中" -#: plugins/sudoers/logging.c:251 +#: plugins/sudoers/logging.c:263 msgid "user NOT authorized on host" msgstr "用户未获得此主机上的授权" -#: plugins/sudoers/logging.c:253 +#: plugins/sudoers/logging.c:265 msgid "command not allowed" msgstr "命令禁止使用" -#: plugins/sudoers/logging.c:288 +#: plugins/sudoers/logging.c:301 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s 不在 sudoers 文件中。此事将被报告。\n" -#: plugins/sudoers/logging.c:291 +#: plugins/sudoers/logging.c:304 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s 无权在 %s 上运行 sudo。此事将被报告。\n" -#: plugins/sudoers/logging.c:295 +#: plugins/sudoers/logging.c:308 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "对不起,用户 %s 不能在 %s 上运行 sudo。\n" -#: plugins/sudoers/logging.c:298 +#: plugins/sudoers/logging.c:311 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "对不起,用户 %1$s 无权以 %5$s%6$s%7$s 的身份在 %8$s 上执行 %2$s%3$s%4$s。\n" -#: plugins/sudoers/logging.c:335 plugins/sudoers/sudoers.c:438 -#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:442 -#: plugins/sudoers/sudoers.c:444 plugins/sudoers/sudoers.c:599 -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/logging.c:348 plugins/sudoers/sudoers.c:442 +#: plugins/sudoers/sudoers.c:444 plugins/sudoers/sudoers.c:446 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:603 +#: plugins/sudoers/sudoers.c:605 #, c-format msgid "%s: command not found" msgstr "%s:找不到命令" -#: plugins/sudoers/logging.c:337 plugins/sudoers/sudoers.c:434 +#: plugins/sudoers/logging.c:350 plugins/sudoers/sudoers.c:438 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -1534,56 +1560,52 @@ "忽略在“.”中找到的“%s”\n" "请使用“sudo ./%s”,如果这是您想运行的“%s”。" -#: plugins/sudoers/logging.c:354 +#: plugins/sudoers/logging.c:367 msgid "authentication failure" msgstr "认证失败" -#: plugins/sudoers/logging.c:380 +#: plugins/sudoers/logging.c:393 msgid "a password is required" msgstr "需要密码" -#: plugins/sudoers/logging.c:443 +#: plugins/sudoers/logging.c:463 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "%u 次错误密码尝试" -#: plugins/sudoers/logging.c:666 -msgid "unable to fork" -msgstr "无法执行 fork" +#: plugins/sudoers/logging.c:728 +#, c-format +msgid "unable to dup stdin: %m" +msgstr "无法 dup stdin:%m" -#: plugins/sudoers/logging.c:674 plugins/sudoers/logging.c:726 +#: plugins/sudoers/logging.c:768 +#, c-format +msgid "unable to execute %s: %m" +msgstr "无法执行 %s:%m" + +#: plugins/sudoers/logging.c:809 plugins/sudoers/logging.c:865 #, c-format msgid "unable to fork: %m" msgstr "无法执行 fork:%m" -#: plugins/sudoers/logging.c:716 +#: plugins/sudoers/logging.c:855 #, c-format msgid "unable to open pipe: %m" msgstr "无法打开管道:%m" -#: plugins/sudoers/logging.c:741 -#, c-format -msgid "unable to dup stdin: %m" -msgstr "无法 dup stdin:%m" - -#: plugins/sudoers/logging.c:779 -#, c-format -msgid "unable to execute %s: %m" -msgstr "无法执行 %s:%m" - -#: plugins/sudoers/match.c:874 +#: plugins/sudoers/match_digest.c:103 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "%s(%s) 的摘要不是 %s 形式" -#: plugins/sudoers/mkdir_parents.c:75 plugins/sudoers/sudoers.c:918 -#: plugins/sudoers/visudo.c:421 plugins/sudoers/visudo.c:717 +#: plugins/sudoers/mkdir_parents.c:77 plugins/sudoers/sudoers.c:943 +#: plugins/sudoers/visudo.c:437 plugins/sudoers/visudo.c:733 #, c-format msgid "unable to stat %s" msgstr "无法 stat %s" -#: plugins/sudoers/parse.c:444 +#: plugins/sudoers/parse.c:449 #, c-format msgid "" "\n" @@ -1592,7 +1614,7 @@ "\n" "LDAP 角色:%s\n" -#: plugins/sudoers/parse.c:447 +#: plugins/sudoers/parse.c:452 #, c-format msgid "" "\n" @@ -1601,98 +1623,98 @@ "\n" "Sudoers 条目:\n" -#: plugins/sudoers/parse.c:449 +#: plugins/sudoers/parse.c:454 #, c-format msgid " RunAsUsers: " msgstr " RunAs 用户:" -#: plugins/sudoers/parse.c:464 +#: plugins/sudoers/parse.c:469 #, c-format msgid " RunAsGroups: " msgstr " RunAs 组:" -#: plugins/sudoers/parse.c:474 +#: plugins/sudoers/parse.c:479 #, c-format msgid " Options: " msgstr " 选项:" -#: plugins/sudoers/parse.c:528 +#: plugins/sudoers/parse.c:529 #, c-format msgid " Commands:\n" msgstr " 命令:\n" -#: plugins/sudoers/parse.c:719 +#: plugins/sudoers/parse.c:720 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "匹配 %2$s 上 %1$s 的默认条目:\n" -#: plugins/sudoers/parse.c:737 +#: plugins/sudoers/parse.c:738 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "%s Runas 和命令特定的默认值:\n" -#: plugins/sudoers/parse.c:755 +#: plugins/sudoers/parse.c:756 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "用户 %s 可以在 %s 上运行以下命令:\n" -#: plugins/sudoers/parse.c:770 +#: plugins/sudoers/parse.c:771 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "用户 %s 无权在 %s 上运行 sudo。\n" -#: plugins/sudoers/parse_ldif.c:145 -#, c-format -msgid "ignoring invalid attribute value: %s" -msgstr "将忽略无效的属性值:%s" - -#: plugins/sudoers/parse_ldif.c:584 +#: plugins/sudoers/parse_ldif.c:604 #, c-format msgid "ignoring incomplete sudoRole: cn: %s" msgstr "将忽略不完整的 sudoRole:cn:%s" -#: plugins/sudoers/policy.c:88 plugins/sudoers/policy.c:114 +#: plugins/sudoers/parse_ldif.c:664 +#, c-format +msgid "invalid LDIF attribute: %s" +msgstr "无效的 LDIF 属性:%s" + +#: plugins/sudoers/policy.c:90 plugins/sudoers/policy.c:116 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "sudo 前端设置了无效的 %.*s" -#: plugins/sudoers/policy.c:293 plugins/sudoers/testsudoers.c:278 +#: plugins/sudoers/policy.c:295 plugins/sudoers/testsudoers.c:280 msgid "unable to parse network address list" msgstr "无法解析网络地址列表" -#: plugins/sudoers/policy.c:437 +#: plugins/sudoers/policy.c:439 msgid "user name not set by sudo front-end" msgstr "用户名未通过 sudo 前端设置" -#: plugins/sudoers/policy.c:441 -msgid "user ID not set by sudo front-end" +#: plugins/sudoers/policy.c:443 +msgid "user-ID not set by sudo front-end" msgstr "用户 ID 未通过 sudo 前端设置" -#: plugins/sudoers/policy.c:445 -msgid "group ID not set by sudo front-end" +#: plugins/sudoers/policy.c:447 +msgid "group-ID not set by sudo front-end" msgstr "组 ID 未通过 sudo 前端设置" -#: plugins/sudoers/policy.c:449 +#: plugins/sudoers/policy.c:451 msgid "host name not set by sudo front-end" msgstr "主机名未通过 sudo 前端设置" -#: plugins/sudoers/policy.c:802 plugins/sudoers/visudo.c:220 -#: plugins/sudoers/visudo.c:851 +#: plugins/sudoers/policy.c:808 plugins/sudoers/visudo.c:236 +#: plugins/sudoers/visudo.c:867 #, c-format msgid "unable to execute %s" msgstr "无法执行 %s" -#: plugins/sudoers/policy.c:933 +#: plugins/sudoers/policy.c:939 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Sudoers 策略插件版本 %s\n" -#: plugins/sudoers/policy.c:935 +#: plugins/sudoers/policy.c:941 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Sudoers 文件语法版本 %d\n" -#: plugins/sudoers/policy.c:939 +#: plugins/sudoers/policy.c:945 #, c-format msgid "" "\n" @@ -1701,363 +1723,367 @@ "\n" "Sudoers 路径:%s\n" -#: plugins/sudoers/policy.c:942 +#: plugins/sudoers/policy.c:948 #, c-format msgid "nsswitch path: %s\n" msgstr "nsswitch 路径:%s\n" -#: plugins/sudoers/policy.c:944 +#: plugins/sudoers/policy.c:950 #, c-format msgid "ldap.conf path: %s\n" msgstr "ldap.conf 路径:%s\n" -#: plugins/sudoers/policy.c:945 +#: plugins/sudoers/policy.c:951 #, c-format msgid "ldap.secret path: %s\n" msgstr "ldap.secret 路径:%s\n" -#: plugins/sudoers/policy.c:978 +#: plugins/sudoers/policy.c:984 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "无法注册类型为 %d 的钩子(hook)(版本 %d.%d)" -#: plugins/sudoers/pwutil.c:220 plugins/sudoers/pwutil.c:239 +#: plugins/sudoers/pwutil.c:222 plugins/sudoers/pwutil.c:240 #, c-format -msgid "unable to cache uid %u, out of memory" -msgstr "无法缓存用户 ID %u,内存不足" +msgid "unable to cache uid %u" +msgstr "无法缓存用户 ID %u" -#: plugins/sudoers/pwutil.c:233 +#: plugins/sudoers/pwutil.c:234 #, c-format msgid "unable to cache uid %u, already exists" msgstr "无法缓存用户 ID %u,已存在" -#: plugins/sudoers/pwutil.c:293 plugins/sudoers/pwutil.c:311 -#: plugins/sudoers/pwutil.c:373 plugins/sudoers/pwutil.c:418 +#: plugins/sudoers/pwutil.c:294 plugins/sudoers/pwutil.c:312 +#: plugins/sudoers/pwutil.c:375 plugins/sudoers/pwutil.c:420 #, c-format -msgid "unable to cache user %s, out of memory" -msgstr "无法缓存用户 %s,内存不足" +msgid "unable to cache user %s" +msgstr "无法缓存用户 %s" -#: plugins/sudoers/pwutil.c:306 +#: plugins/sudoers/pwutil.c:307 #, c-format msgid "unable to cache user %s, already exists" msgstr "无法缓存用户 %s,已存在" -#: plugins/sudoers/pwutil.c:537 plugins/sudoers/pwutil.c:556 +#: plugins/sudoers/pwutil.c:539 plugins/sudoers/pwutil.c:557 #, c-format -msgid "unable to cache gid %u, out of memory" -msgstr "无法缓存组 ID %u,内存不足" +msgid "unable to cache gid %u" +msgstr "无法缓存组 ID %u" -#: plugins/sudoers/pwutil.c:550 +#: plugins/sudoers/pwutil.c:551 #, c-format msgid "unable to cache gid %u, already exists" msgstr "无法缓存组 ID %u,已存在" #: plugins/sudoers/pwutil.c:604 plugins/sudoers/pwutil.c:622 -#: plugins/sudoers/pwutil.c:669 plugins/sudoers/pwutil.c:711 +#: plugins/sudoers/pwutil.c:670 plugins/sudoers/pwutil.c:712 #, c-format -msgid "unable to cache group %s, out of memory" -msgstr "无法缓存组 %s,内存不足" +msgid "unable to cache group %s" +msgstr "无法缓存组 %s" #: plugins/sudoers/pwutil.c:617 #, c-format msgid "unable to cache group %s, already exists" msgstr "无法缓存组 %s,已存在" -#: plugins/sudoers/pwutil.c:837 plugins/sudoers/pwutil.c:889 -#: plugins/sudoers/pwutil.c:940 plugins/sudoers/pwutil.c:993 +#: plugins/sudoers/pwutil.c:839 plugins/sudoers/pwutil.c:891 +#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:994 #, c-format msgid "unable to cache group list for %s, already exists" msgstr "无法缓存组列表 %s,已存在" -#: plugins/sudoers/pwutil.c:843 plugins/sudoers/pwutil.c:894 -#: plugins/sudoers/pwutil.c:946 plugins/sudoers/pwutil.c:998 +#: plugins/sudoers/pwutil.c:845 plugins/sudoers/pwutil.c:896 +#: plugins/sudoers/pwutil.c:947 plugins/sudoers/pwutil.c:999 #, c-format -msgid "unable to cache group list for %s, out of memory" -msgstr "无法缓存组列表 %s,内存不足" +msgid "unable to cache group list for %s" +msgstr "无法缓存组列表 %s" -#: plugins/sudoers/pwutil.c:883 +#: plugins/sudoers/pwutil.c:885 #, c-format msgid "unable to parse groups for %s" msgstr "无法对 %s 解析组" -#: plugins/sudoers/pwutil.c:987 +#: plugins/sudoers/pwutil.c:988 #, c-format msgid "unable to parse gids for %s" msgstr "无法解析 %s 的组 ID" -#: plugins/sudoers/set_perms.c:118 plugins/sudoers/set_perms.c:474 -#: plugins/sudoers/set_perms.c:917 plugins/sudoers/set_perms.c:1244 -#: plugins/sudoers/set_perms.c:1561 +#: plugins/sudoers/set_perms.c:120 plugins/sudoers/set_perms.c:478 +#: plugins/sudoers/set_perms.c:921 plugins/sudoers/set_perms.c:1254 +#: plugins/sudoers/set_perms.c:1573 msgid "perm stack overflow" msgstr "权限堆栈上溢" -#: plugins/sudoers/set_perms.c:126 plugins/sudoers/set_perms.c:405 -#: plugins/sudoers/set_perms.c:482 plugins/sudoers/set_perms.c:784 -#: plugins/sudoers/set_perms.c:925 plugins/sudoers/set_perms.c:1168 -#: plugins/sudoers/set_perms.c:1252 plugins/sudoers/set_perms.c:1494 -#: plugins/sudoers/set_perms.c:1569 plugins/sudoers/set_perms.c:1659 +#: plugins/sudoers/set_perms.c:128 plugins/sudoers/set_perms.c:409 +#: plugins/sudoers/set_perms.c:486 plugins/sudoers/set_perms.c:788 +#: plugins/sudoers/set_perms.c:929 plugins/sudoers/set_perms.c:1178 +#: plugins/sudoers/set_perms.c:1262 plugins/sudoers/set_perms.c:1506 +#: plugins/sudoers/set_perms.c:1581 plugins/sudoers/set_perms.c:1672 msgid "perm stack underflow" msgstr "权限堆栈下溢" -#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:528 -#: plugins/sudoers/set_perms.c:1303 plugins/sudoers/set_perms.c:1601 +#: plugins/sudoers/set_perms.c:187 plugins/sudoers/set_perms.c:532 +#: plugins/sudoers/set_perms.c:1315 plugins/sudoers/set_perms.c:1614 msgid "unable to change to root gid" msgstr "无法切换为 root 组 ID" -#: plugins/sudoers/set_perms.c:274 plugins/sudoers/set_perms.c:625 -#: plugins/sudoers/set_perms.c:1054 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:278 plugins/sudoers/set_perms.c:629 +#: plugins/sudoers/set_perms.c:1060 plugins/sudoers/set_perms.c:1392 msgid "unable to change to runas gid" msgstr "无法切换为 runas 组 ID" -#: plugins/sudoers/set_perms.c:279 plugins/sudoers/set_perms.c:630 -#: plugins/sudoers/set_perms.c:1059 plugins/sudoers/set_perms.c:1385 +#: plugins/sudoers/set_perms.c:283 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1065 plugins/sudoers/set_perms.c:1397 msgid "unable to set runas group vector" msgstr "无法设置 runas 组向量" -#: plugins/sudoers/set_perms.c:290 plugins/sudoers/set_perms.c:641 -#: plugins/sudoers/set_perms.c:1068 plugins/sudoers/set_perms.c:1394 +#: plugins/sudoers/set_perms.c:294 plugins/sudoers/set_perms.c:645 +#: plugins/sudoers/set_perms.c:1074 plugins/sudoers/set_perms.c:1406 msgid "unable to change to runas uid" msgstr "无法切换为 runas 用户 ID" -#: plugins/sudoers/set_perms.c:308 plugins/sudoers/set_perms.c:659 -#: plugins/sudoers/set_perms.c:1084 plugins/sudoers/set_perms.c:1410 +#: plugins/sudoers/set_perms.c:312 plugins/sudoers/set_perms.c:663 +#: plugins/sudoers/set_perms.c:1090 plugins/sudoers/set_perms.c:1422 msgid "unable to change to sudoers gid" msgstr "无法切换为 sudoers 组 ID" -#: plugins/sudoers/set_perms.c:392 plugins/sudoers/set_perms.c:771 -#: plugins/sudoers/set_perms.c:1155 plugins/sudoers/set_perms.c:1481 -#: plugins/sudoers/set_perms.c:1646 +#: plugins/sudoers/set_perms.c:396 plugins/sudoers/set_perms.c:775 +#: plugins/sudoers/set_perms.c:1165 plugins/sudoers/set_perms.c:1493 +#: plugins/sudoers/set_perms.c:1659 msgid "too many processes" msgstr "进程过多" -#: plugins/sudoers/solaris_audit.c:56 +#: plugins/sudoers/solaris_audit.c:58 msgid "unable to get current working directory" msgstr "无法获取当前工作目录" -#: plugins/sudoers/solaris_audit.c:64 +#: plugins/sudoers/solaris_audit.c:66 #, c-format msgid "truncated audit path user_cmnd: %s" msgstr "截断的审核路径 user_cmnd:%s" -#: plugins/sudoers/solaris_audit.c:71 +#: plugins/sudoers/solaris_audit.c:73 #, c-format msgid "truncated audit path argv[0]: %s" msgstr "截断的审核路径 argv[0]:%s" -#: plugins/sudoers/solaris_audit.c:120 +#: plugins/sudoers/solaris_audit.c:122 msgid "audit_failure message too long" msgstr "audit_failure(审核失败)消息过长" -#: plugins/sudoers/sssd.c:563 +#: plugins/sudoers/sssd.c:564 msgid "unable to initialize SSS source. Is SSSD installed on your machine?" msgstr "无法初始化 SSS 资源。您的计算机上安装 SSSD 了吗?" -#: plugins/sudoers/sssd.c:571 plugins/sudoers/sssd.c:580 -#: plugins/sudoers/sssd.c:589 plugins/sudoers/sssd.c:598 -#: plugins/sudoers/sssd.c:607 +#: plugins/sudoers/sssd.c:572 plugins/sudoers/sssd.c:581 +#: plugins/sudoers/sssd.c:590 plugins/sudoers/sssd.c:599 +#: plugins/sudoers/sssd.c:608 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "无法在 %s 中找到符号“%s”" -#: plugins/sudoers/sudoers.c:208 plugins/sudoers/sudoers.c:864 +#: plugins/sudoers/sudoers.c:212 plugins/sudoers/sudoers.c:871 msgid "problem with defaults entries" msgstr "默认条目有问题" -#: plugins/sudoers/sudoers.c:212 +#: plugins/sudoers/sudoers.c:216 msgid "no valid sudoers sources found, quitting" msgstr "没有找到有效的 sudoers 资源,退出" -#: plugins/sudoers/sudoers.c:250 +#: plugins/sudoers/sudoers.c:254 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers 指定 root 不允许执行 sudo" -#: plugins/sudoers/sudoers.c:308 +#: plugins/sudoers/sudoers.c:312 msgid "you are not permitted to use the -C option" msgstr "您无权使用 -C 选项" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:359 #, c-format msgid "timestamp owner (%s): No such user" msgstr "时间戳所有者(%s):无此用户" -#: plugins/sudoers/sudoers.c:370 +#: plugins/sudoers/sudoers.c:374 msgid "no tty" msgstr "无终端" -#: plugins/sudoers/sudoers.c:371 +#: plugins/sudoers/sudoers.c:375 msgid "sorry, you must have a tty to run sudo" msgstr "抱歉,您必须拥有一个终端来执行 sudo" -#: plugins/sudoers/sudoers.c:433 +#: plugins/sudoers/sudoers.c:437 msgid "command in current directory" msgstr "当前目录中的命令" -#: plugins/sudoers/sudoers.c:452 +#: plugins/sudoers/sudoers.c:456 msgid "sorry, you are not allowed set a command timeout" msgstr "抱歉,您无权设置超时时间" -#: plugins/sudoers/sudoers.c:460 +#: plugins/sudoers/sudoers.c:464 msgid "sorry, you are not allowed to preserve the environment" msgstr "抱歉,您无权保留环境" -#: plugins/sudoers/sudoers.c:808 +#: plugins/sudoers/sudoers.c:815 msgid "command too long" msgstr "命令过长" -#: plugins/sudoers/sudoers.c:922 +#: plugins/sudoers/sudoers.c:947 #, c-format msgid "%s is not a regular file" msgstr "%s 不是常规文件" -#: plugins/sudoers/sudoers.c:926 plugins/sudoers/timestamp.c:257 toke.l:965 +#: plugins/sudoers/sudoers.c:951 plugins/sudoers/timestamp.c:259 toke.l:967 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s 属于用户 ID %u,应为 %u" -#: plugins/sudoers/sudoers.c:930 toke.l:970 +#: plugins/sudoers/sudoers.c:955 toke.l:972 #, c-format msgid "%s is world writable" msgstr "%s 可被任何人写" -#: plugins/sudoers/sudoers.c:934 toke.l:973 +#: plugins/sudoers/sudoers.c:959 toke.l:975 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s 属于组 ID %u,应为 %u" -#: plugins/sudoers/sudoers.c:967 +#: plugins/sudoers/sudoers.c:992 #, c-format msgid "only root can use \"-c %s\"" msgstr "只有 root 才能使用“-c %s”" -#: plugins/sudoers/sudoers.c:986 +#: plugins/sudoers/sudoers.c:1011 #, c-format msgid "unknown login class: %s" msgstr "未知的登录类别:%s" -#: plugins/sudoers/sudoers.c:1069 plugins/sudoers/sudoers.c:1083 +#: plugins/sudoers/sudoers.c:1096 plugins/sudoers/sudoers.c:1110 #, c-format msgid "unable to resolve host %s" msgstr "无法解析主机:%s" -#: plugins/sudoers/sudoreplay.c:248 +#: plugins/sudoers/sudoreplay.c:250 #, c-format msgid "invalid filter option: %s" msgstr "无效的过滤器选项:%s" -#: plugins/sudoers/sudoreplay.c:261 +#: plugins/sudoers/sudoreplay.c:263 #, c-format msgid "invalid max wait: %s" msgstr "无效的最大等待:%s" -#: plugins/sudoers/sudoreplay.c:284 +#: plugins/sudoers/sudoreplay.c:286 #, c-format msgid "invalid speed factor: %s" msgstr "无法的速度系数:%s" -#: plugins/sudoers/sudoreplay.c:319 +#: plugins/sudoers/sudoreplay.c:321 #, c-format msgid "%s/%.2s/%.2s/%.2s/timing: %s" msgstr "%s/%.2s/%.2s/%.2s/时序:%s" -#: plugins/sudoers/sudoreplay.c:325 +#: plugins/sudoers/sudoreplay.c:326 +#, c-format +msgid "%s/timing: %s" +msgstr "%s/时序:%s" + +#: plugins/sudoers/sudoreplay.c:330 #, c-format msgid "%s/%s/timing: %s" msgstr "%s/%s/时序:%s" -#: plugins/sudoers/sudoreplay.c:341 +#: plugins/sudoers/sudoreplay.c:346 #, c-format msgid "Replaying sudo session: %s" msgstr "回放 sudo 会话:%s" -#: plugins/sudoers/sudoreplay.c:539 plugins/sudoers/sudoreplay.c:586 -#: plugins/sudoers/sudoreplay.c:783 plugins/sudoers/sudoreplay.c:892 -#: plugins/sudoers/sudoreplay.c:977 plugins/sudoers/sudoreplay.c:992 -#: plugins/sudoers/sudoreplay.c:999 plugins/sudoers/sudoreplay.c:1006 -#: plugins/sudoers/sudoreplay.c:1013 plugins/sudoers/sudoreplay.c:1020 -#: plugins/sudoers/sudoreplay.c:1168 +#: plugins/sudoers/sudoreplay.c:544 plugins/sudoers/sudoreplay.c:591 +#: plugins/sudoers/sudoreplay.c:789 plugins/sudoers/sudoreplay.c:898 +#: plugins/sudoers/sudoreplay.c:983 plugins/sudoers/sudoreplay.c:998 +#: plugins/sudoers/sudoreplay.c:1005 plugins/sudoers/sudoreplay.c:1012 +#: plugins/sudoers/sudoreplay.c:1019 plugins/sudoers/sudoreplay.c:1026 +#: plugins/sudoers/sudoreplay.c:1174 msgid "unable to add event to queue" msgstr "无法将事件添加到队列" -#: plugins/sudoers/sudoreplay.c:654 +#: plugins/sudoers/sudoreplay.c:659 msgid "unable to set tty to raw mode" msgstr "无法将终端设为原始模式" -#: plugins/sudoers/sudoreplay.c:705 -#, c-format +#: plugins/sudoers/sudoreplay.c:710 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "警告:您的终端尺寸太小,不能正常地回放日志。\n" -#: plugins/sudoers/sudoreplay.c:706 +#: plugins/sudoers/sudoreplay.c:711 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "日志的几何尺寸为 %dx%d,您终端的几何尺寸为 %dx%d。" -#: plugins/sudoers/sudoreplay.c:734 +#: plugins/sudoers/sudoreplay.c:739 msgid "Replay finished, press any key to restore the terminal." msgstr "回放完成,请按任意键返回终端。" -#: plugins/sudoers/sudoreplay.c:766 +#: plugins/sudoers/sudoreplay.c:772 #, c-format msgid "invalid timing file line: %s" msgstr "无效的时序文件行:%s" -#: plugins/sudoers/sudoreplay.c:1202 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1208 plugins/sudoers/sudoreplay.c:1233 #, c-format msgid "ambiguous expression \"%s\"" msgstr "有歧义的表达式“%s”" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1255 msgid "unmatched ')' in expression" msgstr "表达式中的“)”不匹配" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1259 #, c-format msgid "unknown search term \"%s\"" msgstr "未知的搜索词“%s”" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "%s requires an argument" msgstr "%s 需要参数" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1512 +#: plugins/sudoers/sudoreplay.c:1277 plugins/sudoers/sudoreplay.c:1518 #, c-format msgid "invalid regular expression: %s" msgstr "无效的正则表达式:%s" -#: plugins/sudoers/sudoreplay.c:1275 +#: plugins/sudoers/sudoreplay.c:1281 #, c-format msgid "could not parse date \"%s\"" msgstr "无法解析日期“%s”" -#: plugins/sudoers/sudoreplay.c:1284 +#: plugins/sudoers/sudoreplay.c:1290 msgid "unmatched '(' in expression" msgstr "表达式中的“(”不匹配" -#: plugins/sudoers/sudoreplay.c:1286 +#: plugins/sudoers/sudoreplay.c:1292 msgid "illegal trailing \"or\"" msgstr "非法的结尾字符“or”" -#: plugins/sudoers/sudoreplay.c:1288 +#: plugins/sudoers/sudoreplay.c:1294 msgid "illegal trailing \"!\"" msgstr "非法的结尾字符“!”" -#: plugins/sudoers/sudoreplay.c:1338 +#: plugins/sudoers/sudoreplay.c:1344 #, c-format msgid "unknown search type %d" msgstr "未知的搜索类型 %d" -#: plugins/sudoers/sudoreplay.c:1605 +#: plugins/sudoers/sudoreplay.c:1611 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "用法:%s [-hnRS] [-d 目录] [-m 数值] [-s 数值] ID\n" -#: plugins/sudoers/sudoreplay.c:1608 +#: plugins/sudoers/sudoreplay.c:1614 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "用法:%s [-h] [-d 目录] -l [搜索表达式]\n" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1623 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2066,35 +2092,39 @@ "%s - 回放 sudo 会话记录\n" "\n" -#: plugins/sudoers/sudoreplay.c:1619 +#: plugins/sudoers/sudoreplay.c:1625 msgid "" "\n" "Options:\n" -" -d, --directory=dir specify directory for session logs\n" -" -f, --filter=filter specify which I/O type(s) to display\n" -" -h, --help display help message and exit\n" -" -l, --list list available session IDs, with optional expression\n" -" -m, --max-wait=num max number of seconds to wait between events\n" -" -S, --suspend-wait wait while the command was suspended\n" -" -s, --speed=num speed up or slow down output\n" -" -V, --version display version information and exit" +" -d, --directory=dir specify directory for session logs\n" +" -f, --filter=filter specify which I/O type(s) to display\n" +" -h, --help display help message and exit\n" +" -l, --list list available session IDs, with optional expression\n" +" -m, --max-wait=num max number of seconds to wait between events\n" +" -n, --non-interactive no prompts, session is sent to the standard output\n" +" -R, --no-resize do not attempt to re-size the terminal\n" +" -S, --suspend-wait wait while the command was suspended\n" +" -s, --speed=num speed up or slow down output\n" +" -V, --version display version information and exit" msgstr "" "\n" "选项:\n" -" -d, --directory=目录 指定会话日志目录\n" -" -f, --filter=过滤器 指定要显示的 I/O 类型\n" -" -h, --help 显示帮助信息并退出\n" -" -l, --list 列出可用会话 ID,可加表达式限定\n" -" -m, --max-wait=数值 事件间等待的最大秒数\n" -" -S, --suspend-wait 在命令挂起时等待\n" -" -s, --speed=数值 加速或减慢输出\n" -" -V, --version 显示版本信息并退出" +" -d, --directory=目录 指定会话日志目录\n" +" -f, --filter=过滤器 指定要显示的 I/O 类型\n" +" -h, --help 显示帮助信息并退出\n" +" -l, --list 列出可用会话 ID,可加表达式限定\n" +" -m, --max-wait=数值 事件间等待的最大秒数\n" +" -n, --non-interactive 不进行提示,会话由标准输出送出\n" +" -R, --no-resize 不要尝试改变终端尺寸\n" +" -S, --suspend-wait 在命令挂起时等待\n" +" -s, --speed=数值 加速或减慢输出\n" +" -V, --version 显示版本信息并退出" -#: plugins/sudoers/testsudoers.c:360 +#: plugins/sudoers/testsudoers.c:362 msgid "\thost unmatched" msgstr "\t主机不匹配" -#: plugins/sudoers/testsudoers.c:363 +#: plugins/sudoers/testsudoers.c:365 msgid "" "\n" "Command allowed" @@ -2102,7 +2132,7 @@ "\n" "命令允许" -#: plugins/sudoers/testsudoers.c:364 +#: plugins/sudoers/testsudoers.c:366 msgid "" "\n" "Command denied" @@ -2110,7 +2140,7 @@ "\n" "命令被拒" -#: plugins/sudoers/testsudoers.c:364 +#: plugins/sudoers/testsudoers.c:366 msgid "" "\n" "Command unmatched" @@ -2118,127 +2148,127 @@ "\n" "命令不匹配" -#: plugins/sudoers/timestamp.c:265 +#: plugins/sudoers/timestamp.c:267 #, c-format msgid "%s is group writable" msgstr "%s 可被组写" -#: plugins/sudoers/timestamp.c:341 +#: plugins/sudoers/timestamp.c:343 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "无法将时间戳文件截短为 %lld 字节" -#: plugins/sudoers/timestamp.c:827 plugins/sudoers/timestamp.c:919 -#: plugins/sudoers/visudo.c:482 plugins/sudoers/visudo.c:488 +#: plugins/sudoers/timestamp.c:829 plugins/sudoers/timestamp.c:921 +#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:504 msgid "unable to read the clock" msgstr "无法读取时钟" -#: plugins/sudoers/timestamp.c:838 +#: plugins/sudoers/timestamp.c:840 msgid "ignoring time stamp from the future" msgstr "将忽略超前的时间戳" -#: plugins/sudoers/timestamp.c:861 +#: plugins/sudoers/timestamp.c:863 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "时间戳太超前:%20.20s" -#: plugins/sudoers/timestamp.c:983 +#: plugins/sudoers/timestamp.c:985 #, c-format msgid "unable to lock time stamp file %s" msgstr "无法锁定时间戳文件 %s" -#: plugins/sudoers/timestamp.c:1027 plugins/sudoers/timestamp.c:1047 +#: plugins/sudoers/timestamp.c:1029 plugins/sudoers/timestamp.c:1049 #, c-format msgid "lecture status path too long: %s/%s" msgstr "致辞(lecture)状态路径过长:%s/%s" -#: plugins/sudoers/visudo.c:216 +#: plugins/sudoers/visudo.c:232 msgid "the -x option will be removed in a future release" msgstr "未来版本中 -x 选项会移除" -#: plugins/sudoers/visudo.c:217 +#: plugins/sudoers/visudo.c:233 msgid "please consider using the cvtsudoers utility instead" msgstr "请考虑换用 cvtsudoers 工具" -#: plugins/sudoers/visudo.c:268 plugins/sudoers/visudo.c:650 +#: plugins/sudoers/visudo.c:284 plugins/sudoers/visudo.c:666 #, c-format msgid "press return to edit %s: " msgstr "按回车键编辑 %s:" -#: plugins/sudoers/visudo.c:329 +#: plugins/sudoers/visudo.c:345 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "指定的编辑器(%s)不存在" -#: plugins/sudoers/visudo.c:331 +#: plugins/sudoers/visudo.c:347 #, c-format msgid "no editor found (editor path = %s)" msgstr "未找到编辑器(编辑器路径 = %s)" -#: plugins/sudoers/visudo.c:441 plugins/sudoers/visudo.c:449 +#: plugins/sudoers/visudo.c:457 plugins/sudoers/visudo.c:465 msgid "write error" msgstr "写错误" -#: plugins/sudoers/visudo.c:495 +#: plugins/sudoers/visudo.c:511 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "无法 stat 临时文件(%s),%s 未更改" -#: plugins/sudoers/visudo.c:502 +#: plugins/sudoers/visudo.c:518 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "零长度的临时文件(%s),%s 未更改" -#: plugins/sudoers/visudo.c:508 +#: plugins/sudoers/visudo.c:524 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "编辑器(%s)失败,%s 未更改" -#: plugins/sudoers/visudo.c:530 +#: plugins/sudoers/visudo.c:546 #, c-format msgid "%s unchanged" msgstr "%s 未更改" -#: plugins/sudoers/visudo.c:589 +#: plugins/sudoers/visudo.c:605 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "无法重新打开临时文件(%s),%s 未更改" -#: plugins/sudoers/visudo.c:601 +#: plugins/sudoers/visudo.c:617 #, c-format msgid "unabled to parse temporary file (%s), unknown error" msgstr "无法解析临时文件(%s),未知错误" -#: plugins/sudoers/visudo.c:639 +#: plugins/sudoers/visudo.c:655 #, c-format msgid "internal error, unable to find %s in list!" msgstr "内部错误,在列表中找不到 %s!" -#: plugins/sudoers/visudo.c:719 plugins/sudoers/visudo.c:728 +#: plugins/sudoers/visudo.c:735 plugins/sudoers/visudo.c:744 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "无法将 %s 的 (uid, gid) 设为 (%u, %u)" -#: plugins/sudoers/visudo.c:751 +#: plugins/sudoers/visudo.c:767 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "%s 和 %s 不在同一个文件系统,使用 mv 进行重命名" -#: plugins/sudoers/visudo.c:765 +#: plugins/sudoers/visudo.c:781 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "命令失败:“%s %s %s”,%s 未更改" -#: plugins/sudoers/visudo.c:775 +#: plugins/sudoers/visudo.c:791 #, c-format msgid "error renaming %s, %s unchanged" msgstr "重命名 %s 出错,%s 未更改" -#: plugins/sudoers/visudo.c:796 +#: plugins/sudoers/visudo.c:812 msgid "What now? " msgstr "现在做什么?" -#: plugins/sudoers/visudo.c:810 +#: plugins/sudoers/visudo.c:826 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -2250,66 +2280,66 @@ " 退出,不保存对 sudoers 文件的更改(x)\n" " 退出并将更改保存到 sudoers 文件(危险!)(Q)\n" -#: plugins/sudoers/visudo.c:856 +#: plugins/sudoers/visudo.c:872 #, c-format msgid "unable to run %s" msgstr "无法运行 %s" -#: plugins/sudoers/visudo.c:886 +#: plugins/sudoers/visudo.c:902 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s:错误的所有者(uid, gid),应为 (%u, %u)\n" -#: plugins/sudoers/visudo.c:893 +#: plugins/sudoers/visudo.c:909 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s:权限不正确,模式应该是 0%o\n" -#: plugins/sudoers/visudo.c:950 plugins/sudoers/visudo.c:957 +#: plugins/sudoers/visudo.c:966 plugins/sudoers/visudo.c:973 #, c-format msgid "%s: parsed OK\n" msgstr "%s:解析正确\n" -#: plugins/sudoers/visudo.c:976 +#: plugins/sudoers/visudo.c:992 #, c-format msgid "%s busy, try again later" msgstr "%s 忙,请稍后重试" -#: plugins/sudoers/visudo.c:979 +#: plugins/sudoers/visudo.c:995 #, c-format msgid "unable to lock %s" msgstr "无法锁定 %s" -#: plugins/sudoers/visudo.c:980 +#: plugins/sudoers/visudo.c:996 msgid "Edit anyway? [y/N]" msgstr "仍然编辑?[y/N]" -#: plugins/sudoers/visudo.c:1064 +#: plugins/sudoers/visudo.c:1080 #, c-format msgid "Error: %s:%d cycle in %s \"%s\"" msgstr "错误:%s:%d 在 %s “%s”中循环" -#: plugins/sudoers/visudo.c:1065 +#: plugins/sudoers/visudo.c:1081 #, c-format msgid "Warning: %s:%d cycle in %s \"%s\"" msgstr "警告:%s:%d 在 %s “%s”中循环" -#: plugins/sudoers/visudo.c:1069 +#: plugins/sudoers/visudo.c:1085 #, c-format msgid "Error: %s:%d %s \"%s\" referenced but not defined" msgstr "错误:%s:%d 引用了 %s “%s”但尚未定义" -#: plugins/sudoers/visudo.c:1070 +#: plugins/sudoers/visudo.c:1086 #, c-format msgid "Warning: %s:%d %s \"%s\" referenced but not defined" msgstr "警告:%s:%d 引用了 %s “%s”但尚未定义" -#: plugins/sudoers/visudo.c:1161 +#: plugins/sudoers/visudo.c:1177 #, c-format msgid "Warning: %s:%d unused %s \"%s\"" msgstr "警告:%s:%d 未使用的 %s “%s”" -#: plugins/sudoers/visudo.c:1276 +#: plugins/sudoers/visudo.c:1292 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -2318,7 +2348,7 @@ "%s - 安全地编辑 sudoers 文件\n" "\n" -#: plugins/sudoers/visudo.c:1278 +#: plugins/sudoers/visudo.c:1294 msgid "" "\n" "Options:\n" @@ -2338,10 +2368,22 @@ " -s, --strict 严格语法检查\n" " -V, --version 显示版本信息并退出\n" -#: toke.l:939 +#: toke.l:941 msgid "too many levels of includes" msgstr "include 嵌套层数过多" +#~ msgid "ignoring invalid attribute value: %s" +#~ msgstr "将忽略无效的属性值:%s" + +#~ msgid "unable to cache user %s, out of memory" +#~ msgstr "无法缓存用户 %s,内存不足" + +#~ msgid "unable to cache group %s, out of memory" +#~ msgstr "无法缓存组 %s,内存不足" + +#~ msgid "unable to cache group list for %s, out of memory" +#~ msgstr "无法缓存组列表 %s,内存不足" + #~ msgid "" #~ "\n" #~ "LDAP Role: UNKNOWN\n" Binary files /tmp/tmpxQuIu2/iFUK1R4uMA/sudo-1.8.29/plugins/sudoers/po/zh_TW.mo and /tmp/tmpxQuIu2/W5KRB4HzHp/sudo-1.8.31/plugins/sudoers/po/zh_TW.mo differ diff -Nru sudo-1.8.29/plugins/sudoers/po/zh_TW.po sudo-1.8.31/plugins/sudoers/po/zh_TW.po --- sudo-1.8.29/plugins/sudoers/po/zh_TW.po 2019-10-28 12:31:06.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/po/zh_TW.po 2019-12-31 12:58:36.000000000 +0000 @@ -9,9 +9,9 @@ "Project-Id-Version: sudoers 1.8.29rc1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" "POT-Creation-Date: 2019-10-21 19:55-0600\n" -"PO-Revision-Date: 2019-10-24 21:17+0800\n" +"PO-Revision-Date: 2019-12-23 23:07+0800\n" "Last-Translator: pan93412 \n" -"Language-Team: Chinese (traditional) \n" +"Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1647,7 +1647,7 @@ #: plugins/sudoers/parse.c:720 #, c-format msgid "Matching Defaults entries for %s on %s:\n" -msgstr "比較 %2$s 上 %1$s 的預設條目:\n" +msgstr "比較 %s (%s 上) 的預設條目:\n" #: plugins/sudoers/parse.c:738 #, c-format diff -Nru sudo-1.8.29/plugins/sudoers/regress/parser/check_fill.c sudo-1.8.31/plugins/sudoers/regress/parser/check_fill.c --- sudo-1.8.29/plugins/sudoers/regress/parser/check_fill.c 2019-10-28 12:27:38.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/regress/parser/check_fill.c 2019-11-06 16:36:20.000000000 +0000 @@ -52,6 +52,7 @@ */ YYSTYPE sudoerslval; +bool sudoers_strict; struct fill_test { const char *input; diff -Nru sudo-1.8.29/plugins/sudoers/starttime.c sudo-1.8.31/plugins/sudoers/starttime.c --- sudo-1.8.29/plugins/sudoers/starttime.c 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/starttime.c 2019-12-25 19:19:10.000000000 +0000 @@ -31,7 +31,7 @@ #include #include -#if defined(HAVE_KINFO_PROC_44BSD) || defined (HAVE_KINFO_PROC_OPENBSD) || defined(HAVE_KINFO_PROC2_NETBSD2) +#if defined(HAVE_KINFO_PROC_44BSD) || defined (HAVE_KINFO_PROC_OPENBSD) || defined(HAVE_KINFO_PROC2_NETBSD) # include #elif defined(HAVE_KINFO_PROC_FREEBSD) # include diff -Nru sudo-1.8.29/plugins/sudoers/sudoers.c sudo-1.8.31/plugins/sudoers/sudoers.c --- sudo-1.8.29/plugins/sudoers/sudoers.c 2019-10-28 12:28:53.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/sudoers.c 2019-12-18 16:45:50.000000000 +0000 @@ -105,6 +105,8 @@ static char *runas_user; static char *runas_group; static struct sudo_nss_list *snl; +static bool unknown_runas_uid; +static bool unknown_runas_gid; #ifdef __linux__ static struct rlimit nproclimit; @@ -127,12 +129,12 @@ debug_decl(unlimit_nproc, SUDOERS_DEBUG_UTIL) if (getrlimit(RLIMIT_NPROC, &nproclimit) != 0) - sudo_warn("getrlimit"); + sudo_warn("getrlimit(RLIMIT_NPROC)"); rl.rlim_cur = rl.rlim_max = RLIM_INFINITY; if (setrlimit(RLIMIT_NPROC, &rl) != 0) { rl.rlim_cur = rl.rlim_max = nproclimit.rlim_max; if (setrlimit(RLIMIT_NPROC, &rl) != 0) - sudo_warn("setrlimit"); + sudo_warn("setrlimit(RLIMIT_NPROC)"); } debug_return; #endif /* __linux__ */ @@ -148,7 +150,7 @@ debug_decl(restore_nproc, SUDOERS_DEBUG_UTIL) if (setrlimit(RLIMIT_NPROC, &nproclimit) != 0) - sudo_warn("setrlimit"); + sudo_warn("setrlimit(RLIMIT_NPROC)"); debug_return; #endif /* __linux__ */ @@ -198,7 +200,7 @@ */ sudoers_setlocale(SUDOERS_LOCALE_SUDOERS, &oldlocale); sudo_warn_set_locale_func(sudoers_warn_setlocale); - init_parser(sudoers_file, false); + init_parser(sudoers_file, false, false); TAILQ_FOREACH_SAFE(nss, snl, entries, nss_next) { if (nss->open(nss) == -1 || (nss->parse_tree = nss->parse(nss)) == NULL) { TAILQ_REMOVE(snl, nss, entries); @@ -253,7 +255,7 @@ /* Not an audit event. */ sudo_warnx(U_("sudoers specifies that root is not allowed to sudo")); goto bad; - } + } if (!set_perms(PERM_INITIAL)) goto bad; @@ -336,6 +338,22 @@ } } + /* Defer uid/gid checks until after defaults have been updated. */ + if (unknown_runas_uid && !def_runas_allow_unknown_id) { + audit_failure(NewArgc, NewArgv, N_("unknown user: %s"), + runas_pw->pw_name); + sudo_warnx(U_("unknown user: %s"), runas_pw->pw_name); + goto done; + } + if (runas_gr != NULL) { + if (unknown_runas_gid && !def_runas_allow_unknown_id) { + audit_failure(NewArgc, NewArgv, N_("unknown group: %s"), + runas_gr->gr_name); + sudo_warnx(U_("unknown group: %s"), runas_gr->gr_name); + goto done; + } + } + /* * Look up the timestamp dir owner if one is specified. */ @@ -376,6 +394,13 @@ goto bad; } + /* Check runas user's shell. */ + if (!check_user_shell(runas_pw)) { + log_warningx(SLOG_RAW_MSG, N_("invalid shell for user %s: %s"), + runas_pw->pw_name, runas_pw->pw_shell); + goto bad; + } + /* * We don't reset the environment for sudoedit or if the user * specified the -E command line flag and they have setenv privs. @@ -516,7 +541,7 @@ } if (def_group_plugin) group_plugin_unload(); - init_parser(NULL, false); + init_parser(NULL, false, false); if (ISSET(sudo_mode, (MODE_VALIDATE|MODE_CHECK|MODE_LIST))) { /* ret already set appropriately */ @@ -865,6 +890,14 @@ else user_base = user_cmnd; + /* Convert "sudo sudoedit" -> "sudoedit" */ + if (ISSET(sudo_mode, MODE_RUN) && strcmp(user_base, "sudoedit") == 0) { + CLR(sudo_mode, MODE_RUN); + SET(sudo_mode, MODE_EDIT); + sudo_warnx(U_("sudoedit doesn't need to be run via sudo")); + user_base = user_cmnd = "sudoedit"; + } + TAILQ_FOREACH(nss, snl, entries) { if (!update_defaults(nss->parse_tree, NULL, SETDEF_CMND, false)) { log_warningx(SLOG_SEND_MAIL|SLOG_NO_STDERR, @@ -1149,12 +1182,15 @@ struct passwd *pw = NULL; debug_decl(set_runaspw, SUDOERS_DEBUG_PLUGIN) + unknown_runas_uid = false; if (*user == '#') { const char *errstr; uid_t uid = sudo_strtoid(user + 1, &errstr); if (errstr == NULL) { - if ((pw = sudo_getpwuid(uid)) == NULL) + if ((pw = sudo_getpwuid(uid)) == NULL) { + unknown_runas_uid = true; pw = sudo_fakepwnam(user, user_gid); + } } } if (pw == NULL) { @@ -1180,12 +1216,15 @@ struct group *gr = NULL; debug_decl(set_runasgr, SUDOERS_DEBUG_PLUGIN) + unknown_runas_gid = false; if (*group == '#') { const char *errstr; gid_t gid = sudo_strtoid(group + 1, &errstr); if (errstr == NULL) { - if ((gr = sudo_getgrgid(gid)) == NULL) + if ((gr = sudo_getgrgid(gid)) == NULL) { + unknown_runas_gid = true; gr = sudo_fakegrnam(group); + } } } if (gr == NULL) { diff -Nru sudo-1.8.29/plugins/sudoers/sudoers.h sudo-1.8.31/plugins/sudoers/sudoers.h --- sudo-1.8.29/plugins/sudoers/sudoers.h 2019-10-28 12:28:53.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/sudoers.h 2019-12-10 13:09:55.000000000 +0000 @@ -263,6 +263,7 @@ /* check.c */ int check_user(int validate, int mode); +bool check_user_shell(const struct passwd *pw); bool user_is_exempt(void); /* prompt.c */ @@ -293,6 +294,7 @@ extern int errorlineno; extern bool parse_error; extern bool sudoers_warnings; +extern bool sudoers_strict; /* toke.l */ YY_DECL; diff -Nru sudo-1.8.29/plugins/sudoers/testsudoers.c sudo-1.8.31/plugins/sudoers/testsudoers.c --- sudo-1.8.29/plugins/sudoers/testsudoers.c 2019-10-28 12:28:54.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/testsudoers.c 2019-11-06 16:36:20.000000000 +0000 @@ -281,7 +281,7 @@ } /* Allocate space for data structures in the parser. */ - init_parser("sudoers", false); + init_parser("sudoers", false, true); /* * Set runas passwd/group entries based on command line or sudoers. diff -Nru sudo-1.8.29/plugins/sudoers/toke_util.c sudo-1.8.31/plugins/sudoers/toke_util.c --- sudo-1.8.29/plugins/sudoers/toke_util.c 2019-10-28 12:27:39.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/toke_util.c 2019-11-06 16:36:20.000000000 +0000 @@ -124,6 +124,22 @@ } *dst = '\0'; + /* Check for sudoedit specified as a fully-qualified path. */ + if ((dst = strrchr(sudoerslval.command.cmnd, '/')) != NULL) { + if (strcmp(dst, "/sudoedit") == 0) { + if (sudoers_strict) { + sudoerserror( + N_("sudoedit should not be specified with a path")); + } + free(sudoerslval.command.cmnd); + if ((sudoerslval.command.cmnd = strdup("sudoedit")) == NULL) { + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); + debug_return_bool(false); + } + } + } + debug_return_bool(true); } diff -Nru sudo-1.8.29/plugins/sudoers/visudo.c sudo-1.8.31/plugins/sudoers/visudo.c --- sudo-1.8.29/plugins/sudoers/visudo.c 2019-10-28 12:28:54.000000000 +0000 +++ sudo-1.8.31/plugins/sudoers/visudo.c 2019-11-06 16:36:20.000000000 +0000 @@ -264,7 +264,7 @@ */ if ((sudoersin = open_sudoers(sudoers_file, true, NULL)) == NULL) exit(1); - init_parser(sudoers_file, quiet); + init_parser(sudoers_file, quiet, true); sudoers_setlocale(SUDOERS_LOCALE_SUDOERS, &oldlocale); (void) sudoersparse(); (void) update_defaults(&parsed_policy, NULL, @@ -608,7 +608,7 @@ /* Clean slate for each parse */ if (!init_defaults()) sudo_fatalx(U_("unable to initialize sudoers default values")); - init_parser(sp->path, quiet); + init_parser(sp->path, quiet, true); /* Parse the sudoers temp file(s) */ sudoersrestart(fp); @@ -931,7 +931,7 @@ } if (!init_defaults()) sudo_fatalx(U_("unable to initialize sudoers default values")); - init_parser(sudoers_file, quiet); + init_parser(sudoers_file, quiet, true); sudoers_setlocale(SUDOERS_LOCALE_SUDOERS, &oldlocale); if (sudoersparse() && !parse_error) { if (!quiet) Binary files /tmp/tmpxQuIu2/iFUK1R4uMA/sudo-1.8.29/po/cs.mo and /tmp/tmpxQuIu2/W5KRB4HzHp/sudo-1.8.31/po/cs.mo differ diff -Nru sudo-1.8.29/po/cs.po sudo-1.8.31/po/cs.po --- sudo-1.8.29/po/cs.po 2019-10-28 12:31:06.000000000 +0000 +++ sudo-1.8.31/po/cs.po 2019-12-31 12:58:36.000000000 +0000 @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.8.28b1\n" +"Project-Id-Version: sudo 1.8.29rc1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2019-07-19 11:51-0600\n" -"PO-Revision-Date: 2019-07-22 17:51+02:00\n" +"POT-Creation-Date: 2019-10-21 19:55-0600\n" +"PO-Revision-Date: 2019-10-28 22:38+01:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -42,24 +42,24 @@ #: src/exec_nopty.c:243 src/exec_nopty.c:250 src/exec_nopty.c:257 #: src/exec_nopty.c:264 src/exec_nopty.c:271 src/exec_nopty.c:278 #: src/exec_nopty.c:285 src/exec_nopty.c:292 src/exec_nopty.c:299 -#: src/exec_nopty.c:307 src/exec_nopty.c:469 src/exec_pty.c:783 -#: src/exec_pty.c:792 src/exec_pty.c:849 src/exec_pty.c:999 -#: src/exec_pty.c:1162 src/exec_pty.c:1168 src/exec_pty.c:1177 -#: src/exec_pty.c:1184 src/exec_pty.c:1191 src/exec_pty.c:1198 -#: src/exec_pty.c:1205 src/exec_pty.c:1212 src/exec_pty.c:1219 -#: src/exec_pty.c:1226 src/exec_pty.c:1233 src/exec_pty.c:1240 -#: src/exec_pty.c:1248 src/exec_pty.c:1665 src/load_plugins.c:59 +#: src/exec_nopty.c:307 src/exec_nopty.c:480 src/exec_pty.c:786 +#: src/exec_pty.c:795 src/exec_pty.c:852 src/exec_pty.c:1002 +#: src/exec_pty.c:1165 src/exec_pty.c:1171 src/exec_pty.c:1180 +#: src/exec_pty.c:1187 src/exec_pty.c:1194 src/exec_pty.c:1201 +#: src/exec_pty.c:1208 src/exec_pty.c:1215 src/exec_pty.c:1222 +#: src/exec_pty.c:1229 src/exec_pty.c:1236 src/exec_pty.c:1243 +#: src/exec_pty.c:1251 src/exec_pty.c:1668 src/load_plugins.c:59 #: src/load_plugins.c:72 src/load_plugins.c:225 src/load_plugins.c:246 #: src/load_plugins.c:315 src/load_plugins.c:321 src/load_plugins.c:335 -#: src/load_plugins.c:341 src/parse_args.c:185 src/parse_args.c:206 -#: src/parse_args.c:281 src/parse_args.c:571 src/parse_args.c:593 +#: src/load_plugins.c:341 src/parse_args.c:186 src/parse_args.c:207 +#: src/parse_args.c:282 src/parse_args.c:583 src/parse_args.c:605 #: src/preserve_fds.c:54 src/preserve_fds.c:139 src/selinux.c:91 -#: src/selinux.c:316 src/selinux.c:439 src/selinux.c:448 src/sesh.c:117 -#: src/sudo.c:618 src/sudo.c:678 src/sudo.c:688 src/sudo.c:708 src/sudo.c:727 -#: src/sudo.c:736 src/sudo.c:745 src/sudo.c:762 src/sudo.c:803 src/sudo.c:813 -#: src/sudo.c:836 src/sudo.c:1073 src/sudo.c:1094 src/sudo.c:1268 -#: src/sudo.c:1384 src/sudo_edit.c:258 src/sudo_edit.c:791 src/sudo_edit.c:888 -#: src/sudo_edit.c:1002 src/sudo_edit.c:1022 +#: src/selinux.c:337 src/selinux.c:450 src/selinux.c:459 src/sesh.c:117 +#: src/sudo.c:619 src/sudo.c:679 src/sudo.c:689 src/sudo.c:710 src/sudo.c:729 +#: src/sudo.c:738 src/sudo.c:747 src/sudo.c:764 src/sudo.c:805 src/sudo.c:815 +#: src/sudo.c:841 src/sudo.c:1041 src/sudo.c:1062 src/sudo.c:1240 +#: src/sudo.c:1356 src/sudo_edit.c:258 src/sudo_edit.c:794 src/sudo_edit.c:891 +#: src/sudo_edit.c:1005 src/sudo_edit.c:1025 #, c-format msgid "%s: %s" msgstr "%s: %s" @@ -75,21 +75,21 @@ #: src/exec_nopty.c:236 src/exec_nopty.c:243 src/exec_nopty.c:250 #: src/exec_nopty.c:257 src/exec_nopty.c:264 src/exec_nopty.c:271 #: src/exec_nopty.c:278 src/exec_nopty.c:285 src/exec_nopty.c:292 -#: src/exec_nopty.c:299 src/exec_nopty.c:307 src/exec_pty.c:783 -#: src/exec_pty.c:792 src/exec_pty.c:849 src/exec_pty.c:1162 -#: src/exec_pty.c:1168 src/exec_pty.c:1177 src/exec_pty.c:1184 -#: src/exec_pty.c:1191 src/exec_pty.c:1198 src/exec_pty.c:1205 -#: src/exec_pty.c:1212 src/exec_pty.c:1219 src/exec_pty.c:1226 -#: src/exec_pty.c:1233 src/exec_pty.c:1240 src/exec_pty.c:1248 -#: src/exec_pty.c:1665 src/load_plugins.c:225 src/load_plugins.c:246 +#: src/exec_nopty.c:299 src/exec_nopty.c:307 src/exec_pty.c:786 +#: src/exec_pty.c:795 src/exec_pty.c:852 src/exec_pty.c:1165 +#: src/exec_pty.c:1171 src/exec_pty.c:1180 src/exec_pty.c:1187 +#: src/exec_pty.c:1194 src/exec_pty.c:1201 src/exec_pty.c:1208 +#: src/exec_pty.c:1215 src/exec_pty.c:1222 src/exec_pty.c:1229 +#: src/exec_pty.c:1236 src/exec_pty.c:1243 src/exec_pty.c:1251 +#: src/exec_pty.c:1668 src/load_plugins.c:225 src/load_plugins.c:246 #: src/load_plugins.c:315 src/load_plugins.c:321 src/load_plugins.c:335 -#: src/load_plugins.c:341 src/parse_args.c:185 src/parse_args.c:207 -#: src/parse_args.c:281 src/parse_args.c:571 src/parse_args.c:593 +#: src/load_plugins.c:341 src/parse_args.c:186 src/parse_args.c:208 +#: src/parse_args.c:282 src/parse_args.c:583 src/parse_args.c:605 #: src/preserve_fds.c:54 src/preserve_fds.c:139 src/selinux.c:91 -#: src/selinux.c:316 src/selinux.c:439 src/selinux.c:448 src/sesh.c:117 -#: src/sudo.c:618 src/sudo.c:836 src/sudo.c:1073 src/sudo.c:1094 -#: src/sudo.c:1268 src/sudo.c:1384 src/sudo_edit.c:258 src/sudo_edit.c:791 -#: src/sudo_edit.c:888 src/sudo_edit.c:1002 src/sudo_edit.c:1022 +#: src/selinux.c:337 src/selinux.c:450 src/selinux.c:459 src/sesh.c:117 +#: src/sudo.c:619 src/sudo.c:841 src/sudo.c:1041 src/sudo.c:1062 +#: src/sudo.c:1240 src/sudo.c:1356 src/sudo_edit.c:258 src/sudo_edit.c:794 +#: src/sudo_edit.c:891 src/sudo_edit.c:1005 src/sudo_edit.c:1025 msgid "unable to allocate memory" msgstr "nelze alokovat paměť" @@ -97,18 +97,16 @@ msgid "Unknown signal" msgstr "Neznámý signál" -#: lib/util/strtoid.c:84 lib/util/strtoid.c:131 lib/util/strtoid.c:159 -#: lib/util/strtomode.c:56 lib/util/strtonum.c:65 lib/util/strtonum.c:183 +#: lib/util/strtoid.c:96 lib/util/strtomode.c:56 lib/util/strtonum.c:161 +#: lib/util/strtonum.c:196 msgid "invalid value" msgstr "neplatná hodnota" -#: lib/util/strtoid.c:91 lib/util/strtoid.c:138 lib/util/strtoid.c:166 -#: lib/util/strtomode.c:62 lib/util/strtonum.c:68 lib/util/strtonum.c:195 +#: lib/util/strtomode.c:62 lib/util/strtonum.c:173 msgid "value too large" msgstr "hodnota je příliš velká" -#: lib/util/strtoid.c:93 lib/util/strtoid.c:144 lib/util/strtomode.c:62 -#: lib/util/strtonum.c:68 lib/util/strtonum.c:189 +#: lib/util/strtomode.c:62 lib/util/strtonum.c:167 msgid "value too small" msgstr "hodnota je příliš malá" @@ -158,42 +156,42 @@ msgid "%s is group writable" msgstr "%s je zapisovatelný pro skupinu" -#: lib/util/sudo_conf.c:599 src/selinux.c:215 src/selinux.c:232 src/sudo.c:362 +#: lib/util/sudo_conf.c:599 src/selinux.c:233 src/selinux.c:250 src/sudo.c:363 #, c-format msgid "unable to open %s" msgstr "%s nelze otevřít" -#: src/exec.c:167 +#: src/exec.c:111 #, c-format msgid "unknown login class %s" msgstr "neznámá přihlašovací třída %s" -#: src/exec.c:180 +#: src/exec.c:123 msgid "unable to set user context" msgstr "nelze nastavit kontext uživatele" -#: src/exec.c:196 +#: src/exec.c:139 msgid "unable to set process priority" msgstr "nelze nastavit prioritu procesu" -#: src/exec.c:204 +#: src/exec.c:150 #, c-format msgid "unable to change root to %s" msgstr "kořenový adresář nelze změnit na %s" -#: src/exec.c:217 src/exec.c:223 src/exec.c:230 +#: src/exec.c:163 src/exec.c:169 src/exec.c:176 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "nelze změnit UID na (%u, %u)" -#: src/exec.c:248 +#: src/exec.c:194 #, c-format msgid "unable to change directory to %s" msgstr "pracovní adresář nelze změnit na %s" -#: src/exec.c:347 src/exec_monitor.c:576 src/exec_monitor.c:578 -#: src/exec_nopty.c:527 src/exec_pty.c:527 src/exec_pty.c:1333 -#: src/exec_pty.c:1335 src/signal.c:150 src/signal.c:164 +#: src/exec.c:293 src/exec_monitor.c:576 src/exec_monitor.c:578 +#: src/exec_nopty.c:538 src/exec_pty.c:530 src/exec_pty.c:1336 +#: src/exec_pty.c:1338 src/signal.c:150 src/signal.c:164 #, c-format msgid "unable to set handler for signal %d" msgstr "obsluhu pro signál %d nelze nastavit" @@ -218,14 +216,14 @@ #: src/exec_nopty.c:238 src/exec_nopty.c:245 src/exec_nopty.c:252 #: src/exec_nopty.c:259 src/exec_nopty.c:266 src/exec_nopty.c:273 #: src/exec_nopty.c:280 src/exec_nopty.c:287 src/exec_nopty.c:294 -#: src/exec_nopty.c:301 src/exec_nopty.c:309 src/exec_pty.c:649 -#: src/exec_pty.c:654 src/exec_pty.c:751 src/exec_pty.c:758 src/exec_pty.c:855 -#: src/exec_pty.c:1170 src/exec_pty.c:1179 src/exec_pty.c:1186 -#: src/exec_pty.c:1193 src/exec_pty.c:1200 src/exec_pty.c:1207 -#: src/exec_pty.c:1214 src/exec_pty.c:1221 src/exec_pty.c:1228 -#: src/exec_pty.c:1235 src/exec_pty.c:1242 src/exec_pty.c:1618 -#: src/exec_pty.c:1628 src/exec_pty.c:1673 src/exec_pty.c:1680 -#: src/exec_pty.c:1707 +#: src/exec_nopty.c:301 src/exec_nopty.c:309 src/exec_pty.c:652 +#: src/exec_pty.c:657 src/exec_pty.c:754 src/exec_pty.c:761 src/exec_pty.c:858 +#: src/exec_pty.c:1173 src/exec_pty.c:1182 src/exec_pty.c:1189 +#: src/exec_pty.c:1196 src/exec_pty.c:1203 src/exec_pty.c:1210 +#: src/exec_pty.c:1217 src/exec_pty.c:1224 src/exec_pty.c:1231 +#: src/exec_pty.c:1238 src/exec_pty.c:1245 src/exec_pty.c:1621 +#: src/exec_pty.c:1631 src/exec_pty.c:1676 src/exec_pty.c:1683 +#: src/exec_pty.c:1710 msgid "unable to add event to queue" msgstr "událost nelze přidat do fronty" @@ -233,8 +231,8 @@ msgid "unable to set controlling tty" msgstr "řídicí terminál nelze nastavit" -#: src/exec_monitor.c:602 src/exec_nopty.c:366 src/exec_pty.c:1412 -#: src/exec_pty.c:1433 src/exec_pty.c:1453 src/tgetpass.c:307 +#: src/exec_monitor.c:602 src/exec_nopty.c:366 src/exec_pty.c:1415 +#: src/exec_pty.c:1436 src/exec_pty.c:1456 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "nelze vytvořit rouru" @@ -242,29 +240,29 @@ msgid "unable to receive message from parent" msgstr "od rodiče nelze přijmout zprávu" -#: src/exec_monitor.c:616 src/exec_nopty.c:384 src/exec_pty.c:1491 +#: src/exec_monitor.c:624 src/exec_nopty.c:395 src/exec_pty.c:1494 #: src/tgetpass.c:311 msgid "unable to fork" msgstr "nelze vytvořit potomka" -#: src/exec_monitor.c:630 src/sesh.c:127 src/sudo.c:1132 +#: src/exec_monitor.c:628 src/exec_monitor.c:727 src/exec_nopty.c:448 +msgid "unable to restore tty label" +msgstr "nelze obnovit značku TTY" + +#: src/exec_monitor.c:644 src/sesh.c:127 src/sudo.c:1100 #, c-format msgid "unable to execute %s" msgstr "%s nelze spustit" -#: src/exec_monitor.c:713 src/exec_nopty.c:437 -msgid "unable to restore tty label" -msgstr "nelze obnovit značku TTY" - -#: src/exec_nopty.c:360 src/exec_pty.c:1342 +#: src/exec_nopty.c:360 src/exec_pty.c:1345 msgid "policy plugin failed session initialization" msgstr "modul s politikami zrušil inicializaci relace" -#: src/exec_nopty.c:426 src/exec_pty.c:1578 +#: src/exec_nopty.c:437 src/exec_pty.c:1581 msgid "error in event loop" msgstr "chyba ve smyčce s událostmi" -#: src/exec_nopty.c:535 src/exec_pty.c:562 src/signal.c:112 +#: src/exec_nopty.c:546 src/exec_pty.c:565 src/signal.c:112 #, c-format msgid "unable to restore handler for signal %d" msgstr "nelze obnovit obsluhu signálu %d" @@ -273,11 +271,11 @@ msgid "unable to allocate pty" msgstr "nelze alokovat PTY" -#: src/exec_pty.c:1322 +#: src/exec_pty.c:1325 msgid "unable to create sockets" msgstr "nelze vytvořit sockety" -#: src/exec_pty.c:1535 +#: src/exec_pty.c:1538 msgid "unable to send message to monitor process" msgstr "dohlížejícímu procesu nelze odeslat zprávu" @@ -348,53 +346,53 @@ msgid "policy plugin %s does not include a check_policy method" msgstr "modul s politikou %s neobsahuje metodu check_policy" -#: src/net_ifs.c:183 src/net_ifs.c:200 src/net_ifs.c:345 src/sudo.c:472 +#: src/net_ifs.c:183 src/net_ifs.c:200 src/net_ifs.c:345 src/sudo.c:473 #, c-format msgid "internal error, %s overflow" msgstr "vnitřní chyba, přetečení v %s" -#: src/parse_args.c:227 +#: src/parse_args.c:228 #, c-format msgid "invalid environment variable name: %s" msgstr "neplatný název proměnné prostředí: %s" -#: src/parse_args.c:326 +#: src/parse_args.c:329 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "argument u -C musí být číslo větší nebo rovno 3" -#: src/parse_args.c:511 +#: src/parse_args.c:523 msgid "you may not specify both the `-i' and `-s' options" msgstr "nesmíte zadávat přepínače „-i“ a „-s“ spolu" -#: src/parse_args.c:515 +#: src/parse_args.c:527 msgid "you may not specify both the `-i' and `-E' options" msgstr "nesmíte zadávat přepínače „-i“ a „-E“ spolu" -#: src/parse_args.c:525 +#: src/parse_args.c:537 msgid "the `-E' option is not valid in edit mode" msgstr "přepínač „-E“ není platný v režimu úprav" -#: src/parse_args.c:527 +#: src/parse_args.c:539 msgid "you may not specify environment variables in edit mode" msgstr "v režimu úprav nesmíte zadávat proměnné prostředí" -#: src/parse_args.c:535 +#: src/parse_args.c:547 msgid "the `-U' option may only be used with the `-l' option" msgstr "přepínač „-U“ smí být použit jen s přepínačem „-l“" -#: src/parse_args.c:539 +#: src/parse_args.c:551 msgid "the `-A' and `-S' options may not be used together" msgstr "přepínače „-A“ a „-S“ smí nesmí být použity spolu" -#: src/parse_args.c:615 +#: src/parse_args.c:627 msgid "sudoedit is not supported on this platform" msgstr "na této platformě není sudoedit podporován" -#: src/parse_args.c:688 +#: src/parse_args.c:700 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Smí být zadán pouze jeden z přepínačů -e, -h, -i, -K, -l, -s, -v nebo -V" -#: src/parse_args.c:702 +#: src/parse_args.c:714 #, c-format msgid "" "%s - edit files as another user\n" @@ -403,7 +401,7 @@ "%s – upraví soubory jako jiný uživatel\n" "\n" -#: src/parse_args.c:704 +#: src/parse_args.c:716 #, c-format msgid "" "%s - execute a command as another user\n" @@ -412,7 +410,7 @@ "%s – vykoná příkaz jako jiný uživatel\n" "\n" -#: src/parse_args.c:709 +#: src/parse_args.c:721 #, c-format msgid "" "\n" @@ -421,123 +419,123 @@ "\n" "Přepínače:\n" -#: src/parse_args.c:711 +#: src/parse_args.c:723 msgid "use a helper program for password prompting" msgstr "dotazuje se na heslo prostřednictvím pomocného programu" -#: src/parse_args.c:714 +#: src/parse_args.c:726 msgid "use specified BSD authentication type" msgstr "použije zadaný druh BSD autentizace" -#: src/parse_args.c:717 +#: src/parse_args.c:729 msgid "run command in the background" msgstr "spustí příkaz na pozadí" -#: src/parse_args.c:719 +#: src/parse_args.c:731 msgid "ring bell when prompting" msgstr "při výzvě vydá zvukové znamení" -#: src/parse_args.c:721 +#: src/parse_args.c:733 msgid "close all file descriptors >= num" msgstr "uzavře všechny deskriptory souboru >= číslu" -#: src/parse_args.c:724 +#: src/parse_args.c:736 msgid "run command with the specified BSD login class" msgstr "spustí příkaz se zadanou přihlašovací třídou BSD" -#: src/parse_args.c:727 +#: src/parse_args.c:739 msgid "preserve user environment when running command" msgstr "při spuštění příkazu zachová uživatelské prostředí" -#: src/parse_args.c:729 +#: src/parse_args.c:741 msgid "preserve specific environment variables" msgstr "zachová určité proměnné prostředí" -#: src/parse_args.c:731 +#: src/parse_args.c:743 msgid "edit files instead of running a command" msgstr "místo spuštění příkazu upraví soubory" -#: src/parse_args.c:733 +#: src/parse_args.c:745 msgid "run command as the specified group name or ID" msgstr "spustí příkaz jako skupina určení názvem nebo ID" -#: src/parse_args.c:735 +#: src/parse_args.c:747 msgid "set HOME variable to target user's home dir" msgstr "nastaví proměnnou HOME na domovský adresář uživatele" -#: src/parse_args.c:737 +#: src/parse_args.c:749 msgid "display help message and exit" msgstr "zobrazí nápovědu a skončí" -#: src/parse_args.c:739 +#: src/parse_args.c:751 msgid "run command on host (if supported by plugin)" msgstr "spustí příkaz na stroji (je-li podporováno modulem)" -#: src/parse_args.c:741 +#: src/parse_args.c:753 msgid "run login shell as the target user; a command may also be specified" msgstr "spustí přihlašovací shell jako cílový uživatel; příkaz lze rovněž zadat" -#: src/parse_args.c:743 +#: src/parse_args.c:755 msgid "remove timestamp file completely" msgstr "úplně odstraní soubor s časovými údaji" -#: src/parse_args.c:745 +#: src/parse_args.c:757 msgid "invalidate timestamp file" msgstr "zneplatní soubor s časovými údaji" -#: src/parse_args.c:747 +#: src/parse_args.c:759 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "vypíše oprávnění uživatele nebo zkontroluje určitý příkaz; pro delší výstup použijte dvakrát" -#: src/parse_args.c:749 +#: src/parse_args.c:761 msgid "non-interactive mode, no prompts are used" msgstr "neinteraktivní režim, nepoužijí se žádné dotazy" -#: src/parse_args.c:751 +#: src/parse_args.c:763 msgid "preserve group vector instead of setting to target's" msgstr "zachová vektor skupin namísto nastavení na skupiny cíle" -#: src/parse_args.c:753 +#: src/parse_args.c:765 msgid "use the specified password prompt" msgstr "použije určený dotaz na heslo" -#: src/parse_args.c:756 +#: src/parse_args.c:768 msgid "create SELinux security context with specified role" msgstr "vytvoří selinuxový bezpečnostní kontext se zadanou rolí" -#: src/parse_args.c:759 +#: src/parse_args.c:771 msgid "read password from standard input" msgstr "načte heslo ze standardní vstupu" -#: src/parse_args.c:761 +#: src/parse_args.c:773 msgid "run shell as the target user; a command may also be specified" msgstr "spustí shell jako cílový uživatel; příkaz lze rovněž zadat" -#: src/parse_args.c:764 +#: src/parse_args.c:776 msgid "create SELinux security context with specified type" msgstr "vytvoří selinuxový bezpečnostní kontext se zadaným typem" -#: src/parse_args.c:767 +#: src/parse_args.c:779 msgid "terminate command after the specified time limit" msgstr "po uplynutí zadaného času ukončí příkaz" -#: src/parse_args.c:769 +#: src/parse_args.c:781 msgid "in list mode, display privileges for user" msgstr "v režimu výpisu zobrazí oprávnění uživatele" -#: src/parse_args.c:771 +#: src/parse_args.c:783 msgid "run command (or edit file) as specified user name or ID" msgstr "spustí příkaz (nebo upraví soubor) jako uživatel určený jménem nebo ID" -#: src/parse_args.c:773 +#: src/parse_args.c:785 msgid "display version information and exit" msgstr "zobrazí údaje o verzi a skončí" -#: src/parse_args.c:775 +#: src/parse_args.c:787 msgid "update user's timestamp without running a command" msgstr "aktualizuje časové údaje uživatele bez spuštění příkazu" -#: src/parse_args.c:777 +#: src/parse_args.c:789 msgid "stop processing command line arguments" msgstr "přestane zpracovávat argumenty příkazového řádku" @@ -549,91 +547,95 @@ msgid "unable to send audit message" msgstr "nelze odeslat auditní zprávu" -#: src/selinux.c:123 +#: src/selinux.c:129 #, c-format msgid "unable to fgetfilecon %s" msgstr "nelze získat kontext souboru %s pomocí fgetfilecon" -#: src/selinux.c:128 +#: src/selinux.c:134 #, c-format msgid "%s changed labels" msgstr "%s změnilo značky" -#: src/selinux.c:133 +#: src/selinux.c:142 #, c-format msgid "unable to restore context for %s" msgstr "nelze obnovit kontext %s" -#: src/selinux.c:174 +#: src/selinux.c:190 #, c-format msgid "unable to open %s, not relabeling tty" msgstr "%s nelze otevřít, TTY nebude značka přepsána" -#: src/selinux.c:178 src/selinux.c:219 src/selinux.c:236 +#: src/selinux.c:194 src/selinux.c:237 src/selinux.c:254 #, c-format msgid "%s is not a character device, not relabeling tty" msgstr "%s není znakové zařízení, TTY nebude značka přepsána" -#: src/selinux.c:187 +#: src/selinux.c:203 msgid "unable to get current tty context, not relabeling tty" msgstr "nelze získat kontext současného TTY, TTY nebude značka přepsána" -#: src/selinux.c:194 +#: src/selinux.c:210 msgid "unknown security class \"chr_file\", not relabeling tty" msgstr "neznámá bezpečnostní třída „chr_file“, TTY nebude značka přepsána" -#: src/selinux.c:199 +#: src/selinux.c:215 msgid "unable to get new tty context, not relabeling tty" msgstr "nelze získat nový kontext TTY, TTY nebude značka přepsána" -#: src/selinux.c:206 +#: src/selinux.c:224 msgid "unable to set new tty context" msgstr "nelze nastavit nový kontext TTY" -#: src/selinux.c:280 +#: src/selinux.c:298 #, c-format msgid "you must specify a role for type %s" msgstr "pro typ %s musíte zadat roli" -#: src/selinux.c:286 +#: src/selinux.c:304 #, c-format msgid "unable to get default type for role %s" msgstr "výchozí typ pro roli %s nelze získat" -#: src/selinux.c:304 +#: src/selinux.c:316 +msgid "failed to get new context" +msgstr "nepodařilo se získat nový kontext" + +#: src/selinux.c:325 #, c-format msgid "failed to set new role %s" msgstr "nepodařilo se nastavit novou roli %s" -#: src/selinux.c:308 +#: src/selinux.c:329 #, c-format msgid "failed to set new type %s" msgstr "nepodařilo se nastavit nový typ %s" -#: src/selinux.c:320 +#: src/selinux.c:341 #, c-format msgid "%s is not a valid context" msgstr "%s není platný kontext" -#: src/selinux.c:355 -msgid "failed to get old_context" +#: src/selinux.c:373 +msgid "failed to get old context" msgstr "nepodařilo se získat starý kontext" -#: src/selinux.c:361 +#: src/selinux.c:379 msgid "unable to determine enforcing mode." msgstr "nepodařilo se určit režim vynucování SELinuxu." -#: src/selinux.c:378 +#: src/selinux.c:396 #, c-format msgid "unable to set tty context to %s" msgstr "nepodařilo se nastavit kontext TTY na %s" -#: src/selinux.c:417 +#: src/selinux.c:428 #, c-format msgid "unable to set exec context to %s" msgstr "nepodařilo se nastavit kontext pro spuštění na %s" -#: src/selinux.c:424 +#: src/selinux.c:435 #, c-format msgid "unable to set key creation context to %s" msgstr "nepodařilo se nastavit kontext pro vytváření klíčů na %s" @@ -700,97 +702,97 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "pozor, nepodařilo se přiřadit řízení zdrojů projektu „%s“" -#: src/sudo.c:203 +#: src/sudo.c:204 #, c-format msgid "Sudo version %s\n" msgstr "Sudo verze %s\n" -#: src/sudo.c:205 +#: src/sudo.c:206 #, c-format msgid "Configure options: %s\n" msgstr "Přepínače configure: %s\n" -#: src/sudo.c:213 +#: src/sudo.c:214 msgid "fatal error, unable to load plugins" msgstr "nepřekonatelná chyba, moduly nelze zavést" -#: src/sudo.c:221 +#: src/sudo.c:222 msgid "unable to initialize policy plugin" msgstr "modul s politikami nelze inicializovat" -#: src/sudo.c:265 +#: src/sudo.c:266 msgid "plugin did not return a command to execute" msgstr "modul nevrátil příkaz k provedení" -#: src/sudo.c:281 +#: src/sudo.c:282 #, c-format msgid "error initializing I/O plugin %s" msgstr "chyba při inicializaci vstupně-výstupního modulu %s" -#: src/sudo.c:304 +#: src/sudo.c:306 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "neočekávaný režim programu sudo 0x%x" -#: src/sudo.c:537 +#: src/sudo.c:538 #, c-format msgid "you do not exist in the %s database" msgstr "neexistujete v databázi %s" -#: src/sudo.c:594 +#: src/sudo.c:595 msgid "unable to determine tty" msgstr "nelze určit terminál" -#: src/sudo.c:882 +#: src/sudo.c:887 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s musí být vlastněn UID %d a mít nastaven bit setuid" -#: src/sudo.c:885 +#: src/sudo.c:890 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "efektivní UID není %d, nalézá se %s na souborovém systému s nastavenou volbou „nosuid“ nebo na souborovém systému NFS bez práv roota?" -#: src/sudo.c:891 +#: src/sudo.c:896 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "efektivní UID není %d, je sudo nainstalované jako setuid vlastněné rootem?" -#: src/sudo.c:944 +#: src/sudo.c:912 msgid "unable to set supplementary group IDs" msgstr "nelze nastavit ID doplňkových skupin" -#: src/sudo.c:951 +#: src/sudo.c:919 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "efektivní GID nelze nastavit na %u" -#: src/sudo.c:957 +#: src/sudo.c:925 #, c-format msgid "unable to set gid to runas gid %u" msgstr "GID nelze nastavit na %u" -#: src/sudo.c:1014 +#: src/sudo.c:982 #, c-format msgid "unexpected child termination condition: %d" msgstr "neočekávaný důvod ukončení potomka: %d" -#: src/sudo.c:1160 +#: src/sudo.c:1128 #, c-format msgid "policy plugin %s is missing the `check_policy' method" msgstr "modulu s politikami %s chybí metoda „check_policy“" -#: src/sudo.c:1178 +#: src/sudo.c:1146 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "modul s politikami %s nepodporuje získání seznamu oprávnění" -#: src/sudo.c:1195 +#: src/sudo.c:1163 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "modul s politikami %s nepodporuje přepínač -v" -#: src/sudo.c:1210 +#: src/sudo.c:1178 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "modul s politikami %s nepodporuje přepínače -k/-K" @@ -803,7 +805,7 @@ msgid "unable to restore current working directory" msgstr "současný pracovní adresář nelze obnovit" -#: src/sudo_edit.c:594 src/sudo_edit.c:706 +#: src/sudo_edit.c:594 src/sudo_edit.c:707 #, c-format msgid "%s: not a regular file" msgstr "%s: nejedná se o obyčejný soubor" @@ -818,67 +820,67 @@ msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: úprava souborů v adresáři, do kterého lze zapisovat, není dovolena" -#: src/sudo_edit.c:637 src/sudo_edit.c:744 +#: src/sudo_edit.c:637 src/sudo_edit.c:747 #, c-format msgid "%s: short write" msgstr "%s: krátký zápis" -#: src/sudo_edit.c:707 +#: src/sudo_edit.c:708 #, c-format msgid "%s left unmodified" msgstr "%s ponechán nezměněn" -#: src/sudo_edit.c:720 src/sudo_edit.c:905 +#: src/sudo_edit.c:721 src/sudo_edit.c:908 #, c-format msgid "%s unchanged" msgstr "%s nezměněn" -#: src/sudo_edit.c:733 src/sudo_edit.c:755 +#: src/sudo_edit.c:736 src/sudo_edit.c:758 #, c-format msgid "unable to write to %s" msgstr "do %s nelze zapsat" -#: src/sudo_edit.c:734 src/sudo_edit.c:753 src/sudo_edit.c:756 -#: src/sudo_edit.c:930 src/sudo_edit.c:934 +#: src/sudo_edit.c:737 src/sudo_edit.c:756 src/sudo_edit.c:759 +#: src/sudo_edit.c:933 src/sudo_edit.c:937 #, c-format msgid "contents of edit session left in %s" msgstr "obsah relace s úpravami ponechán v %s" -#: src/sudo_edit.c:752 +#: src/sudo_edit.c:755 msgid "unable to read temporary file" msgstr "nelze přečíst dočasný soubor" -#: src/sudo_edit.c:835 +#: src/sudo_edit.c:838 msgid "sesh: internal error: odd number of paths" msgstr "sesh: vnitřní chyba: lichý počet cest" -#: src/sudo_edit.c:837 +#: src/sudo_edit.c:840 msgid "sesh: unable to create temporary files" msgstr "sesh: nelze vytvořit dočasné soubory" -#: src/sudo_edit.c:839 src/sudo_edit.c:937 +#: src/sudo_edit.c:842 src/sudo_edit.c:940 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: neznámá chyba %d" -#: src/sudo_edit.c:929 +#: src/sudo_edit.c:932 msgid "unable to copy temporary files back to their original location" msgstr "dočasné soubory nelze zkopírovat zpět na jejich původní místo" -#: src/sudo_edit.c:933 +#: src/sudo_edit.c:936 msgid "unable to copy some of the temporary files back to their original location" msgstr "některé z dočasných souborů nelze zkopírovat zpět na jejich původní místo" -#: src/sudo_edit.c:978 +#: src/sudo_edit.c:981 #, c-format msgid "unable to change uid to root (%u)" msgstr "UID nelze změnit na roota (%u)" -#: src/sudo_edit.c:995 +#: src/sudo_edit.c:998 msgid "plugin error: missing file list for sudoedit" msgstr "chyba modulu: programu sudoedit chybí seznam souborů" -#: src/sudo_edit.c:1036 src/sudo_edit.c:1049 +#: src/sudo_edit.c:1039 src/sudo_edit.c:1052 msgid "unable to read the clock" msgstr "nelze přečíst hodiny" @@ -917,15 +919,15 @@ msgid "unable to run %s" msgstr "%s nelze spustit" -#: src/utmp.c:287 +#: src/utmp.c:295 msgid "unable to save stdin" msgstr "standardní vstup nelze uložit" -#: src/utmp.c:289 +#: src/utmp.c:297 msgid "unable to dup2 stdin" msgstr "standardní vstup nelze zduplikovat voláním dup2" -#: src/utmp.c:292 +#: src/utmp.c:300 msgid "unable to restore stdin" msgstr "standardní vstup nelze obnovit" Binary files /tmp/tmpxQuIu2/iFUK1R4uMA/sudo-1.8.29/po/fi.mo and /tmp/tmpxQuIu2/W5KRB4HzHp/sudo-1.8.31/po/fi.mo differ diff -Nru sudo-1.8.29/po/fi.po sudo-1.8.31/po/fi.po --- sudo-1.8.29/po/fi.po 2019-10-28 12:31:06.000000000 +0000 +++ sudo-1.8.31/po/fi.po 2019-12-31 12:58:36.000000000 +0000 @@ -2,14 +2,15 @@ # This file is put in the public domain. # This file is distributed under the same license as the sudo package. # Jorma Karvonen , 2011-2017. +# Lauri Nurmi , 2019. # msgid "" msgstr "" -"Project-Id-Version: sudo 1.8.21b2\n" +"Project-Id-Version: sudo 1.8.29rc1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2017-08-03 10:04-0600\n" -"PO-Revision-Date: 2017-08-19 20:33+0300\n" -"Last-Translator: Jorma Karvonen \n" +"POT-Creation-Date: 2019-10-21 19:55-0600\n" +"PO-Revision-Date: 2019-12-05 22:54+0200\n" +"Last-Translator: Lauri Nurmi \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" @@ -17,352 +18,388 @@ "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 2.0.3\n" +"X-Generator: Poedit 2.2.4\n" -#: lib/util/aix.c:85 lib/util/aix.c:172 +#: lib/util/aix.c:92 lib/util/aix.c:172 msgid "unable to open userdb" -msgstr "userdb-käyttäjätietokannan avaaminen epäonnistui" +msgstr "käyttäjätietokannan avaaminen epäonnistui" #: lib/util/aix.c:227 #, c-format msgid "unable to switch to registry \"%s\" for %s" -msgstr "vaihtaminen registeröitymiseen \"%s\" käyttäjälle %s epäonnistui" +msgstr "vaihtaminen rekisteriin ”%s” epäonnistui %s-käyttäjälle" #: lib/util/aix.c:252 msgid "unable to restore registry" -msgstr "rekisteröitymisen palauttaminen epäonnistui" +msgstr "rekisterin palautus epäonnistui" -#: lib/util/aix.c:275 lib/util/gidlist.c:64 lib/util/gidlist.c:74 -#: lib/util/sudo_conf.c:186 lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 -#: lib/util/sudo_conf.c:553 src/conversation.c:75 src/exec_common.c:107 -#: src/exec_common.c:123 src/exec_common.c:132 src/exec_monitor.c:167 -#: src/exec_nopty.c:462 src/exec_pty.c:667 src/exec_pty.c:676 -#: src/exec_pty.c:738 src/exec_pty.c:867 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:215 src/load_plugins.c:238 -#: src/load_plugins.c:303 src/load_plugins.c:318 src/parse_args.c:177 -#: src/parse_args.c:198 src/parse_args.c:273 src/parse_args.c:540 -#: src/parse_args.c:562 src/preserve_fds.c:47 src/preserve_fds.c:130 -#: src/selinux.c:84 src/selinux.c:309 src/selinux.c:432 src/selinux.c:441 -#: src/sesh.c:115 src/sudo.c:389 src/sudo.c:416 src/sudo.c:481 src/sudo.c:603 -#: src/sudo.c:663 src/sudo.c:673 src/sudo.c:693 src/sudo.c:712 src/sudo.c:721 -#: src/sudo.c:730 src/sudo.c:747 src/sudo.c:788 src/sudo.c:798 src/sudo.c:818 -#: src/sudo.c:1058 src/sudo.c:1079 src/sudo.c:1253 src/sudo.c:1351 -#: src/sudo_edit.c:148 src/sudo_edit.c:771 src/sudo_edit.c:868 -#: src/sudo_edit.c:982 src/sudo_edit.c:1002 +#: lib/util/aix.c:275 lib/util/gidlist.c:71 lib/util/gidlist.c:81 +#: lib/util/sudo_conf.c:193 lib/util/sudo_conf.c:279 lib/util/sudo_conf.c:356 +#: lib/util/sudo_conf.c:560 src/conversation.c:84 src/exec_common.c:114 +#: src/exec_common.c:130 src/exec_common.c:139 src/exec_monitor.c:212 +#: src/exec_monitor.c:467 src/exec_monitor.c:473 src/exec_monitor.c:481 +#: src/exec_monitor.c:489 src/exec_monitor.c:496 src/exec_monitor.c:503 +#: src/exec_monitor.c:510 src/exec_monitor.c:517 src/exec_monitor.c:524 +#: src/exec_monitor.c:531 src/exec_monitor.c:538 src/exec_nopty.c:214 +#: src/exec_nopty.c:220 src/exec_nopty.c:229 src/exec_nopty.c:236 +#: src/exec_nopty.c:243 src/exec_nopty.c:250 src/exec_nopty.c:257 +#: src/exec_nopty.c:264 src/exec_nopty.c:271 src/exec_nopty.c:278 +#: src/exec_nopty.c:285 src/exec_nopty.c:292 src/exec_nopty.c:299 +#: src/exec_nopty.c:307 src/exec_nopty.c:480 src/exec_pty.c:786 +#: src/exec_pty.c:795 src/exec_pty.c:852 src/exec_pty.c:1002 +#: src/exec_pty.c:1165 src/exec_pty.c:1171 src/exec_pty.c:1180 +#: src/exec_pty.c:1187 src/exec_pty.c:1194 src/exec_pty.c:1201 +#: src/exec_pty.c:1208 src/exec_pty.c:1215 src/exec_pty.c:1222 +#: src/exec_pty.c:1229 src/exec_pty.c:1236 src/exec_pty.c:1243 +#: src/exec_pty.c:1251 src/exec_pty.c:1668 src/load_plugins.c:59 +#: src/load_plugins.c:72 src/load_plugins.c:225 src/load_plugins.c:246 +#: src/load_plugins.c:315 src/load_plugins.c:321 src/load_plugins.c:335 +#: src/load_plugins.c:341 src/parse_args.c:186 src/parse_args.c:207 +#: src/parse_args.c:282 src/parse_args.c:583 src/parse_args.c:605 +#: src/preserve_fds.c:54 src/preserve_fds.c:139 src/selinux.c:91 +#: src/selinux.c:337 src/selinux.c:450 src/selinux.c:459 src/sesh.c:117 +#: src/sudo.c:619 src/sudo.c:679 src/sudo.c:689 src/sudo.c:710 src/sudo.c:729 +#: src/sudo.c:738 src/sudo.c:747 src/sudo.c:764 src/sudo.c:805 src/sudo.c:815 +#: src/sudo.c:841 src/sudo.c:1041 src/sudo.c:1062 src/sudo.c:1240 +#: src/sudo.c:1356 src/sudo_edit.c:258 src/sudo_edit.c:794 src/sudo_edit.c:891 +#: src/sudo_edit.c:1005 src/sudo_edit.c:1025 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/util/aix.c:275 lib/util/gidlist.c:64 lib/util/sudo_conf.c:187 -#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:553 -#: src/conversation.c:76 src/exec_common.c:107 src/exec_common.c:124 -#: src/exec_common.c:133 src/exec_pty.c:667 src/exec_pty.c:676 -#: src/exec_pty.c:738 src/load_plugins.c:215 src/load_plugins.c:238 -#: src/load_plugins.c:303 src/load_plugins.c:318 src/parse_args.c:177 -#: src/parse_args.c:199 src/parse_args.c:273 src/parse_args.c:540 -#: src/parse_args.c:562 src/preserve_fds.c:47 src/preserve_fds.c:130 -#: src/selinux.c:84 src/selinux.c:309 src/selinux.c:432 src/selinux.c:441 -#: src/sesh.c:115 src/sudo.c:389 src/sudo.c:416 src/sudo.c:481 src/sudo.c:603 -#: src/sudo.c:818 src/sudo.c:1058 src/sudo.c:1079 src/sudo.c:1253 -#: src/sudo.c:1351 src/sudo_edit.c:148 src/sudo_edit.c:771 src/sudo_edit.c:868 -#: src/sudo_edit.c:982 src/sudo_edit.c:1002 +#: lib/util/aix.c:275 lib/util/gidlist.c:71 lib/util/sudo_conf.c:194 +#: lib/util/sudo_conf.c:279 lib/util/sudo_conf.c:356 lib/util/sudo_conf.c:560 +#: src/conversation.c:85 src/exec_common.c:114 src/exec_common.c:131 +#: src/exec_common.c:140 src/exec_monitor.c:467 src/exec_monitor.c:473 +#: src/exec_monitor.c:481 src/exec_monitor.c:489 src/exec_monitor.c:496 +#: src/exec_monitor.c:503 src/exec_monitor.c:510 src/exec_monitor.c:517 +#: src/exec_monitor.c:524 src/exec_monitor.c:531 src/exec_monitor.c:538 +#: src/exec_nopty.c:214 src/exec_nopty.c:220 src/exec_nopty.c:229 +#: src/exec_nopty.c:236 src/exec_nopty.c:243 src/exec_nopty.c:250 +#: src/exec_nopty.c:257 src/exec_nopty.c:264 src/exec_nopty.c:271 +#: src/exec_nopty.c:278 src/exec_nopty.c:285 src/exec_nopty.c:292 +#: src/exec_nopty.c:299 src/exec_nopty.c:307 src/exec_pty.c:786 +#: src/exec_pty.c:795 src/exec_pty.c:852 src/exec_pty.c:1165 +#: src/exec_pty.c:1171 src/exec_pty.c:1180 src/exec_pty.c:1187 +#: src/exec_pty.c:1194 src/exec_pty.c:1201 src/exec_pty.c:1208 +#: src/exec_pty.c:1215 src/exec_pty.c:1222 src/exec_pty.c:1229 +#: src/exec_pty.c:1236 src/exec_pty.c:1243 src/exec_pty.c:1251 +#: src/exec_pty.c:1668 src/load_plugins.c:225 src/load_plugins.c:246 +#: src/load_plugins.c:315 src/load_plugins.c:321 src/load_plugins.c:335 +#: src/load_plugins.c:341 src/parse_args.c:186 src/parse_args.c:208 +#: src/parse_args.c:282 src/parse_args.c:583 src/parse_args.c:605 +#: src/preserve_fds.c:54 src/preserve_fds.c:139 src/selinux.c:91 +#: src/selinux.c:337 src/selinux.c:450 src/selinux.c:459 src/sesh.c:117 +#: src/sudo.c:619 src/sudo.c:841 src/sudo.c:1041 src/sudo.c:1062 +#: src/sudo.c:1240 src/sudo.c:1356 src/sudo_edit.c:258 src/sudo_edit.c:794 +#: src/sudo_edit.c:891 src/sudo_edit.c:1005 src/sudo_edit.c:1025 msgid "unable to allocate memory" msgstr "muistin varaaminen epäonnistui" -#: lib/util/strsignal.c:48 +#: lib/util/strsignal.c:55 msgid "Unknown signal" msgstr "Tuntematon signaali" -#: lib/util/strtoid.c:77 lib/util/strtoid.c:124 lib/util/strtoid.c:152 -#: lib/util/strtomode.c:49 lib/util/strtonum.c:58 lib/util/strtonum.c:176 +#: lib/util/strtoid.c:96 lib/util/strtomode.c:56 lib/util/strtonum.c:161 +#: lib/util/strtonum.c:196 msgid "invalid value" msgstr "virheellinen arvo" -#: lib/util/strtoid.c:84 lib/util/strtoid.c:131 lib/util/strtoid.c:159 -#: lib/util/strtomode.c:55 lib/util/strtonum.c:61 lib/util/strtonum.c:188 +#: lib/util/strtomode.c:62 lib/util/strtonum.c:173 msgid "value too large" msgstr "arvo on liian suuri" -#: lib/util/strtoid.c:86 lib/util/strtoid.c:137 lib/util/strtomode.c:55 -#: lib/util/strtonum.c:61 lib/util/strtonum.c:182 +#: lib/util/strtomode.c:62 lib/util/strtonum.c:167 msgid "value too small" msgstr "arvo on liian pieni" -#: lib/util/sudo_conf.c:205 +#: lib/util/sudo_conf.c:212 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" -msgstr "virheellinen Path-muuttuja-arvo \"%s\" tiedostossa %s, rivi %u" +msgstr "virheellinen Path-arvo ”%s” tiedostossa %s, rivillä %u" -#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:424 +#: lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:431 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" -msgstr "virheellinen arvo kohteelle %s \"%s\" tiedostossa %s, rivi %u" +msgstr "virheellinen %s-arvo ”%s” tiedostossa %s, rivillä %u" -#: lib/util/sudo_conf.c:392 +#: lib/util/sudo_conf.c:399 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" -msgstr "tukematon ryhmälähde \"%s\" tiedostossa %s, rivi %u" +msgstr "tukematon ryhmälähde ”%s” tiedostossa %s, rivillä %u" -#: lib/util/sudo_conf.c:408 +#: lib/util/sudo_conf.c:415 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" -msgstr "virheellinen ryhmien \"%s\" enimmäismäärä tiedostossa %s, rivi %u" +msgstr "virheellinen ryhmien enimmäismäärä ”%s” tiedostossa %s, rivillä %u" -#: lib/util/sudo_conf.c:569 +#: lib/util/sudo_conf.c:576 #, c-format msgid "unable to stat %s" -msgstr "käskyn stat %s suorittaminen epäonnistui" +msgstr "stat-kutsu epäonnistui tiedostolle %s" -#: lib/util/sudo_conf.c:572 +#: lib/util/sudo_conf.c:579 #, c-format msgid "%s is not a regular file" msgstr "%s ei ole tavallinen tiedosto" # ensimmäinen parametri on path -#: lib/util/sudo_conf.c:575 +#: lib/util/sudo_conf.c:582 #, c-format msgid "%s is owned by uid %u, should be %u" -msgstr "polun %s omistaja on %u, pitäisi olla %u" +msgstr "polun %s omistaa uid %u, tulisi olla %u" -#: lib/util/sudo_conf.c:579 +#: lib/util/sudo_conf.c:586 #, c-format msgid "%s is world writable" msgstr "%s on yleiskirjoitettava" -#: lib/util/sudo_conf.c:582 +#: lib/util/sudo_conf.c:589 #, c-format msgid "%s is group writable" msgstr "%s on ryhmäkirjoitettava" -#: lib/util/sudo_conf.c:592 src/selinux.c:208 src/selinux.c:225 src/sudo.c:357 +#: lib/util/sudo_conf.c:599 src/selinux.c:233 src/selinux.c:250 src/sudo.c:363 #, c-format msgid "unable to open %s" -msgstr "kohteen %s avaaminen epäonnistui" +msgstr "%s: avaaminen epäonnistui" -#: src/exec.c:160 +#: src/exec.c:111 #, c-format msgid "unknown login class %s" msgstr "tuntematon kirjautumisluokka %s" -#: src/exec.c:173 +#: src/exec.c:123 msgid "unable to set user context" -msgstr "käyttäjäasiayhteyden asettaminen epäonnistui" +msgstr "käyttäjäkontekstin asettaminen epäonnistui" -#: src/exec.c:189 +#: src/exec.c:139 msgid "unable to set process priority" msgstr "prosessiprioriteetin asettaminen epäonnistui" -#: src/exec.c:197 +#: src/exec.c:150 #, c-format msgid "unable to change root to %s" msgstr "root-käyttäjän vaihtaminen käyttäjäksi %s epäonnistui" -#: src/exec.c:210 src/exec.c:216 src/exec.c:223 +#: src/exec.c:163 src/exec.c:169 src/exec.c:176 #, c-format msgid "unable to change to runas uid (%u, %u)" -msgstr "ei kyetä vaihtamaan suoritettavaksi uid-käyttäjätunnisteeksi (%u, %u)" +msgstr "vaihtaminen runas-uid:ksi (%u, %u) epäonnistui" -# parametrina on CWD- eli Change Working Directory- komennolla palautettava hakemisto -#: src/exec.c:241 +#: src/exec.c:194 #, c-format msgid "unable to change directory to %s" -msgstr "ei kyetä vaihtamaan hakemistoksi %s" +msgstr "vaihtaminen hakemistoksi %s epäonnistui" -#: src/exec.c:337 src/exec_monitor.c:526 src/exec_monitor.c:528 -#: src/exec_nopty.c:520 src/exec_pty.c:472 src/exec_pty.c:1184 -#: src/exec_pty.c:1186 src/signal.c:139 src/signal.c:153 +#: src/exec.c:293 src/exec_monitor.c:576 src/exec_monitor.c:578 +#: src/exec_nopty.c:538 src/exec_pty.c:530 src/exec_pty.c:1336 +#: src/exec_pty.c:1338 src/signal.c:150 src/signal.c:164 #, c-format msgid "unable to set handler for signal %d" msgstr "käsittelijän asettaminen signaalille %d epäonnistui" # Solaris privileges, remove PRIV_PROC_EXEC post-execve. -#: src/exec_common.c:166 +#: src/exec_common.c:173 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" -msgstr "kohteen PRIV_PROC_EXEC poistaminen kohteesta PRIV_LIMIT epäonnistui" +msgstr "PRIV_PROC_EXEC-määreen poistaminen PRIV_LIMITiltä epäonnistui" -#: src/exec_monitor.c:326 +#: src/exec_monitor.c:366 msgid "error reading from socketpair" -msgstr "virhe luettaessa vastakeparista" +msgstr "virhe luettaessa sokettiparista" -#: src/exec_monitor.c:338 +#: src/exec_monitor.c:383 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "odottamaton vastaustyyppi paluukanavalla: %d" -#: src/exec_monitor.c:423 src/exec_monitor.c:431 src/exec_monitor.c:439 -#: src/exec_monitor.c:446 src/exec_monitor.c:453 src/exec_monitor.c:460 -#: src/exec_monitor.c:467 src/exec_monitor.c:474 src/exec_monitor.c:481 -#: src/exec_monitor.c:488 src/exec_nopty.c:215 src/exec_nopty.c:224 -#: src/exec_nopty.c:231 src/exec_nopty.c:238 src/exec_nopty.c:245 -#: src/exec_nopty.c:252 src/exec_nopty.c:259 src/exec_nopty.c:266 -#: src/exec_nopty.c:273 src/exec_nopty.c:280 src/exec_nopty.c:287 -#: src/exec_nopty.c:294 src/exec_nopty.c:302 src/exec_pty.c:563 -#: src/exec_pty.c:568 src/exec_pty.c:635 src/exec_pty.c:642 src/exec_pty.c:743 -#: src/exec_pty.c:1029 src/exec_pty.c:1038 src/exec_pty.c:1045 -#: src/exec_pty.c:1052 src/exec_pty.c:1059 src/exec_pty.c:1066 -#: src/exec_pty.c:1073 src/exec_pty.c:1080 src/exec_pty.c:1087 -#: src/exec_pty.c:1094 src/exec_pty.c:1101 src/exec_pty.c:1446 -#: src/exec_pty.c:1456 src/exec_pty.c:1501 src/exec_pty.c:1508 -#: src/exec_pty.c:1533 +#: src/exec_monitor.c:475 src/exec_monitor.c:483 src/exec_monitor.c:491 +#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 +#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_monitor.c:533 +#: src/exec_monitor.c:540 src/exec_nopty.c:222 src/exec_nopty.c:231 +#: src/exec_nopty.c:238 src/exec_nopty.c:245 src/exec_nopty.c:252 +#: src/exec_nopty.c:259 src/exec_nopty.c:266 src/exec_nopty.c:273 +#: src/exec_nopty.c:280 src/exec_nopty.c:287 src/exec_nopty.c:294 +#: src/exec_nopty.c:301 src/exec_nopty.c:309 src/exec_pty.c:652 +#: src/exec_pty.c:657 src/exec_pty.c:754 src/exec_pty.c:761 src/exec_pty.c:858 +#: src/exec_pty.c:1173 src/exec_pty.c:1182 src/exec_pty.c:1189 +#: src/exec_pty.c:1196 src/exec_pty.c:1203 src/exec_pty.c:1210 +#: src/exec_pty.c:1217 src/exec_pty.c:1224 src/exec_pty.c:1231 +#: src/exec_pty.c:1238 src/exec_pty.c:1245 src/exec_pty.c:1621 +#: src/exec_pty.c:1631 src/exec_pty.c:1676 src/exec_pty.c:1683 +#: src/exec_pty.c:1710 msgid "unable to add event to queue" msgstr "tapahtuman lisääminen jonoon epäonnistui" # Istunnolla voi olla ohjaava tty. Istunnon yksi prosessiryhmä voi olla edustaprosessiryhmä ja toimia siten ohjaavana tty:nä, joka vastaanottaa tty-syötteen ja -signaalit. -#: src/exec_monitor.c:540 +#: src/exec_monitor.c:594 msgid "unable to set controlling tty" msgstr "ohjaavan tty:n asettaminen epäonnistui" -#: src/exec_monitor.c:548 src/exec_nopty.c:359 src/exec_pty.c:1261 -#: src/exec_pty.c:1280 src/exec_pty.c:1298 src/tgetpass.c:246 +#: src/exec_monitor.c:602 src/exec_nopty.c:366 src/exec_pty.c:1415 +#: src/exec_pty.c:1436 src/exec_pty.c:1456 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "putken luominen epäonnistui" -#: src/exec_monitor.c:553 src/exec_nopty.c:377 src/exec_pty.c:1335 -#: src/tgetpass.c:250 +#: src/exec_monitor.c:610 +msgid "unable to receive message from parent" +msgstr "viestin vastaanotto vanhemmalta epäonnistui" + +#: src/exec_monitor.c:624 src/exec_nopty.c:395 src/exec_pty.c:1494 +#: src/tgetpass.c:311 msgid "unable to fork" msgstr "fork-kutsu epäonnistui" -#: src/exec_monitor.c:639 src/exec_nopty.c:430 +#: src/exec_monitor.c:628 src/exec_monitor.c:727 src/exec_nopty.c:448 msgid "unable to restore tty label" msgstr "tty-nimiön palauttaminen epäonnistui" -#: src/exec_nopty.c:353 src/exec_pty.c:1193 +#: src/exec_monitor.c:644 src/sesh.c:127 src/sudo.c:1100 +#, c-format +msgid "unable to execute %s" +msgstr "%s: suorittaminen epäonnistui" + +#: src/exec_nopty.c:360 src/exec_pty.c:1345 msgid "policy plugin failed session initialization" -msgstr "menettelytapalisäosa epäonnistui istunnon alustamisessa" +msgstr "käytäntölisäosa epäonnistui istunnon alustamisessa" -#: src/exec_nopty.c:419 src/exec_pty.c:1404 +#: src/exec_nopty.c:437 src/exec_pty.c:1581 msgid "error in event loop" msgstr "virhe tapahtumasilmukassa" -#: src/exec_nopty.c:528 src/exec_pty.c:504 src/signal.c:101 +#: src/exec_nopty.c:546 src/exec_pty.c:565 src/signal.c:112 #, c-format msgid "unable to restore handler for signal %d" msgstr "käsittelijän palauttaminen signaalille %d epäonnistui" -#: src/exec_pty.c:143 +#: src/exec_pty.c:158 msgid "unable to allocate pty" msgstr "pty:n varaaminen epäonnistui" -#: src/exec_pty.c:1173 +#: src/exec_pty.c:1325 msgid "unable to create sockets" -msgstr "vastakkeiden luominen epäonnistui" +msgstr "sokettien luominen epäonnistui" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:123 src/load_plugins.c:129 -#: src/load_plugins.c:170 src/load_plugins.c:178 src/load_plugins.c:185 -#: src/load_plugins.c:191 +#: src/exec_pty.c:1538 +msgid "unable to send message to monitor process" +msgstr "viestin lähettäminen prosessien valvomiseksi epäonnistui" + +#: src/load_plugins.c:57 src/load_plugins.c:70 src/load_plugins.c:92 +#: src/load_plugins.c:122 src/load_plugins.c:134 src/load_plugins.c:140 +#: src/load_plugins.c:181 src/load_plugins.c:189 src/load_plugins.c:196 +#: src/load_plugins.c:202 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" -msgstr "virhe tiedostossa %s, rivi %d alustettaessa lisäosaa \"%s\"" +msgstr "virhe tiedostossa %s, rivillä %d alustettaessa lisäosaa ”%s”" -#: src/load_plugins.c:87 +#: src/load_plugins.c:94 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" # ensimmäinen parametri on path -#: src/load_plugins.c:125 +#: src/load_plugins.c:136 #, c-format msgid "%s must be owned by uid %d" msgstr "polun %s omistajan on oltava uid %d" # parametri on path -#: src/load_plugins.c:131 +#: src/load_plugins.c:142 #, c-format msgid "%s must be only be writable by owner" -msgstr "polun %s on oltava vain omistajan kirjoitettava" +msgstr "polun %s on oltava vain omistajan kirjoitettavissa" -#: src/load_plugins.c:172 +#: src/load_plugins.c:183 #, c-format msgid "unable to load %s: %s" -msgstr "kohteen %s lataaminen epäonnistui: %s" +msgstr "%s: lataaminen epäonnistui: %s" -#: src/load_plugins.c:180 +#: src/load_plugins.c:191 #, c-format msgid "unable to find symbol \"%s\" in %s" -msgstr "symbolin \"%s\" löytäminen kohteesta %s epäonnistui" +msgstr "symbolia ”%s” ei löytynyt kohteesta %s" -#: src/load_plugins.c:187 +#: src/load_plugins.c:198 #, c-format msgid "unknown policy type %d found in %s" -msgstr "tuntematon menettelytapatyyppi %d löytyi kohteesta %s" +msgstr "tuntematon käytäntötyyppi %d löytyi kohteesta %s" -#: src/load_plugins.c:193 +#: src/load_plugins.c:204 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" -msgstr "yhteensopimaton lisäosan major-versio %d (odotettiin %d) löytyi kohteesta %s" +msgstr "löydettiin yhteensopimaton lisäosan pääversio %d (odotettiin %d) kohteesta %s" -#: src/load_plugins.c:202 +#: src/load_plugins.c:213 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" -msgstr "ohitetaan menettelytapalisäosa \"%s\" tiedostossa %s, rivi %d" +msgstr "ohitetaan käytäntölisäosa ”%s” tiedostossa %s, rivillä %d" -#: src/load_plugins.c:204 +#: src/load_plugins.c:215 msgid "only a single policy plugin may be specified" -msgstr "vain yksi menettelytapalisäosa voidaan määritellä" +msgstr "vain yksi käytäntölisäosa voidaan määritellä" -#: src/load_plugins.c:207 +#: src/load_plugins.c:218 #, c-format msgid "ignoring duplicate policy plugin \"%s\" in %s, line %d" -msgstr "ohitetaan menettelytapalisäosan \"%s\" kaksoiskappale tiedostossa %s, rivi %d" +msgstr "ohitetaan käytäntölisäosan ”%s” kaksoiskappale tiedostossa %s, rivillä %d" -#: src/load_plugins.c:228 +#: src/load_plugins.c:237 #, c-format msgid "ignoring duplicate I/O plugin \"%s\" in %s, line %d" -msgstr "ohitetaan siirräntälisäosan \"%s\" kaksoiskappale tiedostossa %s, rivi %d" +msgstr "ohitetaan siirräntälisäosan ”%s” kaksoiskappale tiedostossa %s, rivillä %d" -#: src/load_plugins.c:331 +#: src/load_plugins.c:353 #, c-format msgid "policy plugin %s does not include a check_policy method" -msgstr "menettelytapalisäosa %s ei sisällä check_policy-metodia" +msgstr "käytäntölisäosa %s ei sisällä check_policy-metodia" -#: src/net_ifs.c:173 src/net_ifs.c:190 src/net_ifs.c:335 src/sudo.c:476 +#: src/net_ifs.c:183 src/net_ifs.c:200 src/net_ifs.c:345 src/sudo.c:473 #, c-format msgid "internal error, %s overflow" msgstr "sisäinen virhe, %s-ylivuoto" -#: src/parse_args.c:219 +#: src/parse_args.c:228 #, c-format msgid "invalid environment variable name: %s" -msgstr "virheellinen ympäristömuuttujanimi: %s" +msgstr "virheellinen ympäristömuuttujan nimi: %s" -#: src/parse_args.c:313 +#: src/parse_args.c:329 msgid "the argument to -C must be a number greater than or equal to 3" -msgstr "valitsimen -C argumentin on oltava vähintään 3" +msgstr "argumentin valitsimelle -C on oltava vähintään 3" -#: src/parse_args.c:480 +#: src/parse_args.c:523 msgid "you may not specify both the `-i' and `-s' options" -msgstr "sekä valitsimen ”-i” että valitsimen ”-s” määritteleminen ei ole sallittua" +msgstr "valitsimia ”-i” ja ”-s” ei voi käyttää yhdessä" -#: src/parse_args.c:484 +#: src/parse_args.c:527 msgid "you may not specify both the `-i' and `-E' options" -msgstr "sekä valitsimen ”-i” että valitsimen ”-E” määritteleminen ei ole sallittua" +msgstr "valitsimia ”-i” ja ”-E” ei voi käyttää yhdessä" -#: src/parse_args.c:494 +#: src/parse_args.c:537 msgid "the `-E' option is not valid in edit mode" -msgstr "valitsin ”-E” ei ole kelvollinen muokkaustilassa" +msgstr "valitsin ”-E” ei kelpaa muokkaustilassa" -#: src/parse_args.c:496 +#: src/parse_args.c:539 msgid "you may not specify environment variables in edit mode" -msgstr "ympäristömuuttujien määritteleminen muokkaustilassa ei ole sallittua" +msgstr "ympäristömuuttujia ei voi määritellä muokkaustilassa" -#: src/parse_args.c:504 +#: src/parse_args.c:547 msgid "the `-U' option may only be used with the `-l' option" -msgstr "valitsinta ”-U” voidaan käyttää vain valitsimen ”-l” kanssa" +msgstr "valitsinta ”-U” voi käyttää vain valitsimen ”-l” kanssa" -#: src/parse_args.c:508 +#: src/parse_args.c:551 msgid "the `-A' and `-S' options may not be used together" msgstr "valitsimia ”-A” ja ”-S” ei voi käyttää yhdessä" -#: src/parse_args.c:584 +#: src/parse_args.c:627 msgid "sudoedit is not supported on this platform" msgstr "sudoedit ei ole tuettu tällä alustalla" -#: src/parse_args.c:657 +#: src/parse_args.c:700 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" -msgstr "Vain yksi valitsimista -e, -h, -i, -K, -l, -s, -v tai -V voidaan määritellä" +msgstr "Vain yhtä valitsimista -e, -h, -i, -K, -l, -s, -v tai -V voidaan käyttää" -#: src/parse_args.c:671 +#: src/parse_args.c:714 #, c-format msgid "" "%s - edit files as another user\n" @@ -371,7 +408,7 @@ "%s - muokkaa tiedostoja toisena käyttäjänä\n" "\n" -#: src/parse_args.c:673 +#: src/parse_args.c:716 #, c-format msgid "" "%s - execute a command as another user\n" @@ -380,7 +417,7 @@ "%s - suorita komentoja toisena käyttäjänä\n" "\n" -#: src/parse_args.c:678 +#: src/parse_args.c:721 #, c-format msgid "" "\n" @@ -389,506 +426,531 @@ "\n" "Valitsimet:\n" -#: src/parse_args.c:680 +#: src/parse_args.c:723 msgid "use a helper program for password prompting" msgstr "käytä apuohjelmaa salasanakyselyyn" -#: src/parse_args.c:683 +#: src/parse_args.c:726 msgid "use specified BSD authentication type" msgstr "käytä määriteltyä BSD-todennustyyppiä" -#: src/parse_args.c:686 +#: src/parse_args.c:729 msgid "run command in the background" msgstr "suorita komento taustalla" -#: src/parse_args.c:688 +#: src/parse_args.c:731 +msgid "ring bell when prompting" +msgstr "soita kelloa kehotteissa" + +#: src/parse_args.c:733 msgid "close all file descriptors >= num" -msgstr "sulje kaikki tiedostokuvaajat >= num" +msgstr "sulje kaikki tiedostokahvat >= num" -#: src/parse_args.c:691 +#: src/parse_args.c:736 msgid "run command with the specified BSD login class" msgstr "suorita komento määritellyllä BSD-kirjautumisluokalla" -#: src/parse_args.c:694 +#: src/parse_args.c:739 msgid "preserve user environment when running command" msgstr "säilytä käyttäjäympäristö komentoa suoritettaessa" -#: src/parse_args.c:696 +#: src/parse_args.c:741 msgid "preserve specific environment variables" -msgstr "säilytä maaritellyt ympäristömuuttujat" +msgstr "säilytä tietyt ympäristömuuttujat" -#: src/parse_args.c:698 +#: src/parse_args.c:743 msgid "edit files instead of running a command" msgstr "muokkaa tiedostoja komennon suorittamisen sijasta" # tämä viittaa runas_group-määritelyyn -#: src/parse_args.c:700 +#: src/parse_args.c:745 msgid "run command as the specified group name or ID" -msgstr "suorita komento määriteltynä ryhmänimenä tai tunnisteena" +msgstr "suorita komento määriteltynä ryhmänimenä tai -ID:nä" -#: src/parse_args.c:702 +#: src/parse_args.c:747 msgid "set HOME variable to target user's home dir" msgstr "aseta HOME-muuttuja osoittamaan kohdekäyttäjän kotihakemistoon" -#: src/parse_args.c:704 +#: src/parse_args.c:749 msgid "display help message and exit" msgstr "näytä opasteviesti ja poistu" -#: src/parse_args.c:706 +#: src/parse_args.c:751 msgid "run command on host (if supported by plugin)" -msgstr "suorita komento verkkokoneessa (jos lisäosa tukee)" +msgstr "suorita komento etäkoneella (jos lisäosa tukee)" -#: src/parse_args.c:708 +#: src/parse_args.c:753 msgid "run login shell as the target user; a command may also be specified" -msgstr "suorita kirjautumiskomentoikkuna kohdekäyttäjänä; komento voidaan myös määritellä" +msgstr "suorita kirjautumiskuori kohdekäyttäjänä; voidaan myös antaa komento" -#: src/parse_args.c:710 +#: src/parse_args.c:755 msgid "remove timestamp file completely" msgstr "poista aikaleimatiedosto kokonaan" -#: src/parse_args.c:712 +#: src/parse_args.c:757 msgid "invalidate timestamp file" msgstr "mitätöi aikaleimatiedosto" -#: src/parse_args.c:714 +#: src/parse_args.c:759 msgid "list user's privileges or check a specific command; use twice for longer format" -msgstr "luettele käyttäjä käyttöoikeudet ja tarkista määritelty komento; käytä kahdesti pitemmällä muodolla" +msgstr "luettele käyttäjän käyttöoikeudet tai tarkasta tietty komento; kahdesti käyttämällä pidempi muoto" -#: src/parse_args.c:716 +#: src/parse_args.c:761 msgid "non-interactive mode, no prompts are used" -msgstr "vuorovaikutteeton tila, ei kysy käyttäjältä" +msgstr "ei-vuorovaikutteinen tila, ei kehotteita" -#: src/parse_args.c:718 +#: src/parse_args.c:763 msgid "preserve group vector instead of setting to target's" msgstr "säilytä ryhmävektori kohteen vektorin asettamisen sijasta" -#: src/parse_args.c:720 +#: src/parse_args.c:765 msgid "use the specified password prompt" -msgstr "käytä määriteltyä salasanakehotetta" +msgstr "käytä annettua salasanakehotetta" -#: src/parse_args.c:723 +#: src/parse_args.c:768 msgid "create SELinux security context with specified role" -msgstr "luo SELinux-turva-asiayhteys määritellyllä roolilla" +msgstr "luo SELinux-turvakonteksti määritellyllä roolilla" -#: src/parse_args.c:726 +#: src/parse_args.c:771 msgid "read password from standard input" msgstr "lue salasana vakiosyötteestä" -#: src/parse_args.c:728 +#: src/parse_args.c:773 msgid "run shell as the target user; a command may also be specified" -msgstr "suorita komentotulkki kohdekäyttäjänä; myös komento voidaan määritellä" +msgstr "suorita kuori kohdekäyttäjänä; voidaan myös antaa komento" -#: src/parse_args.c:731 +#: src/parse_args.c:776 msgid "create SELinux security context with specified type" -msgstr "luo SELinux-turva-asiayhteys määritellyllä roolilla" +msgstr "luo SELinux-turvakonteksti määritellyllä roolilla" -#: src/parse_args.c:734 +#: src/parse_args.c:779 msgid "terminate command after the specified time limit" msgstr "päätä komento määrätyn aikarajan jälkeen" -#: src/parse_args.c:736 +#: src/parse_args.c:781 msgid "in list mode, display privileges for user" -msgstr "luettelotilassa, näytä käyttöoikeudet käyttäjälle" +msgstr "näytä luettelotilassa käyttäjän oikeudet" -#: src/parse_args.c:738 +#: src/parse_args.c:783 msgid "run command (or edit file) as specified user name or ID" -msgstr "suorita komento (tai muokkaa tiedostoa) määriteltynä käyttäjänimenä tai tunnisteena" +msgstr "suorita komento (tai muokkaa tiedostoa) määriteltynä käyttäjänimenä tai -ID:nä" -#: src/parse_args.c:740 +#: src/parse_args.c:785 msgid "display version information and exit" msgstr "näytä versiotiedot ja poistu" -#: src/parse_args.c:742 +#: src/parse_args.c:787 msgid "update user's timestamp without running a command" msgstr "päivitä käyttäjän aikaleima suorittamatta komentoa" -#: src/parse_args.c:744 +#: src/parse_args.c:789 msgid "stop processing command line arguments" msgstr "lopeta komentoriviargumenttien käsittely" -#: src/selinux.c:78 +#: src/selinux.c:85 msgid "unable to open audit system" msgstr "audit-järjestelmän avaaminen epäonnistui" -#: src/selinux.c:88 +#: src/selinux.c:95 msgid "unable to send audit message" msgstr "audit-viestin lähettäminen epäonnistui" -#: src/selinux.c:116 +#: src/selinux.c:129 #, c-format msgid "unable to fgetfilecon %s" -msgstr "funktion fgetfilecon %s kutsuminen epäonnistui" +msgstr "fgetfilecon %s -kutsu epäonnistui" -#: src/selinux.c:121 +#: src/selinux.c:134 #, c-format msgid "%s changed labels" msgstr "%s muutti nimiöitä" -#: src/selinux.c:126 +#: src/selinux.c:142 #, c-format msgid "unable to restore context for %s" -msgstr "asiayhteyden palauttaminen kohteelle %s epäonnistui" +msgstr "kontekstin palauttaminen kohteelle %s epäonnistui" -#: src/selinux.c:167 +#: src/selinux.c:190 #, c-format msgid "unable to open %s, not relabeling tty" -msgstr "kohteen %s avaaminen epäonnistui, ei nimiöidä uudelleen tty:tä" +msgstr "%s: avaaminen epäonnistui, ei uudelleennimiöidä tty:tä" -#: src/selinux.c:171 src/selinux.c:212 src/selinux.c:229 +#: src/selinux.c:194 src/selinux.c:237 src/selinux.c:254 #, c-format msgid "%s is not a character device, not relabeling tty" -msgstr "%s ei ole merkkilaite, ei nimiöidä uudelleen tty:tä" +msgstr "%s ei ole merkkilaite, ei uudelleennimiöidä tty:tä" -#: src/selinux.c:180 +#: src/selinux.c:203 msgid "unable to get current tty context, not relabeling tty" -msgstr "nykyisen tty-asiayhteyden hakeminen epäonnistui, ei nimiöidä uudelleen tty:tä" +msgstr "nykyisen tty-kontekstin noutaminen epäonnistui, ei uudelleennimiöidä tty:tä" -#: src/selinux.c:187 +#: src/selinux.c:210 msgid "unknown security class \"chr_file\", not relabeling tty" -msgstr "tuntematon turvaluokka \"chr_file\", ei nimiöidä uudelleen tty:tä" +msgstr "tuntematon turvaluokka ”chr_file”, ei uudelleennimiöidä tty:tä" -#: src/selinux.c:192 +#: src/selinux.c:215 msgid "unable to get new tty context, not relabeling tty" -msgstr "uuden tty-asiayhteyden hakeminen epäonnistui, ei nimiöidä uudelleen tty:tä" +msgstr "uuden tty-kontekstin noutaminen epäonnistui, ei uudelleennimiöidä tty:tä" -#: src/selinux.c:199 +#: src/selinux.c:224 msgid "unable to set new tty context" -msgstr "uuden tty-asiayhteyden asettaminen epäonnistui" +msgstr "uuden tty-kontekstin asettaminen epäonnistui" -#: src/selinux.c:273 +#: src/selinux.c:298 #, c-format msgid "you must specify a role for type %s" -msgstr "tyypille %s on määriteltävä rooli" +msgstr "%s-tyypille on määriteltävä rooli" -#: src/selinux.c:279 +#: src/selinux.c:304 #, c-format msgid "unable to get default type for role %s" -msgstr "oletustyypin hakeminen roolille %s epäonnistui" +msgstr "oletustyypin hakeminen %s-roolille epäonnistui" + +#: src/selinux.c:316 +msgid "failed to get new context" +msgstr "uuden kontekstin noutaminen epäonnistui" -#: src/selinux.c:297 +#: src/selinux.c:325 #, c-format msgid "failed to set new role %s" msgstr "uuden roolin %s asettaminen epäonnistui" -#: src/selinux.c:301 +#: src/selinux.c:329 #, c-format msgid "failed to set new type %s" msgstr "uuden tyypin %s asettaminen epäonnistui" -#: src/selinux.c:313 +#: src/selinux.c:341 #, c-format msgid "%s is not a valid context" -msgstr "%s ei ole kelvollinen asiayhteys" +msgstr "%s ei ole kelvollinen konteksti" -#: src/selinux.c:348 -msgid "failed to get old_context" -msgstr "kohteen old_context hakeminen epäonnistui" +#: src/selinux.c:373 +msgid "failed to get old context" +msgstr "vanhan kontekstin noutaminen epäonnistui" -#: src/selinux.c:354 +#: src/selinux.c:379 msgid "unable to determine enforcing mode." -msgstr "vahvistustilan määritteleminen epäonnistui." +msgstr "pakotustilan päättely epäonnistui." -#: src/selinux.c:371 +#: src/selinux.c:396 #, c-format msgid "unable to set tty context to %s" -msgstr "ei kyetä asettamaan tty-asiayhteydeksi %s" +msgstr "tty-kontekstin asetus arvoon %s epäonnistui" -#: src/selinux.c:410 +#: src/selinux.c:428 #, c-format msgid "unable to set exec context to %s" -msgstr "ei kyetä asettamaan suoritusasiayhteydeksi %s" +msgstr "exec-kontekstin asetus arvoon %s epäonnistui" -#: src/selinux.c:417 +#: src/selinux.c:435 #, c-format msgid "unable to set key creation context to %s" -msgstr "ei kyetä asettamaan avaimenluontiasiayhteydeksi %s" +msgstr "avaimenluontikontekstin asetus arvoon %s epäonnistui" -#: src/sesh.c:77 +#: src/sesh.c:79 msgid "requires at least one argument" msgstr "vaatii vähintään yhden argumentin" -#: src/sesh.c:106 +#: src/sesh.c:108 #, c-format msgid "invalid file descriptor number: %s" -msgstr "virheellinen tiedostokuvaajanumero: %s" +msgstr "virheellinen tiedostokahvanumero: %s" -#: src/sesh.c:120 +#: src/sesh.c:122 #, c-format msgid "unable to run %s as a login shell" -msgstr "salasanakyselyn %s suorittaminen komentorivi-ikkunassa epäonnistui" - -#: src/sesh.c:125 src/sudo.c:1117 -#, c-format -msgid "unable to execute %s" -msgstr "kohteen %s suorittaminen epäonnistui" +msgstr "yritys ajaa %s kirjautumiskuorena epäonnistui" -#: src/signal.c:83 +#: src/signal.c:90 #, c-format msgid "unable to save handler for signal %d" -msgstr "käsittelijän tallentaminen signaalille %d epäonnistui" +msgstr "signaalin %d käsittelijän tallentaminen epäonnistui" -#: src/solaris.c:76 +#: src/solaris.c:83 msgid "resource control limit has been reached" msgstr "resurssivalvontaraja saavutettu" -#: src/solaris.c:79 +#: src/solaris.c:86 #, c-format msgid "user \"%s\" is not a member of project \"%s\"" -msgstr "käyttäjä \"%s\" ei ole hankkeen \"%s\" jäsen" +msgstr "käyttäjä ”%s” ei ole ”%s”-hankkeen jäsen" -#: src/solaris.c:83 +#: src/solaris.c:90 msgid "the invoking task is final" -msgstr "kutsuttu tehtävä on final-tyyppinen" +msgstr "kutsuva tehtävä on final-tyyppinen" -#: src/solaris.c:86 +#: src/solaris.c:93 #, c-format msgid "could not join project \"%s\"" -msgstr "hankkeeseen \"%s\" liittyminen epäonnistui" +msgstr "”%s”-hankkeeseen liittyminen epäonnistui" -#: src/solaris.c:91 +#: src/solaris.c:98 #, c-format msgid "no resource pool accepting default bindings exists for project \"%s\"" -msgstr "hankkeelle \"%s\" ei ole oletusyhteydet hyväksyvää resurssivarantoa" +msgstr "”%s”-hankkeelle ei ole oletusyhteydet hyväksyvää resurssivarantoa" -#: src/solaris.c:95 +#: src/solaris.c:102 #, c-format msgid "specified resource pool does not exist for project \"%s\"" -msgstr "hankkeelle \"%s\" ei ole määriteltyä resurssivarantoa" +msgstr "määriteltyä resurssivarantoa ei ole olemassa ”%s”-hankkeelle" -#: src/solaris.c:99 +#: src/solaris.c:106 #, c-format msgid "could not bind to default resource pool for project \"%s\"" -msgstr "hankkeelle \"%s\" ei voitu sitoa oletusresurssivarantoa" +msgstr "”%s”-hanketta ei voitu sitoa oletusresurssivarantoon" -#: src/solaris.c:105 +#: src/solaris.c:112 #, c-format msgid "setproject failed for project \"%s\"" -msgstr "funktio setproject hankkeelle \"%s\" epäonnistui" +msgstr "setproject-kutsu ”%s”-hankkeelle epäonnistui" -#: src/solaris.c:107 +#: src/solaris.c:114 #, c-format msgid "warning, resource control assignment failed for project \"%s\"" -msgstr "varoitus, hankkeen \"%s\" resurssiohjausosoitus epäonnistui" +msgstr "varoitus, ”%s”-hankkeen resurssivalvontaosoitus epäonnistui" -#: src/sudo.c:198 +#: src/sudo.c:204 #, c-format msgid "Sudo version %s\n" msgstr "Sudo-versio %s\n" -#: src/sudo.c:200 +#: src/sudo.c:206 #, c-format msgid "Configure options: %s\n" msgstr "Asetusvalitsimet: %s\n" -#: src/sudo.c:208 +#: src/sudo.c:214 msgid "fatal error, unable to load plugins" msgstr "vakava virhe, lisäosien lataaminen epäonnistui" -#: src/sudo.c:216 +#: src/sudo.c:222 msgid "unable to initialize policy plugin" -msgstr "menettelytapalisäosan alustaminen epäonnistui" +msgstr "käytäntölisäosan alustaminen epäonnistui" -#: src/sudo.c:260 +#: src/sudo.c:266 msgid "plugin did not return a command to execute" -msgstr "lisäosa ei palauta suoritettavaa komentoa" +msgstr "lisäosa ei palauttanut suoritettavaa komentoa" -#: src/sudo.c:276 +#: src/sudo.c:282 #, c-format msgid "error initializing I/O plugin %s" msgstr "virhe alustettaessa siirräntälisäosaa %s" -#: src/sudo.c:299 +#: src/sudo.c:306 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "odottamaton sudo-tila 0x%x" -#: src/sudo.c:461 -msgid "unable to get group vector" -msgstr "ei kyetä hakemaan ryhmävektoria" - -#: src/sudo.c:523 +#: src/sudo.c:538 #, c-format -msgid "unknown uid %u: who are you?" -msgstr "tuntematon uid-käyttäjätunniste %u: kuka olet?" +msgid "you do not exist in the %s database" +msgstr "sinua ei ole olemassa %s-tietokannassa" -#: src/sudo.c:579 +#: src/sudo.c:595 msgid "unable to determine tty" -msgstr "tty:n määritteleminen epäonnistui" +msgstr "tty:n päätteleminen epäonnistui" # ensimmäinen parametri on path -#: src/sudo.c:867 +#: src/sudo.c:887 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "polun %s omistajan on oltava uid %d ja setuid-bitin on oltava asetettu" -#: src/sudo.c:870 +#: src/sudo.c:890 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" -msgstr "todellinen käyttäjätunniste ei ole %d, onko %s asetettu tiedostojärjestelmässä, jossa on ’nosuid’-valitsin vai onko tämä NFS-tiedostojärjestelmä ilman root-käyttöoikeuksia?" +msgstr "vallitseva käyttäjä-id ei ole %d, sijaitseeko %s ”nosuid”-valintaa käyttävällä tiedostojärjestelmällä, vai onko tämä NFS-tiedostojärjestelmä ilman root-käyttöoikeuksia?" -#: src/sudo.c:876 +#: src/sudo.c:896 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" -msgstr "todellinen käyttäjätunniste ei ole %d, onko sudo asennettu setuid root -käyttöoikeuksilla?" +msgstr "vallitseva käyttäjä-id ei ole %d, onko sudo asennettu setuid root -käyttöoikeuksilla?" -#: src/sudo.c:929 +#: src/sudo.c:912 msgid "unable to set supplementary group IDs" -msgstr "lisäryhmätunnisteiden asettaminen epäonnistui" +msgstr "täydentävien ryhmä-ID:iden asettaminen epäonnistui" # tämän ymmärrän niin, että käyttöjärjestelmäydin luo tiedoston ja antaa tälle tavallaan tilapäisen effective gid-tunnisteen, joka vaihdetaan suorittamisen yhteydessä prosessin omistajan suoritettavaksi ryhmätunnisteeksi. -#: src/sudo.c:936 +#: src/sudo.c:919 #, c-format msgid "unable to set effective gid to runas gid %u" -msgstr "voimassaolevan gid-ryhmätunnisteen asettaminen suoritettavaksi gid-ryhmätunnisteeksi %u epäonnistui" +msgstr "vallitsevan ryhmä-ID:n asettaminen runas-ryhmä-ID:ksi %u epäonnistui" -#: src/sudo.c:942 +#: src/sudo.c:925 #, c-format msgid "unable to set gid to runas gid %u" -msgstr "gid-ryhmätunnisteen asettaminen suoritettavaksi gid-ryhmätunnisteeksi %u epäonnistui" +msgstr "ryhmä-ID:n asettaminen runas-ryhmä-ID:ksi %u epäonnistui" -#: src/sudo.c:999 +#: src/sudo.c:982 #, c-format msgid "unexpected child termination condition: %d" msgstr "lapsiprosessin odottamaton päättymisehto: %d" -#: src/sudo.c:1145 +#: src/sudo.c:1128 #, c-format msgid "policy plugin %s is missing the `check_policy' method" -msgstr "menettelytapalisäosa %s ei sisällä ”check_policy”-metodia" +msgstr "käytäntölisäosalta %s puuttuu ”check_policy”-metodi" -#: src/sudo.c:1163 +#: src/sudo.c:1146 #, c-format msgid "policy plugin %s does not support listing privileges" -msgstr "menettelytapalisäosa %s ei tue luettelointikäyttöoikeuksia" +msgstr "käytäntölisäosa %s ei tue käyttöoikeuksien luettelua" -#: src/sudo.c:1180 +#: src/sudo.c:1163 #, c-format msgid "policy plugin %s does not support the -v option" -msgstr "menettelytapalisäosa %s ei tue valitsinta -v" +msgstr "käytäntölisäosa %s ei tue valitsinta -v" -#: src/sudo.c:1195 +#: src/sudo.c:1178 #, c-format msgid "policy plugin %s does not support the -k/-K options" -msgstr "menettelytapalisäosa %s ei tue valitsimia -k/-K" +msgstr "käytäntölisäosa %s ei tue valitsimia -k/-K" -#: src/sudo_edit.c:178 src/sudo_edit.c:267 +# parametrina on CWD- eli Change Working Directory- komennolla palautettava hakemisto +#: src/sudo_edit.c:221 +msgid "no writable temporary directory found" +msgstr "kirjoitettavaa väliaikaishakemistoa ei löytynyt" + +#: src/sudo_edit.c:288 src/sudo_edit.c:377 msgid "unable to restore current working directory" msgstr "nykyisen työhakemiston palauttaminen epäonnistui" -#: src/sudo_edit.c:574 src/sudo_edit.c:686 +#: src/sudo_edit.c:594 src/sudo_edit.c:707 #, c-format msgid "%s: not a regular file" msgstr "%s: ei ole tavallinen tiedosto" -#: src/sudo_edit.c:581 +#: src/sudo_edit.c:601 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s: symbolisten linkkien muokkaus ei ole sallittua" -#: src/sudo_edit.c:584 +#: src/sudo_edit.c:604 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: tiedostojen muokkaus kirjoitettavassa hakemistossa ei ole sallittua" -#: src/sudo_edit.c:617 src/sudo_edit.c:724 +#: src/sudo_edit.c:637 src/sudo_edit.c:747 #, c-format msgid "%s: short write" -msgstr "%s: lyhyt kirjoitus" +msgstr "%s: vaillinainen kirjoitus" -#: src/sudo_edit.c:687 +#: src/sudo_edit.c:708 #, c-format msgid "%s left unmodified" -msgstr "%s jätetty muokkaamattomaksi" +msgstr "%s jätetty muuttamattomaksi" -#: src/sudo_edit.c:700 src/sudo_edit.c:885 +#: src/sudo_edit.c:721 src/sudo_edit.c:908 #, c-format msgid "%s unchanged" msgstr "%s muuttamaton" -#: src/sudo_edit.c:713 src/sudo_edit.c:735 +#: src/sudo_edit.c:736 src/sudo_edit.c:758 #, c-format msgid "unable to write to %s" msgstr "kohteeseen %s kirjoittaminen epäonnistui" -#: src/sudo_edit.c:714 src/sudo_edit.c:733 src/sudo_edit.c:736 -#: src/sudo_edit.c:910 src/sudo_edit.c:914 +#: src/sudo_edit.c:737 src/sudo_edit.c:756 src/sudo_edit.c:759 +#: src/sudo_edit.c:933 src/sudo_edit.c:937 #, c-format msgid "contents of edit session left in %s" -msgstr "muokkausistunnon sisältö jätetty kohteessa %s" +msgstr "muokkausistunnon sisältö jätetty kohteeseen %s" -#: src/sudo_edit.c:732 +#: src/sudo_edit.c:755 msgid "unable to read temporary file" -msgstr "tilapäisen tiedoston lukeminen epäonnistui" +msgstr "väliaikaistiedoston lukeminen epäonnistui" -#: src/sudo_edit.c:815 +#: src/sudo_edit.c:838 msgid "sesh: internal error: odd number of paths" msgstr "sesh: sisäinen virhe: polkujen pariton määrä" -#: src/sudo_edit.c:817 +#: src/sudo_edit.c:840 msgid "sesh: unable to create temporary files" -msgstr "sesh: tilapäisten tiedostojen luominen epäonnistui" +msgstr "sesh: väliaikaistiedostojen luominen epäonnistui" -#: src/sudo_edit.c:819 src/sudo_edit.c:917 +#: src/sudo_edit.c:842 src/sudo_edit.c:940 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: tuntematon virhe %d" -#: src/sudo_edit.c:909 +#: src/sudo_edit.c:932 msgid "unable to copy temporary files back to their original location" -msgstr "tilapäisten tiedostojen kopioiminen takaisin niiden alkuperäiseen sijaintiin epäonnistui" +msgstr "väliaikaistiedostojen kopioiminen takaisin niiden alkuperäiseen sijaintiin epäonnistui" -#: src/sudo_edit.c:913 +#: src/sudo_edit.c:936 msgid "unable to copy some of the temporary files back to their original location" -msgstr "joidenkin tilapäisten tiedostojen kopioiminen takaisin niiden alkuperäiseen sijaintiin epäonnistui" +msgstr "joidenkin väliaikaistiedostojen kopioiminen takaisin niiden alkuperäiseen sijaintiin epäonnistui" -#: src/sudo_edit.c:958 +#: src/sudo_edit.c:981 #, c-format msgid "unable to change uid to root (%u)" -msgstr "uid-käyttäjätunnisteen vaihtaminen root-tunnisteeksi (%u) epäonnistui" +msgstr "käyttäjä-ID:n vaihtaminen rootiksi (%u) epäonnistui" -#: src/sudo_edit.c:975 +#: src/sudo_edit.c:998 msgid "plugin error: missing file list for sudoedit" msgstr "lisäosavirhe: puuttuu sudoedit-tiedostoluettelo" -#: src/sudo_edit.c:1016 src/sudo_edit.c:1029 +#: src/sudo_edit.c:1039 src/sudo_edit.c:1052 msgid "unable to read the clock" msgstr "kellon lukeminen epäonnistui" -#: src/tgetpass.c:107 -msgid "no tty present and no askpass program specified" -msgstr "ei tty:tä käytettävissä eikä salasanan kyselyohjelmaa määriteltynä" +#: src/tgetpass.c:102 +msgid "timed out reading password" +msgstr "aikakatkaisu salasanaa luettaessa" + +#: src/tgetpass.c:105 +msgid "no password was provided" +msgstr "salasanaa ei annettu" + +#: src/tgetpass.c:108 +msgid "unable to read password" +msgstr "salasanan lukeminen epäonnistui" + +#: src/tgetpass.c:147 +msgid "a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper" +msgstr "salasanan lukemiseksi vaaditaan pääte; käytä joko valitsinta -S vakiosyötteen lukemiseksi tai aseta salasanakyselin" -#: src/tgetpass.c:116 +#: src/tgetpass.c:157 msgid "no askpass program specified, try setting SUDO_ASKPASS" -msgstr "salasanan kyselyohjelma ei ole määritelty, yritä asettaa SUDO_ASKPASS" +msgstr "salasanakyselin on määrittelemättä, yritä asettaa SUDO_ASKPASS" -#: src/tgetpass.c:261 +#: src/tgetpass.c:322 #, c-format msgid "unable to set gid to %u" -msgstr "ei kyetä asettamaan gid-ryhmätunnisteeksi %u" +msgstr "ryhmä-ID:n asettaminen arvoon %u epäonnistui" -#: src/tgetpass.c:265 +#: src/tgetpass.c:326 #, c-format msgid "unable to set uid to %u" -msgstr "ei kyetä asettamaan uid-käyttäjätunnisteeksi %u" +msgstr "käyttäjä-ID:n asettaminen arvoon %u epäonnistui" -#: src/tgetpass.c:270 +#: src/tgetpass.c:331 #, c-format msgid "unable to run %s" -msgstr "salasanakyselyn %s suorittaminen epäonnistui" +msgstr "salasanakyselimen %s suorittaminen epäonnistui" -#: src/utmp.c:268 +#: src/utmp.c:295 msgid "unable to save stdin" msgstr "vakiosyötteeseen tallentaminen epäonnistui" -#: src/utmp.c:270 +#: src/utmp.c:297 msgid "unable to dup2 stdin" -msgstr "funktion dup2 kutsuminen vakiosyötteellä epäonnistui" +msgstr "dup2-kutsu vakiosyötteelle epäonnistui" -#: src/utmp.c:273 +#: src/utmp.c:300 msgid "unable to restore stdin" msgstr "vakiosyötteen palauttaminen epäonnistui" +#~ msgid "unable to get group vector" +#~ msgstr "ei kyetä hakemaan ryhmävektoria" + +#~ msgid "unknown uid %u: who are you?" +#~ msgstr "tuntematon uid-käyttäjätunniste %u: kuka olet?" + +#~ msgid "no tty present and no askpass program specified" +#~ msgstr "ei tty:tä käytettävissä eikä salasanan kyselyohjelmaa määriteltynä" + #~ msgid "error reading from signal pipe" #~ msgstr "virhe luettaessa signaaliputkesta" Binary files /tmp/tmpxQuIu2/iFUK1R4uMA/sudo-1.8.29/po/nb.mo and /tmp/tmpxQuIu2/W5KRB4HzHp/sudo-1.8.31/po/nb.mo differ diff -Nru sudo-1.8.29/po/nb.po sudo-1.8.31/po/nb.po --- sudo-1.8.29/po/nb.po 2019-10-28 12:31:06.000000000 +0000 +++ sudo-1.8.31/po/nb.po 2019-12-31 12:58:36.000000000 +0000 @@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo-1.8.28b1\n" +"Project-Id-Version: sudo-1.8.29rc1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2019-07-19 11:51-0600\n" -"PO-Revision-Date: 2019-07-21 11:14+0200\n" +"POT-Creation-Date: 2019-10-21 19:55-0600\n" +"PO-Revision-Date: 2019-10-29 09:12+0100\n" "Last-Translator: Åka Sikrom \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb\n" @@ -45,24 +45,24 @@ #: src/exec_nopty.c:243 src/exec_nopty.c:250 src/exec_nopty.c:257 #: src/exec_nopty.c:264 src/exec_nopty.c:271 src/exec_nopty.c:278 #: src/exec_nopty.c:285 src/exec_nopty.c:292 src/exec_nopty.c:299 -#: src/exec_nopty.c:307 src/exec_nopty.c:469 src/exec_pty.c:783 -#: src/exec_pty.c:792 src/exec_pty.c:849 src/exec_pty.c:999 -#: src/exec_pty.c:1162 src/exec_pty.c:1168 src/exec_pty.c:1177 -#: src/exec_pty.c:1184 src/exec_pty.c:1191 src/exec_pty.c:1198 -#: src/exec_pty.c:1205 src/exec_pty.c:1212 src/exec_pty.c:1219 -#: src/exec_pty.c:1226 src/exec_pty.c:1233 src/exec_pty.c:1240 -#: src/exec_pty.c:1248 src/exec_pty.c:1665 src/load_plugins.c:59 +#: src/exec_nopty.c:307 src/exec_nopty.c:480 src/exec_pty.c:786 +#: src/exec_pty.c:795 src/exec_pty.c:852 src/exec_pty.c:1002 +#: src/exec_pty.c:1165 src/exec_pty.c:1171 src/exec_pty.c:1180 +#: src/exec_pty.c:1187 src/exec_pty.c:1194 src/exec_pty.c:1201 +#: src/exec_pty.c:1208 src/exec_pty.c:1215 src/exec_pty.c:1222 +#: src/exec_pty.c:1229 src/exec_pty.c:1236 src/exec_pty.c:1243 +#: src/exec_pty.c:1251 src/exec_pty.c:1668 src/load_plugins.c:59 #: src/load_plugins.c:72 src/load_plugins.c:225 src/load_plugins.c:246 #: src/load_plugins.c:315 src/load_plugins.c:321 src/load_plugins.c:335 -#: src/load_plugins.c:341 src/parse_args.c:185 src/parse_args.c:206 -#: src/parse_args.c:281 src/parse_args.c:571 src/parse_args.c:593 +#: src/load_plugins.c:341 src/parse_args.c:186 src/parse_args.c:207 +#: src/parse_args.c:282 src/parse_args.c:583 src/parse_args.c:605 #: src/preserve_fds.c:54 src/preserve_fds.c:139 src/selinux.c:91 -#: src/selinux.c:316 src/selinux.c:439 src/selinux.c:448 src/sesh.c:117 -#: src/sudo.c:618 src/sudo.c:678 src/sudo.c:688 src/sudo.c:708 src/sudo.c:727 -#: src/sudo.c:736 src/sudo.c:745 src/sudo.c:762 src/sudo.c:803 src/sudo.c:813 -#: src/sudo.c:836 src/sudo.c:1073 src/sudo.c:1094 src/sudo.c:1268 -#: src/sudo.c:1384 src/sudo_edit.c:258 src/sudo_edit.c:791 src/sudo_edit.c:888 -#: src/sudo_edit.c:1002 src/sudo_edit.c:1022 +#: src/selinux.c:337 src/selinux.c:450 src/selinux.c:459 src/sesh.c:117 +#: src/sudo.c:619 src/sudo.c:679 src/sudo.c:689 src/sudo.c:710 src/sudo.c:729 +#: src/sudo.c:738 src/sudo.c:747 src/sudo.c:764 src/sudo.c:805 src/sudo.c:815 +#: src/sudo.c:841 src/sudo.c:1041 src/sudo.c:1062 src/sudo.c:1240 +#: src/sudo.c:1356 src/sudo_edit.c:258 src/sudo_edit.c:794 src/sudo_edit.c:891 +#: src/sudo_edit.c:1005 src/sudo_edit.c:1025 #, c-format msgid "%s: %s" msgstr "%s: %s" @@ -78,21 +78,21 @@ #: src/exec_nopty.c:236 src/exec_nopty.c:243 src/exec_nopty.c:250 #: src/exec_nopty.c:257 src/exec_nopty.c:264 src/exec_nopty.c:271 #: src/exec_nopty.c:278 src/exec_nopty.c:285 src/exec_nopty.c:292 -#: src/exec_nopty.c:299 src/exec_nopty.c:307 src/exec_pty.c:783 -#: src/exec_pty.c:792 src/exec_pty.c:849 src/exec_pty.c:1162 -#: src/exec_pty.c:1168 src/exec_pty.c:1177 src/exec_pty.c:1184 -#: src/exec_pty.c:1191 src/exec_pty.c:1198 src/exec_pty.c:1205 -#: src/exec_pty.c:1212 src/exec_pty.c:1219 src/exec_pty.c:1226 -#: src/exec_pty.c:1233 src/exec_pty.c:1240 src/exec_pty.c:1248 -#: src/exec_pty.c:1665 src/load_plugins.c:225 src/load_plugins.c:246 +#: src/exec_nopty.c:299 src/exec_nopty.c:307 src/exec_pty.c:786 +#: src/exec_pty.c:795 src/exec_pty.c:852 src/exec_pty.c:1165 +#: src/exec_pty.c:1171 src/exec_pty.c:1180 src/exec_pty.c:1187 +#: src/exec_pty.c:1194 src/exec_pty.c:1201 src/exec_pty.c:1208 +#: src/exec_pty.c:1215 src/exec_pty.c:1222 src/exec_pty.c:1229 +#: src/exec_pty.c:1236 src/exec_pty.c:1243 src/exec_pty.c:1251 +#: src/exec_pty.c:1668 src/load_plugins.c:225 src/load_plugins.c:246 #: src/load_plugins.c:315 src/load_plugins.c:321 src/load_plugins.c:335 -#: src/load_plugins.c:341 src/parse_args.c:185 src/parse_args.c:207 -#: src/parse_args.c:281 src/parse_args.c:571 src/parse_args.c:593 +#: src/load_plugins.c:341 src/parse_args.c:186 src/parse_args.c:208 +#: src/parse_args.c:282 src/parse_args.c:583 src/parse_args.c:605 #: src/preserve_fds.c:54 src/preserve_fds.c:139 src/selinux.c:91 -#: src/selinux.c:316 src/selinux.c:439 src/selinux.c:448 src/sesh.c:117 -#: src/sudo.c:618 src/sudo.c:836 src/sudo.c:1073 src/sudo.c:1094 -#: src/sudo.c:1268 src/sudo.c:1384 src/sudo_edit.c:258 src/sudo_edit.c:791 -#: src/sudo_edit.c:888 src/sudo_edit.c:1002 src/sudo_edit.c:1022 +#: src/selinux.c:337 src/selinux.c:450 src/selinux.c:459 src/sesh.c:117 +#: src/sudo.c:619 src/sudo.c:841 src/sudo.c:1041 src/sudo.c:1062 +#: src/sudo.c:1240 src/sudo.c:1356 src/sudo_edit.c:258 src/sudo_edit.c:794 +#: src/sudo_edit.c:891 src/sudo_edit.c:1005 src/sudo_edit.c:1025 msgid "unable to allocate memory" msgstr "klarte ikke å tildele minne" @@ -100,18 +100,16 @@ msgid "Unknown signal" msgstr "Ukjent signal" -#: lib/util/strtoid.c:84 lib/util/strtoid.c:131 lib/util/strtoid.c:159 -#: lib/util/strtomode.c:56 lib/util/strtonum.c:65 lib/util/strtonum.c:183 +#: lib/util/strtoid.c:96 lib/util/strtomode.c:56 lib/util/strtonum.c:161 +#: lib/util/strtonum.c:196 msgid "invalid value" msgstr "ugyldig verdi" -#: lib/util/strtoid.c:91 lib/util/strtoid.c:138 lib/util/strtoid.c:166 -#: lib/util/strtomode.c:62 lib/util/strtonum.c:68 lib/util/strtonum.c:195 +#: lib/util/strtomode.c:62 lib/util/strtonum.c:173 msgid "value too large" msgstr "verdien er for stor" -#: lib/util/strtoid.c:93 lib/util/strtoid.c:144 lib/util/strtomode.c:62 -#: lib/util/strtonum.c:68 lib/util/strtonum.c:189 +#: lib/util/strtomode.c:62 lib/util/strtonum.c:167 msgid "value too small" msgstr "verdien er for liten" @@ -160,42 +158,42 @@ msgid "%s is group writable" msgstr "«%s» kan overskrives av eiergruppa" -#: lib/util/sudo_conf.c:599 src/selinux.c:215 src/selinux.c:232 src/sudo.c:362 +#: lib/util/sudo_conf.c:599 src/selinux.c:233 src/selinux.c:250 src/sudo.c:363 #, c-format msgid "unable to open %s" msgstr "klarte ikke å åpne %s" -#: src/exec.c:167 +#: src/exec.c:111 #, c-format msgid "unknown login class %s" msgstr "innloggingsklassen «%s» er ukjent" -#: src/exec.c:180 +#: src/exec.c:123 msgid "unable to set user context" msgstr "klarte ikke å velge brukerkontekst" -#: src/exec.c:196 +#: src/exec.c:139 msgid "unable to set process priority" msgstr "klarte ikke å velge prosessprioritet" -#: src/exec.c:204 +#: src/exec.c:150 #, c-format msgid "unable to change root to %s" msgstr "klarte ikke å endre rot til «%s»" -#: src/exec.c:217 src/exec.c:223 src/exec.c:230 +#: src/exec.c:163 src/exec.c:169 src/exec.c:176 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "klarte ikke å endre til runas uid (%u, %u)" -#: src/exec.c:248 +#: src/exec.c:194 #, c-format msgid "unable to change directory to %s" msgstr "klarte ikke å endre mappe til «%s»" -#: src/exec.c:347 src/exec_monitor.c:576 src/exec_monitor.c:578 -#: src/exec_nopty.c:527 src/exec_pty.c:527 src/exec_pty.c:1333 -#: src/exec_pty.c:1335 src/signal.c:150 src/signal.c:164 +#: src/exec.c:293 src/exec_monitor.c:576 src/exec_monitor.c:578 +#: src/exec_nopty.c:538 src/exec_pty.c:530 src/exec_pty.c:1336 +#: src/exec_pty.c:1338 src/signal.c:150 src/signal.c:164 #, c-format msgid "unable to set handler for signal %d" msgstr "klarte ikke å velge håndtering av signal %d" @@ -220,14 +218,14 @@ #: src/exec_nopty.c:238 src/exec_nopty.c:245 src/exec_nopty.c:252 #: src/exec_nopty.c:259 src/exec_nopty.c:266 src/exec_nopty.c:273 #: src/exec_nopty.c:280 src/exec_nopty.c:287 src/exec_nopty.c:294 -#: src/exec_nopty.c:301 src/exec_nopty.c:309 src/exec_pty.c:649 -#: src/exec_pty.c:654 src/exec_pty.c:751 src/exec_pty.c:758 src/exec_pty.c:855 -#: src/exec_pty.c:1170 src/exec_pty.c:1179 src/exec_pty.c:1186 -#: src/exec_pty.c:1193 src/exec_pty.c:1200 src/exec_pty.c:1207 -#: src/exec_pty.c:1214 src/exec_pty.c:1221 src/exec_pty.c:1228 -#: src/exec_pty.c:1235 src/exec_pty.c:1242 src/exec_pty.c:1618 -#: src/exec_pty.c:1628 src/exec_pty.c:1673 src/exec_pty.c:1680 -#: src/exec_pty.c:1707 +#: src/exec_nopty.c:301 src/exec_nopty.c:309 src/exec_pty.c:652 +#: src/exec_pty.c:657 src/exec_pty.c:754 src/exec_pty.c:761 src/exec_pty.c:858 +#: src/exec_pty.c:1173 src/exec_pty.c:1182 src/exec_pty.c:1189 +#: src/exec_pty.c:1196 src/exec_pty.c:1203 src/exec_pty.c:1210 +#: src/exec_pty.c:1217 src/exec_pty.c:1224 src/exec_pty.c:1231 +#: src/exec_pty.c:1238 src/exec_pty.c:1245 src/exec_pty.c:1621 +#: src/exec_pty.c:1631 src/exec_pty.c:1676 src/exec_pty.c:1683 +#: src/exec_pty.c:1710 msgid "unable to add event to queue" msgstr "klarte ikke å legge hendelse i kø" @@ -235,8 +233,8 @@ msgid "unable to set controlling tty" msgstr "klarte ikke å velge styrende tty" -#: src/exec_monitor.c:602 src/exec_nopty.c:366 src/exec_pty.c:1412 -#: src/exec_pty.c:1433 src/exec_pty.c:1453 src/tgetpass.c:307 +#: src/exec_monitor.c:602 src/exec_nopty.c:366 src/exec_pty.c:1415 +#: src/exec_pty.c:1436 src/exec_pty.c:1456 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "klarte ikke å lage datarør" @@ -244,29 +242,29 @@ msgid "unable to receive message from parent" msgstr "klarte ikke å motta melding fra forelder" -#: src/exec_monitor.c:616 src/exec_nopty.c:384 src/exec_pty.c:1491 +#: src/exec_monitor.c:624 src/exec_nopty.c:395 src/exec_pty.c:1494 #: src/tgetpass.c:311 msgid "unable to fork" msgstr "klarte ikke å lage kopi av prosess" -#: src/exec_monitor.c:630 src/sesh.c:127 src/sudo.c:1132 +#: src/exec_monitor.c:628 src/exec_monitor.c:727 src/exec_nopty.c:448 +msgid "unable to restore tty label" +msgstr "klarte ikke å gjenopprette tty-etikett" + +#: src/exec_monitor.c:644 src/sesh.c:127 src/sudo.c:1100 #, c-format msgid "unable to execute %s" msgstr "klarte ikke å kjøre «%s»" -#: src/exec_monitor.c:713 src/exec_nopty.c:437 -msgid "unable to restore tty label" -msgstr "klarte ikke å gjenopprette tty-etikett" - -#: src/exec_nopty.c:360 src/exec_pty.c:1342 +#: src/exec_nopty.c:360 src/exec_pty.c:1345 msgid "policy plugin failed session initialization" msgstr "regeltillegg klarte ikke å starte økt" -#: src/exec_nopty.c:426 src/exec_pty.c:1578 +#: src/exec_nopty.c:437 src/exec_pty.c:1581 msgid "error in event loop" msgstr "feil i hendelsesløkke" -#: src/exec_nopty.c:535 src/exec_pty.c:562 src/signal.c:112 +#: src/exec_nopty.c:546 src/exec_pty.c:565 src/signal.c:112 #, c-format msgid "unable to restore handler for signal %d" msgstr "klarte ikke å gjenopprette håndtering av signal %d" @@ -275,11 +273,11 @@ msgid "unable to allocate pty" msgstr "klarte ikke å tildele pty" -#: src/exec_pty.c:1322 +#: src/exec_pty.c:1325 msgid "unable to create sockets" msgstr "klarte ikke å lage sokkel" -#: src/exec_pty.c:1535 +#: src/exec_pty.c:1538 msgid "unable to send message to monitor process" msgstr "klarte ikke å sende melding til overvåkningsprosess" @@ -350,53 +348,53 @@ msgid "policy plugin %s does not include a check_policy method" msgstr "regeltillegget «%s» inneholder ikke en «check_policy»-metode" -#: src/net_ifs.c:183 src/net_ifs.c:200 src/net_ifs.c:345 src/sudo.c:472 +#: src/net_ifs.c:183 src/net_ifs.c:200 src/net_ifs.c:345 src/sudo.c:473 #, c-format msgid "internal error, %s overflow" msgstr "intern feil: %s er full" -#: src/parse_args.c:227 +#: src/parse_args.c:228 #, c-format msgid "invalid environment variable name: %s" msgstr "%s er et ugyldig miljøvariabel-navn" -#: src/parse_args.c:326 +#: src/parse_args.c:329 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "«-C» må brukes med et tallargument med en verdi på minst 3" -#: src/parse_args.c:511 +#: src/parse_args.c:523 msgid "you may not specify both the `-i' and `-s' options" msgstr "du kan ikke velge både «-i» og «-s»" -#: src/parse_args.c:515 +#: src/parse_args.c:527 msgid "you may not specify both the `-i' and `-E' options" msgstr "du kan ikke velge både «-i» og «-E»" -#: src/parse_args.c:525 +#: src/parse_args.c:537 msgid "the `-E' option is not valid in edit mode" msgstr "valget «-E» er ugyldig i redigeringsmodus" -#: src/parse_args.c:527 +#: src/parse_args.c:539 msgid "you may not specify environment variables in edit mode" msgstr "du kan ikke velge miljøvariabler i redigeringsmodus" -#: src/parse_args.c:535 +#: src/parse_args.c:547 msgid "the `-U' option may only be used with the `-l' option" msgstr "valget «-U» kan ikke brukes uten «-l»" -#: src/parse_args.c:539 +#: src/parse_args.c:551 msgid "the `-A' and `-S' options may not be used together" msgstr "valgene «-A» og «-S» kan ikke brukes samtidig" -#: src/parse_args.c:615 +#: src/parse_args.c:627 msgid "sudoedit is not supported on this platform" msgstr "sudoedit støttes ikke på denne plattformen" -#: src/parse_args.c:688 +#: src/parse_args.c:700 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Du kan bare velge ett av valgene -e, -h, -i, -K, -l, -s, -v eller -V" -#: src/parse_args.c:702 +#: src/parse_args.c:714 #, c-format msgid "" "%s - edit files as another user\n" @@ -405,7 +403,7 @@ "%s - rediger filer som om du var en annen bruker\n" "\n" -#: src/parse_args.c:704 +#: src/parse_args.c:716 #, c-format msgid "" "%s - execute a command as another user\n" @@ -414,7 +412,7 @@ "%s - kjør en kommando som om du var en annen bruker\n" "\n" -#: src/parse_args.c:709 +#: src/parse_args.c:721 #, c-format msgid "" "\n" @@ -423,123 +421,123 @@ "\n" "Valg:\n" -#: src/parse_args.c:711 +#: src/parse_args.c:723 msgid "use a helper program for password prompting" msgstr "bruk et hjelpeprogram for å oppgi passord" -#: src/parse_args.c:714 +#: src/parse_args.c:726 msgid "use specified BSD authentication type" msgstr "bruk valgt BSD-autentiseringsmetode" -#: src/parse_args.c:717 +#: src/parse_args.c:729 msgid "run command in the background" msgstr "kjør kommando i bakgrunnen" -#: src/parse_args.c:719 +#: src/parse_args.c:731 msgid "ring bell when prompting" msgstr "lag varsellyd ved spørrende ledetekst" -#: src/parse_args.c:721 +#: src/parse_args.c:733 msgid "close all file descriptors >= num" msgstr "lukk alle fildeskriptorer >= num" -#: src/parse_args.c:724 +#: src/parse_args.c:736 msgid "run command with the specified BSD login class" msgstr "kjør kommando med valgt BSD-innloggingsklasse" -#: src/parse_args.c:727 +#: src/parse_args.c:739 msgid "preserve user environment when running command" msgstr "behold gjeldende brukermiljø når kommandoen kjøres" -#: src/parse_args.c:729 +#: src/parse_args.c:741 msgid "preserve specific environment variables" msgstr "behold bestemte miljøvariabler" -#: src/parse_args.c:731 +#: src/parse_args.c:743 msgid "edit files instead of running a command" msgstr "rediger filer i stedet for å kjøre en kommando" -#: src/parse_args.c:733 +#: src/parse_args.c:745 msgid "run command as the specified group name or ID" msgstr "kjør kommando som om du var en del av valgt gruppe (-navn eller -ID)" -#: src/parse_args.c:735 +#: src/parse_args.c:747 msgid "set HOME variable to target user's home dir" msgstr "bruk valgt brukers hjemmemappe som HOME-miljøvariabel" -#: src/parse_args.c:737 +#: src/parse_args.c:749 msgid "display help message and exit" msgstr "vis hjelpetekst og avslutt" -#: src/parse_args.c:739 +#: src/parse_args.c:751 msgid "run command on host (if supported by plugin)" msgstr "kjør kommando på verten (hvis programtillegget støtter det)" -#: src/parse_args.c:741 +#: src/parse_args.c:753 msgid "run login shell as the target user; a command may also be specified" msgstr "kjør innloggingsskall som om du var den valgte brukeren (du kan også oppgi en kommando her)" -#: src/parse_args.c:743 +#: src/parse_args.c:755 msgid "remove timestamp file completely" msgstr "fjern tidsstempel-fil skikkelig" -#: src/parse_args.c:745 +#: src/parse_args.c:757 msgid "invalidate timestamp file" msgstr "gjør tidsstempel-fil ugyldig" -#: src/parse_args.c:747 +#: src/parse_args.c:759 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "vis brukerens privilegier, eller sjekk om det fungerer å kjøre en bestemt kommando (bruk to ganger for å se et lengre format)" -#: src/parse_args.c:749 +#: src/parse_args.c:761 msgid "non-interactive mode, no prompts are used" msgstr "stillemodus (ingen ledetekst vises)" -#: src/parse_args.c:751 +#: src/parse_args.c:763 msgid "preserve group vector instead of setting to target's" msgstr "behold gruppevektor, i stedet for å bruke den som gjelder for målet" -#: src/parse_args.c:753 +#: src/parse_args.c:765 msgid "use the specified password prompt" msgstr "bruk valgt passord-ledetekst" -#: src/parse_args.c:756 +#: src/parse_args.c:768 msgid "create SELinux security context with specified role" msgstr "lag SELinux-sikkerhetskontekst med valgt rolle" -#: src/parse_args.c:759 +#: src/parse_args.c:771 msgid "read password from standard input" msgstr "les passord fra standard inndata" -#: src/parse_args.c:761 +#: src/parse_args.c:773 msgid "run shell as the target user; a command may also be specified" msgstr "kjør skall som valgt bruker (du kan også oppgi en kommando her)" -#: src/parse_args.c:764 +#: src/parse_args.c:776 msgid "create SELinux security context with specified type" msgstr "lag SELinux-sikkerhetskontekst med valgt type" -#: src/parse_args.c:767 +#: src/parse_args.c:779 msgid "terminate command after the specified time limit" msgstr "avslutt kommando etter valgt tidsfrist" -#: src/parse_args.c:769 +#: src/parse_args.c:781 msgid "in list mode, display privileges for user" msgstr "vis brukerprivilegier (i listemodus)" -#: src/parse_args.c:771 +#: src/parse_args.c:783 msgid "run command (or edit file) as specified user name or ID" msgstr "kjør kommando (eller rediger fil) som valgt brukernavn eller bruker-ID" -#: src/parse_args.c:773 +#: src/parse_args.c:785 msgid "display version information and exit" msgstr "vis programversjon og avslutt" -#: src/parse_args.c:775 +#: src/parse_args.c:787 msgid "update user's timestamp without running a command" msgstr "oppdater brukerens tidsstempel uten å kjøre en kommando" -#: src/parse_args.c:777 +#: src/parse_args.c:789 msgid "stop processing command line arguments" msgstr "slutt å behandle kommandolinje-argumenter" @@ -551,91 +549,95 @@ msgid "unable to send audit message" msgstr "klarte ikke å sende revisjonsmelding" -#: src/selinux.c:123 +#: src/selinux.c:129 #, c-format msgid "unable to fgetfilecon %s" msgstr "klarte ikke å utføre fgetfilecon %s" -#: src/selinux.c:128 +#: src/selinux.c:134 #, c-format msgid "%s changed labels" msgstr "%s endret etiketter" -#: src/selinux.c:133 +#: src/selinux.c:142 #, c-format msgid "unable to restore context for %s" msgstr "klarte ikke å gjenopprette kontekst for «%s»" -#: src/selinux.c:174 +#: src/selinux.c:190 #, c-format msgid "unable to open %s, not relabeling tty" msgstr "klarte ikke å åpne «%s». tty får ikke ny etikett" -#: src/selinux.c:178 src/selinux.c:219 src/selinux.c:236 +#: src/selinux.c:194 src/selinux.c:237 src/selinux.c:254 #, c-format msgid "%s is not a character device, not relabeling tty" msgstr "%s er ikke en tegnenhet. tty får ikke ny etikett" -#: src/selinux.c:187 +#: src/selinux.c:203 msgid "unable to get current tty context, not relabeling tty" msgstr "klarte ikke å hente gjeldende tty-kontekst. tty får ikke ny etikett" -#: src/selinux.c:194 +#: src/selinux.c:210 msgid "unknown security class \"chr_file\", not relabeling tty" msgstr "«chr_file» er ugyldig sikkerhetsklasse. tty får ikke ny etikett" -#: src/selinux.c:199 +#: src/selinux.c:215 msgid "unable to get new tty context, not relabeling tty" msgstr "klrate ikke å hente ny tty-kontekst. tty får ikke ny etikett" -#: src/selinux.c:206 +#: src/selinux.c:224 msgid "unable to set new tty context" msgstr "klarte ikke å velge ny tty-kontekst" -#: src/selinux.c:280 +#: src/selinux.c:298 #, c-format msgid "you must specify a role for type %s" msgstr "du må velge en rolle for typen «%s»" -#: src/selinux.c:286 +#: src/selinux.c:304 #, c-format msgid "unable to get default type for role %s" msgstr "klarte ikke å hente standardtype for rollen «%s»" -#: src/selinux.c:304 +#: src/selinux.c:316 +msgid "failed to get new context" +msgstr "klarte ikke å hente ny kontekst" + +#: src/selinux.c:325 #, c-format msgid "failed to set new role %s" msgstr "klarte ikke å velge den nye rollen «%s»" -#: src/selinux.c:308 +#: src/selinux.c:329 #, c-format msgid "failed to set new type %s" msgstr "klarte ikke å velge den nye typen «%s»" -#: src/selinux.c:320 +#: src/selinux.c:341 #, c-format msgid "%s is not a valid context" msgstr "«%s» er en ugyldig kontekst" -#: src/selinux.c:355 -msgid "failed to get old_context" -msgstr "klarte ikke å hente «old_context»" +#: src/selinux.c:373 +msgid "failed to get old context" +msgstr "klarte ikke å hente gammel kontekst" -#: src/selinux.c:361 +#: src/selinux.c:379 msgid "unable to determine enforcing mode." msgstr "klarte ikke å finne håndhevelsesmodus." -#: src/selinux.c:378 +#: src/selinux.c:396 #, c-format msgid "unable to set tty context to %s" msgstr "klarte ikke å velge «%s» som tty-kontekst" -#: src/selinux.c:417 +#: src/selinux.c:428 #, c-format msgid "unable to set exec context to %s" msgstr "klarte ikke å velge «%s» som kjørekontekst" -#: src/selinux.c:424 +#: src/selinux.c:435 #, c-format msgid "unable to set key creation context to %s" msgstr "klarte ikke å velge «%s» som nøkkelkontekst" @@ -702,97 +704,97 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "advarsel: noe gikk galt ved tildeling av ressurskontroll for prosjektet «%s»" -#: src/sudo.c:203 +#: src/sudo.c:204 #, c-format msgid "Sudo version %s\n" msgstr "Sudo versjon %s\n" -#: src/sudo.c:205 +#: src/sudo.c:206 #, c-format msgid "Configure options: %s\n" msgstr "Velg innstillinger: %s\n" -#: src/sudo.c:213 +#: src/sudo.c:214 msgid "fatal error, unable to load plugins" msgstr "kritisk feil: klarte ikke å laste inn tilleggsprogrammer" -#: src/sudo.c:221 +#: src/sudo.c:222 msgid "unable to initialize policy plugin" msgstr "klarte ikke å starte opp regeltillegg" -#: src/sudo.c:265 +#: src/sudo.c:266 msgid "plugin did not return a command to execute" msgstr "tillegget sendte ikke en kjørbar kommando" -#: src/sudo.c:281 +#: src/sudo.c:282 #, c-format msgid "error initializing I/O plugin %s" msgstr "feil under klargjøring av inn-/utdatatillegget «%s»" -#: src/sudo.c:304 +#: src/sudo.c:306 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "uforventet sudo-modus 0x%x" -#: src/sudo.c:537 +#: src/sudo.c:538 #, c-format msgid "you do not exist in the %s database" msgstr "du finnes ikke i databasen %s" -#: src/sudo.c:594 +#: src/sudo.c:595 msgid "unable to determine tty" msgstr "fant ikke gjeldende tty" -#: src/sudo.c:882 +#: src/sudo.c:887 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "«%s» må eies av uid %d, og setuid-biten må være valgt" -#: src/sudo.c:885 +#: src/sudo.c:890 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "effektiv uid er ikke %d. Er «%s» på et filsystem hvor «nosuid» er valgt, eller på et NFS-filsystem uten rot-rettigheter?" -#: src/sudo.c:891 +#: src/sudo.c:896 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "effektiv uid er ikke %d. Er sudo installert med «setuid root»?" -#: src/sudo.c:944 +#: src/sudo.c:912 msgid "unable to set supplementary group IDs" msgstr "klarte ikke å velge ekstra grruppe-id-er" -#: src/sudo.c:951 +#: src/sudo.c:919 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "klarte ikke å velge «runas gid %u» som effektiv gid" -#: src/sudo.c:957 +#: src/sudo.c:925 #, c-format msgid "unable to set gid to runas gid %u" msgstr "klarte ikke å velge «runas gid %u» som gid" -#: src/sudo.c:1014 +#: src/sudo.c:982 #, c-format msgid "unexpected child termination condition: %d" msgstr "uforventet årsak for avslutning av underprosess: %d" -#: src/sudo.c:1160 +#: src/sudo.c:1128 #, c-format msgid "policy plugin %s is missing the `check_policy' method" msgstr "regeltillegget «%s» mangler «check_policy»-metoden" -#: src/sudo.c:1178 +#: src/sudo.c:1146 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "regeltillegget «%s» støtter ikke listetillatelser" -#: src/sudo.c:1195 +#: src/sudo.c:1163 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "regeltillegget «%s» støtter ikke valget «-v»" -#: src/sudo.c:1210 +#: src/sudo.c:1178 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "regeltillegget «%s» støtter ikke valgene «-k» og «-K»" @@ -805,7 +807,7 @@ msgid "unable to restore current working directory" msgstr "klarte ikke å gjenopprette gjeldende arbeidsmappe" -#: src/sudo_edit.c:594 src/sudo_edit.c:706 +#: src/sudo_edit.c:594 src/sudo_edit.c:707 #, c-format msgid "%s: not a regular file" msgstr "«%s» er ikke en vanlig fil" @@ -820,67 +822,67 @@ msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: redigering av filer i en mappe med skrivetilgang tillates ikke" -#: src/sudo_edit.c:637 src/sudo_edit.c:744 +#: src/sudo_edit.c:637 src/sudo_edit.c:747 #, c-format msgid "%s: short write" msgstr "«%s» har kort skriving" -#: src/sudo_edit.c:707 +#: src/sudo_edit.c:708 #, c-format msgid "%s left unmodified" msgstr "«%s» ble uendret" -#: src/sudo_edit.c:720 src/sudo_edit.c:905 +#: src/sudo_edit.c:721 src/sudo_edit.c:908 #, c-format msgid "%s unchanged" msgstr "«%s» er uendret" -#: src/sudo_edit.c:733 src/sudo_edit.c:755 +#: src/sudo_edit.c:736 src/sudo_edit.c:758 #, c-format msgid "unable to write to %s" msgstr "klarte ikke å skrive til «%s»" -#: src/sudo_edit.c:734 src/sudo_edit.c:753 src/sudo_edit.c:756 -#: src/sudo_edit.c:930 src/sudo_edit.c:934 +#: src/sudo_edit.c:737 src/sudo_edit.c:756 src/sudo_edit.c:759 +#: src/sudo_edit.c:933 src/sudo_edit.c:937 #, c-format msgid "contents of edit session left in %s" msgstr "innhold fra redigeringsøkt ligger igjen i «%s»" -#: src/sudo_edit.c:752 +#: src/sudo_edit.c:755 msgid "unable to read temporary file" msgstr "klarte ikke å lese midlertidig fil" -#: src/sudo_edit.c:835 +#: src/sudo_edit.c:838 msgid "sesh: internal error: odd number of paths" msgstr "sesh: intern feil: for høyt antall stier" -#: src/sudo_edit.c:837 +#: src/sudo_edit.c:840 msgid "sesh: unable to create temporary files" msgstr "sesh: klarte ikke å lage midlertidige filer" -#: src/sudo_edit.c:839 src/sudo_edit.c:937 +#: src/sudo_edit.c:842 src/sudo_edit.c:940 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: ukjent feil (%d)" -#: src/sudo_edit.c:929 +#: src/sudo_edit.c:932 msgid "unable to copy temporary files back to their original location" msgstr "klarte ikke å kopiere midlertidige filer tilbake til opprinnelig plassering" -#: src/sudo_edit.c:933 +#: src/sudo_edit.c:936 msgid "unable to copy some of the temporary files back to their original location" msgstr "klarte ikke å kopiere enkelte midlertidige filer tilbake til opprinnelig plassering" -#: src/sudo_edit.c:978 +#: src/sudo_edit.c:981 #, c-format msgid "unable to change uid to root (%u)" msgstr "klarte ikke å endre uid til root (%u)" -#: src/sudo_edit.c:995 +#: src/sudo_edit.c:998 msgid "plugin error: missing file list for sudoedit" msgstr "feil med tillegg: sudoedit mangler filliste" -#: src/sudo_edit.c:1036 src/sudo_edit.c:1049 +#: src/sudo_edit.c:1039 src/sudo_edit.c:1052 msgid "unable to read the clock" msgstr "klarte ikke å lese klokka" @@ -919,15 +921,15 @@ msgid "unable to run %s" msgstr "klarte ikke å kjøre «%s»" -#: src/utmp.c:287 +#: src/utmp.c:295 msgid "unable to save stdin" msgstr "klarte ikke å lagre standard innkanal" -#: src/utmp.c:289 +#: src/utmp.c:297 msgid "unable to dup2 stdin" msgstr "klarte ikke å utføre «dup2 stdin»" -#: src/utmp.c:292 +#: src/utmp.c:300 msgid "unable to restore stdin" msgstr "klarte ikke å gjenopprette standard innkanal" Binary files /tmp/tmpxQuIu2/iFUK1R4uMA/sudo-1.8.29/po/zh_CN.mo and /tmp/tmpxQuIu2/W5KRB4HzHp/sudo-1.8.31/po/zh_CN.mo differ diff -Nru sudo-1.8.29/po/zh_CN.po sudo-1.8.31/po/zh_CN.po --- sudo-1.8.29/po/zh_CN.po 2019-10-28 12:31:06.000000000 +0000 +++ sudo-1.8.31/po/zh_CN.po 2019-12-31 12:58:36.000000000 +0000 @@ -2,398 +2,398 @@ # sudo 的简体中文翻译。 # This file is put in the public domain. # Wylmer Wang , 2011, 2012, 2013, 2014, 2015, 2016, 2018. +# Boyuan Yang <073plan@gmail.com>, 2019. # msgid "" msgstr "" -"Project-Id-Version: sudo-1.8.26b1\n" +"Project-Id-Version: sudo-1.8.29rc1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2018-10-29 08:31-0600\n" -"PO-Revision-Date: 2018-11-05 09:18+0800\n" -"Last-Translator: Wylmer Wang \n" +"POT-Creation-Date: 2019-10-21 19:55-0600\n" +"PO-Revision-Date: 2019-12-16 14:13-0500\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 2.2.4\n" -#: lib/util/aix.c:90 lib/util/aix.c:177 +#: lib/util/aix.c:92 lib/util/aix.c:172 msgid "unable to open userdb" msgstr "无法打开 userdb" -#: lib/util/aix.c:232 +#: lib/util/aix.c:227 #, c-format msgid "unable to switch to registry \"%s\" for %s" msgstr "无法为 %2$s 切换到注册表“%1$s”" -#: lib/util/aix.c:257 +#: lib/util/aix.c:252 msgid "unable to restore registry" msgstr "无法恢复注册表" -#: lib/util/aix.c:280 lib/util/gidlist.c:69 lib/util/gidlist.c:79 -#: lib/util/sudo_conf.c:191 lib/util/sudo_conf.c:277 lib/util/sudo_conf.c:354 -#: lib/util/sudo_conf.c:558 src/conversation.c:82 src/exec_common.c:112 -#: src/exec_common.c:128 src/exec_common.c:137 src/exec_monitor.c:210 -#: src/exec_monitor.c:465 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:487 src/exec_monitor.c:494 src/exec_monitor.c:501 -#: src/exec_monitor.c:508 src/exec_monitor.c:515 src/exec_monitor.c:522 -#: src/exec_monitor.c:529 src/exec_monitor.c:536 src/exec_nopty.c:212 -#: src/exec_nopty.c:218 src/exec_nopty.c:227 src/exec_nopty.c:234 -#: src/exec_nopty.c:241 src/exec_nopty.c:248 src/exec_nopty.c:255 -#: src/exec_nopty.c:262 src/exec_nopty.c:269 src/exec_nopty.c:276 -#: src/exec_nopty.c:283 src/exec_nopty.c:290 src/exec_nopty.c:297 -#: src/exec_nopty.c:305 src/exec_nopty.c:467 src/exec_pty.c:778 -#: src/exec_pty.c:787 src/exec_pty.c:844 src/exec_pty.c:994 -#: src/exec_pty.c:1157 src/exec_pty.c:1163 src/exec_pty.c:1172 -#: src/exec_pty.c:1179 src/exec_pty.c:1186 src/exec_pty.c:1193 -#: src/exec_pty.c:1200 src/exec_pty.c:1207 src/exec_pty.c:1214 -#: src/exec_pty.c:1221 src/exec_pty.c:1228 src/exec_pty.c:1235 -#: src/exec_pty.c:1243 src/exec_pty.c:1661 src/load_plugins.c:57 -#: src/load_plugins.c:70 src/load_plugins.c:219 src/load_plugins.c:240 -#: src/load_plugins.c:309 src/load_plugins.c:315 src/load_plugins.c:329 -#: src/load_plugins.c:335 src/parse_args.c:182 src/parse_args.c:203 -#: src/parse_args.c:278 src/parse_args.c:565 src/parse_args.c:587 -#: src/preserve_fds.c:52 src/preserve_fds.c:137 src/selinux.c:89 -#: src/selinux.c:314 src/selinux.c:437 src/selinux.c:446 src/sesh.c:115 -#: src/sudo.c:616 src/sudo.c:676 src/sudo.c:686 src/sudo.c:706 src/sudo.c:725 -#: src/sudo.c:734 src/sudo.c:743 src/sudo.c:760 src/sudo.c:801 src/sudo.c:811 -#: src/sudo.c:834 src/sudo.c:1071 src/sudo.c:1092 src/sudo.c:1266 -#: src/sudo.c:1382 src/sudo_edit.c:256 src/sudo_edit.c:789 src/sudo_edit.c:886 -#: src/sudo_edit.c:1000 src/sudo_edit.c:1020 +#: lib/util/aix.c:275 lib/util/gidlist.c:71 lib/util/gidlist.c:81 +#: lib/util/sudo_conf.c:193 lib/util/sudo_conf.c:279 lib/util/sudo_conf.c:356 +#: lib/util/sudo_conf.c:560 src/conversation.c:84 src/exec_common.c:114 +#: src/exec_common.c:130 src/exec_common.c:139 src/exec_monitor.c:212 +#: src/exec_monitor.c:467 src/exec_monitor.c:473 src/exec_monitor.c:481 +#: src/exec_monitor.c:489 src/exec_monitor.c:496 src/exec_monitor.c:503 +#: src/exec_monitor.c:510 src/exec_monitor.c:517 src/exec_monitor.c:524 +#: src/exec_monitor.c:531 src/exec_monitor.c:538 src/exec_nopty.c:214 +#: src/exec_nopty.c:220 src/exec_nopty.c:229 src/exec_nopty.c:236 +#: src/exec_nopty.c:243 src/exec_nopty.c:250 src/exec_nopty.c:257 +#: src/exec_nopty.c:264 src/exec_nopty.c:271 src/exec_nopty.c:278 +#: src/exec_nopty.c:285 src/exec_nopty.c:292 src/exec_nopty.c:299 +#: src/exec_nopty.c:307 src/exec_nopty.c:480 src/exec_pty.c:786 +#: src/exec_pty.c:795 src/exec_pty.c:852 src/exec_pty.c:1002 +#: src/exec_pty.c:1165 src/exec_pty.c:1171 src/exec_pty.c:1180 +#: src/exec_pty.c:1187 src/exec_pty.c:1194 src/exec_pty.c:1201 +#: src/exec_pty.c:1208 src/exec_pty.c:1215 src/exec_pty.c:1222 +#: src/exec_pty.c:1229 src/exec_pty.c:1236 src/exec_pty.c:1243 +#: src/exec_pty.c:1251 src/exec_pty.c:1668 src/load_plugins.c:59 +#: src/load_plugins.c:72 src/load_plugins.c:225 src/load_plugins.c:246 +#: src/load_plugins.c:315 src/load_plugins.c:321 src/load_plugins.c:335 +#: src/load_plugins.c:341 src/parse_args.c:186 src/parse_args.c:207 +#: src/parse_args.c:282 src/parse_args.c:583 src/parse_args.c:605 +#: src/preserve_fds.c:54 src/preserve_fds.c:139 src/selinux.c:91 +#: src/selinux.c:337 src/selinux.c:450 src/selinux.c:459 src/sesh.c:117 +#: src/sudo.c:619 src/sudo.c:679 src/sudo.c:689 src/sudo.c:710 src/sudo.c:729 +#: src/sudo.c:738 src/sudo.c:747 src/sudo.c:764 src/sudo.c:805 src/sudo.c:815 +#: src/sudo.c:841 src/sudo.c:1041 src/sudo.c:1062 src/sudo.c:1240 +#: src/sudo.c:1356 src/sudo_edit.c:258 src/sudo_edit.c:794 src/sudo_edit.c:891 +#: src/sudo_edit.c:1005 src/sudo_edit.c:1025 #, c-format msgid "%s: %s" msgstr "%s:%s" -#: lib/util/aix.c:280 lib/util/gidlist.c:69 lib/util/sudo_conf.c:192 -#: lib/util/sudo_conf.c:277 lib/util/sudo_conf.c:354 lib/util/sudo_conf.c:558 -#: src/conversation.c:83 src/exec_common.c:112 src/exec_common.c:129 -#: src/exec_common.c:138 src/exec_monitor.c:465 src/exec_monitor.c:471 -#: src/exec_monitor.c:479 src/exec_monitor.c:487 src/exec_monitor.c:494 -#: src/exec_monitor.c:501 src/exec_monitor.c:508 src/exec_monitor.c:515 -#: src/exec_monitor.c:522 src/exec_monitor.c:529 src/exec_monitor.c:536 -#: src/exec_nopty.c:212 src/exec_nopty.c:218 src/exec_nopty.c:227 -#: src/exec_nopty.c:234 src/exec_nopty.c:241 src/exec_nopty.c:248 -#: src/exec_nopty.c:255 src/exec_nopty.c:262 src/exec_nopty.c:269 -#: src/exec_nopty.c:276 src/exec_nopty.c:283 src/exec_nopty.c:290 -#: src/exec_nopty.c:297 src/exec_nopty.c:305 src/exec_pty.c:778 -#: src/exec_pty.c:787 src/exec_pty.c:844 src/exec_pty.c:1157 -#: src/exec_pty.c:1163 src/exec_pty.c:1172 src/exec_pty.c:1179 -#: src/exec_pty.c:1186 src/exec_pty.c:1193 src/exec_pty.c:1200 -#: src/exec_pty.c:1207 src/exec_pty.c:1214 src/exec_pty.c:1221 -#: src/exec_pty.c:1228 src/exec_pty.c:1235 src/exec_pty.c:1243 -#: src/exec_pty.c:1661 src/load_plugins.c:219 src/load_plugins.c:240 -#: src/load_plugins.c:309 src/load_plugins.c:315 src/load_plugins.c:329 -#: src/load_plugins.c:335 src/parse_args.c:182 src/parse_args.c:204 -#: src/parse_args.c:278 src/parse_args.c:565 src/parse_args.c:587 -#: src/preserve_fds.c:52 src/preserve_fds.c:137 src/selinux.c:89 -#: src/selinux.c:314 src/selinux.c:437 src/selinux.c:446 src/sesh.c:115 -#: src/sudo.c:616 src/sudo.c:834 src/sudo.c:1071 src/sudo.c:1092 -#: src/sudo.c:1266 src/sudo.c:1382 src/sudo_edit.c:256 src/sudo_edit.c:789 -#: src/sudo_edit.c:886 src/sudo_edit.c:1000 src/sudo_edit.c:1020 +#: lib/util/aix.c:275 lib/util/gidlist.c:71 lib/util/sudo_conf.c:194 +#: lib/util/sudo_conf.c:279 lib/util/sudo_conf.c:356 lib/util/sudo_conf.c:560 +#: src/conversation.c:85 src/exec_common.c:114 src/exec_common.c:131 +#: src/exec_common.c:140 src/exec_monitor.c:467 src/exec_monitor.c:473 +#: src/exec_monitor.c:481 src/exec_monitor.c:489 src/exec_monitor.c:496 +#: src/exec_monitor.c:503 src/exec_monitor.c:510 src/exec_monitor.c:517 +#: src/exec_monitor.c:524 src/exec_monitor.c:531 src/exec_monitor.c:538 +#: src/exec_nopty.c:214 src/exec_nopty.c:220 src/exec_nopty.c:229 +#: src/exec_nopty.c:236 src/exec_nopty.c:243 src/exec_nopty.c:250 +#: src/exec_nopty.c:257 src/exec_nopty.c:264 src/exec_nopty.c:271 +#: src/exec_nopty.c:278 src/exec_nopty.c:285 src/exec_nopty.c:292 +#: src/exec_nopty.c:299 src/exec_nopty.c:307 src/exec_pty.c:786 +#: src/exec_pty.c:795 src/exec_pty.c:852 src/exec_pty.c:1165 +#: src/exec_pty.c:1171 src/exec_pty.c:1180 src/exec_pty.c:1187 +#: src/exec_pty.c:1194 src/exec_pty.c:1201 src/exec_pty.c:1208 +#: src/exec_pty.c:1215 src/exec_pty.c:1222 src/exec_pty.c:1229 +#: src/exec_pty.c:1236 src/exec_pty.c:1243 src/exec_pty.c:1251 +#: src/exec_pty.c:1668 src/load_plugins.c:225 src/load_plugins.c:246 +#: src/load_plugins.c:315 src/load_plugins.c:321 src/load_plugins.c:335 +#: src/load_plugins.c:341 src/parse_args.c:186 src/parse_args.c:208 +#: src/parse_args.c:282 src/parse_args.c:583 src/parse_args.c:605 +#: src/preserve_fds.c:54 src/preserve_fds.c:139 src/selinux.c:91 +#: src/selinux.c:337 src/selinux.c:450 src/selinux.c:459 src/sesh.c:117 +#: src/sudo.c:619 src/sudo.c:841 src/sudo.c:1041 src/sudo.c:1062 +#: src/sudo.c:1240 src/sudo.c:1356 src/sudo_edit.c:258 src/sudo_edit.c:794 +#: src/sudo_edit.c:891 src/sudo_edit.c:1005 src/sudo_edit.c:1025 msgid "unable to allocate memory" msgstr "无法分配内存" -#: lib/util/strsignal.c:53 +#: lib/util/strsignal.c:55 msgid "Unknown signal" msgstr "未知信号" -#: lib/util/strtoid.c:82 lib/util/strtoid.c:129 lib/util/strtoid.c:157 -#: lib/util/strtomode.c:54 lib/util/strtonum.c:63 lib/util/strtonum.c:181 +#: lib/util/strtoid.c:96 lib/util/strtomode.c:56 lib/util/strtonum.c:161 +#: lib/util/strtonum.c:196 msgid "invalid value" msgstr "值无效" -#: lib/util/strtoid.c:89 lib/util/strtoid.c:136 lib/util/strtoid.c:164 -#: lib/util/strtomode.c:60 lib/util/strtonum.c:66 lib/util/strtonum.c:193 +#: lib/util/strtomode.c:62 lib/util/strtonum.c:173 msgid "value too large" msgstr "值过大" -#: lib/util/strtoid.c:91 lib/util/strtoid.c:142 lib/util/strtomode.c:60 -#: lib/util/strtonum.c:66 lib/util/strtonum.c:187 +#: lib/util/strtomode.c:62 lib/util/strtonum.c:167 msgid "value too small" msgstr "值过小" -#: lib/util/sudo_conf.c:210 +#: lib/util/sudo_conf.c:212 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "%2$s 第 %3$u 行的路径值“%1$s”无效" -#: lib/util/sudo_conf.c:376 lib/util/sudo_conf.c:429 +#: lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:431 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "%3$s 第 %4$u 行的 %1$s 的值“%2$s”无效" -#: lib/util/sudo_conf.c:397 +#: lib/util/sudo_conf.c:399 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "不支持 %2$s 第 %3$u 行的组来源“%1$s”" -#: lib/util/sudo_conf.c:413 +#: lib/util/sudo_conf.c:415 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "%2$s 第 %3$u 行的最大组数“%1$s”无效" -#: lib/util/sudo_conf.c:574 +#: lib/util/sudo_conf.c:576 #, c-format msgid "unable to stat %s" msgstr "无法 stat %s" -#: lib/util/sudo_conf.c:577 +#: lib/util/sudo_conf.c:579 #, c-format msgid "%s is not a regular file" msgstr "%s 不是常规文件" -#: lib/util/sudo_conf.c:580 +#: lib/util/sudo_conf.c:582 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s 属于用户 ID %u,应为 %u" -#: lib/util/sudo_conf.c:584 +#: lib/util/sudo_conf.c:586 #, c-format msgid "%s is world writable" msgstr "%s 可被任何人写" -#: lib/util/sudo_conf.c:587 +#: lib/util/sudo_conf.c:589 #, c-format msgid "%s is group writable" msgstr "%s 可被用户组写" -#: lib/util/sudo_conf.c:597 src/selinux.c:213 src/selinux.c:230 src/sudo.c:360 +#: lib/util/sudo_conf.c:599 src/selinux.c:233 src/selinux.c:250 src/sudo.c:363 #, c-format msgid "unable to open %s" msgstr "打不开 %s" -#: src/exec.c:165 +#: src/exec.c:111 #, c-format msgid "unknown login class %s" msgstr "未知的登录类别 %s" -#: src/exec.c:178 +#: src/exec.c:123 msgid "unable to set user context" msgstr "无法设置用户环境" -#: src/exec.c:194 +#: src/exec.c:139 msgid "unable to set process priority" msgstr "无法设置进程优先级" -#: src/exec.c:202 +#: src/exec.c:150 #, c-format msgid "unable to change root to %s" msgstr "无法从 root 切换到 %s" -#: src/exec.c:215 src/exec.c:221 src/exec.c:228 +#: src/exec.c:163 src/exec.c:169 src/exec.c:176 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "无法切换到以用户 ID(%u,%u)运行" -#: src/exec.c:246 +#: src/exec.c:194 #, c-format msgid "unable to change directory to %s" msgstr "无法将目录切换到 %s" -#: src/exec.c:345 src/exec_monitor.c:574 src/exec_monitor.c:576 -#: src/exec_nopty.c:525 src/exec_pty.c:522 src/exec_pty.c:1329 -#: src/exec_pty.c:1331 src/signal.c:148 src/signal.c:162 +#: src/exec.c:293 src/exec_monitor.c:576 src/exec_monitor.c:578 +#: src/exec_nopty.c:538 src/exec_pty.c:530 src/exec_pty.c:1336 +#: src/exec_pty.c:1338 src/signal.c:150 src/signal.c:164 #, c-format msgid "unable to set handler for signal %d" msgstr "无法设置 %d 信号的处理程序" -#: src/exec_common.c:171 +#: src/exec_common.c:173 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "无法从 PRIV_LIMIT 中移除 PRIV_PROC_EXEC" -#: src/exec_monitor.c:364 +#: src/exec_monitor.c:366 msgid "error reading from socketpair" msgstr "从套接字对读取出错" -#: src/exec_monitor.c:381 +#: src/exec_monitor.c:383 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "联络通道的回应类型异常:%d" -#: src/exec_monitor.c:473 src/exec_monitor.c:481 src/exec_monitor.c:489 -#: src/exec_monitor.c:496 src/exec_monitor.c:503 src/exec_monitor.c:510 -#: src/exec_monitor.c:517 src/exec_monitor.c:524 src/exec_monitor.c:531 -#: src/exec_monitor.c:538 src/exec_nopty.c:220 src/exec_nopty.c:229 -#: src/exec_nopty.c:236 src/exec_nopty.c:243 src/exec_nopty.c:250 -#: src/exec_nopty.c:257 src/exec_nopty.c:264 src/exec_nopty.c:271 -#: src/exec_nopty.c:278 src/exec_nopty.c:285 src/exec_nopty.c:292 -#: src/exec_nopty.c:299 src/exec_nopty.c:307 src/exec_pty.c:644 -#: src/exec_pty.c:649 src/exec_pty.c:746 src/exec_pty.c:753 src/exec_pty.c:850 -#: src/exec_pty.c:1165 src/exec_pty.c:1174 src/exec_pty.c:1181 -#: src/exec_pty.c:1188 src/exec_pty.c:1195 src/exec_pty.c:1202 -#: src/exec_pty.c:1209 src/exec_pty.c:1216 src/exec_pty.c:1223 -#: src/exec_pty.c:1230 src/exec_pty.c:1237 src/exec_pty.c:1614 -#: src/exec_pty.c:1624 src/exec_pty.c:1669 src/exec_pty.c:1676 -#: src/exec_pty.c:1703 +#: src/exec_monitor.c:475 src/exec_monitor.c:483 src/exec_monitor.c:491 +#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 +#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_monitor.c:533 +#: src/exec_monitor.c:540 src/exec_nopty.c:222 src/exec_nopty.c:231 +#: src/exec_nopty.c:238 src/exec_nopty.c:245 src/exec_nopty.c:252 +#: src/exec_nopty.c:259 src/exec_nopty.c:266 src/exec_nopty.c:273 +#: src/exec_nopty.c:280 src/exec_nopty.c:287 src/exec_nopty.c:294 +#: src/exec_nopty.c:301 src/exec_nopty.c:309 src/exec_pty.c:652 +#: src/exec_pty.c:657 src/exec_pty.c:754 src/exec_pty.c:761 src/exec_pty.c:858 +#: src/exec_pty.c:1173 src/exec_pty.c:1182 src/exec_pty.c:1189 +#: src/exec_pty.c:1196 src/exec_pty.c:1203 src/exec_pty.c:1210 +#: src/exec_pty.c:1217 src/exec_pty.c:1224 src/exec_pty.c:1231 +#: src/exec_pty.c:1238 src/exec_pty.c:1245 src/exec_pty.c:1621 +#: src/exec_pty.c:1631 src/exec_pty.c:1676 src/exec_pty.c:1683 +#: src/exec_pty.c:1710 msgid "unable to add event to queue" msgstr "无法将事件添加到队列" -#: src/exec_monitor.c:592 +#: src/exec_monitor.c:594 msgid "unable to set controlling tty" msgstr "无法设置控制终端" -#: src/exec_monitor.c:600 src/exec_nopty.c:364 src/exec_pty.c:1408 -#: src/exec_pty.c:1429 src/exec_pty.c:1449 src/tgetpass.c:292 +#: src/exec_monitor.c:602 src/exec_nopty.c:366 src/exec_pty.c:1415 +#: src/exec_pty.c:1436 src/exec_pty.c:1456 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "无法创建管道" -#: src/exec_monitor.c:608 +#: src/exec_monitor.c:610 msgid "unable to receive message from parent" msgstr "无法从父(进程)接收消息" -#: src/exec_monitor.c:614 src/exec_nopty.c:382 src/exec_pty.c:1487 -#: src/tgetpass.c:296 +#: src/exec_monitor.c:624 src/exec_nopty.c:395 src/exec_pty.c:1494 +#: src/tgetpass.c:311 msgid "unable to fork" msgstr "无法执行 fork" -#: src/exec_monitor.c:628 src/sesh.c:125 src/sudo.c:1130 +#: src/exec_monitor.c:628 src/exec_monitor.c:727 src/exec_nopty.c:448 +msgid "unable to restore tty label" +msgstr "无法恢复终端标签" + +#: src/exec_monitor.c:644 src/sesh.c:127 src/sudo.c:1100 #, c-format msgid "unable to execute %s" msgstr "无法执行 %s" -#: src/exec_monitor.c:711 src/exec_nopty.c:435 -msgid "unable to restore tty label" -msgstr "无法恢复终端标签" - -#: src/exec_nopty.c:358 src/exec_pty.c:1338 +#: src/exec_nopty.c:360 src/exec_pty.c:1345 msgid "policy plugin failed session initialization" msgstr "策略插件会话初始化失败" -#: src/exec_nopty.c:424 src/exec_pty.c:1574 +#: src/exec_nopty.c:437 src/exec_pty.c:1581 msgid "error in event loop" msgstr "事件循环中有错误" -#: src/exec_nopty.c:533 src/exec_pty.c:557 src/signal.c:110 +#: src/exec_nopty.c:546 src/exec_pty.c:565 src/signal.c:112 #, c-format msgid "unable to restore handler for signal %d" msgstr "无法恢复 %d 信号的处理程序" -#: src/exec_pty.c:156 +#: src/exec_pty.c:158 msgid "unable to allocate pty" msgstr "无法分配伪终端" -#: src/exec_pty.c:1318 +#: src/exec_pty.c:1325 msgid "unable to create sockets" msgstr "无法创建套接字" -#: src/exec_pty.c:1531 +#: src/exec_pty.c:1538 msgid "unable to send message to monitor process" msgstr "无法向监视进程发送消息" -#: src/load_plugins.c:55 src/load_plugins.c:68 src/load_plugins.c:90 -#: src/load_plugins.c:120 src/load_plugins.c:128 src/load_plugins.c:134 -#: src/load_plugins.c:175 src/load_plugins.c:183 src/load_plugins.c:190 -#: src/load_plugins.c:196 +#: src/load_plugins.c:57 src/load_plugins.c:70 src/load_plugins.c:92 +#: src/load_plugins.c:122 src/load_plugins.c:134 src/load_plugins.c:140 +#: src/load_plugins.c:181 src/load_plugins.c:189 src/load_plugins.c:196 +#: src/load_plugins.c:202 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "在加载插件“%3$s”时在 %1$s 第 %2$d 行出错" -#: src/load_plugins.c:92 +#: src/load_plugins.c:94 #, c-format msgid "%s%s: %s" msgstr "%s%s:%s" -#: src/load_plugins.c:130 +#: src/load_plugins.c:136 #, c-format msgid "%s must be owned by uid %d" msgstr "%s 必须属于用户 ID %d(的用户)" -#: src/load_plugins.c:136 +#: src/load_plugins.c:142 #, c-format msgid "%s must be only be writable by owner" msgstr "%s 必须只对其所有者可写" -#: src/load_plugins.c:177 +#: src/load_plugins.c:183 #, c-format msgid "unable to load %s: %s" msgstr "无法加载 %s:%s" -#: src/load_plugins.c:185 +#: src/load_plugins.c:191 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "在 %2$s 中找不到符号“%1$s”" -#: src/load_plugins.c:192 +#: src/load_plugins.c:198 #, c-format msgid "unknown policy type %d found in %s" msgstr "%2$s 中的策略类型 %1$d 未知" -#: src/load_plugins.c:198 +#: src/load_plugins.c:204 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "%3$s 中发现不兼容的插件主版本号 %1$d(应为 %2$d)" -#: src/load_plugins.c:207 +#: src/load_plugins.c:213 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "忽略位于 %2$s 第 %3$d 行的策略插件“%1$s”" -#: src/load_plugins.c:209 +#: src/load_plugins.c:215 msgid "only a single policy plugin may be specified" msgstr "只能指定一个策略插件" -#: src/load_plugins.c:212 +#: src/load_plugins.c:218 #, c-format msgid "ignoring duplicate policy plugin \"%s\" in %s, line %d" msgstr "忽略位于 %2$s 第 %3$d 行的重复策略插件“%1$s”" -#: src/load_plugins.c:231 +#: src/load_plugins.c:237 #, c-format msgid "ignoring duplicate I/O plugin \"%s\" in %s, line %d" msgstr "忽略位于 %2$s 第 %3$d 行的重复 I/O 插件“%1$s”" -#: src/load_plugins.c:347 +#: src/load_plugins.c:353 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "策略插件 %s 不包含 check_policy 方法" -#: src/net_ifs.c:180 src/net_ifs.c:197 src/net_ifs.c:342 src/sudo.c:470 +#: src/net_ifs.c:183 src/net_ifs.c:200 src/net_ifs.c:345 src/sudo.c:473 #, c-format msgid "internal error, %s overflow" msgstr "内部错误,%s 溢出" -#: src/parse_args.c:224 +#: src/parse_args.c:228 #, c-format msgid "invalid environment variable name: %s" msgstr "无效的环境变量名:%s" -#: src/parse_args.c:320 +#: src/parse_args.c:329 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "-C 选项的参数必须是一个大于等于 3 的数字" -#: src/parse_args.c:505 +#: src/parse_args.c:523 msgid "you may not specify both the `-i' and `-s' options" msgstr "您不能同时指定“-i”和“-s”选项" -#: src/parse_args.c:509 +#: src/parse_args.c:527 msgid "you may not specify both the `-i' and `-E' options" msgstr "您不能同时指定“-i”和“-E”选项" -#: src/parse_args.c:519 +#: src/parse_args.c:537 msgid "the `-E' option is not valid in edit mode" msgstr "“-E”选项在编辑模式中无效" -#: src/parse_args.c:521 +#: src/parse_args.c:539 msgid "you may not specify environment variables in edit mode" msgstr "在编辑模式中您不能指定环境变量" -#: src/parse_args.c:529 +#: src/parse_args.c:547 msgid "the `-U' option may only be used with the `-l' option" msgstr "“-U”选项只能与“-l”选项一起使用" -#: src/parse_args.c:533 +#: src/parse_args.c:551 msgid "the `-A' and `-S' options may not be used together" msgstr "“-A”和“-S”选项不可同时使用" -#: src/parse_args.c:609 +#: src/parse_args.c:627 msgid "sudoedit is not supported on this platform" msgstr "此平台不支持 sudoedit" -#: src/parse_args.c:682 +#: src/parse_args.c:700 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "只能指定 -e、-h、-i、-K、-l、-s、-v 或 -V 选项中的一个" -#: src/parse_args.c:696 +#: src/parse_args.c:714 #, c-format msgid "" "%s - edit files as another user\n" @@ -402,7 +402,7 @@ "%s - 以其他用户身份编辑文件\n" "\n" -#: src/parse_args.c:698 +#: src/parse_args.c:716 #, c-format msgid "" "%s - execute a command as another user\n" @@ -411,7 +411,7 @@ "%s - 以其他用户身份执行一条命令\n" "\n" -#: src/parse_args.c:703 +#: src/parse_args.c:721 #, c-format msgid "" "\n" @@ -420,510 +420,521 @@ "\n" "选项:\n" -#: src/parse_args.c:705 +#: src/parse_args.c:723 msgid "use a helper program for password prompting" msgstr "使用助手程序进行密码提示" -#: src/parse_args.c:708 +#: src/parse_args.c:726 msgid "use specified BSD authentication type" msgstr "使用指定的 BSD 认证类型" -#: src/parse_args.c:711 +#: src/parse_args.c:729 msgid "run command in the background" msgstr "在后台运行命令" -#: src/parse_args.c:713 +#: src/parse_args.c:731 +msgid "ring bell when prompting" +msgstr "提示时响铃" + +#: src/parse_args.c:733 msgid "close all file descriptors >= num" msgstr "关闭所有 >= num 的文件描述符" -#: src/parse_args.c:716 +#: src/parse_args.c:736 msgid "run command with the specified BSD login class" msgstr "以指定的 BSD 登录类别运行命令" -#: src/parse_args.c:719 +#: src/parse_args.c:739 msgid "preserve user environment when running command" msgstr "在执行命令时保留用户环境" -#: src/parse_args.c:721 +#: src/parse_args.c:741 msgid "preserve specific environment variables" msgstr "保留特定的环境变量" -#: src/parse_args.c:723 +#: src/parse_args.c:743 msgid "edit files instead of running a command" msgstr "编辑文件而非执行命令" -#: src/parse_args.c:725 +#: src/parse_args.c:745 msgid "run command as the specified group name or ID" msgstr "以指定的用户组或 ID 执行命令" -#: src/parse_args.c:727 +#: src/parse_args.c:747 msgid "set HOME variable to target user's home dir" -msgstr "将 HOME 变量设为目标用户的主目录。" +msgstr "将 HOME 变量设为目标用户的主目录" -#: src/parse_args.c:729 +#: src/parse_args.c:749 msgid "display help message and exit" msgstr "显示帮助消息并退出" -#: src/parse_args.c:731 +#: src/parse_args.c:751 msgid "run command on host (if supported by plugin)" msgstr "在主机上运行命令(如果插件支持)" -#: src/parse_args.c:733 +#: src/parse_args.c:753 msgid "run login shell as the target user; a command may also be specified" msgstr "以目标用户身份运行一个登录 shell;可同时指定一条命令" -#: src/parse_args.c:735 +#: src/parse_args.c:755 msgid "remove timestamp file completely" msgstr "完全移除时间戳文件" -#: src/parse_args.c:737 +#: src/parse_args.c:757 msgid "invalidate timestamp file" msgstr "无效的时间戳文件" -#: src/parse_args.c:739 +#: src/parse_args.c:759 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "列出用户权限或检查某个特定命令;对于长格式,使用两次" -#: src/parse_args.c:741 +#: src/parse_args.c:761 msgid "non-interactive mode, no prompts are used" msgstr "非交互模式,不提示" -#: src/parse_args.c:743 +#: src/parse_args.c:763 msgid "preserve group vector instead of setting to target's" msgstr "保留组向量,而非设置为目标的组向量" -#: src/parse_args.c:745 +#: src/parse_args.c:765 msgid "use the specified password prompt" msgstr "使用指定的密码提示" -#: src/parse_args.c:748 +#: src/parse_args.c:768 msgid "create SELinux security context with specified role" msgstr "以指定的角色创建 SELinux 安全环境" -#: src/parse_args.c:751 +#: src/parse_args.c:771 msgid "read password from standard input" msgstr "从标准输入读取密码" -#: src/parse_args.c:753 +#: src/parse_args.c:773 msgid "run shell as the target user; a command may also be specified" msgstr "以目标用户运行 shell;可同时指定一条命令" -#: src/parse_args.c:756 +#: src/parse_args.c:776 msgid "create SELinux security context with specified type" msgstr "以指定的类型创建 SELinux 安全环境" -#: src/parse_args.c:759 +#: src/parse_args.c:779 msgid "terminate command after the specified time limit" msgstr "在达到指定时间限制后终止命令" -#: src/parse_args.c:761 +#: src/parse_args.c:781 msgid "in list mode, display privileges for user" msgstr "在列表模式中显示用户的权限" -#: src/parse_args.c:763 +#: src/parse_args.c:783 msgid "run command (or edit file) as specified user name or ID" msgstr "以指定用户或 ID 运行命令(或编辑文件)" -#: src/parse_args.c:765 +#: src/parse_args.c:785 msgid "display version information and exit" msgstr "显示版本信息并退出" -#: src/parse_args.c:767 +#: src/parse_args.c:787 msgid "update user's timestamp without running a command" msgstr "更新用户的时间戳而不执行命令" -#: src/parse_args.c:769 +#: src/parse_args.c:789 msgid "stop processing command line arguments" msgstr "停止处理命令行参数" -#: src/selinux.c:83 +#: src/selinux.c:85 msgid "unable to open audit system" msgstr "无法打开审查系统" -#: src/selinux.c:93 +#: src/selinux.c:95 msgid "unable to send audit message" msgstr "无法发送审查消息" -#: src/selinux.c:121 +#: src/selinux.c:129 #, c-format msgid "unable to fgetfilecon %s" msgstr "无法 fgetfilecon %s" -#: src/selinux.c:126 +#: src/selinux.c:134 #, c-format msgid "%s changed labels" msgstr "%s 修改了标签" -#: src/selinux.c:131 +#: src/selinux.c:142 #, c-format msgid "unable to restore context for %s" msgstr "无法恢复 %s 的环境" -#: src/selinux.c:172 +#: src/selinux.c:190 #, c-format msgid "unable to open %s, not relabeling tty" msgstr "无法打开 %s,将不重新标记终端" -#: src/selinux.c:176 src/selinux.c:217 src/selinux.c:234 +#: src/selinux.c:194 src/selinux.c:237 src/selinux.c:254 #, c-format msgid "%s is not a character device, not relabeling tty" msgstr "%s 不是字符型设备,将不重新标记终端" -#: src/selinux.c:185 +#: src/selinux.c:203 msgid "unable to get current tty context, not relabeling tty" msgstr "无法获取当前终端的环境,将不重新标记终端" -#: src/selinux.c:192 +#: src/selinux.c:210 msgid "unknown security class \"chr_file\", not relabeling tty" msgstr "未知的安全类“chr_file”,将不重新标记终端" -#: src/selinux.c:197 +#: src/selinux.c:215 msgid "unable to get new tty context, not relabeling tty" msgstr "无法获取新终端的环境,将不重新标记终端" -#: src/selinux.c:204 +#: src/selinux.c:224 msgid "unable to set new tty context" msgstr "无法设置新终端的环境" -#: src/selinux.c:278 +#: src/selinux.c:298 #, c-format msgid "you must specify a role for type %s" msgstr "您必须为 %s 类型指定一个角色" -#: src/selinux.c:284 +#: src/selinux.c:304 #, c-format msgid "unable to get default type for role %s" msgstr "无法获取 %s 角色的默认类型" -#: src/selinux.c:302 +#: src/selinux.c:316 +msgid "failed to get new context" +msgstr "获取新环境失败" + +#: src/selinux.c:325 #, c-format msgid "failed to set new role %s" msgstr "设置新角色 %s 失败" -#: src/selinux.c:306 +#: src/selinux.c:329 #, c-format msgid "failed to set new type %s" msgstr "设置新类型 %s 失败" -#: src/selinux.c:318 +#: src/selinux.c:341 #, c-format msgid "%s is not a valid context" msgstr "%s 不是有效的环境" -#: src/selinux.c:353 -msgid "failed to get old_context" -msgstr "无法获取 old_context" +#: src/selinux.c:373 +msgid "failed to get old context" +msgstr "获取旧环境失败" -#: src/selinux.c:359 +#: src/selinux.c:379 msgid "unable to determine enforcing mode." msgstr "无法确定强制模式。" -#: src/selinux.c:376 +#: src/selinux.c:396 #, c-format msgid "unable to set tty context to %s" msgstr "无法将终端环境设置为 %s" -#: src/selinux.c:415 +#: src/selinux.c:428 #, c-format msgid "unable to set exec context to %s" msgstr "无法向 %s 设置 exec 环境" -#: src/selinux.c:422 +#: src/selinux.c:435 #, c-format msgid "unable to set key creation context to %s" msgstr "无法向 %s 设置键创建环境" -#: src/sesh.c:77 +#: src/sesh.c:79 msgid "requires at least one argument" msgstr "要求至少有一个参数" -#: src/sesh.c:106 +#: src/sesh.c:108 #, c-format msgid "invalid file descriptor number: %s" msgstr "无效的文件描述符数字:%s" -#: src/sesh.c:120 +#: src/sesh.c:122 #, c-format msgid "unable to run %s as a login shell" msgstr "无法以登录 shell 执行 %s" -#: src/signal.c:88 +#: src/signal.c:90 #, c-format msgid "unable to save handler for signal %d" msgstr "无法保存 %d 信号的处理程序" -#: src/solaris.c:81 +#: src/solaris.c:83 msgid "resource control limit has been reached" msgstr "达到了资源控制限制" -#: src/solaris.c:84 +#: src/solaris.c:86 #, c-format msgid "user \"%s\" is not a member of project \"%s\"" msgstr "用户“%s”不是项目“%s”的成员" -#: src/solaris.c:88 +#: src/solaris.c:90 msgid "the invoking task is final" msgstr "调用的任务是最终的(final)" -#: src/solaris.c:91 +#: src/solaris.c:93 #, c-format msgid "could not join project \"%s\"" msgstr "无法加入项目“%s”" -#: src/solaris.c:96 +#: src/solaris.c:98 #, c-format msgid "no resource pool accepting default bindings exists for project \"%s\"" msgstr "不存在对应于项目“%s”的、接受默认绑定的资源池" -#: src/solaris.c:100 +#: src/solaris.c:102 #, c-format msgid "specified resource pool does not exist for project \"%s\"" msgstr "指定的对应于项目“%s”的资源池不存在" -#: src/solaris.c:104 +#: src/solaris.c:106 #, c-format msgid "could not bind to default resource pool for project \"%s\"" msgstr "无法为项目“%s”绑定到默认的资源池" -#: src/solaris.c:110 +#: src/solaris.c:112 #, c-format msgid "setproject failed for project \"%s\"" msgstr "对项目“%s”执行 setproject 失败" -#: src/solaris.c:112 +#: src/solaris.c:114 #, c-format msgid "warning, resource control assignment failed for project \"%s\"" msgstr "警告,对项目“%s”的资源控制分配失败" -#: src/sudo.c:201 +#: src/sudo.c:204 #, c-format msgid "Sudo version %s\n" msgstr "Sudo 版本 %s\n" -#: src/sudo.c:203 +#: src/sudo.c:206 #, c-format msgid "Configure options: %s\n" msgstr "当前选项:%s\n" -#: src/sudo.c:211 +#: src/sudo.c:214 msgid "fatal error, unable to load plugins" msgstr "致命错误,无法加载插件" -#: src/sudo.c:219 +#: src/sudo.c:222 msgid "unable to initialize policy plugin" msgstr "无法初始化策略插件" -#: src/sudo.c:263 +#: src/sudo.c:266 msgid "plugin did not return a command to execute" msgstr "插件未返回能执行的命令" -#: src/sudo.c:279 +#: src/sudo.c:282 #, c-format msgid "error initializing I/O plugin %s" msgstr "初始化 I/O 插件 %s 出错" -#: src/sudo.c:302 +#: src/sudo.c:306 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "异常的 sudo 模式 0x%x" -#: src/sudo.c:535 +#: src/sudo.c:538 #, c-format msgid "you do not exist in the %s database" msgstr "%s 数据库中没有您" -#: src/sudo.c:592 +#: src/sudo.c:595 msgid "unable to determine tty" msgstr "无法确定终端" -#: src/sudo.c:880 +#: src/sudo.c:887 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s 必须属于用户 ID %d(的用户)并且设置 setuid 位" -#: src/sudo.c:883 +#: src/sudo.c:890 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "有效用户 ID 不是 %d,%s 位于一个设置了“nosuid”选项的文件系统或没有 root 权限的 NFS 文件系统中吗?" -#: src/sudo.c:889 +#: src/sudo.c:896 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "有效用户 ID 不是 %d,sudo 属于 root 并设置了 setuid 位吗?" -#: src/sudo.c:942 +#: src/sudo.c:912 msgid "unable to set supplementary group IDs" msgstr "无法设置补充组 ID" -#: src/sudo.c:949 +#: src/sudo.c:919 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "无法设置有效组 ID 来以组 ID %u 运行" -#: src/sudo.c:955 +#: src/sudo.c:925 #, c-format msgid "unable to set gid to runas gid %u" msgstr "无法设置组 ID 来以组 ID %u 运行" -#: src/sudo.c:1012 +#: src/sudo.c:982 #, c-format msgid "unexpected child termination condition: %d" msgstr "异常的子进程终止条件:%d" -#: src/sudo.c:1158 +#: src/sudo.c:1128 #, c-format msgid "policy plugin %s is missing the `check_policy' method" msgstr "“check_policy”方法中缺少策略插件 %s" -#: src/sudo.c:1176 +#: src/sudo.c:1146 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "策略插件 %s 不支持列出权限" -#: src/sudo.c:1193 +#: src/sudo.c:1163 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "策略插件 %s不支持 -v 选项" -#: src/sudo.c:1208 +#: src/sudo.c:1178 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "策略插件 %s 不支持 -k/-K 选项" -#: src/sudo_edit.c:219 +#: src/sudo_edit.c:221 msgid "no writable temporary directory found" msgstr "未找到可写的临时目录" -#: src/sudo_edit.c:286 src/sudo_edit.c:375 +#: src/sudo_edit.c:288 src/sudo_edit.c:377 msgid "unable to restore current working directory" msgstr "无法恢复当前工作目录" -#: src/sudo_edit.c:592 src/sudo_edit.c:704 +#: src/sudo_edit.c:594 src/sudo_edit.c:707 #, c-format msgid "%s: not a regular file" msgstr "%s:不是常规文件" -#: src/sudo_edit.c:599 +#: src/sudo_edit.c:601 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s:不允许编辑符号链接" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:604 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s:不允许编辑可写目录中的文件" -#: src/sudo_edit.c:635 src/sudo_edit.c:742 +#: src/sudo_edit.c:637 src/sudo_edit.c:747 #, c-format msgid "%s: short write" msgstr "%s:截短写入" -#: src/sudo_edit.c:705 +#: src/sudo_edit.c:708 #, c-format msgid "%s left unmodified" msgstr "%s 并未修改" -#: src/sudo_edit.c:718 src/sudo_edit.c:903 +#: src/sudo_edit.c:721 src/sudo_edit.c:908 #, c-format msgid "%s unchanged" msgstr "%s 已更改" -#: src/sudo_edit.c:731 src/sudo_edit.c:753 +#: src/sudo_edit.c:736 src/sudo_edit.c:758 #, c-format msgid "unable to write to %s" msgstr "无法写入 %s" -#: src/sudo_edit.c:732 src/sudo_edit.c:751 src/sudo_edit.c:754 -#: src/sudo_edit.c:928 src/sudo_edit.c:932 +#: src/sudo_edit.c:737 src/sudo_edit.c:756 src/sudo_edit.c:759 +#: src/sudo_edit.c:933 src/sudo_edit.c:937 #, c-format msgid "contents of edit session left in %s" msgstr "编辑会话的内容留在了 %s 中" -#: src/sudo_edit.c:750 +#: src/sudo_edit.c:755 msgid "unable to read temporary file" msgstr "无法读取临时文件" -#: src/sudo_edit.c:833 +#: src/sudo_edit.c:838 msgid "sesh: internal error: odd number of paths" msgstr "sesh:内部错误:路径数量异常" -#: src/sudo_edit.c:835 +#: src/sudo_edit.c:840 msgid "sesh: unable to create temporary files" msgstr "sesh:无法创建临时文件" -#: src/sudo_edit.c:837 src/sudo_edit.c:935 +#: src/sudo_edit.c:842 src/sudo_edit.c:940 #, c-format msgid "sesh: unknown error %d" msgstr "sesh:未知错误 %d" -#: src/sudo_edit.c:927 +#: src/sudo_edit.c:932 msgid "unable to copy temporary files back to their original location" msgstr "无法将临时文件复制回其原位置" -#: src/sudo_edit.c:931 +#: src/sudo_edit.c:936 msgid "unable to copy some of the temporary files back to their original location" msgstr "无法将某些临时文件复制回其原位置" -#: src/sudo_edit.c:976 +#: src/sudo_edit.c:981 #, c-format msgid "unable to change uid to root (%u)" msgstr "无法将用户 ID 切换到 root(%u)" -#: src/sudo_edit.c:993 +#: src/sudo_edit.c:998 msgid "plugin error: missing file list for sudoedit" msgstr "插件错误:缺少 sudoedit 的文件列表" -#: src/sudo_edit.c:1034 src/sudo_edit.c:1047 +#: src/sudo_edit.c:1039 src/sudo_edit.c:1052 msgid "unable to read the clock" msgstr "无法读取时钟" -#: src/tgetpass.c:101 +#: src/tgetpass.c:102 msgid "timed out reading password" msgstr "读密码超时" -#: src/tgetpass.c:104 +#: src/tgetpass.c:105 msgid "no password was provided" msgstr "未提供密码" -#: src/tgetpass.c:107 +#: src/tgetpass.c:108 msgid "unable to read password" msgstr "无法读取密码" -#: src/tgetpass.c:141 -msgid "no tty present and no askpass program specified" -msgstr "没有终端存在,且未指定 askpass 程序" +#: src/tgetpass.c:147 +msgid "a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper" +msgstr "读取密码需要一个终端;请使用 -S 选项以从标准输入进行读取,或者配置一个 askpass 助手程序" -#: src/tgetpass.c:150 +#: src/tgetpass.c:157 msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "没有指定 askpass 程序,尝试设置 SUDO_ASKPASS" -#: src/tgetpass.c:307 +#: src/tgetpass.c:322 #, c-format msgid "unable to set gid to %u" msgstr "无法将组 ID 设为 %u" -#: src/tgetpass.c:311 +#: src/tgetpass.c:326 #, c-format msgid "unable to set uid to %u" msgstr "无法将用户 ID 设为 %u" -#: src/tgetpass.c:316 +#: src/tgetpass.c:331 #, c-format msgid "unable to run %s" msgstr "无法执行 %s" -#: src/utmp.c:271 +#: src/utmp.c:295 msgid "unable to save stdin" msgstr "无法保存 stdin" -#: src/utmp.c:273 +#: src/utmp.c:297 msgid "unable to dup2 stdin" msgstr "无法 dup2 stdin" -#: src/utmp.c:276 +#: src/utmp.c:300 msgid "unable to restore stdin" msgstr "无法恢复 stdin" +#~ msgid "no tty present and no askpass program specified" +#~ msgstr "没有终端存在,且未指定 askpass 程序" + #~ msgid "unable to get group vector" #~ msgstr "无法获取组向量" diff -Nru sudo-1.8.29/src/conversation.c sudo-1.8.31/src/conversation.c --- sudo-1.8.29/src/conversation.c 2019-10-28 12:27:39.000000000 +0000 +++ sudo-1.8.31/src/conversation.c 2019-11-12 01:09:25.000000000 +0000 @@ -76,6 +76,8 @@ SET(flags, TGP_NOECHO_TRY); read_pass: /* Read the password unless interrupted. */ + if (replies == NULL) + goto err; pass = tgetpass(msg->msg, msg->timeout, flags, callback); if (pass == NULL) goto err; @@ -115,7 +117,7 @@ err: /* Zero and free allocated memory and return an error. */ - if (replies != 0) { + if (replies != NULL) { do { struct sudo_conv_reply *repl = &replies[n]; if (repl->reply == NULL) diff -Nru sudo-1.8.29/src/exec.c sudo-1.8.31/src/exec.c --- sudo-1.8.29/src/exec.c 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/src/exec.c 2019-11-03 13:48:35.000000000 +0000 @@ -56,13 +56,38 @@ #include "sudo_plugin.h" #include "sudo_plugin_int.h" +static void +close_fds(struct command_details *details, int errfd) +{ + int fd, maxfd; + unsigned char *debug_fds; + debug_decl(close_fds, SUDO_DEBUG_EXEC) + + if (details->closefrom < 0) + debug_return; + + /* Preserve debug fds and error pipe as needed. */ + maxfd = sudo_debug_get_fds(&debug_fds); + for (fd = 0; fd <= maxfd; fd++) { + if (sudo_isset(debug_fds, fd)) + add_preserved_fd(&details->preserved_fds, fd); + } + if (errfd != -1) + add_preserved_fd(&details->preserved_fds, errfd); + + /* Close all fds except those explicitly preserved. */ + closefrom_except(details->closefrom, &details->preserved_fds); + + debug_return; +} + /* * Setup the execution environment immediately prior to the call to execve(). * Group setup is performed by policy_init_session(), called earlier. * Returns true on success and false on failure. */ static bool -exec_setup(struct command_details *details) +exec_setup(struct command_details *details, int errfd) { bool ret = false; debug_decl(exec_setup, SUDO_DEBUG_EXEC) @@ -145,6 +170,9 @@ if (ISSET(details->flags, CD_OVERRIDE_UMASK)) (void) umask(details->umask); + /* Close fds before chroot (need /dev) or uid change (prlimit on Linux). */ + close_fds(details, errfd); + if (details->chroot) { if (chroot(details->chroot) != 0 || chdir("/") != 0) { sudo_warn(U_("unable to change root to %s"), details->chroot); @@ -215,24 +243,8 @@ debug_decl(exec_cmnd, SUDO_DEBUG_EXEC) restore_signals(); - if (exec_setup(details) == true) { + if (exec_setup(details, errfd) == true) { /* headed for execve() */ - if (details->closefrom >= 0) { - int fd, maxfd; - unsigned char *debug_fds; - - /* Preserve debug fds and error pipe as needed. */ - maxfd = sudo_debug_get_fds(&debug_fds); - for (fd = 0; fd <= maxfd; fd++) { - if (sudo_isset(debug_fds, fd)) - add_preserved_fd(&details->preserved_fds, fd); - } - if (errfd != -1) - add_preserved_fd(&details->preserved_fds, errfd); - - /* Close all fds except those explicitly preserved. */ - closefrom_except(details->closefrom, &details->preserved_fds); - } #ifdef HAVE_SELINUX if (ISSET(details->flags, CD_RBAC_ENABLED)) { selinux_execve(details->execfd, details->command, details->argv, diff -Nru sudo-1.8.29/src/exec_monitor.c sudo-1.8.31/src/exec_monitor.c --- sudo-1.8.29/src/exec_monitor.c 2019-10-28 12:27:39.000000000 +0000 +++ sudo-1.8.31/src/exec_monitor.c 2019-11-03 13:48:45.000000000 +0000 @@ -409,18 +409,27 @@ sudo_fatal("dup2"); if (io_fds[SFD_STDIN] != io_fds[SFD_SLAVE]) close(io_fds[SFD_STDIN]); + } else { + if (fcntl(io_fds[SFD_STDIN], F_SETFD, 0) == -1) + sudo_fatal("fcntl"); } if (io_fds[SFD_STDOUT] != STDOUT_FILENO) { if (dup2(io_fds[SFD_STDOUT], STDOUT_FILENO) == -1) sudo_fatal("dup2"); if (io_fds[SFD_STDOUT] != io_fds[SFD_SLAVE]) close(io_fds[SFD_STDOUT]); + } else { + if (fcntl(io_fds[SFD_STDOUT], F_SETFD, 0) == -1) + sudo_fatal("fcntl"); } if (io_fds[SFD_STDERR] != STDERR_FILENO) { if (dup2(io_fds[SFD_STDERR], STDERR_FILENO) == -1) sudo_fatal("dup2"); if (io_fds[SFD_STDERR] != io_fds[SFD_SLAVE]) close(io_fds[SFD_STDERR]); + } else { + if (fcntl(io_fds[SFD_STDERR], F_SETFD, 0) == -1) + sudo_fatal("fcntl"); } /* Wait for parent to grant us the tty if we are foreground. */ diff -Nru sudo-1.8.29/src/exec_pty.c sudo-1.8.31/src/exec_pty.c --- sudo-1.8.29/src/exec_pty.c 2019-10-28 12:27:46.000000000 +0000 +++ sudo-1.8.31/src/exec_pty.c 2019-11-03 13:48:45.000000000 +0000 @@ -1321,7 +1321,9 @@ * We communicate with the monitor over a bi-directional pair of sockets. * Parent sends signal info to monitor and monitor sends back wait status. */ - if (socketpair(PF_UNIX, SOCK_STREAM, 0, sv) == -1) + if (socketpair(PF_UNIX, SOCK_STREAM, 0, sv) == -1 || + fcntl(sv[0], F_SETFD, FD_CLOEXEC) == -1 || + fcntl(sv[1], F_SETFD, FD_CLOEXEC) == -1) sudo_fatal(U_("unable to create sockets")); /* @@ -1411,7 +1413,7 @@ sudo_debug_printf(SUDO_DEBUG_INFO, "stdin not a tty, creating a pipe"); pipeline = true; - if (pipe(io_pipe[STDIN_FILENO]) != 0) + if (pipe2(io_pipe[STDIN_FILENO], O_CLOEXEC) != 0) sudo_fatal(U_("unable to create pipe")); io_buf_new(STDIN_FILENO, io_pipe[STDIN_FILENO][1], log_stdin, &ec, &iobufs); @@ -1432,7 +1434,7 @@ sudo_debug_printf(SUDO_DEBUG_INFO, "stdout not a tty, creating a pipe"); pipeline = true; - if (pipe(io_pipe[STDOUT_FILENO]) != 0) + if (pipe2(io_pipe[STDOUT_FILENO], O_CLOEXEC) != 0) sudo_fatal(U_("unable to create pipe")); io_buf_new(io_pipe[STDOUT_FILENO][0], STDOUT_FILENO, log_stdout, &ec, &iobufs); @@ -1452,7 +1454,7 @@ } else { sudo_debug_printf(SUDO_DEBUG_INFO, "stderr not a tty, creating a pipe"); - if (pipe(io_pipe[STDERR_FILENO]) != 0) + if (pipe2(io_pipe[STDERR_FILENO], O_CLOEXEC) != 0) sudo_fatal(U_("unable to create pipe")); io_buf_new(io_pipe[STDERR_FILENO][0], STDERR_FILENO, log_stderr, &ec, &iobufs); @@ -1496,7 +1498,6 @@ case 0: /* child */ close(sv[0]); - (void)fcntl(sv[1], F_SETFD, FD_CLOEXEC); /* Close the other end of the stdin/stdout/stderr pipes and exec. */ if (io_pipe[STDIN_FILENO][1] != -1) close(io_pipe[STDIN_FILENO][1]); diff -Nru sudo-1.8.29/src/limits.c sudo-1.8.31/src/limits.c --- sudo-1.8.29/src/limits.c 2019-10-28 12:28:52.000000000 +0000 +++ sudo-1.8.31/src/limits.c 2019-12-26 02:16:37.000000000 +0000 @@ -37,28 +37,62 @@ #ifdef __linux__ # include #endif +#include +#include #include "sudo.h" +#if defined(OPEN_MAX) && OPEN_MAX > 256 +# define SUDO_OPEN_MAX OPEN_MAX +#else +# define SUDO_OPEN_MAX 256 +#endif + +#ifdef __LP64__ +# define SUDO_STACK_MIN (4 * 1024 * 1024) +#else +# define SUDO_STACK_MIN (2 * 1024 * 1024) +#endif + +#ifdef HAVE_SETRLIMIT64 +# define getrlimit(a, b) getrlimit64((a), (b)) +# define setrlimit(a, b) setrlimit64((a), (b)) +# define rlimit rlimit64 +# define rlim_t rlim64_t +# undef RLIM_INFINITY +# define RLIM_INFINITY RLIM64_INFINITY +#endif /* HAVE_SETRLIMIT64 */ + +/* + * macOS doesn't allow nofile soft limit to be infinite or + * the stack hard limit to be infinite. + * Linux containers have a problem with an infinite stack soft limit. + */ +static struct rlimit nofile_fallback = { SUDO_OPEN_MAX, RLIM_INFINITY }; +static struct rlimit stack_fallback = { SUDO_STACK_MIN, 65532 * 1024 }; + static struct saved_limit { + const char *name; int resource; bool saved; - struct rlimit limit; + struct rlimit *fallback; + struct rlimit newlimit; + struct rlimit oldlimit; } saved_limits[] = { #ifdef RLIMIT_AS - { RLIMIT_AS }, + { "RLIMIT_AS", RLIMIT_AS, false, NULL, { RLIM_INFINITY, RLIM_INFINITY } }, #endif - { RLIMIT_CPU }, - { RLIMIT_DATA }, - { RLIMIT_FSIZE }, - { RLIMIT_NOFILE }, + { "RLIMIT_CPU", RLIMIT_CPU, false, NULL, { RLIM_INFINITY, RLIM_INFINITY } }, + { "RLIMIT_DATA", RLIMIT_DATA, false, NULL, { RLIM_INFINITY, RLIM_INFINITY } }, + { "RLIMIT_FSIZE", RLIMIT_FSIZE, false, NULL, { RLIM_INFINITY, RLIM_INFINITY } }, + { "RLIMIT_NOFILE", RLIMIT_NOFILE, false, &nofile_fallback, { RLIM_INFINITY, RLIM_INFINITY } }, #ifdef RLIMIT_NPROC - { RLIMIT_NPROC }, + { "RLIMIT_NPROC", RLIMIT_NPROC, false, NULL, { RLIM_INFINITY, RLIM_INFINITY } }, #endif #ifdef RLIMIT_RSS - { RLIMIT_RSS }, + { "RLIMIT_RSS", RLIMIT_RSS, false, NULL, { RLIM_INFINITY, RLIM_INFINITY } }, #endif - { RLIMIT_STACK } + { "RLIMIT_STACK", RLIMIT_STACK, false, &stack_fallback, { SUDO_STACK_MIN, RLIM_INFINITY } } }; static struct rlimit corelimit; @@ -160,21 +194,39 @@ void unlimit_sudo(void) { - struct rlimit inf = { RLIM_INFINITY, RLIM_INFINITY }; unsigned int idx; + int rc; debug_decl(unlimit_sudo, SUDO_DEBUG_UTIL) /* Set resource limits to unlimited and stash the old values. */ for (idx = 0; idx < nitems(saved_limits); idx++) { struct saved_limit *lim = &saved_limits[idx]; - if (getrlimit(lim->resource, &lim->limit) == -1) + if (getrlimit(lim->resource, &lim->oldlimit) == -1) continue; lim->saved = true; - if (setrlimit(lim->resource, &inf) == -1) { - struct rlimit rl = lim->limit; - rl.rlim_cur = rl.rlim_max; - if (setrlimit(lim->resource, &rl) == -1) - sudo_warn("setrlimit(%d)", lim->resource); + if (lim->newlimit.rlim_cur != RLIM_INFINITY) { + /* Don't reduce the soft resource limit. */ + if (lim->oldlimit.rlim_cur == RLIM_INFINITY || + lim->oldlimit.rlim_cur > lim->newlimit.rlim_cur) + lim->newlimit.rlim_cur = lim->oldlimit.rlim_cur; + } + if (lim->newlimit.rlim_max != RLIM_INFINITY) { + /* Don't reduce the hard resource limit. */ + if (lim->oldlimit.rlim_max == RLIM_INFINITY || + lim->oldlimit.rlim_max > lim->newlimit.rlim_max) + lim->newlimit.rlim_max = lim->oldlimit.rlim_max; + } + if ((rc = setrlimit(lim->resource, &lim->newlimit)) == -1) { + if (lim->fallback != NULL) + rc = setrlimit(lim->resource, lim->fallback); + if (rc == -1) { + /* Try setting new rlim_cur to old rlim_max. */ + lim->newlimit.rlim_cur = lim->oldlimit.rlim_max; + lim->newlimit.rlim_max = lim->oldlimit.rlim_max; + rc = setrlimit(lim->resource, &lim->newlimit); + } + if (rc == -1) + sudo_warn("setrlimit(%s)", lim->name); } } @@ -194,8 +246,35 @@ for (idx = 0; idx < nitems(saved_limits); idx++) { struct saved_limit *lim = &saved_limits[idx]; if (lim->saved) { - if (setrlimit(lim->resource, &lim->limit) == -1) - sudo_warn("setrlimit(%d)", lim->resource); + struct rlimit rl = lim->oldlimit; + int i, rc; + + for (i = 0; i < 10; i++) { + rc = setrlimit(lim->resource, &rl); + if (rc != -1 || errno != EINVAL) + break; + + /* + * Soft limit could be lower than current resource usage. + * This can be an issue on NetBSD with RLIMIT_STACK and ASLR. + */ + if (rl.rlim_cur > LLONG_MAX / 2) + break; + rl.rlim_cur *= 2; + if (lim->newlimit.rlim_cur != RLIM_INFINITY && + rl.rlim_cur > lim->newlimit.rlim_cur) { + rl.rlim_cur = lim->newlimit.rlim_cur; + } + if (rl.rlim_max != RLIM_INFINITY && + rl.rlim_cur > rl.rlim_max) { + rl.rlim_max = rl.rlim_cur; + } + rc = setrlimit(lim->resource, &rl); + if (rc != -1 || errno != EINVAL) + break; + } + if (rc == -1) + sudo_warn("setrlimit(%s)", lim->name); } } restore_coredump(); diff -Nru sudo-1.8.29/src/selinux.c sudo-1.8.31/src/selinux.c --- sudo-1.8.29/src/selinux.c 2019-10-28 12:27:39.000000000 +0000 +++ sudo-1.8.31/src/selinux.c 2019-12-11 20:11:25.000000000 +0000 @@ -61,8 +61,8 @@ static struct selinux_state { security_context_t old_context; security_context_t new_context; - security_context_t tty_context; - security_context_t new_tty_context; + security_context_t tty_con_raw; + security_context_t new_tty_con_raw; const char *ttyn; int ttyfd; int enforcing; @@ -112,39 +112,39 @@ selinux_restore_tty(void) { int ret = -1; - security_context_t chk_tty_context = NULL; + security_context_t chk_tty_con_raw = NULL; debug_decl(selinux_restore_tty, SUDO_DEBUG_SELINUX) - if (se_state.ttyfd == -1 || se_state.new_tty_context == NULL) { + if (se_state.ttyfd == -1 || se_state.new_tty_con_raw == NULL) { sudo_debug_printf(SUDO_DEBUG_INFO, "%s: no tty, skip relabel", __func__); debug_return_int(0); } sudo_debug_printf(SUDO_DEBUG_INFO, "%s: %s -> %s", - __func__, se_state.new_tty_context, se_state.tty_context); + __func__, se_state.new_tty_con_raw, se_state.tty_con_raw); /* Verify that the tty still has the context set by sudo. */ - if (fgetfilecon(se_state.ttyfd, &chk_tty_context) == -1) { + if (fgetfilecon_raw(se_state.ttyfd, &chk_tty_con_raw) == -1) { sudo_warn(U_("unable to fgetfilecon %s"), se_state.ttyn); goto skip_relabel; } - if (strcmp(chk_tty_context, se_state.new_tty_context) != 0) { + if (strcmp(chk_tty_con_raw, se_state.new_tty_con_raw) != 0) { sudo_warnx(U_("%s changed labels"), se_state.ttyn); sudo_debug_printf(SUDO_DEBUG_INFO, "%s: not restoring tty label, expected %s, have %s", - __func__, se_state.new_tty_context, chk_tty_context); + __func__, se_state.new_tty_con_raw, chk_tty_con_raw); goto skip_relabel; } - if (fsetfilecon(se_state.ttyfd, se_state.tty_context) == -1) { + if (fsetfilecon_raw(se_state.ttyfd, se_state.tty_con_raw) == -1) { sudo_warn(U_("unable to restore context for %s"), se_state.ttyn); goto skip_relabel; } sudo_debug_printf(SUDO_DEBUG_INFO, "%s: successfully set tty label to %s", - __func__, se_state.tty_context); + __func__, se_state.tty_con_raw); ret = 0; skip_relabel: @@ -152,14 +152,14 @@ close(se_state.ttyfd); se_state.ttyfd = -1; } - freecon(chk_tty_context); + freecon(chk_tty_con_raw); debug_return_int(ret); } /* * This function attempts to relabel the tty. If this function fails, then * the contexts are free'd and -1 is returned. On success, 0 is returned - * and tty_context and new_tty_context are set. + * and tty_con_raw and new_tty_con_raw are set. * * This function will not fail if it can not relabel the tty when selinux is * in permissive mode. @@ -268,8 +268,12 @@ (void)fcntl(se_state.ttyfd, F_SETFD, FD_CLOEXEC); se_state.ttyn = ttyn; - se_state.tty_context = tty_con; - se_state.new_tty_context = new_tty_con; + if (selinux_trans_to_raw_context(tty_con, &se_state.tty_con_raw) == -1) + goto bad; + if (selinux_trans_to_raw_context(new_tty_con, &se_state.new_tty_con_raw) == -1) + goto bad; + freecon(tty_con); + freecon(new_tty_con); debug_return_int(0); bad: @@ -277,7 +281,12 @@ close(se_state.ttyfd); se_state.ttyfd = -1; } + freecon(se_state.tty_con_raw); + se_state.tty_con_raw = NULL; + freecon(se_state.new_tty_con_raw); + se_state.new_tty_con_raw = NULL; freecon(tty_con); + freecon(new_tty_con); debug_return_int(se_state.enforcing ? -1 : 0); } diff -Nru sudo-1.8.29/src/sudo_edit.c sudo-1.8.31/src/sudo_edit.c --- sudo-1.8.29/src/sudo_edit.c 2019-10-28 12:27:46.000000000 +0000 +++ sudo-1.8.31/src/sudo_edit.c 2020-01-29 18:04:57.000000000 +0000 @@ -94,13 +94,25 @@ #ifdef HAVE_FACCESSAT /* - * Returns true if the open directory fd is writable by the user. + * Returns true if the open directory fd is owned or writable by the user. */ static int dir_is_writable(int dfd, struct user_details *ud, struct command_details *cd) { - debug_decl(dir_is_writable, SUDO_DEBUG_EDIT) + struct stat sb; int rc; + debug_decl(dir_is_writable, SUDO_DEBUG_EDIT) + + if (fstat(dfd, &sb) == -1) + debug_return_int(-1); + + /* If the user owns the dir we always consider it writable. */ + if (sb.st_uid == ud->uid) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "user uid %u matches directory uid %u", (unsigned int)ud->uid, + (unsigned int)sb.st_uid); + debug_return_int(true); + } /* Change uid/gid/groups to invoking user, usually needs root perms. */ if (cd->euid != ROOT_UID) { @@ -121,7 +133,7 @@ if (rc == 0) debug_return_int(true); - if (errno == EACCES) + if (errno == EACCES || errno == EROFS) debug_return_int(false); debug_return_int(-1); } @@ -150,7 +162,7 @@ } /* - * Returns true if the open directory fd is writable by the user. + * Returns true if the open directory fd is owned or writable by the user. */ static int dir_is_writable(int dfd, struct user_details *ud, struct command_details *cd) diff -Nru sudo-1.8.29/src/tgetpass.c sudo-1.8.31/src/tgetpass.c --- sudo-1.8.29/src/tgetpass.c 2019-10-28 12:27:39.000000000 +0000 +++ sudo-1.8.31/src/tgetpass.c 2020-01-30 12:51:39.000000000 +0000 @@ -61,7 +61,7 @@ static volatile sig_atomic_t signo[NSIG]; static void tgetpass_handler(int); -static char *getln(int, char *, size_t, int, enum tgetpass_errval *); +static char *getln(int, char *, size_t, bool, enum tgetpass_errval *); static char *sudo_askpass(const char *, const char *); static int @@ -125,6 +125,7 @@ static char buf[SUDO_CONV_REPL_MAX + 1]; int i, input, output, save_errno, ttyfd; bool need_restart, neednl = false; + bool feedback = ISSET(flags, TGP_MASK); enum tgetpass_errval errval; debug_decl(tgetpass, SUDO_DEBUG_CONV) @@ -180,7 +181,7 @@ */ if (!ISSET(flags, TGP_ECHO)) { for (;;) { - if (ISSET(flags, TGP_MASK)) + if (feedback) neednl = sudo_term_cbreak(input); else neednl = sudo_term_noecho(input); @@ -194,6 +195,9 @@ } } } + /* Only use feedback mode when we can disable echo. */ + if (!neednl) + feedback = false; /* * Catch signals that would otherwise cause the user to end @@ -224,7 +228,7 @@ if (timeout > 0) alarm(timeout); - pass = getln(input, buf, sizeof(buf), ISSET(flags, TGP_MASK), &errval); + pass = getln(input, buf, sizeof(buf), feedback, &errval); alarm(0); save_errno = errno; @@ -303,7 +307,7 @@ sa.sa_handler = SIG_DFL; (void) sigaction(SIGCHLD, &sa, &savechld); - if (pipe(pfd) == -1) + if (pipe2(pfd, O_CLOEXEC) == -1) sudo_fatal(U_("unable to create pipe")); child = sudo_debug_fork(); @@ -311,13 +315,26 @@ sudo_fatal(U_("unable to fork")); if (child == 0) { - /* child, point stdout to output side of the pipe and exec askpass */ - if (dup2(pfd[1], STDOUT_FILENO) == -1) { - sudo_warn("dup2"); - _exit(255); + /* child, set stdout to write side of the pipe or clear FD_CLOEXEC */ + if (pfd[1] == STDOUT_FILENO) { + if (fcntl(pfd[1], F_SETFD, 0) == -1) { + sudo_warn("fcntl"); + _exit(255); + } + } else { + if (dup2(pfd[1], STDOUT_FILENO) == -1) { + sudo_warn("dup2"); + _exit(255); + } } if (setuid(ROOT_UID) == -1) sudo_warn("setuid(%d)", ROOT_UID); + /* Close fds before uid change to prevent prlimit sabotage on Linux. */ + closefrom(STDERR_FILENO + 1); + /* Run the askpass program with the user's original resource limits. */ + restore_limits(); + /* But avoid a setuid() failure on Linux due to RLIMIT_NPROC. */ + unlimit_nproc(); if (setgid(user_details.gid)) { sudo_warn(U_("unable to set gid to %u"), (unsigned int)user_details.gid); _exit(255); @@ -326,7 +343,7 @@ sudo_warn(U_("unable to set uid to %u"), (unsigned int)user_details.uid); _exit(255); } - closefrom(STDERR_FILENO + 1); + restore_nproc(); execl(askpass, askpass, prompt, (char *)NULL); sudo_warn(U_("unable to run %s"), askpass); _exit(255); @@ -360,7 +377,7 @@ extern int sudo_term_eof, sudo_term_erase, sudo_term_kill; static char * -getln(int fd, char *buf, size_t bufsiz, int feedback, +getln(int fd, char *buf, size_t bufsiz, bool feedback, enum tgetpass_errval *errval) { size_t left = bufsiz; @@ -389,15 +406,15 @@ while (cp > buf) { if (write(fd, "\b \b", 3) == -1) break; - --cp; + cp--; } + cp = buf; left = bufsiz; continue; } else if (c == sudo_term_erase) { if (cp > buf) { - if (write(fd, "\b \b", 3) == -1) - break; - --cp; + ignore_result(write(fd, "\b \b", 3)); + cp--; left++; } continue;