Imported Upstream version 1.8.3 upstream/1.8.3
authorBdale Garbee <bdale@gag.com>
Sun, 23 Oct 2011 05:41:42 +0000 (23:41 -0600)
committerBdale Garbee <bdale@gag.com>
Sun, 23 Oct 2011 05:41:42 +0000 (23:41 -0600)
94 files changed:
ChangeLog
INSTALL
MANIFEST
Makefile.in
NEWS
common/setgroups.c
compat/Makefile.in
compat/regress/glob/globtest.c
config.h.in
configure
configure.in
doc/TROUBLESHOOTING
doc/sudo.cat
doc/sudo.man.in
doc/sudo_plugin.cat
doc/sudo_plugin.man.in
doc/sudoers.cat
doc/sudoers.ldap.cat
doc/sudoers.ldap.man.in
doc/sudoers.ldap.pod
doc/sudoers.man.in
doc/sudoers.pod
doc/sudoreplay.cat
doc/sudoreplay.man.in
doc/visudo.cat
doc/visudo.man.in
include/missing.h
mkdep.pl
mkpkg
plugins/sudoers/Makefile.in
plugins/sudoers/alias.c
plugins/sudoers/auth/API
plugins/sudoers/auth/bsdauth.c
plugins/sudoers/auth/fwtk.c
plugins/sudoers/auth/kerb4.c
plugins/sudoers/auth/kerb5.c
plugins/sudoers/auth/pam.c
plugins/sudoers/auth/passwd.c
plugins/sudoers/auth/secureware.c
plugins/sudoers/auth/securid.c
plugins/sudoers/auth/securid5.c
plugins/sudoers/auth/sudo_auth.c
plugins/sudoers/auth/sudo_auth.h
plugins/sudoers/check.c
plugins/sudoers/defaults.c
plugins/sudoers/defaults.h
plugins/sudoers/env.c
plugins/sudoers/gram.c
plugins/sudoers/gram.y
plugins/sudoers/iolog_path.c
plugins/sudoers/ldap.c
plugins/sudoers/match.c
plugins/sudoers/match_addr.c [new file with mode: 0644]
plugins/sudoers/parse.c
plugins/sudoers/po/da.mo
plugins/sudoers/po/da.po
plugins/sudoers/po/eo.mo [new file with mode: 0644]
plugins/sudoers/po/eo.po [new file with mode: 0644]
plugins/sudoers/po/fi.mo
plugins/sudoers/po/fi.po
plugins/sudoers/po/ja.mo [new file with mode: 0644]
plugins/sudoers/po/ja.po [new file with mode: 0644]
plugins/sudoers/po/pl.mo
plugins/sudoers/po/pl.po
plugins/sudoers/po/sudoers.pot
plugins/sudoers/po/uk.mo
plugins/sudoers/po/uk.po
plugins/sudoers/po/zh_CN.mo
plugins/sudoers/po/zh_CN.po
plugins/sudoers/pwutil.c
plugins/sudoers/regress/iolog_path/check_iolog_path.c
plugins/sudoers/regress/iolog_path/data
plugins/sudoers/regress/logging/check_wrap.c
plugins/sudoers/regress/parser/check_addr.c [new file with mode: 0644]
plugins/sudoers/regress/parser/check_addr.in [new file with mode: 0644]
plugins/sudoers/set_perms.c
plugins/sudoers/sudoers.c
plugins/sudoers/sudoers.h
plugins/sudoers/visudo.c
src/exec.c
src/exec_pty.c
src/get_pty.c
src/po/eo.mo [new file with mode: 0644]
src/po/eo.po [new file with mode: 0644]
src/po/it.mo [new file with mode: 0644]
src/po/it.po [new file with mode: 0644]
src/po/ja.mo [new file with mode: 0644]
src/po/ja.po [new file with mode: 0644]
src/po/sudo.pot
src/sudo.c
src/sudo.h
src/sudo_edit.c
src/sudo_noexec.c
src/utmp.c

index 3383f4827082e734df88c0aa8abd2fa7ae8d6f8b..98e4a39ea9f79bbb3e25aed0d1d6968282dd574e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,341 @@
+2011-10-21  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * .hgtags:
+       Added tag SUDO_1_8_3 for changeset 82bec4d3a203
+       [6c953ef6f577] [tip] <1.8>
+
+       * Update Japanese sudoers translation from translationproject.org
+       [82bec4d3a203] [SUDO_1_8_3] <1.8>
+
+2011-10-12  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * configure, configure.in:
+       Override and ignore the --disable-static option. Sudo already runs
+       libtool with -tag=disable-static where applicable and we need non-
+       PIC objects to build the executables.
+       [dff177464029] <1.8>
+
+2011-10-10  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * NEWS:
+       Add sudoedit fix
+       [3238dc7e4fb2] <1.8>
+
+       * plugins/sudoers/po/sudoers.pot:
+       regen pot files
+       [7981d6cbf1ab] <1.8>
+
+       * Ignore set_logname (which is now the default) for sudoedit since we
+       want the LOGNAME, USER and USERNAME environment variables to refer
+       to the calling user since that is who the editor runs as. This
+       allows the editor to find the user's startup files. Fixes bugzilla
+       #515
+       [3b9486e5fddb] <1.8>
+
+       * Instead of trying to grow the buffer in make_grlist_item(), simply
+       increase the total length, free the old buffer and allocate a new
+       one. This is less error prone and saves us from having to adjust
+       all the pointers in the buffer. This code path is only taken when
+       there are groups longer than the length of the user field in struct
+       utmp or utmpx, which should be quite rare.
+       [cb7c5ac834b5] <1.8>
+
+       * Add Italian translation for sudo from translationproject.org
+       [c7876fccbc38] <1.8>
+
+       * NEWS:
+       Japanese translation for sudo and sudoers from
+       translationproject.org
+       [9945a3ef7ff7] <1.8>
+
+2011-10-07  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * sudoreplay depends on timestr.lo too; from Mike Frysinger
+       [ad9ae493205f] <1.8>
+
+2011-10-04  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * plugins/sudoers/po/sudoers.pot:
+       Regen sudoers pot file.
+       [2c4d99361994] <1.8>
+
+       * NEWS:
+       Update with latest sudo 1.8.3 news
+       [4e7f59d339d4] <1.8>
+
+       * ldap_start_tls_s() on Debian (at least) sets the effective and saved
+       uids to the same value as the real uid. This prevents sudo from
+       setting the uid or gid later on. As a workaround, we now set perms
+       to root during sudoers_policy_open().
+       [eb4c4f15833a] <1.8>
+
+       * Better warning message on setuid() failure for the setreuid()
+       version of set_perms().
+       [308c72f601e4] <1.8>
+
+2011-10-02  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * NEWS:
+       Combine new translations in NEWS item
+       [0aa07471a5e6] <1.8>
+
+2011-09-27  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * Delref auth_pw at the end of check_user() instead of getting a ref
+       twice.
+       [1c882f2fb46c] <1.8>
+
+       * Make sudo_auth_{init,cleanup} return TRUE on success and check for
+       sudo_auth_init() return value in check_user().
+       [573bf35ecac9] <1.8>
+
+       * Do not return without restoring permissions.
+       [2444a0b96469] <1.8>
+
+       * plugins/sudoers/po/sudoers.pot, src/po/sudo.pot:
+       regen pot files
+       [d286bce8dbb1] <1.8>
+
+       * NEWS:
+       Update for latest release candidate
+       [63d184ba6263] <1.8>
+
+       * plugins/sudoers/po/sudoers.pot, src/po/sudo.pot:
+       regen pot files
+       [ac3ec1315df7] <1.8>
+
+       * Modify the authentication API such that the init and cleanup
+       functions are always called, regardless of whether or not we are
+       going to verify a password. This is needed for proper PAM session
+       support.
+       [ea281ca46d94] <1.8>
+
+       * Add missing dependency for getspwgen other depends.
+       [9c124272910d] <1.8>
+
+       * Fix a PAM_USER mismatch in session open/close. We update PAM_USER
+       to the target user immediately before setting resource limits, which
+       is after the monitor process has forked (so it has the old value).
+       Also, if the user did not authenticate, there is no pamh in the
+       monitor so we need to init pam here too. This means we end up
+       calling pam_start() twice, which should be fixed, but at least the
+       session is always properly closed now.
+       [d0866ee5f190] <1.8>
+
+       * Add check for old being NULL in utmp_setid(); from Steven McDonald
+       [30cc283ac2b4] <1.8>
+
+2011-09-25  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * If the invoking user cannot be resolved by uid fake the struct
+       passwd and store it in the cache so we can delref it on exit.
+       [19d44f44d45d] <1.8>
+
+2011-09-24  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * Don't error out if the group plugin cannot be loaded, just warn.
+       [e91d9912c9a0] <1.8>
+
+2011-09-23  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * Quiet a false positive found by several static analysis tools. These
+       tools don't know that log_error() does not return (it longjmps to
+       error_jmp which returns to the sudo front-end).
+       [3cc319e31ed6] <1.8>
+
+2011-09-22  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * Add Italian translation for sudo from translationproject.org Regen
+       .mo files
+       [c0b27f9d7e57] <1.8>
+
+       * .hgtags:
+       Added tag SUDO_1_8_2 for changeset 3682e51af1d0
+       [f0be566e9ea2] <1.8>
+
+2011-09-21  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * Update to current reality and add bit about ssh auth
+       [48dcb86ce9be] <1.8>
+
+       * Make "verbose" static; fixes a namespace clash with
+       pam_ssh_agent_auth (and it doesn't need to be extern these days).
+       [b60fdd82de94] <1.8>
+
+       * configure, configure.in:
+       FreeBSD has libutil.h not util.h
+       [c03b121e0193] <1.8>
+
+       * configure, configure.in:
+       Define _BSD_SOURCE on FreeBSD, OpenBSD and DragonflyBSD
+       [002e3e0bb173] <1.8>
+
+       * Update po files from translationproject.org
+       [2b36af902213] <1.8>
+
+2011-09-16  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * NEWS:
+       Mention DEREF support
+       [dfeb152f1686] <1.8>
+
+       * plugins/sudoers/po/sudoers.pot:
+       sync pot files
+       [1fba22e927a3] <1.8>
+
+       * doc/sudoers.ldap.cat, doc/sudoers.ldap.man.in:
+       Add support for DEREF in ldap.conf.
+       [fe1cf6ad0add] <1.8>
+
+       * Makefile.in:
+       install target should depend on ChangeLog too, not just install-doc
+       [f54e2ab633b8] <1.8>
+
+       * NEWS, configure.in, doc/sudoers.cat, doc/sudoers.man.in:
+       Only iolog_file (not iolog_dir) supports mktemp-style suffixes.
+       [44a25099594e] <1.8>
+
+       * configure.in, plugins/sudoers/po/sudoers.pot, src/po/sudo.pot:
+       regen pot files
+       [e14ee85cf49b] <1.8>
+
+       * configure, configure.in:
+       Fix some square brackets in case statements that needed to be
+       doubled up. While here, use $OSMAJOR when it makes sense.
+       [853c6e5f994c] <1.8>
+
+       * Fix a crash in make_grlist_item() on 64-bit machines with strict
+       alignment.
+       [e877c89ae32f] <1.8>
+
+       * Remove list_options() function that is no longer used now that "sudo
+       -L" is gone.
+       [f31543c80b98] <1.8>
+
+       * configure, configure.in:
+       Error message if user tries --with-CC
+       [0ed7558b8924] <1.8>
+
+       * configure, configure.in:
+       Check for -libmldap too when looking for ldap libs, which is the
+       Tivoli Directory Server client library.
+       [831e32d1453c] <1.8>
+
+       * plugins/sudoers/po/sudoers.pot, src/po/sudo.pot:
+       regen pot files for 1.8.3
+       [df2fb085cff2] <1.8>
+
+       * NEWS, configure, configure.in, doc/sudo.cat, doc/sudo.man.in,
+       doc/sudo_plugin.cat, doc/sudo_plugin.man.in, doc/sudoers.cat,
+       doc/sudoers.ldap.cat, doc/sudoers.ldap.man.in, doc/sudoers.man.in,
+       doc/sudoreplay.cat, doc/sudoreplay.man.in, doc/visudo.cat,
+       doc/visudo.man.in:
+       Update for version 1.8.3
+       [38cf153add0a] <1.8>
+
+2011-09-09  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * Honor NOPASSWD tag for denied commands too.
+       [f473c443ad54] <1.8>
+
+       * INSTALL, configure, configure.in:
+       Remove --with-CC option; it doesn't work correctly now that we use
+       libtool. Users can get the same effect by setting the CC
+       environment variable when running configure.
+       [4f04869d74fd] <1.8>
+
+2011-08-31  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * configure, configure.in:
+       Assume all modern systems support fstat(2).
+       [0422b19dced3] <1.8>
+
+2011-08-30  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * configure, configure.in:
+       Add configure test for missing errno declaration and only declare it
+       ourselves if it is missing.
+       [6d26974f7e16] <1.8>
+
+       * Include errno.h before sudo.h to avoid conflicting with the system
+       definition of errno.
+       [8000bdc0968f] <1.8>
+
+2011-08-29  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * Only print individual check status when there is a failure.
+       [bbdd669e7615] <1.8>
+
+       * Add calls to setprogname() for test programs.
+       [c721f3466a3a] <1.8>
+
+       * configure, configure.in:
+       Add -Wall and -Werror after all tests so they don't cause failures.
+       [20d75ce40086] <1.8>
+
+       * Actually run check_addr in the check target
+       [dcd96ef0dc57] <1.8>
+
+       * Split out address matching into its own file and add regression
+       tests for it.
+       [863f28589c24] <1.8>
+
+2011-08-27  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * Fix matching a network number with netmask when the network number
+       is not the first address in the CIDR block.
+       [719942c986e9] <1.8>
+
+2011-08-26  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * Don't assume all editors support the +linenumber command line
+       argument, use a whitelist of known good editors.
+       [d8d884af3b05] <1.8>
+
+2011-08-23  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * Silence compiler warnings on Solaris with gcc 3.4.3
+       [8047cdb5d6a1] <1.8>
+
+       * Fix building on RHEL 3
+       [6bb0464a7450] <1.8>
+
+       * INSTALL, configure, configure.in:
+       Add --enable-werror configure option.
+       [aa40fd459836] <1.8>
+
+       * setgroups() proto lives in grp.h on RHEL4, perhaps others.
+       [92f98cbaebf0] <1.8>
+
+       * configure, configure.in:
+       Use PAM by default on AIX 6 and higher.
+       [7ef53d5ac819] <1.8>
+
+2011-08-22  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * Add new Esperanto translation from translationproject.org
+       [109ed683b885] <1.8>
+
+2011-08-19  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * Quiet an innocuous valgrind warning.
+       [fc453e49f9dd] <1.8>
+
+2011-08-18  Todd C. Miller  <Todd.Miller@courtesan.com>
+
+       * Fix expansion of strftime() escapes in log_dir and add a regress
+       test that exhibited the problem.
+       [784e60d21f11] <1.8>
+
+       * plugins/sudoers/po/sudoers.pot, src/po/sudo.pot:
+       Fix "make check" return value.
+       [d3608efd8da6] <1.8>
+
 2011-08-17  Todd C. Miller  <Todd.Miller@courtesan.com>
 
        * plugins/sudoers/po/sudoers.pot:
        Regen pot files
-       [3682e51af1d0] [tip] <1.8>
+       [3682e51af1d0] [SUDO_1_8_2] <1.8>
 
        * Makefile.in:
        Fix logic inversion in pot file up to date check.
diff --git a/INSTALL b/INSTALL
index 6597087f2d7807cb0e9efbe63aa29a6a0680ab83..a2c9cb46c4004cad237e5a5e438267123cc3a28b 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -99,9 +99,6 @@ Directory and file names:
        Find the sources in DIR [configure dir or ..]
 
 Special features/options:
-  --with-CC=PATH
-       Specifies path to C compiler you wish to use.
-
   --with-incpath=DIR
        Adds the specified directory (or directories) to CPPFLAGS
        so configure and the compiler will look there for include
@@ -630,6 +627,9 @@ The following options are also configurable at runtime:
   --enable-warnings
        Enable compiler warnings when building sudo with gcc.
 
+  --enable-werror
+       Enable the -Werror compiler option when building sudo with gcc.
+
   --enable-admin-flag
        Enable the creation of an Ubuntu-style admin flag file
        the first time sudo is run.
@@ -712,14 +712,15 @@ Solaris 2.x:
     CD.  You can also get them from various places on the net,
     including http://www.sunfreeware.com/
     NOTE: sudo will *not* build with the sun C compiler in BSD
-         compatibility mode (/usr/ucb/cc).  Sudo is designed to
-         compile with the standard C compiler (or gcc) and will
-         not build correctly with /usr/ucb/cc.  You can use the
-         `--with-CC' option to point `configure' to the non-ucb
-         compiler if it is not the first cc in your path.  Some
-         sites link /usr/ucb/cc to gcc; configure will not notice
-         this and still refuse to use /usr/ucb/cc, so make sure gcc
-         is also in your path if your site is setup this way.
+          compatibility mode (/usr/ucb/cc).  Sudo is designed to
+          compile with the standard C compiler (or gcc) and will
+          not build correctly with /usr/ucb/cc.  You can set the
+          CC environment variable to the non-ucb compiler when
+          running `configure' if it is not the first cc in your
+          path.  Some sites link /usr/ucb/cc to gcc; configure will
+          not notice this and still refuse to use /usr/ucb/cc, so
+          make sure gcc is also in your path if your site is setup
+          this way.
     Also: Older versions of Solaris come with a broken syslogd.
          If you have having problems with sudo logging you should
          make sure you have the latest syslogd patch installed.
index b670813ac6d4decb4e96449d5def7aeff994d973..f7c1f90ba6034515b3962c9e4d38b6a06afc8fcc 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -178,6 +178,7 @@ plugins/sudoers/logging.c
 plugins/sudoers/logging.h
 plugins/sudoers/logwrap.c
 plugins/sudoers/match.c
+plugins/sudoers/match_addr.c
 plugins/sudoers/mkdefaults
 plugins/sudoers/parse.c
 plugins/sudoers/parse.h
@@ -185,10 +186,14 @@ plugins/sudoers/plugin_error.c
 plugins/sudoers/po/README
 plugins/sudoers/po/da.mo
 plugins/sudoers/po/da.po
+plugins/sudoers/po/eo.mo
+plugins/sudoers/po/eo.po
 plugins/sudoers/po/eu.mo
 plugins/sudoers/po/eu.po
 plugins/sudoers/po/fi.mo
 plugins/sudoers/po/fi.po
+plugins/sudoers/po/ja.mo
+plugins/sudoers/po/ja.po
 plugins/sudoers/po/pl.mo
 plugins/sudoers/po/pl.po
 plugins/sudoers/po/sudoers.pot
@@ -204,6 +209,8 @@ plugins/sudoers/regress/iolog_path/data
 plugins/sudoers/regress/logging/check_wrap.c
 plugins/sudoers/regress/logging/check_wrap.in
 plugins/sudoers/regress/logging/check_wrap.out.ok
+plugins/sudoers/regress/parser/check_addr.c
+plugins/sudoers/regress/parser/check_addr.in
 plugins/sudoers/regress/parser/check_fill.c
 plugins/sudoers/regress/sudoers/test1.in
 plugins/sudoers/regress/sudoers/test1.out.ok
@@ -263,10 +270,16 @@ src/parse_args.c
 src/po/README
 src/po/da.mo
 src/po/da.po
+src/po/eo.mo
+src/po/eo.po
 src/po/eu.mo
 src/po/eu.po
 src/po/fi.mo
 src/po/fi.po
+src/po/it.mo
+src/po/it.po
+src/po/ja.mo
+src/po/ja.po
 src/po/pl.mo
 src/po/pl.po
 src/po/ru.mo
index 1f5f7139989e339a0399cfa491bae051177581d0..d367fd25d903b6305ee03eaac68e9460a7e73aa0 100644 (file)
@@ -99,7 +99,7 @@ install-doc: config.status ChangeLog
            exit $$?; \
        done
 
-install: config.status pre-install install-nls
+install: config.status ChangeLog pre-install install-nls
        for d in $(SUBDIRS); \
            do (cd $$d && exec $(MAKE) $@) && continue; \
            exit $$?; \
diff --git a/NEWS b/NEWS
index abcbcc9ea1b8e19525711a2fdebb48833777c8a1..dcbbd0327f5f45f50c45d7e9edb0c1066769b52d 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,50 @@
+What's new in Sudo 1.8.3?
+
+ * Fixed expansion of strftime() escape sequences in the "log_dir"
+   sudoers setting.
+
+ * Esperanto, Italian and Japanese translations from translationproject.org.
+
+ * Sudo will now use PAM by default on AIX 6 and higher.
+
+ * Added --enable-werror configure option for gcc's -Werror flag.
+
+ * Visudo no longer assumes all editors support the +linenumber
+   command line argument.  It now uses a whitelist of editors known
+   to support the option.
+
+ * Fixed matching of network addresses when a netmask is specified
+   but the address is not the first one in the CIDR block.
+
+ * The configure script now check whether or not errno.h declares
+   the errno variable.  Previously, sudo would always declare errno
+   itself for older systems that don't declare it in errno.h.
+
+ * The NOPASSWD tag is now honored for denied commands too, which
+   matches historic sudo behavior (prior to sudo 1.7.0).
+
+ * Sudo now honors the "DEREF" setting in ldap.conf which controls
+   how alias dereferencing is done during an LDAP search.
+
+ * A symbol conflict with the pam_ssh_agent_auth PAM module that
+   would cause a crash been resolved.
+
+ * The inability to load a group provider plugin is no longer
+   a fatal error.
+
+ * A potential crash in the utmp handling code has been fixed.
+
+ * Two PAM session issues have been resolved.  In previous versions
+   of sudo, the PAM session was opened as one user and closed as
+   another.  Additionally, if no authentication was performed, the
+   PAM session would never be closed.
+
+ * Sudo will now work correctly with LDAP-based sudoers using TLS
+   or SSL on Debian systems.
+
+ * The LOGNAME, USER and USERNAME environment variables are preserved
+   correctly again in sudoedit mode.
+
 What's new in Sudo 1.8.2?
 
  * Sudo, visudo, sudoreplay and the sudoers plug-in now have natural
index c469d20b3fd4e0fc677d0f43579fe9ed08a330d2..2c42816f1734d673ec8449d4cf1e7edbfa417c35 100644 (file)
@@ -32,6 +32,7 @@
 # include <unistd.h>
 #endif /* HAVE_UNISTD_H */
 #include <errno.h>
+#include <grp.h>
 #include <limits.h>
 
 #include "missing.h"
index 5d971c682d869c55db1d442e9bfd8df989a0d91a..09a02b26a8c48cd54bede0dcc273d7efc286189a 100644 (file)
@@ -146,7 +146,7 @@ glob.lo: $(srcdir)/glob.c $(top_builddir)/config.h $(incdir)/missing.h \
          $(top_srcdir)/compat/glob.h $(top_srcdir)/compat/charclass.h
        $(LIBTOOL) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/glob.c
 globtest.o: $(srcdir)/regress/glob/globtest.c $(top_builddir)/config.h \
-            $(top_srcdir)/compat/glob.h
+            $(top_srcdir)/compat/glob.h $(incdir)/missing.h
        $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/regress/glob/globtest.c
 isblank.lo: $(srcdir)/isblank.c $(top_builddir)/config.h $(incdir)/missing.h
        $(LIBTOOL) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/isblank.c
index 0c966fe7c3b60d1bb29963eaef037d7c872d367c..70de67caf120add1a5fc25fb8d98e0e1a09cdeba 100644 (file)
 #endif
 #include <errno.h>
 
-#define MAX_RESULTS    256
+#include "missing.h"
 
-#ifndef errno
-extern int errno;
-#endif
+#define MAX_RESULTS    256
 
 struct gl_entry {
        int flags;
index a0c7045975eb8a0b1deea21a8e389b6c67b8bd2c..7a9c248adcf534930d91f456598a76dc72b5e2c1 100644 (file)
 /* Define to 1 if your `DIR' contains dd_fd. */
 #undef HAVE_DD_FD
 
+/* Define to 1 if you have the declaration of `errno', and to 0 if you don't.
+   */
+#undef HAVE_DECL_ERRNO
+
 /* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
    don't. */
 #undef HAVE_DECL_SYS_SIGLIST
 /* Define to 1 if you have the `freeifaddrs' function. */
 #undef HAVE_FREEIFADDRS
 
-/* Define to 1 if you have the `fstat' function. */
-#undef HAVE_FSTAT
-
 /* Define to 1 if you have the `futime' function. */
 #undef HAVE_FUTIME
 
 /* Define to 1 if you have the <libintl.h> header file. */
 #undef HAVE_LIBINTL_H
 
+/* Define to 1 if you have the <libutil.h> header file. */
+#undef HAVE_LIBUTIL_H
+
 /* Define to 1 to enable Linux audit support. */
 #undef HAVE_LINUX_AUDIT
 
index aa7b4c8b3807240c50f938e4a79fbc5f84c38464..3f89ae38b70056d4a5cf397b9fee38b4674fc75c 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for sudo 1.8.2.
+# Generated by GNU Autoconf 2.68 for sudo 1.8.3.
 #
 # Report bugs to <http://www.sudo.ws/bugs/>.
 #
@@ -570,8 +570,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='sudo'
 PACKAGE_TARNAME='sudo'
-PACKAGE_VERSION='1.8.2'
-PACKAGE_STRING='sudo 1.8.2'
+PACKAGE_VERSION='1.8.3'
+PACKAGE_STRING='sudo 1.8.3'
 PACKAGE_BUGREPORT='http://www.sudo.ws/bugs/'
 PACKAGE_URL=''
 
@@ -874,6 +874,7 @@ enable_env_debug
 enable_zlib
 enable_env_reset
 enable_warnings
+enable_werror
 enable_admin_flag
 enable_nls
 with_selinux
@@ -1445,7 +1446,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures sudo 1.8.2 to adapt to many kinds of systems.
+\`configure' configures sudo 1.8.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1510,7 +1511,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of sudo 1.8.2:";;
+     short | recursive ) echo "Configuration of sudo 1.8.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1534,6 +1535,7 @@ Optional Features:
   --enable-zlib[=PATH]    Whether to enable or disable zlib
   --enable-env-reset      Whether to enable environment resetting by default.
   --enable-warnings       Whether to enable compiler warnings
+  --enable-werror         Whether to enable the -Werror compiler option
   --enable-admin-flag     Whether to create a Ubuntu-style admin flag file
   --disable-nls           Disable natural language support using gettext
   --enable-gss-krb5-ccache-name
@@ -1726,7 +1728,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-sudo configure 1.8.2
+sudo configure 1.8.3
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2430,7 +2432,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by sudo $as_me 1.8.2, which was
+It was created by sudo $as_me 1.8.3, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -2991,11 +2993,7 @@ fi
 # Check whether --with-CC was given.
 if test "${with_CC+set}" = set; then :
   withval=$with_CC; case $with_CC in
-    yes)       as_fn_error $? "\"must give --with-CC an argument.\"" "$LINENO" 5
-               ;;
-    no)                as_fn_error $? "\"illegal argument: --without-CC.\"" "$LINENO" 5
-               ;;
-    *)         CC=$with_CC
+    *)         as_fn_error $? "the --with-CC option is no longer supported, please set the CC environment variable instead." "$LINENO" 5
                ;;
 esac
 fi
@@ -5492,10 +5490,7 @@ fi
 # Check whether --enable-warnings was given.
 if test "${enable_warnings+set}" = set; then :
   enableval=$enable_warnings;  case "$enableval" in
-    yes)    if test X"$with_devel" != X"yes" -a -n "$GCC"; then
-               CFLAGS="${CFLAGS} -Wall"
-           fi
-           ;;
+    yes)    ;;
     no)            ;;
     *)     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-warnings: $enableval" >&5
 $as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-warnings: $enableval" >&2;}
@@ -5505,6 +5500,19 @@ $as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-warnings: $enab
 fi
 
 
+# Check whether --enable-werror was given.
+if test "${enable_werror+set}" = set; then :
+  enableval=$enable_werror;  case "$enableval" in
+    yes)    ;;
+    no)            ;;
+    *)     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-werror: $enableval" >&5
+$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-werror: $enableval" >&2;}
+           ;;
+  esac
+
+fi
+
+
 # Check whether --enable-admin-flag was given.
 if test "${enable_admin_flag+set}" = set; then :
   enableval=$enable_admin_flag;  case "$enableval" in
@@ -5981,6 +5989,12 @@ if test "x$ac_cv_prog_cc_c89" = "xno"; then
     as_fn_error $? "Sudo version $PACKAGE_VERSION requires an ANSI C compiler to build." "$LINENO" 5
 fi
 
+if test "$enable_static" = "no"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring --disable-static, sudo does not install static libs" >&5
+$as_echo "$as_me: WARNING: Ignoring --disable-static, sudo does not install static libs" >&2;}
+    enable_static=yes
+fi
+
 ac_aux_dir=
 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
   if test -f "$ac_dir/install-sh"; then
@@ -13478,10 +13492,6 @@ $as_echo "$with_noexec" >&6; }
 NOEXECFILE="sudo_noexec$_shrext"
 NOEXECDIR="`echo $with_noexec|sed 's:^\(.*\)/[^/]*:\1:'`"
 
-if test X"$with_devel" = X"yes" -a -n "$GCC"; then
-    CFLAGS="${CFLAGS} -Wall"
-fi
-
 # Extract the first word of "uname", so it can be a program name with args.
 set dummy uname; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -13749,9 +13759,14 @@ rm -f core conftest.err conftest.$ac_objext \
                fi
                LDFLAGS="$O_LDFLAGS"
 
-               # Use authenticate(3) as the default authentication method
-               if test X"$with_aixauth" = X""; then
-                   for ac_func in authenticate
+               # On AIX 6 and higher default to PAM, else default to LAM
+               if test $OSMAJOR -ge 6; then
+                   if test X"$with_pam" = X""; then
+                       AUTH_EXCL_DEF="PAM"
+                   fi
+               else
+                   if test X"$with_aixauth" = X""; then
+                       for ac_func in authenticate
 do :
   ac_fn_c_check_func "$LINENO" "authenticate" "ac_cv_func_authenticate"
 if test "x$ac_cv_func_authenticate" = xyes; then :
@@ -13762,6 +13777,7 @@ _ACEOF
 fi
 done
 
+                   fi
                fi
 
                # AIX analog of nsswitch.conf, enabled by default
 done
 
 
-               # LDR_PRELOAD is supported in AIX 5.3 and later
-               case "$OSREV" in
-                   1-4.*) with_noexec=no ;;
-               esac
+               # LDR_PRELOAD is only supported in AIX 5.3 and later
+               if test $OSMAJOR -lt 5; then
+                   with_noexec=no
+               fi
 
                # AIX-specific functions
                for ac_func in getuserattr setauthdb
@@ -13848,7 +13864,7 @@ $as_echo "$sudo_cv_var_hpccbundled" >&6; }
 
                # Build PA-RISC1.1 objects for better portability
                case "$host_cpu" in
-                   hppa2-9*)
+                   hppa[2-9]*)
                        _CFLAGS="$CFLAGS"
                        if test -n "$GCC"; then
                            portable_flag="-march=1.1"
@@ -13892,7 +13908,7 @@ $as_echo "$sudo_cv_var_daportable" >&6; }
                esac
 
                case "$host" in
-                       *-*-hpux1-8.*)
+                       *-*-hpux[1-8].*)
                            $as_echo "#define BROKEN_SYSLOG 1" >>confdefs.h
 
                        ;;
                ;;
     *-*-bsdi*)
                SKIP_SETREUID=yes
-               # Use shlicc for BSD/OS [23].x unless asked to do otherwise
-               if test "${with_CC+set}" != set -a "$ac_cv_prog_CC" = gcc; then
-                   case "$OSMAJOR" in
-                       2|3)    { $as_echo "$as_me:${as_lineno-$LINENO}: using shlicc as CC" >&5
-$as_echo "$as_me: using shlicc as CC" >&6;}
-                               ac_cv_prog_CC=shlicc
-                               CC="$ac_cv_prog_CC"
-                               ;;
-                   esac
-               fi
-               # Check for newer BSD auth API (just check for >= 3.0?)
+               # Check for newer BSD auth API
                if test -z "$with_bsdauth"; then
                    for ac_func in auth_challenge
 do :
@@ -14211,6 +14217,7 @@ done
                    SKIP_SETREUID=yes
                    ;;
                esac
+               OSDEFS="${OSDEFS} -D_BSD_SOURCE"
                if test "${with_skey-'no'}" = "yes"; then
                     SUDOERS_LIBS="${SUDOERS_LIBS} -lmd"
                fi
@@ -14220,25 +14227,22 @@ done
                ;;
     *-*-*openbsd*)
                # OpenBSD has a real setreuid(2) starting with 3.3 but
-               # we will use setreuid(2) instead.
+               # we will use setresuid(2) instead.
                SKIP_SETREUID=yes
+               OSDEFS="${OSDEFS} -D_BSD_SOURCE"
                CHECKSHADOW="false"
                # OpenBSD >= 3.0 supports BSD auth
                if test -z "$with_bsdauth"; then
-                   case "$OSREV" in
-                   0-2.*)
-                       ;;
-                   *)
+                   if test "$OSMAJOR" -ge 3; then
                        AUTH_EXCL_DEF="BSD_AUTH"
-                       ;;
-                   esac
+                   fi
                fi
                : ${with_logincap='maybe'}
                ;;
     *-*-*netbsd*)
                # NetBSD has a real setreuid(2) starting with 1.3.2
                case "$OSREV" in
-               0.9*|1.012*|1.3|1.3.1)
+               0.9*|1.[012]*|1.3|1.3.1)
                    SKIP_SETREUID=yes
                    ;;
                esac
@@ -14247,6 +14251,7 @@ done
                : ${with_logincap='maybe'}
                ;;
     *-*-dragonfly*)
+               OSDEFS="${OSDEFS} -D_BSD_SOURCE"
                if test "${with_skey-'no'}" = "yes"; then
                     SUDOERS_LIBS="${SUDOERS_LIBS} -lmd"
                fi
@@ -16252,7 +16257,7 @@ $as_echo "#define HAVE_GETGROUPS 1" >>confdefs.h
 fi
 LIBS=$ac_save_LIBS
 
-for ac_func in strrchr sysconf tzset strftime fstat \
+for ac_func in strrchr sysconf tzset strftime \
               regcomp setlocale nl_langinfo getaddrinfo mbr_check_membership \
               setrlimit64 sysctl
 do :
@@ -16346,7 +16351,7 @@ if test "x$ac_cv_func_openpty" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_OPENPTY 1
 _ACEOF
- for ac_header in util.h pty.h
+ for ac_header in libutil.h util.h pty.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -16399,7 +16404,7 @@ fi
 $as_echo "$ac_cv_lib_util_openpty" >&6; }
 if test "x$ac_cv_lib_util_openpty" = xyes; then :
 
-       for ac_header in util.h pty.h
+       for ac_header in libutil.h util.h pty.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -17743,6 +17748,22 @@ if test X"$enable_zlib" = X"builtin"; then
 
 fi
 
+ac_fn_c_check_decl "$LINENO" "errno" "ac_cv_have_decl_errno" "
+$ac_includes_default
+#include <errno.h>
+
+"
+if test "x$ac_cv_have_decl_errno" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ERRNO $ac_have_decl
+_ACEOF
+
+
 for ac_func in strsignal
 do :
   ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal"
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     done
+    if test "$found" = "no"; then
+       LDAP_LIBS=""
+       LIBS="$_LIBS"
+       for l in -libmldap -lidsldif; do
+           LIBS="${LIBS} $l"
+           LDAP_LIBS="${LDAP_LIBS} $l"
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+           #include <lber.h>
+           #include <ldap.h>
+int
+main ()
+{
+(void)ldap_init(0, 0)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  found=yes; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       done
+    fi
         if test "$found" = "no"; then
        LIBS="${_LIBS} -lldap"
        LDAP_LIBS="-lldap"
@@ -19986,6 +20033,15 @@ if test -n "$LIBS"; then
     done
 fi
 
+if test -n "$GCC"; then
+    if test X"$enable_warnings" = X"yes" -o X"$with_devel" = X"yes"; then
+       CFLAGS="${CFLAGS} -Wall"
+    fi
+    if test X"$enable_werror" = X"yes"; then
+       CFLAGS="${CFLAGS} -Werror"
+    fi
+fi
+
 test "$exec_prefix" = "NONE" && exec_prefix='$(prefix)'
 
 if test X"$with_noexec" != X"no" -o X"$with_selinux" != X"no"; then
@@ -20559,7 +20615,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by sudo $as_me 1.8.2, which was
+This file was extended by sudo $as_me 1.8.3, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -20625,7 +20681,7 @@ _ACEOF
 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.2
+sudo config.status 1.8.3
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
index 7212ba8717e69bdd552b0e9498dc5f3671c2aae9..9de75a638b2c44bb57860833f57de73430fe3169 100644 (file)
@@ -3,7 +3,7 @@ dnl Process this file with GNU autoconf to produce a configure script.
 dnl
 dnl Copyright (c) 1994-1996,1998-2011 Todd C. Miller <Todd.Miller@courtesan.com>
 dnl
-AC_INIT([sudo], [1.8.2], [http://www.sudo.ws/bugs/], [sudo])
+AC_INIT([sudo], [1.8.3], [http://www.sudo.ws/bugs/], [sudo])
 AC_CONFIG_HEADER([config.h pathnames.h])
 dnl
 dnl Note: this must come after AC_INIT
@@ -224,11 +224,7 @@ esac])
 
 AC_ARG_WITH(CC, [AS_HELP_STRING([--with-CC], [C compiler to use])],
 [case $with_CC in
-    yes)       AC_MSG_ERROR(["must give --with-CC an argument."])
-               ;;
-    no)                AC_MSG_ERROR(["illegal argument: --without-CC."])
-               ;;
-    *)         CC=$with_CC
+    *)         AC_MSG_ERROR([the --with-CC option is no longer supported, please set the CC environment variable instead.])
                ;;
 esac])
 
@@ -1294,16 +1290,23 @@ fi
 AC_ARG_ENABLE(warnings,
 [AS_HELP_STRING([--enable-warnings], [Whether to enable compiler warnings])],
 [ case "$enableval" in
-    yes)    if test X"$with_devel" != X"yes" -a -n "$GCC"; then
-               CFLAGS="${CFLAGS} -Wall"
-           fi
-           ;;
+    yes)    ;;
     no)            ;;
     *)     AC_MSG_WARN([Ignoring unknown argument to --enable-warnings: $enableval])
            ;;
   esac
 ])
 
+AC_ARG_ENABLE(werror,
+[AS_HELP_STRING([--enable-werror], [Whether to enable the -Werror compiler option])],
+[ case "$enableval" in
+    yes)    ;;
+    no)            ;;
+    *)     AC_MSG_WARN([Ignoring unknown argument to --enable-werror: $enableval])
+           ;;
+  esac
+])
+
 AC_ARG_ENABLE(admin-flag,
 [AS_HELP_STRING([--enable-admin-flag], [Whether to create a Ubuntu-style admin flag file])],
 [ case "$enableval" in
@@ -1357,6 +1360,15 @@ if test "x$ac_cv_prog_cc_c89" = "xno"; then
     AC_MSG_ERROR([Sudo version $PACKAGE_VERSION requires an ANSI C compiler to build.])
 fi
 
+dnl
+dnl If the user specified --disable-static, override them or we'll
+dnl be unable to build the executables in the sudoers plugin dir.
+dnl
+if test "$enable_static" = "no"; then
+    AC_MSG_WARN([Ignoring --disable-static, sudo does not install static libs])
+    enable_static=yes
+fi
+
 dnl
 dnl Libtool setup, we require libtool 2.2.6b or higher
 dnl
@@ -1394,13 +1406,6 @@ AC_MSG_RESULT($with_noexec)
 NOEXECFILE="sudo_noexec$_shrext"
 NOEXECDIR="`echo $with_noexec|sed 's:^\(.*\)/[[^/]]*:\1:'`"
 
-dnl
-dnl It is now safe to modify CFLAGS and CPPFLAGS
-dnl
-if test X"$with_devel" = X"yes" -a -n "$GCC"; then
-    CFLAGS="${CFLAGS} -Wall"
-fi
-
 dnl
 dnl Find programs we use
 dnl
@@ -1511,9 +1516,15 @@ case "$host" in
                fi
                LDFLAGS="$O_LDFLAGS"
 
-               # Use authenticate(3) as the default authentication method
-               if test X"$with_aixauth" = X""; then
-                   AC_CHECK_FUNCS(authenticate, [AUTH_EXCL_DEF="AIX_AUTH"])
+               # On AIX 6 and higher default to PAM, else default to LAM
+               if test $OSMAJOR -ge 6; then
+                   if test X"$with_pam" = X""; then
+                       AUTH_EXCL_DEF="PAM"
+                   fi
+               else
+                   if test X"$with_aixauth" = X""; then
+                       AC_CHECK_FUNCS(authenticate, [AUTH_EXCL_DEF="AIX_AUTH"])
+                   fi
                fi
 
                # AIX analog of nsswitch.conf, enabled by default
@@ -1531,10 +1542,10 @@ case "$host" in
                # For implementing getgrouplist()
                AC_CHECK_FUNCS(getgrset)
 
-               # LDR_PRELOAD is supported in AIX 5.3 and later
-               case "$OSREV" in
-                   [1-4].*) with_noexec=no ;;
-               esac
+               # LDR_PRELOAD is only supported in AIX 5.3 and later
+               if test $OSMAJOR -lt 5; then
+                   with_noexec=no
+               fi
 
                # AIX-specific functions
                AC_CHECK_FUNCS(getuserattr setauthdb)
@@ -1569,7 +1580,7 @@ case "$host" in
 
                # Build PA-RISC1.1 objects for better portability
                case "$host_cpu" in
-                   hppa[2-9]*)
+                   hppa[[2-9]]*)
                        _CFLAGS="$CFLAGS"
                        if test -n "$GCC"; then
                            portable_flag="-march=1.1"
@@ -1593,7 +1604,7 @@ case "$host" in
                esac
 
                case "$host" in
-                       *-*-hpux[1-8].*)
+                       *-*-hpux[[1-8]].*)
                            AC_DEFINE(BROKEN_SYSLOG)
                        ;;
                        *-*-hpux9.*)
@@ -1770,16 +1781,7 @@ case "$host" in
                ;;
     *-*-bsdi*)
                SKIP_SETREUID=yes
-               # Use shlicc for BSD/OS [23].x unless asked to do otherwise
-               if test "${with_CC+set}" != set -a "$ac_cv_prog_CC" = gcc; then
-                   case "$OSMAJOR" in
-                       2|3)    AC_MSG_NOTICE([using shlicc as CC])
-                               ac_cv_prog_CC=shlicc
-                               CC="$ac_cv_prog_CC"
-                               ;;
-                   esac
-               fi
-               # Check for newer BSD auth API (just check for >= 3.0?)
+               # Check for newer BSD auth API
                if test -z "$with_bsdauth"; then
                    AC_CHECK_FUNCS(auth_challenge, [AUTH_EXCL_DEF="BSD_AUTH"])
                fi
@@ -1792,6 +1794,7 @@ case "$host" in
                    SKIP_SETREUID=yes
                    ;;
                esac
+               OSDEFS="${OSDEFS} -D_BSD_SOURCE"
                if test "${with_skey-'no'}" = "yes"; then
                     SUDOERS_LIBS="${SUDOERS_LIBS} -lmd"
                fi
@@ -1801,25 +1804,22 @@ case "$host" in
                ;;
     *-*-*openbsd*)
                # OpenBSD has a real setreuid(2) starting with 3.3 but
-               # we will use setreuid(2) instead.
+               # we will use setresuid(2) instead.
                SKIP_SETREUID=yes
+               OSDEFS="${OSDEFS} -D_BSD_SOURCE"
                CHECKSHADOW="false"
                # OpenBSD >= 3.0 supports BSD auth
                if test -z "$with_bsdauth"; then
-                   case "$OSREV" in
-                   [0-2].*)
-                       ;;
-                   *)
+                   if test "$OSMAJOR" -ge 3; then
                        AUTH_EXCL_DEF="BSD_AUTH"
-                       ;;
-                   esac
+                   fi
                fi
                : ${with_logincap='maybe'}
                ;;
     *-*-*netbsd*)
                # NetBSD has a real setreuid(2) starting with 1.3.2
                case "$OSREV" in
-               0.9*|1.[012]*|1.3|1.3.1)
+               0.9*|1.[[012]]*|1.3|1.3.1)
                    SKIP_SETREUID=yes
                    ;;
                esac
@@ -1828,6 +1828,7 @@ case "$host" in
                : ${with_logincap='maybe'}
                ;;
     *-*-dragonfly*)
+               OSDEFS="${OSDEFS} -D_BSD_SOURCE"
                if test "${with_skey-'no'}" = "yes"; then
                     SUDOERS_LIBS="${SUDOERS_LIBS} -lmd"
                fi
@@ -2080,7 +2081,7 @@ dnl
 dnl Function checks
 dnl
 AC_FUNC_GETGROUPS
-AC_CHECK_FUNCS(strrchr sysconf tzset strftime fstat \
+AC_CHECK_FUNCS(strrchr sysconf tzset strftime \
               regcomp setlocale nl_langinfo getaddrinfo mbr_check_membership \
               setrlimit64 sysctl)
 AC_REPLACE_FUNCS(getgrouplist)
@@ -2094,9 +2095,9 @@ if test "$utmp_style" = "LEGACY"; then
     AC_CHECK_FUNCS(getttyent ttyslot, [break])
 fi
 
-AC_CHECK_FUNCS(openpty, [AC_CHECK_HEADERS(util.h pty.h, [break])], [
+AC_CHECK_FUNCS(openpty, [AC_CHECK_HEADERS(libutil.h util.h pty.h, [break])], [
     AC_CHECK_LIB(util, openpty, [
-       AC_CHECK_HEADERS(util.h pty.h, [break])
+       AC_CHECK_HEADERS(libutil.h util.h pty.h, [break])
        case "$SUDO_LIBS" in
            *-lutil*) ;;
            *) SUDO_LIBS="${SUDO_LIBS} -lutil";;
@@ -2293,6 +2294,14 @@ if test X"$enable_zlib" = X"builtin"; then
     AC_CONFIG_FILES([zlib/Makefile])
 fi
 
+dnl
+dnl Check for errno declaration in errno.h
+dnl
+AC_CHECK_DECLS([errno], [], [], [
+AC_INCLUDES_DEFAULT
+#include <errno.h>
+])
+
 dnl
 dnl Check for strsignal() or sys_siglist
 dnl
@@ -2848,6 +2857,17 @@ if test ${with_ldap-'no'} != "no"; then
        #include <lber.h>
        #include <ldap.h>]], [[(void)ldap_init(0, 0)]])], [found=yes; break])
     done
+    if test "$found" = "no"; then
+       LDAP_LIBS=""
+       LIBS="$_LIBS"
+       for l in -libmldap -lidsldif; do
+           LIBS="${LIBS} $l"
+           LDAP_LIBS="${LDAP_LIBS} $l"
+           AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+           #include <lber.h>
+           #include <ldap.h>]], [[(void)ldap_init(0, 0)]])], [found=yes; break])
+       done
+    fi
     dnl if nothing linked just try with -lldap
     if test "$found" = "no"; then
        LIBS="${_LIBS} -lldap"
@@ -3009,6 +3029,18 @@ if test -n "$LIBS"; then
     done
 fi
 
+dnl
+dnl We add -Wall and -Werror after all tests so they don't cause failures
+dnl
+if test -n "$GCC"; then
+    if test X"$enable_warnings" = X"yes" -o X"$with_devel" = X"yes"; then
+       CFLAGS="${CFLAGS} -Wall"
+    fi
+    if test X"$enable_werror" = X"yes"; then
+       CFLAGS="${CFLAGS} -Werror"
+    fi
+fi
+
 dnl
 dnl Set exec_prefix
 dnl
index 9ed181772f0322fbd58d752c3560b1901b853401..d1cd7289f9bb444b271a86a394f3a9a1b1f963ff 100644 (file)
@@ -27,7 +27,7 @@ A) Sudo must be setuid root to do its work.  You need to do something like
 
 Q) Sudo never gives me a chance to enter a password using PAM, it just
    says 'Sorry, try again.' three times and exits.
-A) You didn't setup PAM to work with sudo.  On Redhat Linux or Fedora
+A) You didn't setup PAM to work with sudo.  On RedHat Linux or Fedora
    Core this generally means installing sample.pam as /etc/pam.d/sudo.
    See the sample.pam file for hints on what to use for other Linux
    systems.
@@ -55,14 +55,20 @@ A) Make sure you have an entry in your syslog.conf file to save
 
 Q) When sudo asks me for my password it never accepts what I enter even
    though I know I entered my password correctly.
-A) If your system uses shadow passwords, it is possible that sudo
-   didn't detect this.  Take a look at the generated config.h file
-   and verify that the C function used for shadow password lookups
-   was detected.  For instance, for SVR4-style shadow passwords,
-   HAVE_GETSPNAM should be defined (you can search for the string
-   "shadow passwords" in config.h with your editor).  Note that
-   there is no define for 4.4BSD-based shadow passwords since that
-   just uses the standard getpw* routines.
+A) If you are not using pam and your system uses shadow passwords,
+   it is possible that sudo didn't properly detect that shadow
+   passwords are in use.  Take a look at the generated config.h
+   file and verify that the C function used for shadow password
+   look ups was detected.  For instance, for SVR4-style shadow
+   passwords, HAVE_GETSPNAM should be defined (you can search for
+   the string "shadow passwords" in config.h with your editor).
+   Note that there is no define for 4.4BSD-based shadow passwords
+   since that just uses the standard getpw* routines.
+
+Q) Can sudo use the ssh agent for authentication instead of asking
+   for the user's Unix password?
+A) Not directly, but you can use a PAM module like pam_ssh_agent_auth
+   or pam_ssh for this purpose.
 
 Q) I don't want the sudoers file in /etc, how can I specify where it
    should go?
@@ -72,21 +78,25 @@ A) Use the --sysconfdir option to configure.  Ie:
 Q) Can I put the sudoers file in NIS/NIS+ or do I have to have a
    copy on each machine?
 A) There is no support for making an NIS/NIS+ map/table out of
-   the sudoers file at this time.  A good way to distribute the
-   sudoers file is via rdist(1).  It is also possible to NFS-mount
-   the sudoers file.
+   the sudoers file at this time.  You can distribute the sudoers
+   file via rsync or rdist.  It is also possible to NFS-mount the
+   sudoers file.  If you use LDAP at your site you may be interested
+   in sudo's LDAP sudoers support, see the README.LDAP file and the
+   sudoers.ldap manual.
 
 Q) I don't run sendmail on my machine.  Does this mean that I cannot
    use sudo?
-A) No, you just need to run use the --without-sendmail argument to configure
-   or add "!mailerpath" to the Defaults line in /etc/sudoers.
+A) No, you just need to disable mailing with a line like:
+       Defaults !mailerpath
+   in your sudoers file or run configure with the --without-sendmail
+   option.
 
 Q) When I run visudo it uses vi as the editor and I hate vi.  How
    can I make it use another editor?
-A) Your best bet is to run configure with the --with-env-editor switch.
-   This will make visudo use the editor specified by the user's
-   EDITOR environment variable.  Alternately, you can run configure
-   with the --with-editor=/path/to/another/editor.
+A) You can specify the editor to use in visudo in the sudoers file.
+   See the "editor" and "env_editor" entries in the sudoers manual.
+   The defaults can also be set at configure time using the
+   --with-editor and --with-env-editor configure options.
 
 Q) Sudo appears to be removing some variables from my environment, why?
 A) Sudo removes the following "dangerous" environment variables
@@ -120,13 +130,14 @@ A) Sudo removes the following "dangerous" environment variables
      DLC_ACE (SecurID only)
 
 Q) How can I keep sudo from asking for a password?
-A) To specify this on a per-user (and per-command) basis, use the 'NOPASSWD'
-   tag right before the command list in sudoers.  See the sudoers man page
-   and sample.sudoers for details.  To disable passwords completely,
-   run configure with the --without-passwd option or add "!authenticate"
-   to the Defaults line in /etc/sudoers.  You can also turn off authentication
-   on a per-user or per-host basis using a user or host-specific Defaults
-   entry in sudoers.
+A) To specify this on a per-user (and per-command) basis, use the
+   'NOPASSWD' tag right before the command list in sudoers.  See
+   the sudoers man page and sample.sudoers for details.  To disable
+   passwords completely, add !authenticate" to the Defaults line
+   in /etc/sudoers.  You can also turn off authentication on a
+   per-user or per-host basis using a user or host-specific Defaults
+   entry in sudoers.  To hard-code the global default, you can
+   configure with the --without-passwd option.
 
 Q) When I run configure, it dies with the following error:
    "no acceptable cc found in $PATH".
@@ -184,7 +195,7 @@ A) The default user sudo tries to run things as is always root, even if
    work around this using the 'runas_default' option in sudoers.
    For example:
     Defaults:bob       runas_default=oracle
-   would achieve the desired result ofr the preceding sudoers fragment.
+   would achieve the desired result for the preceding sudoers fragment.
 
 Q) When I try to run sudo via ssh, I get the error:
     sudo: no tty present and no askpass program specified
index 30a6aca982c81736d8fcf30b1d74a8c8994e0a4c..ed8a69e8ca2f93bf3f8bf80ecca05094a3d24e9e 100644 (file)
@@ -547,4 +547,4 @@ D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
 
 
 
-1.8.2                           August 17, 2011                       SUDO(1m)
+1.8.3                         September 16, 2011                      SUDO(1m)
index 435e305ca8e1d092477c5cc44aa530e3c3b5e3fb..c36d63b6427c924a1e72c1c2252824bb24c80f28 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "SUDO @mansectsu@"
-.TH SUDO @mansectsu@ "August 17, 2011" "1.8.2" "MAINTENANCE COMMANDS"
+.TH SUDO @mansectsu@ "September 16, 2011" "1.8.3" "MAINTENANCE COMMANDS"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
index 2638092287bdb169fea481fdbe8f725986b58e63..20cba64b64d421328a65ee5e41f15b471fb9b05e 100644 (file)
@@ -1030,4 +1030,4 @@ D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
 
 
 
-1.8.2                            May 22, 2011                  SUDO_PLUGIN(1m)
+1.8.3                         September 16, 2011               SUDO_PLUGIN(1m)
index 2fe44c61b0baeb640d93187f0198b7c5a72d44e1..7a161abdc2145e50be7526c0f3594993ab393092 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "SUDO_PLUGIN @mansectsu@"
-.TH SUDO_PLUGIN @mansectsu@ "May 22, 2011" "1.8.2" "MAINTENANCE COMMANDS"
+.TH SUDO_PLUGIN @mansectsu@ "September 16, 2011" "1.8.3" "MAINTENANCE COMMANDS"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
index 8026596a6e567c6e12356b4ae586a8d0b40afb4a..2459758172ab19510b3a17915ee3c2e4a2fae192 100644 (file)
@@ -1068,10 +1068,6 @@ S\bSU\bUD\bDO\bOE\bER\bRS\bS O\bOP\bPT\bTI\bIO\bON\bNS\bS
                        To include a literal `%' character, the string `%%'
                        should be used.
 
-                       Path names that end in six or more Xs will have the Xs
-                       replaced with a unique combination of digits and
-                       letters, similar to the _\bm_\bk_\bt_\be_\bm_\bp_\b(_\b) function.
-
        iolog_file      The path name, relative to _\bi_\bo_\bl_\bo_\bg_\b__\bd_\bi_\br, in which to store
                        input/output logs when the _\bl_\bo_\bg_\b__\bi_\bn_\bp_\bu_\bt or _\bl_\bo_\bg_\b__\bo_\bu_\bt_\bp_\bu_\bt
                        options are enabled or when the LOG_INPUT or LOG_OUTPUT
@@ -1082,6 +1078,11 @@ S\bSU\bUD\bDO\bOE\bER\bRS\bS O\bOP\bPT\bTI\bIO\bON\bNS\bS
                        See the _\bi_\bo_\bl_\bo_\bg_\b__\bd_\bi_\br option above for a list of supported
                        percent (`%') escape sequences.
 
+                       In addition to the escape sequences, path names that
+                       end in six or more Xs will have the Xs replaced with a
+                       unique combination of digits and letters, similar to
+                       the _\bm_\bk_\bt_\be_\bm_\bp_\b(_\b) function.
+
        mailsub         Subject of the mail sent to the _\bm_\ba_\bi_\bl_\bt_\bo user. The escape
                        %h will expand to the host name of the machine.
                        Default is *** SECURITY information for %h ***.
@@ -1682,4 +1683,4 @@ D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
 
 
 
-1.8.2                           August 17, 2011                     SUDOERS(4)
+1.8.3                         September 16, 2011                    SUDOERS(4)
index 89e122a0805dead435ce82f66925b863d91d32c1..2b5e854592aea04036019c7db654183af35adf11 100644 (file)
@@ -458,6 +458,10 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
            The path to the Kerberos 5 credential cache to use when
            authenticating with the remote server.
 
+       D\bDE\bER\bRE\bEF\bF never/searching/finding/always
+           How alias dereferencing is to be performed when searching.  See the
+           _\bl_\bd_\ba_\bp_\b._\bc_\bo_\bn_\bf(4) manual for a full description of this option.
+
        See the ldap.conf entry in the EXAMPLES section.
 
    C\bCo\bon\bnf\bfi\big\bgu\bur\bri\bin\bng\bg n\bns\bss\bsw\bwi\bit\btc\bch\bh.\b.c\bco\bon\bnf\bf
@@ -742,4 +746,4 @@ D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
 
 
 
-1.8.2                           August 17, 2011                SUDOERS.LDAP(4)
+1.8.3                         September 16, 2011               SUDOERS.LDAP(4)
index 215713dbdd9e3655a9ce1c80567daa25179fdc15..7732d38be9b32970f9193ad7847ade3bf1a8be2a 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "SUDOERS.LDAP @mansectform@"
-.TH SUDOERS.LDAP @mansectform@ "August 17, 2011" "1.8.2" "MAINTENANCE COMMANDS"
+.TH SUDOERS.LDAP @mansectform@ "September 16, 2011" "1.8.3" "MAINTENANCE COMMANDS"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -607,6 +607,10 @@ The \s-1SASL\s0 user name to use when \fB\s-1ROOTUSE_SASL\s0\fR is enabled.
 .IX Item "KRB5_CCNAME file name"
 The path to the Kerberos 5 credential cache to use when authenticating
 with the remote server.
+.IP "\fB\s-1DEREF\s0\fR never/searching/finding/always" 4
+.IX Item "DEREF never/searching/finding/always"
+How alias dereferencing is to be performed when searching.  See the
+\&\fIldap.conf\fR\|(@mansectform@) manual for a full description of this option.
 .PP
 See the \f(CW\*(C`ldap.conf\*(C'\fR entry in the \s-1EXAMPLES\s0 section.
 .SS "Configuring nsswitch.conf"
index b12c6e6bb260c45aa7f12c9dcf0745be3da1cb01..88c60155ceabe3bd1ae65f937ebc595c2600724a 100644 (file)
@@ -536,6 +536,11 @@ SASL programmer's manual for details.
 The path to the Kerberos 5 credential cache to use when authenticating
 with the remote server.
 
+=item B<DEREF> never/searching/finding/always
+
+How alias dereferencing is to be performed when searching.  See the
+L<ldap.conf(5)> manual for a full description of this option.
+
 =back
 
 See the C<ldap.conf> entry in the L<EXAMPLES> section.
index faea227c68580f3fb44cdda412bec31d61aef630..59e9a31fbd98bf1fd2c8e44ebe9485220968110a 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "SUDOERS @mansectform@"
-.TH SUDOERS @mansectform@ "August 17, 2011" "1.8.2" "MAINTENANCE COMMANDS"
+.TH SUDOERS @mansectform@ "September 16, 2011" "1.8.3" "MAINTENANCE COMMANDS"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -1315,10 +1315,6 @@ function will be expanded.
 .Sp
 To include a literal `\f(CW\*(C`%\*(C'\fR' character, the string `\f(CW\*(C`%%\*(C'\fR' should
 be used.
-.Sp
-Path names that end in six or more \f(CW\*(C`X\*(C'\fRs will have the \f(CW\*(C`X\*(C'\fRs replaced
-with a unique combination of digits and letters, similar to the
-\&\fImktemp()\fR function.
 .RE
 .IP "iolog_file" 16
 .IX Item "iolog_file"
@@ -1330,6 +1326,10 @@ The default is \f(CW"%{seq}"\fR.
 .Sp
 See the \fIiolog_dir\fR option above for a list of supported percent
 (`\f(CW\*(C`%\*(C'\fR') escape sequences.
+.Sp
+In addition to the escape sequences, path names that end in six or
+more \f(CW\*(C`X\*(C'\fRs will have the \f(CW\*(C`X\*(C'\fRs replaced with a unique combination
+of digits and letters, similar to the \fImktemp()\fR function.
 .IP "mailsub" 16
 .IX Item "mailsub"
 Subject of the mail sent to the \fImailto\fR user. The escape \f(CW%h\fR
index b2257caa030eb38697b5ebc4eeaceeb7ef1a9dc0..0ecb74c811461851d45fbb0d520ba9500aa4215e 100644 (file)
@@ -1233,10 +1233,6 @@ function will be expanded.
 To include a literal `C<%>' character, the string `C<%%>' should
 be used.
 
-Path names that end in six or more C<X>s will have the C<X>s replaced
-with a unique combination of digits and letters, similar to the
-mktemp() function.
-
 =item iolog_file
 
 The path name, relative to I<iolog_dir>, in which to store input/output
@@ -1248,6 +1244,10 @@ The default is C<"%{seq}">.
 See the I<iolog_dir> option above for a list of supported percent
 (`C<%>') escape sequences.
 
+In addition to the escape sequences, path names that end in six or
+more C<X>s will have the C<X>s replaced with a unique combination
+of digits and letters, similar to the mktemp() function.
+
 =item mailsub
 
 Subject of the mail sent to the I<mailto> user. The escape C<%h>
index f04f5fa803b5a6e593e2b54c8a9a554c60a1aaa3..f8751eb0e148353b542a54707fcf30101570be82 100644 (file)
@@ -260,4 +260,4 @@ D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
 
 
 
-1.8.2                            May 22, 2011                   SUDOREPLAY(1m)
+1.8.3                         September 16, 2011                SUDOREPLAY(1m)
index f821d76301a3d94d8ce7d75a7c38f16c55bc281f..fcce5ef1b5d60df9bb5459d785ca2d252022558c 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "SUDOREPLAY @mansectsu@"
-.TH SUDOREPLAY @mansectsu@ "May 22, 2011" "1.8.2" "MAINTENANCE COMMANDS"
+.TH SUDOREPLAY @mansectsu@ "September 16, 2011" "1.8.3" "MAINTENANCE COMMANDS"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
index ad117f3cba5993bd7c597becf4ab849cc77a887b..e66435ded9d364f3ffbe3c188dcfebedb6a54c00 100644 (file)
@@ -149,4 +149,4 @@ D\bDI\bIS\bSC\bCL\bLA\bAI\bIM\bME\bER\bR
 
 
 
-1.8.2                           August 17, 2011                     VISUDO(1m)
+1.8.3                         September 16, 2011                    VISUDO(1m)
index a711ea7fcc5727c38a0a9a8aafbc6ea05f7cc2c9..0aaa96cf19a11c80774d34e600ab9764a5e8c2fa 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "VISUDO @mansectsu@"
-.TH VISUDO @mansectsu@ "August 17, 2011" "1.8.2" "MAINTENANCE COMMANDS"
+.TH VISUDO @mansectsu@ "September 16, 2011" "1.8.3" "MAINTENANCE COMMANDS"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
index e7eae3ebab5ff4e103ebc189bb5e3aeecfad63d7..7ac9588cd903b6fec0c600a807029c49dc4366c9 100644 (file)
@@ -202,6 +202,13 @@ void setprogname(const char *);
 #endif /* HAVE___PROGNAME */
 #endif /* !HAVE_GETPROGNAME */
 
+/*
+ * Declare errno if errno.h doesn't do it for us.
+ */
+#if defined(HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO
+extern int errno;
+#endif /* !HAVE_DECL_ERRNO */
+
 #ifndef timevalclear
 # define timevalclear(tv)      ((tv)->tv_sec = (tv)->tv_usec = 0)
 #endif
index cc228c28bc9c4df63064c6190656e579d224428d..67acbd4bd5c8c8e7890baa2c5edd0298a29a027f 100755 (executable)
--- a/mkdep.pl
+++ b/mkdep.pl
@@ -52,7 +52,7 @@ sub mkdep {
     $makefile =~ s:\@SUDO_OBJS\@:preload.o selinux.o sesh.o sudo_noexec.lo:;
     $makefile =~ s:\@SUDOERS_OBJS\@:bsm_audit.lo linux_audit.lo ldap.lo plugin_error.lo:;
     # 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 kerb4.lo kerb5.lo pam.lo passwd.lo rfc1938.lo secureware.lo securid.lo securid5.lo sia.lo:;
+    $makefile =~ s:\@AUTH_OBJS\@:afs.lo aix_auth.lo bsdauth.lo dce.lo fwtk.lo getspwuid.lo kerb4.lo kerb5.lo pam.lo passwd.lo rfc1938.lo secureware.lo securid.lo securid5.lo sia.lo:;
     $makefile =~ s:\@LTLIBOBJS\@:closefrom.lo dlopen.lo fnmatch.lo getcwd.lo getgrouplist.lo getline.lo getprogname.lo glob.lo isblank.lo memrchr.lo mksiglist.lo mktemp.lo nanosleep.lo setenv.lo siglist.lo snprintf.lo strlcat.lo strlcpy.lo strsignal.lo unsetenv.lo utimes.lo globtest.o fnm_test.o:;
 
     # Parse OBJS lines
diff --git a/mkpkg b/mkpkg
index d2aec97fa122870187d29ce3fc01387387180bc4..ad4eca3033c12b7ac618c9a034f4030469e54cc6 100755 (executable)
--- a/mkpkg
+++ b/mkpkg
@@ -121,6 +121,10 @@ fi
 case "$osversion" in
     centos*|rhel*)
        prefix=/usr
+       if [ $osrelease -ge 40 ]; then
+           # RHEL 4 and up support SELinux
+           configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux"
+       fi
        if [ $osrelease -ge 50 ]; then
            # RHEL 5 and up build pies, have audit support and use a
            # separate PAM config file for "sudo -i".
@@ -140,7 +144,6 @@ case "$osversion" in
                --with-ignore-dot
                --with-tty-tickets
                --with-ldap
-               --with-selinux
                --with-passprompt=[sudo] password for %p: 
                $configure_opts"
        ;;
index e22abfaeaa273d095c4bb709fe650c91cd2ffa18..3a0cddc11ccbab6814cfbb22fba29787ef5be8f3 100644 (file)
@@ -106,12 +106,13 @@ SHELL = @SHELL@
 
 PROGS = sudoers.la visudo sudoreplay testsudoers
 
-TEST_PROGS = check_iolog_path check_fill check_wrap
+TEST_PROGS = check_iolog_path check_fill check_wrap check_addr
 
 AUTH_OBJS = sudo_auth.lo @AUTH_OBJS@
 
 LIBPARSESUDOERS_OBJS = alias.lo audit.lo defaults.lo gram.lo match.lo \
-                      pwutil.lo timestr.lo toke.lo toke_util.lo redblack.lo
+                      match_addr.lo pwutil.lo timestr.lo toke.lo \
+                      toke_util.lo redblack.lo
 
 SUDOERS_OBJS = $(AUTH_OBJS) boottime.lo check.lo env.lo goodpath.lo \
               group_plugin.lo find_path.lo interfaces.lo logging.lo \
@@ -125,11 +126,13 @@ REPLAY_OBJS = getdate.o sudoreplay.o error.o
 TEST_OBJS = interfaces.o testsudoers.o tsgetgrpw.o error.o group_plugin.o \
            net_ifs.o
 
-CHECK_IOLOG_PATH_OBJS = check_iolog_path.o error.o iolog_path.o pwutil.o \
-                       redblack.o
+CHECK_ADDR_OBJS = check_addr.o match_addr.o interfaces.o error.o
 
 CHECK_FILL_OBJS = check_fill.o toke_util.o error.o
 
+CHECK_IOLOG_PATH_OBJS = check_iolog_path.o error.o iolog_path.o pwutil.o \
+                       redblack.o
+
 CHECK_WRAP_OBJS = check_wrap.o logwrap.o error.o
 
 LIBOBJDIR = $(top_builddir)/@ac_config_libobj_dir@/
@@ -164,12 +167,15 @@ sudoers.la: $(SUDOERS_OBJS) $(LT_LIBS) libparsesudoers.la
 visudo: libparsesudoers.la $(VISUDO_OBJS) $(LT_LIBS)
        $(LIBTOOL) --mode=link $(CC) -o $@ $(VISUDO_OBJS) $(LDFLAGS) libparsesudoers.la $(LIBS) $(NET_LIBS)
 
-sudoreplay: $(REPLAY_OBJS) $(LT_LIBS)
+sudoreplay: timestr.lo $(REPLAY_OBJS) $(LT_LIBS)
        $(LIBTOOL) --mode=link $(CC) -o $@ $(REPLAY_OBJS) $(LDFLAGS) timestr.lo $(REPLAY_LIBS) $(LIBS)
 
 testsudoers: libparsesudoers.la $(TEST_OBJS) $(LT_LIBS)
        $(LIBTOOL) --mode=link $(CC) -o $@ $(TEST_OBJS) $(LDFLAGS) libparsesudoers.la $(LIBS) $(NET_LIBS) @LIBDL@
 
+check_addr: $(CHECK_ADDR_OBJS) $(LT_LIBS)
+       $(LIBTOOL) --mode=link $(CC) -o $@ $(CHECK_ADDR_OBJS) $(LDFLAGS) $(LIBS)
+
 check_iolog_path: $(CHECK_IOLOG_PATH_OBJS) $(LT_LIBS)
        $(LIBTOOL) --mode=link $(CC) -o $@ $(CHECK_IOLOG_PATH_OBJS) $(LDFLAGS) $(LIBS)
 
@@ -257,10 +263,12 @@ uninstall:
 
 check: $(TEST_PROGS) visudo testsudoers
        @-rval=0; \
-       ./check_iolog_path $(srcdir)/regress/iolog_path/data; \
+       ./check_addr $(srcdir)/regress/parser/check_addr.in; \
        rval=`expr $$rval + $$?`; \
        ./check_fill; \
        rval=`expr $$rval + $$?`; \
+       ./check_iolog_path $(srcdir)/regress/iolog_path/data; \
+       rval=`expr $$rval + $$?`; \
        ./check_wrap $(srcdir)/regress/logging/check_wrap.in > check_wrap.out; \
        diff check_wrap.out $(srcdir)/regress/logging/check_wrap.out.ok; \
        rval=`expr $$rval + $$?`; \
@@ -292,7 +300,8 @@ check: $(TEST_PROGS) visudo testsudoers
                total=`expr $$total + 1`; \
            done; \
            echo "$$dirbase: $$passed/$$total tests passed; $$failed/$$total tests failed"; \
-       rval=$$failed; passed=0; failed=0; total=0; \
+       rval=`expr $$rval + $$failed`; \
+       passed=0; failed=0; total=0; \
            for t in $(srcdir)/regress/*/*.sh; do \
                dir=`dirname $$t`; \
                dirbase=`basename $$dir`; \
@@ -382,6 +391,14 @@ check.lo: $(srcdir)/check.c $(top_builddir)/config.h $(srcdir)/sudoers.h \
           $(srcdir)/defaults.h $(srcdir)/def_data.h $(srcdir)/logging.h \
           $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/gettext.h
        $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/check.c
+check_addr.o: $(srcdir)/regress/parser/check_addr.c $(top_builddir)/config.h \
+              $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \
+              $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \
+              $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \
+              $(srcdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \
+              $(incdir)/sudo_plugin.h $(incdir)/gettext.h $(srcdir)/parse.h \
+              $(srcdir)/interfaces.h
+       $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/regress/parser/check_addr.c
 check_fill.o: $(srcdir)/regress/parser/check_fill.c $(top_builddir)/config.h \
               $(incdir)/list.h $(srcdir)/parse.h $(srcdir)/toke.h \
               $(srcdir)/gram.h
@@ -437,6 +454,13 @@ fwtk.lo: $(authdir)/fwtk.c $(top_builddir)/config.h $(srcdir)/sudoers.h \
 getdate.o: $(devdir)/getdate.c $(top_builddir)/config.h \
            $(top_builddir)/config.h $(incdir)/missing.h
        $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(devdir)/getdate.c
+getspwuid.lo: $(srcdir)/getspwuid.c $(top_builddir)/config.h \
+              $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \
+              $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \
+              $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \
+              $(srcdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \
+              $(incdir)/sudo_plugin.h $(incdir)/gettext.h
+       $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/getspwuid.c
 goodpath.lo: $(srcdir)/goodpath.c $(top_builddir)/config.h $(srcdir)/sudoers.h \
              $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \
              $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \
@@ -524,9 +548,18 @@ match.lo: $(srcdir)/match.c $(top_builddir)/config.h $(srcdir)/sudoers.h \
           $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \
           $(srcdir)/defaults.h $(srcdir)/def_data.h $(srcdir)/logging.h \
           $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/gettext.h \
-          $(srcdir)/interfaces.h $(srcdir)/parse.h $(srcdir)/gram.h \
-          $(top_srcdir)/compat/fnmatch.h $(top_srcdir)/compat/glob.h
+          $(srcdir)/parse.h $(srcdir)/gram.h $(top_srcdir)/compat/fnmatch.h \
+          $(top_srcdir)/compat/glob.h
        $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/match.c
+match_addr.lo: $(srcdir)/match_addr.c $(top_builddir)/config.h \
+               $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \
+               $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \
+               $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \
+               $(srcdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \
+               $(incdir)/sudo_plugin.h $(incdir)/gettext.h \
+               $(srcdir)/interfaces.h
+       $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/match_addr.c
+match_addr.o: match_addr.lo
 net_ifs.o: $(top_srcdir)/src/net_ifs.c $(top_builddir)/config.h \
            $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \
            $(incdir)/gettext.h
@@ -626,8 +659,8 @@ sudoers.lo: $(srcdir)/sudoers.c $(top_builddir)/config.h $(srcdir)/sudoers.h \
             $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \
             $(srcdir)/defaults.h $(srcdir)/def_data.h $(srcdir)/logging.h \
             $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/gettext.h \
-            $(incdir)/lbuf.h $(srcdir)/interfaces.h \
-            $(srcdir)/sudoers_version.h $(srcdir)/auth/sudo_auth.h
+            $(srcdir)/interfaces.h $(srcdir)/sudoers_version.h \
+            $(srcdir)/auth/sudo_auth.h
        $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/sudoers.c
 sudoreplay.o: $(srcdir)/sudoreplay.c $(top_builddir)/config.h \
               $(top_srcdir)/compat/timespec.h $(top_builddir)/pathnames.h \
index 0b2ad0e064a52a8dbb65ef8c800d081dc35d13e0..20f26451c559fa849b86e472229382d1fef2c37c 100644 (file)
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif /* HAVE_UNISTD_H */
+#include <errno.h>
 
 #include "sudoers.h"
 #include "parse.h"
 #include "redblack.h"
 #include <gram.h>
-#include <errno.h>
 
 /*
  * Globals
index 24bd51086f461d4de60c7c65c873bff1b957e4ba..62c21d063e613596e840285c37f69249fed3ee3a 100644 (file)
@@ -12,7 +12,7 @@ typedef struct sudo_auth {
     char *name;                        /* name of the method in string form */
     void *data;                 /* method-specific data pointer */
 
-    int (*init)(struct passwd *pw, char **prompt, sudo_auth *auth);
+    int (*init)(struct passwd *pw, sudo_auth *auth);
     int (*setup)(struct passwd *pw, char **prompt, sudo_auth *auth);
     int (*verify)(struct passwd *pw, char *p, sudo_auth *auth);
     int (*cleanup)(struct passwd *pw, sudo_auth *auth);
@@ -64,11 +64,10 @@ The member functions can return the following values:
 
 The functions in the struct are as follows:
 
-    int init(struct passwd *pw, char **prompt, sudo_auth *auth)
+    int init(struct passwd *pw, sudo_auth *auth)
         Function to do any one-time initialization for the auth
         method.  All of the "init" functions are run before anything
-        else.  A pointer to the prompt string may be used to add
-        method-specific info to the prompt.
+        else.
 
     int setup(struct passwd *pw, char **prompt, sudo_auth *auth)
         Function to do method-specific setup.  All the "setup"
index ac32a1e6ad6878d48e8128d512cf23e478fa74eb..60616e2bb106e46a820dd55d1be1944c7ec998b9 100644 (file)
@@ -54,7 +54,7 @@
 extern char *login_style;              /* from sudo.c */
 
 int
-bsdauth_init(struct passwd *pw, char **promptp, sudo_auth *auth)
+bsdauth_init(struct passwd *pw, sudo_auth *auth)
 {
     static auth_session_t *as;
     extern login_cap_t *lc;                    /* from sudo.c */
index a6e45b25333c1d0d4c8f55310b96ef5e988ef679..ebab9154a5bd00bf1acfc2fc483c91baec7f0414 100644 (file)
@@ -50,7 +50,7 @@
 #include "sudo_auth.h"
 
 int
-fwtk_init(struct passwd *pw, char **promptp, sudo_auth *auth)
+fwtk_init(struct passwd *pw, sudo_auth *auth)
 {
     static Cfg *confp;                 /* Configuration entry struct */
     char resp[128];                    /* Response from the server */
index 176d6a797e1ca12f3d59507f5ef7afb43ec60575..c16739af44cdd4880a21cc14ee3f3ed7cd1f8e60 100644 (file)
@@ -48,7 +48,7 @@
 #include "sudo_auth.h"
 
 int
-kerb4_init(struct passwd *pw, char **promptp, sudo_auth *auth)
+kerb4_init(struct passwd *pw, sudo_auth *auth)
 {
     static char realm[REALM_SZ];
 
index d12e11ff0816b66eb481fa9d865f9e0c2359cd1d..f94865dd4e9ed8ef9851553f2fa4d94b725d33c1 100644 (file)
@@ -88,14 +88,49 @@ krb5_get_init_creds_opt_free(krb5_get_init_creds_opt *opts)
 #endif
 
 int
-kerb5_init(struct passwd *pw, char **promptp, sudo_auth *auth)
+kerb5_setup(struct passwd *pw, char **promptp, sudo_auth *auth)
+{
+    static char        *krb5_prompt;
+
+    if (krb5_prompt == NULL) {
+       krb5_context    sudo_context;
+       krb5_principal  princ;
+       char            *pname;
+       krb5_error_code error;
+
+       sudo_context = ((sudo_krb5_datap) auth->data)->sudo_context;
+       princ = ((sudo_krb5_datap) auth->data)->princ;
+
+       /*
+        * Really, we need to tell the caller not to prompt for password. The
+        * API does not currently provide this unless the auth is standalone.
+        */
+       if ((error = krb5_unparse_name(sudo_context, princ, &pname))) {
+           log_error(NO_EXIT|NO_MAIL,
+                     _("%s: unable to unparse princ ('%s'): %s"), auth->name,
+                     pw->pw_name, error_message(error));
+           return AUTH_FAILURE;
+       }
+
+       /* Only rewrite prompt if user didn't specify their own. */
+       /*if (!strcmp(prompt, PASSPROMPT)) { */
+           easprintf(&krb5_prompt, "Password for %s: ", pname);
+       /*}*/
+       free(pname);
+    }
+    *promptp = krb5_prompt;
+
+    return AUTH_SUCCESS;
+}
+
+int
+kerb5_init(struct passwd *pw, sudo_auth *auth)
 {
     krb5_context       sudo_context;
     krb5_ccache                ccache;
     krb5_principal     princ;
     krb5_error_code    error;
     char               cache_name[64];
-    char               *pname;
 
     auth->data = (void *) &sudo_krb5_data; /* Stash all our data here */
 
@@ -117,25 +152,6 @@ kerb5_init(struct passwd *pw, char **promptp, sudo_auth *auth)
     }
     princ = sudo_krb5_data.princ;
 
-    /*
-     * Really, we need to tell the caller not to prompt for password.
-     * The API does not currently provide this unless the auth is standalone.
-     */
-#if 1
-    if ((error = krb5_unparse_name(sudo_context, princ, &pname))) {
-       log_error(NO_EXIT|NO_MAIL,
-                 _("%s: unable to unparse princ ('%s'): %s"), auth->name,
-                 pw->pw_name, error_message(error));
-       return AUTH_FAILURE;
-    }
-
-    /* Only rewrite prompt if user didn't specify their own. */
-    /*if (!strcmp(prompt, PASSPROMPT)) { */
-       easprintf(promptp, "Password for %s: ", pname);
-    /*}*/
-    free(pname);
-#endif
-
     (void) snprintf(cache_name, sizeof(cache_name), "MEMORY:sudocc_%ld",
                    (long) getpid());
     if ((error = krb5_cc_resolve(sudo_context, cache_name,
index d66e30285c8a2bebb87d109bb09cf03dc4592f0a..70e916e0ef2ddb643b8bda817e88f3116451b0f9 100644 (file)
@@ -80,7 +80,7 @@ static int gotintr;
 static pam_handle_t *pamh;
 
 int
-pam_init(struct passwd *pw, char **promptp, sudo_auth *auth)
+pam_init(struct passwd *pw, sudo_auth *auth)
 {
     static struct pam_conv pam_conv;
     static int pam_status;
@@ -184,10 +184,11 @@ pam_cleanup(struct passwd *pw, sudo_auth *auth)
     int *pam_status = (int *) auth->data;
 
     /* If successful, we can't close the session until pam_end_session() */
-    if (auth->status == AUTH_SUCCESS)
+    if (*pam_status == AUTH_SUCCESS)
        return AUTH_SUCCESS;
 
     *pam_status = pam_end(pamh, *pam_status | PAM_DATA_SILENT);
+    pamh = NULL;
     return *pam_status == PAM_SUCCESS ? AUTH_SUCCESS : AUTH_FAILURE;
 }
 
@@ -209,10 +210,6 @@ pam_begin_session(struct passwd *pw, sudo_auth *auth)
        goto done;
     }
 
-    /* If the user did not have to authenticate there is no pam handle yet. */
-    if (pamh == NULL)
-       pam_init(pw, NULL, NULL);
-
     /*
      * Update PAM_USER to reference the user we are running the command
      * as, as opposed to the user we authenticated as.
@@ -242,16 +239,23 @@ done:
 }
 
 int
-pam_end_session(sudo_auth *auth)
+pam_end_session(struct passwd *pw, sudo_auth *auth)
 {
     int status = PAM_SUCCESS;
 
-    if (pamh) {
+    if (pamh != NULL) {
 #ifndef NO_PAM_SESSION
+       /*
+        * Update PAM_USER to reference the user we are running the command
+        * as to match the call to pam_open_session().
+        */
+       (void) pam_set_item(pamh, PAM_USER, pw->pw_name);
        (void) pam_close_session(pamh, PAM_SILENT);
 #endif
        status = pam_end(pamh, PAM_SUCCESS | PAM_DATA_SILENT);
+       pamh = NULL;
     }
+
     return status == PAM_SUCCESS ? AUTH_SUCCESS : AUTH_FAILURE;
 }
 
index ee0e4d300b4dd18a83e84df58e2f995ef22f18e2..1316acdae7f8224b6d4b4f2ae63c6005f29e6612 100644 (file)
@@ -49,7 +49,7 @@
 #define HAS_AGEINFO(p, l)      (l == 18 && p[DESLEN] == ',')
 
 int
-passwd_init(struct passwd *pw, char **promptp, sudo_auth *auth)
+passwd_init(struct passwd *pw, sudo_auth *auth)
 {
 #ifdef HAVE_SKEYACCESS
     if (skeyaccess(pw, user_tty, NULL, NULL) == 0)
index 221889d5d8c240de8f9abd42b5c0c15bdc0afb22..8a08da79f209402994adb2a165d116dfe8a81ffc 100644 (file)
@@ -53,7 +53,7 @@
 #include "sudo_auth.h"
 
 int
-secureware_init(struct passwd *pw, char **promptp, sudo_auth *auth)
+secureware_init(struct passwd *pw, sudo_auth *auth)
 {
 #ifdef __alpha
     extern int crypt_type;
index 0f53511032b05e85cd955fc95a4f90c1be20670d..2c3796c8810dbdd6e6e5dfc8b0b6ef477f75d5d0 100644 (file)
@@ -56,7 +56,7 @@
 union config_record configure;
 
 int
-securid_init(struct passwd *pw, char **promptp, sudo_auth *auth)
+securid_init(struct passwd *pw, sudo_auth *auth)
 {
     static struct SD_CLIENT sd_dat;            /* SecurID data block */
 
index 45513c9a92ed27e19fc84dbd2898b2604c0dd985..cf022d2f880293f5cdb359e16d919fcd9f0b5c6f 100644 (file)
@@ -59,7 +59,6 @@
  * securid_init - Initialises communications with ACE server
  * Arguments in:
  *     pw - UNUSED
- *     promptp - UNUSED
  *     auth - sudo authentication structure
  *
  * Results out:
@@ -68,7 +67,7 @@
  *                   success.
  */
 int
-securid_init(struct passwd *pw, char **promptp, sudo_auth *auth)
+securid_init(struct passwd *pw, sudo_auth *auth)
 {
     static SDI_HANDLE sd_dat;                  /* SecurID handle */
 
index f82b5cb7fd76726f2bb7d49d846610b99a99caa4..cd0408394d005c0fe38617091dd0f5f6c24b4e6d 100644 (file)
@@ -86,7 +86,7 @@ static sudo_auth auth_switch[] = {
     AUTH_ENTRY("kerb4", 0, kerb4_init, NULL, kerb4_verify, NULL, NULL, NULL)
 #endif
 #ifdef HAVE_KERB5
-    AUTH_ENTRY("kerb5", 0, kerb5_init, NULL, kerb5_verify, kerb5_cleanup, NULL, NULL)
+    AUTH_ENTRY("kerb5", 0, kerb5_init, kerb5_setup, kerb5_verify, kerb5_cleanup, NULL, NULL)
 #endif
 #ifdef HAVE_SKEY
     AUTH_ENTRY("S/Key", 0, NULL, rfc1938_setup, rfc1938_verify, NULL, NULL, NULL)
@@ -97,35 +97,20 @@ static sudo_auth auth_switch[] = {
     AUTH_ENTRY(NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL)
 };
 
+static int standalone;
+
 extern char **NewArgv; /* XXX - for auditing */
 
 static void pass_warn(void);
 
 int
-verify_user(struct passwd *pw, char *prompt)
+sudo_auth_init(struct passwd *pw)
 {
-    int counter = def_passwd_tries + 1;
-    int success = AUTH_FAILURE;
-    int flags, status, standalone, rval;
-    char *p;
     sudo_auth *auth;
-    sigaction_t sa, osa;
-
-    /* Enable suspend during password entry. */
-    sigemptyset(&sa.sa_mask);
-    sa.sa_flags = SA_RESTART;
-    sa.sa_handler = SIG_DFL;
-    (void) sigaction(SIGTSTP, &sa, &osa);
+    int status = AUTH_SUCCESS;
 
-    /* Make sure we have at least one auth method. */
-    if (auth_switch[0].name == NULL) {
-       audit_failure(NewArgv, "no authentication methods");
-       log_error(0,
-           _("There are no authentication methods compiled into sudo!  "
-           "If you want to turn off authentication, use the "
-           "--disable-authentication configure option."));
-       return -1;
-    }
+    if (auth_switch[0].name == NULL)
+       return TRUE;
 
     /* Make sure we haven't mixed standalone and shared auth methods. */
     standalone = IS_STANDALONE(&auth_switch[0]);
@@ -146,18 +131,76 @@ verify_user(struct passwd *pw, char *prompt)
            if (NEEDS_USER(auth))
                set_perms(PERM_USER);
 
-           status = (auth->init)(pw, &prompt, auth);
+           status = (auth->init)(pw, auth);
+
+           if (NEEDS_USER(auth))
+               restore_perms();
+
            if (status == AUTH_FAILURE)
                SET(auth->flags, FLAG_DISABLED);
-           else if (status == AUTH_FATAL) {    /* XXX log */
+           else if (status == AUTH_FATAL) {
+               /* XXX log */
                audit_failure(NewArgv, "authentication failure");
-               return -1;              /* assume error msg already printed */
+               break;          /* assume error msg already printed */
            }
+       }
+    }
+    return status == AUTH_FATAL ? -1 : TRUE;
+}
+
+int
+sudo_auth_cleanup(struct passwd *pw)
+{
+    sudo_auth *auth;
+    int status = AUTH_SUCCESS;
+
+    /* Call cleanup routines. */
+    for (auth = auth_switch; auth->name; auth++) {
+       if (auth->cleanup && !IS_DISABLED(auth)) {
+           if (NEEDS_USER(auth))
+               set_perms(PERM_USER);
+
+           status = (auth->cleanup)(pw, auth);
 
            if (NEEDS_USER(auth))
                restore_perms();
+
+           if (status == AUTH_FATAL) {
+               /* XXX log */
+               audit_failure(NewArgv, "authentication failure");
+               break;          /* assume error msg already printed */
+           }
        }
     }
+    return status == AUTH_FATAL ? -1 : TRUE;
+}
+
+int
+verify_user(struct passwd *pw, char *prompt)
+{
+    int counter = def_passwd_tries + 1;
+    int success = AUTH_FAILURE;
+    int flags, status, rval;
+    char *p;
+    sudo_auth *auth;
+    sigaction_t sa, osa;
+
+    /* Enable suspend during password entry. */
+    sigemptyset(&sa.sa_mask);
+    sa.sa_flags = SA_RESTART;
+    sa.sa_handler = SIG_DFL;
+    (void) sigaction(SIGTSTP, &sa, &osa);
+
+    /* Make sure we have at least one auth method. */
+    /* XXX - check FLAG_DISABLED too */
+    if (auth_switch[0].name == NULL) {
+       audit_failure(NewArgv, "no authentication methods");
+       log_error(0,
+           _("There are no authentication methods compiled into sudo!  "
+           "If you want to turn off authentication, use the "
+           "--disable-authentication configure option."));
+       return -1;
+    }
 
     while (--counter) {
        /* Do any per-method setup and unconfigure the method if needed */
@@ -167,15 +210,17 @@ verify_user(struct passwd *pw, char *prompt)
                    set_perms(PERM_USER);
 
                status = (auth->setup)(pw, &prompt, auth);
+
+               if (NEEDS_USER(auth))
+                   restore_perms();
+
                if (status == AUTH_FAILURE)
                    SET(auth->flags, FLAG_DISABLED);
-               else if (status == AUTH_FATAL) {/* XXX log */
+               else if (status == AUTH_FATAL) {
+                   /* XXX log */
                    audit_failure(NewArgv, "authentication failure");
                    return -1;          /* assume error msg already printed */
                }
-
-               if (NEEDS_USER(auth))
-                   restore_perms();
            }
        }
 
@@ -203,31 +248,14 @@ verify_user(struct passwd *pw, char *prompt)
                restore_perms();
 
            if (auth->status != AUTH_FAILURE)
-               goto cleanup;
+               goto done;
        }
        if (!standalone)
            zero_bytes(p, strlen(p));
        pass_warn();
     }
 
-cleanup:
-    /* Call cleanup routines. */
-    for (auth = auth_switch; auth->name; auth++) {
-       if (auth->cleanup && !IS_DISABLED(auth)) {
-           if (NEEDS_USER(auth))
-               set_perms(PERM_USER);
-
-           status = (auth->cleanup)(pw, auth);
-           if (status == AUTH_FATAL) { /* XXX log */
-               audit_failure(NewArgv, "authentication failure");
-               return -1;              /* assume error msg already printed */
-           }
-
-           if (NEEDS_USER(auth))
-               restore_perms();
-       }
-    }
-
+done:
     switch (success) {
        case AUTH_SUCCESS:
            (void) sigaction(SIGTSTP, &osa, NULL);
@@ -257,7 +285,8 @@ cleanup:
     return rval;
 }
 
-int auth_begin_session(struct passwd *pw)
+int
+sudo_auth_begin_session(struct passwd *pw)
 {
     sudo_auth *auth;
     int status;
@@ -265,7 +294,8 @@ int auth_begin_session(struct passwd *pw)
     for (auth = auth_switch; auth->name; auth++) {
        if (auth->begin_session && !IS_DISABLED(auth)) {
            status = (auth->begin_session)(pw, auth);
-           if (status == AUTH_FATAL) { /* XXX log */
+           if (status == AUTH_FATAL) {
+               /* XXX log */
                audit_failure(NewArgv, "authentication failure");
                return -1;              /* assume error msg already printed */
            }
@@ -274,15 +304,17 @@ int auth_begin_session(struct passwd *pw)
     return TRUE;
 }
 
-int auth_end_session(void)
+int
+sudo_auth_end_session(struct passwd *pw)
 {
     sudo_auth *auth;
     int status;
 
     for (auth = auth_switch; auth->name; auth++) {
        if (auth->end_session && !IS_DISABLED(auth)) {
-           status = (auth->end_session)(auth);
-           if (status == AUTH_FATAL) { /* XXX log */
+           status = (auth->end_session)(pw, auth);
+           if (status == AUTH_FATAL) {
+               /* XXX log */
                return -1;              /* assume error msg already printed */
            }
        }
index 91124bfea095aec08a44e218891199fbef7ea883..995edb71a6a79fad42f053fbf27a7e3018cb5539 100644 (file)
@@ -28,12 +28,12 @@ typedef struct sudo_auth {
     int status;                        /* status from verify routine */
     char *name;                        /* name of the method as a string */
     void *data;                        /* method-specific data pointer */
-    int (*init)(struct passwd *pw, char **prompt, struct sudo_auth *auth);
+    int (*init)(struct passwd *pw, struct sudo_auth *auth);
     int (*setup)(struct passwd *pw, char **prompt, struct sudo_auth *auth);
     int (*verify)(struct passwd *pw, char *p, struct sudo_auth *auth);
     int (*cleanup)(struct passwd *pw, struct sudo_auth *auth);
     int (*begin_session)(struct passwd *pw, struct sudo_auth *auth);
-    int (*end_session)(struct sudo_auth *auth);
+    int (*end_session)(struct passwd *pw, struct sudo_auth *auth);
 } sudo_auth;
 
 /* Values for sudo_auth.flags.  */
@@ -55,40 +55,41 @@ char *auth_getpass(const char *prompt, int timeout, int type);
 extern sudo_conv_t sudo_conv;
 
 /* Prototypes for standalone methods */
-int fwtk_init(struct passwd *pw, char **prompt, sudo_auth *auth);
+int fwtk_init(struct passwd *pw, sudo_auth *auth);
 int fwtk_verify(struct passwd *pw, char *prompt, sudo_auth *auth);
 int fwtk_cleanup(struct passwd *pw, sudo_auth *auth);
-int pam_init(struct passwd *pw, char **prompt, sudo_auth *auth);
+int pam_init(struct passwd *pw, sudo_auth *auth);
 int pam_verify(struct passwd *pw, char *prompt, sudo_auth *auth);
 int pam_cleanup(struct passwd *pw, sudo_auth *auth);
 int pam_begin_session(struct passwd *pw, sudo_auth *auth);
-int pam_end_session(sudo_auth *auth);
+int pam_end_session(struct passwd *pw, sudo_auth *auth);
 int sia_setup(struct passwd *pw, char **prompt, sudo_auth *auth);
 int sia_verify(struct passwd *pw, char *prompt, sudo_auth *auth);
 int sia_cleanup(struct passwd *pw, sudo_auth *auth);
 int aixauth_verify(struct passwd *pw, char *pass, sudo_auth *auth);
 int aixauth_cleanup(struct passwd *pw, sudo_auth *auth);
-int bsdauth_init(struct passwd *pw, char **prompt, sudo_auth *auth);
+int bsdauth_init(struct passwd *pw, sudo_auth *auth);
 int bsdauth_verify(struct passwd *pw, char *prompt, sudo_auth *auth);
 int bsdauth_cleanup(struct passwd *pw, sudo_auth *auth);
 
 /* Prototypes for normal methods */
-int passwd_init(struct passwd *pw, char **prompt, sudo_auth *auth);
+int passwd_init(struct passwd *pw, sudo_auth *auth);
 int passwd_verify(struct passwd *pw, char *pass, sudo_auth *auth);
 int passwd_cleanup(struct passwd *pw, sudo_auth *auth);
-int secureware_init(struct passwd *pw, char **prompt, sudo_auth *auth);
+int secureware_init(struct passwd *pw, sudo_auth *auth);
 int secureware_verify(struct passwd *pw, char *pass, sudo_auth *auth);
 int secureware_cleanup(struct passwd *pw, sudo_auth *auth);
 int rfc1938_setup(struct passwd *pw, char **prompt, sudo_auth *auth);
 int rfc1938_verify(struct passwd *pw, char *pass, sudo_auth *auth);
 int afs_verify(struct passwd *pw, char *pass, sudo_auth *auth);
 int dce_verify(struct passwd *pw, char *pass, sudo_auth *auth);
-int kerb4_init(struct passwd *pw, char **prompt, sudo_auth *auth);
+int kerb4_init(struct passwd *pw, sudo_auth *auth);
 int kerb4_verify(struct passwd *pw, char *pass, sudo_auth *auth);
-int kerb5_init(struct passwd *pw, char **prompt, sudo_auth *auth);
+int kerb5_init(struct passwd *pw, sudo_auth *auth);
+int kerb5_setup(struct passwd *pw, char **prompt, sudo_auth *auth);
 int kerb5_verify(struct passwd *pw, char *pass, sudo_auth *auth);
 int kerb5_cleanup(struct passwd *pw, sudo_auth *auth);
-int securid_init(struct passwd *pw, char **prompt, sudo_auth *auth);
+int securid_init(struct passwd *pw, sudo_auth *auth);
 int securid_setup(struct passwd *pw, char **prompt, sudo_auth *auth);
 int securid_verify(struct passwd *pw, char *pass, sudo_auth *auth);
 
index 6a361054d7522baa04f9689a256e5d5a61953316..4be3b0bdd31caba415bad2b4a55d2e422b062b6c 100644 (file)
@@ -98,6 +98,7 @@ static struct passwd *get_authpw(void);
 int
 check_user(int validated, int mode)
 {
+    struct passwd *auth_pw;
     char *timestampdir = NULL;
     char *timestampfile = NULL;
     char *prompt;
@@ -113,6 +114,13 @@ check_user(int validated, int mode)
            ctim_get(&sb, &tty_info.ctime);
     }
 
+    /* Init authentication system regardless of whether we need a password. */
+    auth_pw = get_authpw();
+    if (sudo_auth_init(auth_pw) == -1) {
+       rval = -1;
+       goto done;
+    }
+
     /* Always prompt for a password when -k was specified with the command. */
     if (ISSET(mode, MODE_IGNORE_TICKET)) {
        SET(validated, FLAG_CHECK_USER);
@@ -124,22 +132,23 @@ check_user(int validated, int mode)
        if (user_uid == 0 || (user_uid == runas_pw->pw_uid &&
            (!runas_gr || user_in_group(sudo_user.pw, runas_gr->gr_name))) ||
            user_is_exempt())
-           return TRUE;
+           goto done;
     }
 
-    if (build_timestamp(&timestampdir, &timestampfile) == -1)
-       return -1;
+    if (build_timestamp(&timestampdir, &timestampfile) == -1) {
+       rval = -1;
+       goto done;
+    }
 
     status = timestamp_status(timestampdir, timestampfile, user_name,
        TS_MAKE_DIRS);
 
     if (status != TS_CURRENT || ISSET(validated, FLAG_CHECK_USER)) {
-       struct passwd *auth_pw;
-
        /* Bail out if we are non-interactive and a password is required */
        if (ISSET(mode, MODE_NONINTERACTIVE)) {
            warningx(_("sorry, a password is required to run %s"), getprogname());
-           return -1;
+           rval = -1;
+           goto done;
        }
 
        /* XXX - should not lecture if askpass helper is being used. */
@@ -149,9 +158,7 @@ check_user(int validated, int mode)
        prompt = expand_prompt(user_prompt ? user_prompt : def_passprompt,
            user_name, user_shost);
 
-       auth_pw = get_authpw();
        rval = verify_user(auth_pw, prompt);
-       pw_delref(auth_pw);
     }
     /* Only update timestamp if user was validated. */
     if (rval == TRUE && ISSET(validated, VALIDATE_OK) &&
@@ -160,6 +167,10 @@ check_user(int validated, int mode)
     efree(timestampdir);
     efree(timestampfile);
 
+done:
+    sudo_auth_cleanup(auth_pw);
+    pw_delref(auth_pw);
+
     return rval;
 }
 
index e449b1c67d8604667ddc92f98c7d9565c5c816d7..dd404f5bf70da00ce559466d42a329ba7d890cf9 100644 (file)
@@ -184,42 +184,6 @@ dump_defaults(void)
     }
 }
 
-/*
- * List each option along with its description.
- */
-void
-list_options(void)
-{
-    struct sudo_defs_types *cur;
-    char *p, *desc;
-
-    sudo_printf(SUDO_CONV_INFO_MSG,
-       _("Available options in a sudoers ``Defaults'' line:\n\n"));
-    for (cur = sudo_defs_table; cur->name; cur++) {
-       if (cur->desc) {
-           desc = _(cur->desc);
-           switch (cur->type & T_MASK) {
-               case T_FLAG:
-                   sudo_printf(SUDO_CONV_INFO_MSG,
-                       _("%s: %s\n"), cur->name, desc);
-                   break;
-               default:
-                   p = strrchr(desc, ':');
-                   if (p) {
-                       while (p > desc && isspace((unsigned char)p[-1]))
-                           p--;
-                       sudo_printf(SUDO_CONV_INFO_MSG, _("%s: %.*s\n"),
-                           cur->name, (int) (p - desc), desc);
-                   } else {
-                       sudo_printf(SUDO_CONV_INFO_MSG,
-                           _("%s: %s\n"), cur->name, desc);
-                   }
-                   break;
-           }
-       }
-    }
-}
-
 /*
  * Sets/clears an entry in the defaults structure
  * If a variable that takes a value is used in a boolean
index 711a7ad4aab6d7b001b31f146bfb79194894fb85..05e2b6f499e999a122be7545196356a466409da3 100644 (file)
@@ -107,7 +107,6 @@ struct sudo_defs_types {
  */
 void dump_default(void);
 void init_defaults(void);
-void list_options(void);
 int  set_default(char *, char *, int);
 int  update_defaults(int);
 
index 6d6571899e924058a97bd91310e9db8dec35a8c5..d7c15829044847a5f60a32efd0c597970ed06d83 100644 (file)
@@ -586,8 +586,13 @@ rebuild_env(void)
        SET(didvar, DID_PATH);
     }
 
-    /* Set $USER, $LOGNAME and $USERNAME to target if "set_logname" is true. */
-    if (def_set_logname && !ISSET(sudo_mode, MODE_LOGIN_SHELL)) {
+    /*
+     * Set $USER, $LOGNAME and $USERNAME to target if "set_logname" is not
+     * disabled.  We skip this if we are running a login shell (because
+     * they have already been set them) or sudoedit (because we want the
+     * editor to find the user's startup files).
+     */
+    if (def_set_logname && !ISSET(sudo_mode, MODE_LOGIN_SHELL|MODE_EDIT)) {
        if (!ISSET(didvar, KEPT_LOGNAME))
            sudo_setenv("LOGNAME", runas_pw->pw_name, TRUE);
        if (!ISSET(didvar, KEPT_USER))
index 51cf5882dda0c98815eb02f92d080cdd8e50d872..8c0a73d62676d3fd115a5f25856125e997179155 100644 (file)
@@ -83,9 +83,9 @@
  */
 extern int sudolineno;
 extern char *sudoers;
-int parse_error;
+static int verbose = FALSE;
+int parse_error = FALSE;
 int pedantic = FALSE;
-int verbose = FALSE;
 int errorlineno = -1;
 char *errorfile = NULL;
 
index 0ec084e6b9c3266c92536f9db1db1702122882ac..f3f0aace351b2ab4c4d253ca30c08a58e0cb8a0b 100644 (file)
@@ -71,9 +71,9 @@
  */
 extern int sudolineno;
 extern char *sudoers;
-int parse_error;
+static int verbose = FALSE;
+int parse_error = FALSE;
 int pedantic = FALSE;
-int verbose = FALSE;
 int errorlineno = -1;
 char *errorfile = NULL;
 
index 7a4ee7e4f062ebdc3f2ffeedf808afb63b5d8318..0f1044f20337f0c6019c00d422c1604d9cbb57e3 100644 (file)
@@ -147,35 +147,47 @@ fill_command(char *str, size_t strsize)
     return strlcpy(str, user_base, strsize);
 }
 
+/*
+ * Concatenate dir + file, expanding any escape sequences.
+ * Returns the concatenated path and sets slashp point to
+ * the path separator between the expanded dir and file.
+ */
 char *
 expand_iolog_path(const char *prefix, const char *dir, const char *file,
     char **slashp)
 {
-    size_t plen = 0, psize = 1024;
-    char *path, *dst;
-    const char *src = dir, *ep;
-    int pass, strfit = FALSE;
+    size_t len, prelen = 0;
+    char *dst, *dst0, *path, *pathend, tmpbuf[PATH_MAX];
+    const char *endbrace, *src = dir;
+    int pass, strfit;
 
-    /* Concatenate dir + file -> path, expanding any escape sequences. */
-    dst = path = emalloc(psize);
+    /* Expanded path must be <= PATH_MAX */
+    if (prefix != NULL)
+       prelen = strlen(prefix);
+    dst = path = emalloc(prelen + PATH_MAX);
     *path = '\0';
+    pathend = path + prelen + PATH_MAX;
+
+    /* Copy prefix, if present. */
+    if (prefix != NULL) {
+       memcpy(path, prefix, prelen);
+       dst += prelen;
+       *dst = '\0';
+    }
 
     /* Trim leading slashes from file component. */
     while (*file == '/')
        file++;
 
-    if (prefix != NULL) {
-       plen = strlcpy(path, prefix, psize);
-       dst += plen;
-    }
     for (pass = 0; pass < 3; pass++) {
+       strfit = FALSE;
        switch (pass) {
        case 0:
            src = dir;
            break;
        case 1:
            /* Trim trailing slashes from dir component. */
-           while (dst > path && dst[-1] == '/')
+           while (dst - path - 1 > prelen && dst[-1] == '/')
                dst--;
            if (slashp)
                *slashp = dst;
@@ -185,30 +197,25 @@ expand_iolog_path(const char *prefix, const char *dir, const char *file,
            src = file;
            break;
        }
+       dst0 = dst;
        for (; *src != '\0'; src++) {
            if (src[0] == '%') {
                if (src[1] == '{') {
-                   ep = strchr(src + 2, '}');
-                   if (ep != NULL) {
+                   endbrace = strchr(src + 2, '}');
+                   if (endbrace != NULL) {
                        struct path_escape *esc;
-                       size_t len = (size_t)(ep - src - 2);
+                       len = (size_t)(endbrace - src - 2);
                        for (esc = escapes; esc->name != NULL; esc++) {
                            if (strncmp(src + 2, esc->name, len) == 0 &&
                                esc->name[len] == '\0')
                                break;
                        }
                        if (esc->name != NULL) {
-                           for (;;) {
-                               len = esc->copy_fn(dst, psize - (dst - path));
-                               if (len < psize - (dst - path))
-                                   break;
-                               path = erealloc3(path, 2, psize);
-                               psize *= 2;
-                               dst = path + plen;
-                           }
+                           len = esc->copy_fn(dst, (size_t)(pathend - dst));
+                           if (len >= (size_t)(pathend - dst))
+                               goto bad;
                            dst += len;
-                           plen += len;
-                           src = ep;
+                           src = endbrace;
                            continue;
                        }
                    }
@@ -221,46 +228,47 @@ expand_iolog_path(const char *prefix, const char *dir, const char *file,
                }
            }
            /* Need at least 2 chars, including the NUL terminator. */
-           if (plen + 2 >= psize) {
-               path = erealloc3(path, 2, psize);
-               psize *= 2;
-               dst = path + plen;
-           }
+           if (dst + 1 >= pathend)
+               goto bad;
            *dst++ = *src;
-           plen++;
        }
-    }
-    *dst = '\0';
+       *dst = '\0';
 
-    if (strfit) {
-       time_t now;
-       struct tm *timeptr;
-       char *buf = NULL;
+       /* Expand strftime escapes as needed. */
+       if (strfit) {
+           time_t now;
+           struct tm *timeptr;
 
-       time(&now);
-       timeptr = localtime(&now);
+           time(&now);
+           timeptr = localtime(&now);
 
 #ifdef HAVE_SETLOCALE
-       if (!setlocale(LC_ALL, def_sudoers_locale)) {
-           warningx(_("unable to set locale to \"%s\", using \"C\""),
-               def_sudoers_locale);
-           setlocale(LC_ALL, "C");
-       }
+           if (!setlocale(LC_ALL, def_sudoers_locale)) {
+               warningx(_("unable to set locale to \"%s\", using \"C\""),
+                   def_sudoers_locale);
+               setlocale(LC_ALL, "C");
+           }
 #endif
-       /* Double the size of the buffer until it is big enough to expand. */
-       do {
-           psize *= 2;
-           buf = erealloc(buf, psize);
-           buf[psize - 1] = '\0';
-       } while (!strftime(buf, psize, path, timeptr) || buf[psize - 1] != '\0');
+           /* We only calls strftime() on the current part of the buffer. */
+           tmpbuf[sizeof(tmpbuf) - 1] = '\0';
+           len = strftime(tmpbuf, sizeof(tmpbuf), dst0, timeptr);
+
 #ifdef HAVE_SETLOCALE
-       setlocale(LC_ALL, "");
+           setlocale(LC_ALL, "");
 #endif
-       if (slashp)
-           *slashp = buf + (*slashp - path);
-       efree(path);
-       path = buf;
+           if (len == 0 || tmpbuf[sizeof(tmpbuf) - 1] != '\0')
+               goto bad;               /* strftime() failed, buf too small? */
+
+           if (len >= (size_t)(pathend - dst0))
+               goto bad;               /* expanded buffer too big to fit. */
+           memcpy(dst0, tmpbuf, len);
+           dst = dst0 + len;
+           *dst = '\0';
+       }
     }
 
     return path;
+bad:
+    efree(path);
+    return NULL;
 }
index a788543ac07144df201a7974a40a054d7a3f1615..e8e63117dea93a373b91920887df9dae6de3462a 100644 (file)
 #define CONF_INT       1
 #define CONF_STR       2
 #define CONF_LIST_STR  4
+#define CONF_DEREF_VAL 5
 
 #define SUDO_LDAP_SSL          1
 #define SUDO_LDAP_STARTTLS     2
@@ -195,6 +196,7 @@ static struct ldap_config {
     int rootuse_sasl;
     int ssl_mode;
     int timed;
+    int deref;
     char *host;
     struct ldap_config_list_str *uri;
     char *binddn;
@@ -280,6 +282,9 @@ static struct ldap_config_table ldap_conf_table[] = {
 #ifdef LDAP_OPT_TIMEOUT
     { "timeout", CONF_INT, TRUE, -1 /* needs timeval, set manually */,
        &ldap_conf.timeout },
+#endif
+#ifdef LDAP_OPT_DEREF
+    { "deref", CONF_DEREF_VAL, TRUE, LDAP_OPT_DEREF, &ldap_conf.deref },
 #endif
     { "binddn", CONF_STR, FALSE, -1, &ldap_conf.binddn },
     { "bindpw", CONF_STR, FALSE, -1, &ldap_conf.bindpw },
@@ -1121,6 +1126,7 @@ sudo_ldap_read_config(void)
     ldap_conf.bind_timelimit = -1;
     ldap_conf.use_sasl = -1;
     ldap_conf.rootuse_sasl = -1;
+    ldap_conf.deref = -1;
 
     if ((fp = fopen(_PATH_LDAP_CONF, "r")) == NULL)
        return FALSE;
@@ -1145,6 +1151,16 @@ sudo_ldap_read_config(void)
        for (cur = ldap_conf_table; cur->conf_str != NULL; cur++) {
            if (strcasecmp(keyword, cur->conf_str) == 0) {
                switch (cur->type) {
+               case CONF_DEREF_VAL:
+                   if (strcasecmp(value, "searching") == 0)
+                       *(int *)(cur->valp) = LDAP_DEREF_SEARCHING;
+                   else if (strcasecmp(value, "finding") == 0)
+                       *(int *)(cur->valp) = LDAP_DEREF_FINDING;
+                   else if (strcasecmp(value, "always") == 0)
+                       *(int *)(cur->valp) = LDAP_DEREF_ALWAYS;
+                   else
+                       *(int *)(cur->valp) = LDAP_DEREF_NEVER;
+                   break;
                case CONF_BOOL:
                    *(int *)(cur->valp) = atobool(value) == TRUE;
                    break;
@@ -1225,6 +1241,10 @@ sudo_ldap_read_config(void)
            sudo_printf(SUDO_CONV_ERROR_MSG, "timelimit        %d\n",
                ldap_conf.timelimit);
        }
+       if (ldap_conf.deref != -1) {
+           sudo_printf(SUDO_CONV_ERROR_MSG, "deref            %d\n",
+               ldap_conf.deref);
+       }
        sudo_printf(SUDO_CONV_ERROR_MSG, "ssl              %s\n",
            ldap_conf.ssl ?  ldap_conf.ssl : "(no)");
        if (ldap_conf.tls_checkpeer != -1) {
index 79176a280d30f71d496be1b80677b1960b3d97a2..9f15020de77919c5c634d8b108fc75475825f3d6 100644 (file)
@@ -25,7 +25,6 @@
 
 #include <sys/types.h>
 #include <sys/param.h>
-#include <sys/socket.h>
 #include <sys/stat.h>
 #include <stdio.h>
 #ifdef STDC_HEADERS
@@ -57,8 +56,6 @@
 #include <ctype.h>
 #include <pwd.h>
 #include <grp.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
 #include <netdb.h>
 #ifdef HAVE_DIRENT_H
 # include <dirent.h>
@@ -78,7 +75,6 @@
 #endif
 
 #include "sudoers.h"
-#include "interfaces.h"
 #include "parse.h"
 #include <gram.h>
 
@@ -597,145 +593,6 @@ command_matches_dir(char *sudoers_dir, size_t dlen)
     return dent != NULL;
 }
 
-static int
-addr_matches_if(char *n)
-{
-    union sudo_in_addr_un addr;
-    struct interface *ifp;
-#ifdef HAVE_IN6_ADDR
-    int j;
-#endif
-    int family;
-
-#ifdef HAVE_IN6_ADDR
-    if (inet_pton(AF_INET6, n, &addr.ip6) > 0) {
-       family = AF_INET6;
-    } else
-#endif
-    {
-       family = AF_INET;
-       addr.ip4.s_addr = inet_addr(n);
-    }
-
-    for (ifp = interfaces; ifp != NULL; ifp = ifp->next) {
-       if (ifp->family != family)
-           continue;
-       switch(family) {
-           case AF_INET:
-               if (ifp->addr.ip4.s_addr == addr.ip4.s_addr ||
-                   (ifp->addr.ip4.s_addr & ifp->netmask.ip4.s_addr)
-                   == addr.ip4.s_addr)
-                   return TRUE;
-               break;
-#ifdef HAVE_IN6_ADDR
-           case AF_INET6:
-               if (memcmp(ifp->addr.ip6.s6_addr, addr.ip6.s6_addr,
-                   sizeof(addr.ip6.s6_addr)) == 0)
-                   return TRUE;
-               for (j = 0; j < sizeof(addr.ip6.s6_addr); j++) {
-                   if ((ifp->addr.ip6.s6_addr[j] & ifp->netmask.ip6.s6_addr[j]) != addr.ip6.s6_addr[j])
-                       break;
-               }
-               if (j == sizeof(addr.ip6.s6_addr))
-                   return TRUE;
-#endif
-       }
-    }
-
-    return FALSE;
-}
-
-static int
-addr_matches_if_netmask(char *n, char *m)
-{
-    int i;
-    union sudo_in_addr_un addr, mask;
-    struct interface *ifp;
-#ifdef HAVE_IN6_ADDR
-    int j;
-#endif
-    int family;
-
-#ifdef HAVE_IN6_ADDR
-    if (inet_pton(AF_INET6, n, &addr.ip6) > 0)
-       family = AF_INET6;
-    else
-#endif
-    {
-       family = AF_INET;
-       addr.ip4.s_addr = inet_addr(n);
-    }
-
-    if (family == AF_INET) {
-       if (strchr(m, '.'))
-           mask.ip4.s_addr = inet_addr(m);
-       else {
-           i = 32 - atoi(m);
-           mask.ip4.s_addr = 0xffffffff;
-           mask.ip4.s_addr >>= i;
-           mask.ip4.s_addr <<= i;
-           mask.ip4.s_addr = htonl(mask.ip4.s_addr);
-       }
-    }
-#ifdef HAVE_IN6_ADDR
-    else {
-       if (inet_pton(AF_INET6, m, &mask.ip6) <= 0) {
-           j = atoi(m);
-           for (i = 0; i < 16; i++) {
-               if (j < i * 8)
-                   mask.ip6.s6_addr[i] = 0;
-               else if (i * 8 + 8 <= j)
-                   mask.ip6.s6_addr[i] = 0xff;
-               else
-                   mask.ip6.s6_addr[i] = 0xff00 >> (j - i * 8);
-           }
-       }
-    }
-#endif /* HAVE_IN6_ADDR */
-
-    for (ifp = interfaces; ifp != NULL; ifp = ifp->next) {
-       if (ifp->family != family)
-           continue;
-       switch(family) {
-           case AF_INET:
-               if ((ifp->addr.ip4.s_addr & mask.ip4.s_addr) == addr.ip4.s_addr)
-                   return TRUE;
-#ifdef HAVE_IN6_ADDR
-           case AF_INET6:
-               for (j = 0; j < sizeof(addr.ip6.s6_addr); j++) {
-                   if ((ifp->addr.ip6.s6_addr[j] & mask.ip6.s6_addr[j]) != addr.ip6.s6_addr[j])
-                       break;
-               }
-               if (j == sizeof(addr.ip6.s6_addr))
-                   return TRUE;
-#endif /* HAVE_IN6_ADDR */
-       }
-    }
-
-    return FALSE;
-}
-
-/*
- * Returns TRUE if "n" is one of our ip addresses or if
- * "n" is a network that we are on, else returns FALSE.
- */
-int
-addr_matches(char *n)
-{
-    char *m;
-    int retval;
-
-    /* If there's an explicit netmask, use it. */
-    if ((m = strchr(n, '/'))) {
-       *m++ = '\0';
-       retval = addr_matches_if_netmask(n, m);
-       *(m - 1) = '/';
-    } else
-       retval = addr_matches_if(n);
-
-    return retval;
-}
-
 /*
  * Returns TRUE if the hostname matches the pattern, else FALSE
  */
diff --git a/plugins/sudoers/match_addr.c b/plugins/sudoers/match_addr.c
new file mode 100644 (file)
index 0000000..f4bc731
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+ * Copyright (c) 1996, 1998-2005, 2007-2011
+ *     Todd C. Miller <Todd.Miller@courtesan.com>
+ *
+ * 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.
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Sponsored in part by the Defense Advanced Research Projects
+ * Agency (DARPA) and Air Force Research Laboratory, Air Force
+ * Materiel Command, USAF, under agreement number F39502-99-1-0512.
+ */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <stdio.h>
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif /* STDC_HEADERS */
+#ifdef HAVE_STRING_H
+# include <string.h>
+#endif /* HAVE_STRING_H */
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif /* HAVE_STRINGS_H */
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+
+#include "sudoers.h"
+#include "interfaces.h"
+
+static int
+addr_matches_if(char *n)
+{
+    union sudo_in_addr_un addr;
+    struct interface *ifp;
+#ifdef HAVE_IN6_ADDR
+    int j;
+#endif
+    int family;
+
+#ifdef HAVE_IN6_ADDR
+    if (inet_pton(AF_INET6, n, &addr.ip6) > 0) {
+       family = AF_INET6;
+    } else
+#endif
+    {
+       family = AF_INET;
+       addr.ip4.s_addr = inet_addr(n);
+    }
+
+    for (ifp = interfaces; ifp != NULL; ifp = ifp->next) {
+       if (ifp->family != family)
+           continue;
+       switch(family) {
+           case AF_INET:
+               if (ifp->addr.ip4.s_addr == addr.ip4.s_addr ||
+                   (ifp->addr.ip4.s_addr & ifp->netmask.ip4.s_addr)
+                   == addr.ip4.s_addr)
+                   return TRUE;
+               break;
+#ifdef HAVE_IN6_ADDR
+           case AF_INET6:
+               if (memcmp(ifp->addr.ip6.s6_addr, addr.ip6.s6_addr,
+                   sizeof(addr.ip6.s6_addr)) == 0)
+                   return TRUE;
+               for (j = 0; j < sizeof(addr.ip6.s6_addr); j++) {
+                   if ((ifp->addr.ip6.s6_addr[j] & ifp->netmask.ip6.s6_addr[j]) != addr.ip6.s6_addr[j])
+                       break;
+               }
+               if (j == sizeof(addr.ip6.s6_addr))
+                   return TRUE;
+#endif
+       }
+    }
+
+    return FALSE;
+}
+
+static int
+addr_matches_if_netmask(char *n, char *m)
+{
+    int i;
+    union sudo_in_addr_un addr, mask;
+    struct interface *ifp;
+#ifdef HAVE_IN6_ADDR
+    int j;
+#endif
+    int family;
+
+#ifdef HAVE_IN6_ADDR
+    if (inet_pton(AF_INET6, n, &addr.ip6) > 0)
+       family = AF_INET6;
+    else
+#endif
+    {
+       family = AF_INET;
+       addr.ip4.s_addr = inet_addr(n);
+    }
+
+    if (family == AF_INET) {
+       if (strchr(m, '.')) {
+           mask.ip4.s_addr = inet_addr(m);
+       } else {
+           i = atoi(m);
+           if (i == 0)
+               mask.ip4.s_addr = 0;
+           else if (i == 32)
+               mask.ip4.s_addr = 0xffffffff;
+           else
+               mask.ip4.s_addr = 0xffffffff - (1 << (32 - i)) + 1;
+           mask.ip4.s_addr = htonl(mask.ip4.s_addr);
+       }
+       addr.ip4.s_addr &= mask.ip4.s_addr;
+    }
+#ifdef HAVE_IN6_ADDR
+    else {
+       if (inet_pton(AF_INET6, m, &mask.ip6) <= 0) {
+           j = atoi(m);
+           for (i = 0; i < sizeof(addr.ip6.s6_addr); i++) {
+               if (j < i * 8)
+                   mask.ip6.s6_addr[i] = 0;
+               else if (i * 8 + 8 <= j)
+                   mask.ip6.s6_addr[i] = 0xff;
+               else
+                   mask.ip6.s6_addr[i] = 0xff00 >> (j - i * 8);
+               addr.ip6.s6_addr[i] &= mask.ip6.s6_addr[i];
+           }
+       }
+    }
+#endif /* HAVE_IN6_ADDR */
+
+    for (ifp = interfaces; ifp != NULL; ifp = ifp->next) {
+       if (ifp->family != family)
+           continue;
+       switch(family) {
+           case AF_INET:
+               if ((ifp->addr.ip4.s_addr & mask.ip4.s_addr) == addr.ip4.s_addr)
+                   return TRUE;
+#ifdef HAVE_IN6_ADDR
+           case AF_INET6:
+               for (j = 0; j < sizeof(addr.ip6.s6_addr); j++) {
+                   if ((ifp->addr.ip6.s6_addr[j] & mask.ip6.s6_addr[j]) != addr.ip6.s6_addr[j])
+                       break;
+               }
+               if (j == sizeof(addr.ip6.s6_addr))
+                   return TRUE;
+#endif /* HAVE_IN6_ADDR */
+       }
+    }
+
+    return FALSE;
+}
+
+/*
+ * Returns TRUE if "n" is one of our ip addresses or if
+ * "n" is a network that we are on, else returns FALSE.
+ */
+int
+addr_matches(char *n)
+{
+    char *m;
+    int retval;
+
+    /* If there's an explicit netmask, use it. */
+    if ((m = strchr(n, '/'))) {
+       *m++ = '\0';
+       retval = addr_matches_if_netmask(n, m);
+       *(m - 1) = '/';
+    } else
+       retval = addr_matches_if(n);
+
+    return retval;
+}
index 303d13500ab736f15fe8d8e76fc34f5ab8ae4b32..8ce68584bf19f1c4cf586179608f7154e73209f5 100644 (file)
@@ -250,6 +250,8 @@ sudo_file_lookup(struct sudo_nss *nss, int validated, int pwflag)
     } else if (match == DENY) {
        SET(validated, VALIDATE_NOT_OK);
        CLR(validated, VALIDATE_OK);
+       if (tags != NULL && tags->nopasswd != UNSPEC)
+           def_authenticate = !tags->nopasswd;
     }
     restore_perms();
     return validated;
index a8124adda2b6f7c14dd9499e985cd5df532d5dd9..fd670457cc561589f11dcd602994c2e8ec16a642 100644 (file)
Binary files a/plugins/sudoers/po/da.mo and b/plugins/sudoers/po/da.mo differ
index 024b7310cd33d5fb79ce78872e26f9db89b8090d..da6368a4891e0aa97872c4a990c3350a676bbc52 100644 (file)
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: sudoers 1.8.2-rc9\n"
+"Project-Id-Version: sudoers 1.8.3rc1\n"
 "Report-Msgid-Bugs-To: http://www.sudo.ws/bugs\n"
-"POT-Creation-Date: 2011-08-05 13:34-0400\n"
-"PO-Revision-Date: 2011-08-09 23:06+0100\n"
+"POT-Creation-Date: 2011-09-16 16:52-0400\n"
+"PO-Revision-Date: 2011-09-17 23:06+0100\n"
 "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
 "Language: da\n"
@@ -80,9 +80,9 @@ msgid "sorry, a password is required to run %s"
 msgstr "beklager men en adgangskode er krævet for at køre %s"
 
 #: plugins/sudoers/check.c:225 plugins/sudoers/iolog.c:169
-#: plugins/sudoers/sudoers.c:970 plugins/sudoers/sudoreplay.c:325
+#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoreplay.c:325
 #: plugins/sudoers/sudoreplay.c:334 plugins/sudoers/sudoreplay.c:675
-#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:700
+#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:744
 #, c-format
 msgid "unable to open %s"
 msgstr "kan ikke åbne %s"
@@ -127,8 +127,8 @@ msgid "%s writable by non-owner (0%o), should be mode 0700"
 msgstr "%s er skrivbar for ikkeejer (0%o), bør være tilstand 0700"
 
 #: plugins/sudoers/check.c:470 plugins/sudoers/check.c:514
-#: plugins/sudoers/check.c:582 plugins/sudoers/sudoers.c:956
-#: plugins/sudoers/visudo.c:284 plugins/sudoers/visudo.c:500
+#: plugins/sudoers/check.c:582 plugins/sudoers/sudoers.c:957
+#: plugins/sudoers/visudo.c:304 plugins/sudoers/visudo.c:544
 #, c-format
 msgid "unable to stat %s"
 msgstr "kan ikke stat %s"
@@ -163,10 +163,10 @@ msgstr "kan ikke nulstille %s til epoken"
 msgid "unknown uid: %u"
 msgstr "ukendt uid: %u"
 
-#: plugins/sudoers/check.c:717 plugins/sudoers/sudoers.c:747
-#: plugins/sudoers/sudoers.c:813 plugins/sudoers/sudoers.c:814
-#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/testsudoers.c:200
-#: plugins/sudoers/testsudoers.c:330
+#: plugins/sudoers/check.c:717 plugins/sudoers/sudoers.c:748
+#: plugins/sudoers/sudoers.c:814 plugins/sudoers/sudoers.c:815
+#: plugins/sudoers/sudoers.c:1088 plugins/sudoers/testsudoers.c:202
+#: plugins/sudoers/testsudoers.c:337
 #, c-format
 msgid "unknown user: %s"
 msgstr "ukendt bruger: %s"
@@ -526,53 +526,35 @@ msgstr "Tilføjer et punkt til utmp/utmpx-filen når der allokeres en pty"
 msgid "Set the user in utmp to the runas user, not the invoking user"
 msgstr "Angiv brugeren i utmp til brugeren kør som, ikke den opstartende bruger"
 
-#: plugins/sudoers/defaults.c:197
-msgid ""
-"Available options in a sudoers ``Defaults'' line:\n"
-"\n"
-msgstr ""
-"Tilgængelige indstillinger i en sudoers »standardlinje«:\n"
-"\n"
-
-#: plugins/sudoers/defaults.c:204 plugins/sudoers/defaults.c:215
-#, c-format
-msgid "%s: %s\n"
-msgstr "%s: %s\n"
-
-#: plugins/sudoers/defaults.c:211
-#, c-format
-msgid "%s: %.*s\n"
-msgstr "%s: %.*s\n"
-
-#: plugins/sudoers/defaults.c:241
+#: plugins/sudoers/defaults.c:205
 #, c-format
 msgid "unknown defaults entry `%s'"
 msgstr "ukendt standardpunkt »%s«"
 
-#: plugins/sudoers/defaults.c:249 plugins/sudoers/defaults.c:259
-#: plugins/sudoers/defaults.c:279 plugins/sudoers/defaults.c:292
-#: plugins/sudoers/defaults.c:305 plugins/sudoers/defaults.c:318
-#: plugins/sudoers/defaults.c:331 plugins/sudoers/defaults.c:351
-#: plugins/sudoers/defaults.c:361
+#: plugins/sudoers/defaults.c:213 plugins/sudoers/defaults.c:223
+#: plugins/sudoers/defaults.c:243 plugins/sudoers/defaults.c:256
+#: plugins/sudoers/defaults.c:269 plugins/sudoers/defaults.c:282
+#: plugins/sudoers/defaults.c:295 plugins/sudoers/defaults.c:315
+#: plugins/sudoers/defaults.c:325
 #, c-format
 msgid "value `%s' is invalid for option `%s'"
 msgstr "værdi »%s« er ugyldig for indstilling »%s«"
 
-#: plugins/sudoers/defaults.c:252 plugins/sudoers/defaults.c:262
-#: plugins/sudoers/defaults.c:270 plugins/sudoers/defaults.c:287
-#: plugins/sudoers/defaults.c:300 plugins/sudoers/defaults.c:313
-#: plugins/sudoers/defaults.c:326 plugins/sudoers/defaults.c:346
-#: plugins/sudoers/defaults.c:357
+#: plugins/sudoers/defaults.c:216 plugins/sudoers/defaults.c:226
+#: plugins/sudoers/defaults.c:234 plugins/sudoers/defaults.c:251
+#: plugins/sudoers/defaults.c:264 plugins/sudoers/defaults.c:277
+#: plugins/sudoers/defaults.c:290 plugins/sudoers/defaults.c:310
+#: plugins/sudoers/defaults.c:321
 #, c-format
 msgid "no value specified for `%s'"
 msgstr "ingen værdi angivet for »%s«"
 
-#: plugins/sudoers/defaults.c:275
+#: plugins/sudoers/defaults.c:239
 #, c-format
 msgid "values for `%s' must start with a '/'"
 msgstr "værdier for »%s« skal begynde med en »/«"
 
-#: plugins/sudoers/defaults.c:337
+#: plugins/sudoers/defaults.c:301
 #, c-format
 msgid "option `%s' does not take a value"
 msgstr "indstilling »%s« kan ikke modtage en værdi"
@@ -594,7 +576,7 @@ msgstr "beklager, du har ikke tilladelse til at angive de følgende miljøvariab
 
 #: plugins/sudoers/find_path.c:68 plugins/sudoers/find_path.c:107
 #: plugins/sudoers/find_path.c:122 plugins/sudoers/iolog.c:124
-#: plugins/sudoers/sudoers.c:899 toke.l:663 toke.l:814
+#: plugins/sudoers/sudoers.c:903 toke.l:663 toke.l:814
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
@@ -638,7 +620,7 @@ msgstr "%s: inkompatibel gruppeudvidelsesmodul for hovedversion %d, forventede %
 msgid "Local IP address and netmask pairs:\n"
 msgstr "Lokal IP-adresse og netmaskepar:\n"
 
-#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:977
+#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:978
 #, c-format
 msgid "unable to read %s"
 msgstr "kan ikke læse %s"
@@ -657,72 +639,72 @@ msgstr "ugyldig sekvenstal %s"
 msgid "unable to create %s"
 msgstr "kan ikke oprette %s"
 
-#: plugins/sudoers/iolog_path.c:245 plugins/sudoers/sudoers.c:356
+#: plugins/sudoers/iolog_path.c:247 plugins/sudoers/sudoers.c:357
 #, c-format
 msgid "unable to set locale to \"%s\", using \"C\""
 msgstr "kan ikke angive sprog til »%s«, bruger »C«"
 
-#: plugins/sudoers/ldap.c:363
+#: plugins/sudoers/ldap.c:368
 #, c-format
 msgid "sudo_ldap_conf_add_ports: port too large"
 msgstr "sudo_ldap_conf_add_ports: port for stor"
 
-#: plugins/sudoers/ldap.c:386
+#: plugins/sudoers/ldap.c:391
 #, c-format
 msgid "sudo_ldap_conf_add_ports: out of space expanding hostbuf"
 msgstr "sudo_ldap_conf_add_ports: stigende mellemlager for vært (hostbuf) har ikke nok plads"
 
-#: plugins/sudoers/ldap.c:415
+#: plugins/sudoers/ldap.c:420
 #, c-format
 msgid "unsupported LDAP uri type: %s"
 msgstr "ikkeunderstøttet LDAP uri-type: %s"
 
-#: plugins/sudoers/ldap.c:444
+#: plugins/sudoers/ldap.c:449
 #, c-format
 msgid "invalid uri: %s"
 msgstr "ugyldig uri: %s"
 
-#: plugins/sudoers/ldap.c:450
+#: plugins/sudoers/ldap.c:455
 #, c-format
 msgid "unable to mix ldap and ldaps URIs"
 msgstr "kan ikke blande ldap og ldaps URI'er"
 
-#: plugins/sudoers/ldap.c:454
+#: plugins/sudoers/ldap.c:459
 #, c-format
 msgid "unable to mix ldaps and starttls"
 msgstr "kan ikke blande ldaps og starttls"
 
-#: plugins/sudoers/ldap.c:473
+#: plugins/sudoers/ldap.c:478
 #, c-format
 msgid "sudo_ldap_parse_uri: out of space building hostbuf"
 msgstr "sudo_ldap_parse_uri: opbyggende mellemlager for vært (hostbuf) har ikke nok plads"
 
-#: plugins/sudoers/ldap.c:536
+#: plugins/sudoers/ldap.c:541
 #, c-format
 msgid "unable to initialize SSL cert and key db: %s"
 msgstr "kan ikke initialisere SSL-cert og key db: %s"
 
-#: plugins/sudoers/ldap.c:932
+#: plugins/sudoers/ldap.c:937
 #, c-format
 msgid "unable to get GMT time"
 msgstr "kan ikke indhente GMT-tid"
 
-#: plugins/sudoers/ldap.c:938
+#: plugins/sudoers/ldap.c:943
 #, c-format
 msgid "unable to format timestamp"
 msgstr "kan ikke formatere tidsstempel"
 
-#: plugins/sudoers/ldap.c:946
+#: plugins/sudoers/ldap.c:951
 #, c-format
 msgid "unable to build time filter"
 msgstr "kan ikke bygge tidsfilter"
 
-#: plugins/sudoers/ldap.c:1047
+#: plugins/sudoers/ldap.c:1052
 #, c-format
 msgid "sudo_ldap_build_pass1 allocation mismatch"
 msgstr "sudo_ldap_build_pass1 forskellige allokeringer"
 
-#: plugins/sudoers/ldap.c:1542
+#: plugins/sudoers/ldap.c:1562
 #, c-format
 msgid ""
 "\n"
@@ -731,7 +713,7 @@ msgstr ""
 "\n"
 "LDAP-rolle: %s\n"
 
-#: plugins/sudoers/ldap.c:1544
+#: plugins/sudoers/ldap.c:1564
 #, c-format
 msgid ""
 "\n"
@@ -740,27 +722,27 @@ msgstr ""
 "\n"
 "LDAP-rolle: UKENDT\n"
 
-#: plugins/sudoers/ldap.c:1591
+#: plugins/sudoers/ldap.c:1611
 #, c-format
 msgid "    Order: %s\n"
 msgstr "    Rækkefølge: %s\n"
 
-#: plugins/sudoers/ldap.c:1599
+#: plugins/sudoers/ldap.c:1619
 #, c-format
 msgid "    Commands:\n"
 msgstr "    Kommandoer:\n"
 
-#: plugins/sudoers/ldap.c:1986
+#: plugins/sudoers/ldap.c:2006
 #, c-format
 msgid "unable to initialize LDAP: %s"
 msgstr "kan ikke initialisere LDAP: %s"
 
-#: plugins/sudoers/ldap.c:2017
+#: plugins/sudoers/ldap.c:2037
 #, c-format
 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
 msgstr "start_tls angivet men LDAP libs understøtter ikke ldap_start_tls_s() eller ldap_start_tls_s_np()"
 
-#: plugins/sudoers/ldap.c:2248
+#: plugins/sudoers/ldap.c:2268
 #, c-format
 msgid "invalid sudoOrder attribute: %s"
 msgstr "ugyldig sudoOrder-attribut: %s"
@@ -857,7 +839,7 @@ msgstr "intern fejl: utilstrækkelig plads for loglinje"
 msgid "parse error in %s near line %d"
 msgstr "fortolkningsfejl i %s nær linje %d"
 
-#: plugins/sudoers/parse.c:369
+#: plugins/sudoers/parse.c:371
 #, c-format
 msgid ""
 "\n"
@@ -866,17 +848,17 @@ msgstr ""
 "\n"
 "Sudoers-punkt:\n"
 
-#: plugins/sudoers/parse.c:371
+#: plugins/sudoers/parse.c:373
 #, c-format
 msgid "    RunAsUsers: "
 msgstr "    KørSomBrugere: "
 
-#: plugins/sudoers/parse.c:386
+#: plugins/sudoers/parse.c:388
 #, c-format
 msgid "    RunAsGroups: "
 msgstr "    KørSomGrupper: "
 
-#: plugins/sudoers/parse.c:395
+#: plugins/sudoers/parse.c:397
 #, c-format
 msgid ""
 "    Commands:\n"
@@ -919,38 +901,38 @@ msgstr "kan ikke cache gid %u, findes allerede"
 msgid "unable to cache group %s, already exists"
 msgstr "kan ikke cache gruppe %s, findes allerede"
 
-#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:355
-#: plugins/sudoers/set_perms.c:587 plugins/sudoers/set_perms.c:821
+#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:358
+#: plugins/sudoers/set_perms.c:590 plugins/sudoers/set_perms.c:824
 msgid "perm stack overflow"
 msgstr "permanent stakoverløb"
 
-#: plugins/sudoers/set_perms.c:117 plugins/sudoers/set_perms.c:363
-#: plugins/sudoers/set_perms.c:595 plugins/sudoers/set_perms.c:829
+#: plugins/sudoers/set_perms.c:117 plugins/sudoers/set_perms.c:366
+#: plugins/sudoers/set_perms.c:598 plugins/sudoers/set_perms.c:832
 msgid "perm stack underflow"
 msgstr "permanent stakunderløb"
 
-#: plugins/sudoers/set_perms.c:223 plugins/sudoers/set_perms.c:455
-#: plugins/sudoers/set_perms.c:692
+#: plugins/sudoers/set_perms.c:223 plugins/sudoers/set_perms.c:458
+#: plugins/sudoers/set_perms.c:695
 msgid "unable to change to runas gid"
 msgstr "kan ikke ændre til kør som gid"
 
-#: plugins/sudoers/set_perms.c:231 plugins/sudoers/set_perms.c:462
-#: plugins/sudoers/set_perms.c:699
+#: plugins/sudoers/set_perms.c:231 plugins/sudoers/set_perms.c:465
+#: plugins/sudoers/set_perms.c:702
 msgid "unable to change to runas uid"
 msgstr "kan ikke ændre til kør som uid"
 
-#: plugins/sudoers/set_perms.c:245 plugins/sudoers/set_perms.c:475
-#: plugins/sudoers/set_perms.c:712
+#: plugins/sudoers/set_perms.c:245 plugins/sudoers/set_perms.c:478
+#: plugins/sudoers/set_perms.c:715
 #, c-format
 msgid "unable to change to sudoers gid"
 msgstr "kan ikke ændre til sudoers gid"
 
-#: plugins/sudoers/set_perms.c:286 plugins/sudoers/set_perms.c:513
-#: plugins/sudoers/set_perms.c:750 plugins/sudoers/set_perms.c:890
+#: plugins/sudoers/set_perms.c:286 plugins/sudoers/set_perms.c:516
+#: plugins/sudoers/set_perms.c:753 plugins/sudoers/set_perms.c:893
 msgid "too many processes"
 msgstr "for mange processer"
 
-#: plugins/sudoers/set_perms.c:952
+#: plugins/sudoers/set_perms.c:955
 msgid "unable to set runas group vector"
 msgstr "kan ikke angive kør som gruppevektor"
 
@@ -974,57 +956,57 @@ msgstr "Bruger %s må ikke køre de følgende kommandoer på denne vært:\n"
 msgid "User %s is not allowed to run sudo on %s.\n"
 msgstr "Bruger %s har ikke tilladelse til at køre sudo på %s.\n"
 
-#: plugins/sudoers/sudoers.c:198 plugins/sudoers/sudoers.c:233
-#: plugins/sudoers/sudoers.c:907
+#: plugins/sudoers/sudoers.c:199 plugins/sudoers/sudoers.c:234
+#: plugins/sudoers/sudoers.c:911
 msgid "problem with defaults entries"
 msgstr "problem med standardpunkter"
 
-#: plugins/sudoers/sudoers.c:202
+#: plugins/sudoers/sudoers.c:203
 #, c-format
 msgid "no valid sudoers sources found, quitting"
 msgstr "ingen gyldige sudoerskilder fundet, afslutter"
 
-#: plugins/sudoers/sudoers.c:256
+#: plugins/sudoers/sudoers.c:257
 #, c-format
 msgid "unable to execute %s: %s"
 msgstr "kan ikke udføre %s: %s"
 
-#: plugins/sudoers/sudoers.c:305
+#: plugins/sudoers/sudoers.c:306
 #, c-format
 msgid "sudoers specifies that root is not allowed to sudo"
 msgstr "sudoers angiver at administrator (root) ikke har tilladelse til sudo"
 
-#: plugins/sudoers/sudoers.c:312
+#: plugins/sudoers/sudoers.c:313
 #, c-format
 msgid "you are not permitted to use the -C option"
 msgstr "du har ikke tilladelse til at bruge tilvalget -C"
 
-#: plugins/sudoers/sudoers.c:402
+#: plugins/sudoers/sudoers.c:403
 #, c-format
 msgid "timestamp owner (%s): No such user"
 msgstr "tidsstempelejer (%s): Ingen sådan bruger"
 
-#: plugins/sudoers/sudoers.c:418
+#: plugins/sudoers/sudoers.c:419
 msgid "no tty"
 msgstr "ingen tty"
 
-#: plugins/sudoers/sudoers.c:419
+#: plugins/sudoers/sudoers.c:420
 #, c-format
 msgid "sorry, you must have a tty to run sudo"
 msgstr "beklager, du skal bruge en tty for at køre sudo"
 
-#: plugins/sudoers/sudoers.c:462
+#: plugins/sudoers/sudoers.c:463
 msgid "No user or host"
 msgstr "Ingen bruger eller vært"
 
-#: plugins/sudoers/sudoers.c:476 plugins/sudoers/sudoers.c:497
-#: plugins/sudoers/sudoers.c:498 plugins/sudoers/sudoers.c:1452
-#: plugins/sudoers/sudoers.c:1453
+#: plugins/sudoers/sudoers.c:477 plugins/sudoers/sudoers.c:498
+#: plugins/sudoers/sudoers.c:499 plugins/sudoers/sudoers.c:1465
+#: plugins/sudoers/sudoers.c:1466
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: Kommando ikke fundet"
 
-#: plugins/sudoers/sudoers.c:478 plugins/sudoers/sudoers.c:494
+#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:495
 #, c-format
 msgid ""
 "ignoring `%s' found in '.'\n"
@@ -1033,95 +1015,95 @@ msgstr ""
 "ignorerer »%s« fundet i ».«\n"
 "Brug »sudo ./%s« hvis dette er »%s«, du ønsker at køre."
 
-#: plugins/sudoers/sudoers.c:483
+#: plugins/sudoers/sudoers.c:484
 msgid "validation failure"
 msgstr "valideringsfejl"
 
-#: plugins/sudoers/sudoers.c:493
+#: plugins/sudoers/sudoers.c:494
 msgid "command in current directory"
 msgstr "kommando i aktuel mappe"
 
-#: plugins/sudoers/sudoers.c:505
+#: plugins/sudoers/sudoers.c:506
 #, c-format
 msgid "sorry, you are not allowed to preserve the environment"
 msgstr "beklager men du har ikke tilladelse til at bevare miljøet"
 
-#: plugins/sudoers/sudoers.c:890
+#: plugins/sudoers/sudoers.c:894
 #, c-format
 msgid "internal error, set_cmnd() overflow"
 msgstr "intern fejl, set_cmnd()-overløb"
 
-#: plugins/sudoers/sudoers.c:935
+#: plugins/sudoers/sudoers.c:936
 #, c-format
 msgid "fixed mode on %s"
 msgstr "fast tilstand på %s"
 
-#: plugins/sudoers/sudoers.c:939
+#: plugins/sudoers/sudoers.c:940
 #, c-format
 msgid "set group on %s"
 msgstr "angiv gruppe på %s"
 
-#: plugins/sudoers/sudoers.c:942
+#: plugins/sudoers/sudoers.c:943
 #, c-format
 msgid "unable to set group on %s"
 msgstr "kan ikke angive gruppe på %s"
 
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:946
 #, c-format
 msgid "unable to fix mode on %s"
 msgstr "kan ikke rette tilstand på %s"
 
-#: plugins/sudoers/sudoers.c:958
+#: plugins/sudoers/sudoers.c:959
 #, c-format
 msgid "%s is not a regular file"
 msgstr "%s er ikke en regulær fil"
 
-#: plugins/sudoers/sudoers.c:960
+#: plugins/sudoers/sudoers.c:961
 #, c-format
 msgid "%s is mode 0%o, should be 0%o"
 msgstr "%s er tilstand 0%o, bør være 0%o"
 
-#: plugins/sudoers/sudoers.c:964
+#: plugins/sudoers/sudoers.c:965
 #, c-format
 msgid "%s is owned by uid %u, should be %u"
 msgstr "%s er ejet af uid %u, bør være %u"
 
-#: plugins/sudoers/sudoers.c:967
+#: plugins/sudoers/sudoers.c:968
 #, c-format
 msgid "%s is owned by gid %u, should be %u"
 msgstr "%s er eget af gid %u, bør være %u"
 
-#: plugins/sudoers/sudoers.c:1011
+#: plugins/sudoers/sudoers.c:1012
 #, c-format
 msgid "only root can use `-c %s'"
 msgstr "kun administrator (root) kan bruge »-c %s«"
 
-#: plugins/sudoers/sudoers.c:1021
+#: plugins/sudoers/sudoers.c:1022
 #, c-format
 msgid "unknown login class: %s"
 msgstr "ukendt logindklasse: %s"
 
-#: plugins/sudoers/sudoers.c:1055
+#: plugins/sudoers/sudoers.c:1056
 #, c-format
 msgid "unable to resolve host %s"
 msgstr "kan ikke slå vært %s op"
 
-#: plugins/sudoers/sudoers.c:1105 plugins/sudoers/testsudoers.c:342
+#: plugins/sudoers/sudoers.c:1106 plugins/sudoers/testsudoers.c:351
 #, c-format
 msgid "unknown group: %s"
 msgstr "ukendt gruppe: %s"
 
-#: plugins/sudoers/sudoers.c:1137
+#: plugins/sudoers/sudoers.c:1150
 #, c-format
 msgid "Sudoers policy plugin version %s\n"
 msgstr "Udvidelsesmodulversion %s for sudoerspolitik\n"
 
-#: plugins/sudoers/sudoers.c:1139
+#: plugins/sudoers/sudoers.c:1152
 #, c-format
 msgid "Sudoers file grammar version %d\n"
 msgstr "Grammatikversion %d for sudoersfil\n"
 
-#: plugins/sudoers/sudoers.c:1143
+#: plugins/sudoers/sudoers.c:1156
 #, c-format
 msgid ""
 "\n"
@@ -1130,17 +1112,17 @@ msgstr ""
 "\n"
 "Sudoers-sti: %s\n"
 
-#: plugins/sudoers/sudoers.c:1146
+#: plugins/sudoers/sudoers.c:1159
 #, c-format
 msgid "nsswitch path: %s\n"
 msgstr "nsswitch-sti: %s\n"
 
-#: plugins/sudoers/sudoers.c:1148
+#: plugins/sudoers/sudoers.c:1161
 #, c-format
 msgid "ldap.conf path: %s\n"
 msgstr "ldap.conf-sti: %s\n"
 
-#: plugins/sudoers/sudoers.c:1149
+#: plugins/sudoers/sudoers.c:1162
 #, c-format
 msgid "ldap.secret path: %s\n"
 msgstr "ldap.secret-sti: %s\n"
@@ -1302,16 +1284,16 @@ msgstr ""
 "  -s hastighedsfaktor øg eller sænk uddata\n"
 "  -V                  vis versionsinformation og afslut"
 
-#: plugins/sudoers/testsudoers.c:228
+#: plugins/sudoers/testsudoers.c:230
 #, c-format
 msgid "internal error, init_vars() overflow"
 msgstr "intern fejl, init_vars()-overløb"
 
-#: plugins/sudoers/testsudoers.c:304
+#: plugins/sudoers/testsudoers.c:309
 msgid "\thost  unmatched"
 msgstr "\thost  matchede ikke"
 
-#: plugins/sudoers/testsudoers.c:307
+#: plugins/sudoers/testsudoers.c:312
 msgid ""
 "\n"
 "Command allowed"
@@ -1319,7 +1301,7 @@ msgstr ""
 "\n"
 "Kommando tilladt"
 
-#: plugins/sudoers/testsudoers.c:308
+#: plugins/sudoers/testsudoers.c:313
 msgid ""
 "\n"
 "Command denied"
@@ -1327,7 +1309,7 @@ msgstr ""
 "\n"
 "Kommando nægtet"
 
-#: plugins/sudoers/testsudoers.c:308
+#: plugins/sudoers/testsudoers.c:313
 msgid ""
 "\n"
 "Command unmatched"
@@ -1358,81 +1340,81 @@ msgstr "%s grammatikversion %d\n"
 msgid "you do not exist in the %s database"
 msgstr "du findes ikke i %s-databasen"
 
-#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:470
+#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:518
 #, c-format
 msgid "press return to edit %s: "
 msgstr "tryk retur for at redigere %s: "
 
-#: plugins/sudoers/visudo.c:300 plugins/sudoers/visudo.c:306
+#: plugins/sudoers/visudo.c:320 plugins/sudoers/visudo.c:326
 #, c-format
 msgid "write error"
 msgstr "skrivefejl"
 
-#: plugins/sudoers/visudo.c:360
+#: plugins/sudoers/visudo.c:408
 #, c-format
 msgid "unable to stat temporary file (%s), %s unchanged"
 msgstr "kan ikke stat midlertidig fil (%s), %s unchanged"
 
-#: plugins/sudoers/visudo.c:365
+#: plugins/sudoers/visudo.c:413
 #, c-format
 msgid "zero length temporary file (%s), %s unchanged"
 msgstr "midlertidig fil med nullængde (%s), %s uændret"
 
-#: plugins/sudoers/visudo.c:371
+#: plugins/sudoers/visudo.c:419
 #, c-format
 msgid "editor (%s) failed, %s unchanged"
 msgstr "redigeringsprogram (%s) fejlede, %s uændret"
 
-#: plugins/sudoers/visudo.c:394
+#: plugins/sudoers/visudo.c:442
 #, c-format
 msgid "%s unchanged"
 msgstr "%s uændret"
 
-#: plugins/sudoers/visudo.c:418
+#: plugins/sudoers/visudo.c:466
 #, c-format
 msgid "unable to re-open temporary file (%s), %s unchanged."
 msgstr "kan ikke genåbne midlertidig fil (%s), %s uændrede."
 
-#: plugins/sudoers/visudo.c:428
+#: plugins/sudoers/visudo.c:476
 #, c-format
 msgid "unabled to parse temporary file (%s), unknown error"
 msgstr "kan ikke fortolke midlertidig fil (%s), ukendt fejl"
 
-#: plugins/sudoers/visudo.c:463
+#: plugins/sudoers/visudo.c:511
 #, c-format
 msgid "internal error, unable to find %s in list!"
 msgstr "intern fejl, kan ikke finde %s på listen!"
 
-#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:511
+#: plugins/sudoers/visudo.c:546 plugins/sudoers/visudo.c:555
 #, c-format
-msgid "unable to set (uid, gid) of %s to (%d, %d)"
-msgstr "kan ikke angive (uid, gid) af %s til (%d, %d)"
+msgid "unable to set (uid, gid) of %s to (%u, %u)"
+msgstr "kan ikke angive (uid, gid) af %s til (%u, %u)"
 
-#: plugins/sudoers/visudo.c:506 plugins/sudoers/visudo.c:516
+#: plugins/sudoers/visudo.c:550 plugins/sudoers/visudo.c:560
 #, c-format
 msgid "unable to change mode of %s to 0%o"
 msgstr "kan ikke ændre tilstand på %s til 0%o"
 
-#: plugins/sudoers/visudo.c:533
+#: plugins/sudoers/visudo.c:577
 #, c-format
 msgid "%s and %s not on the same file system, using mv to rename"
 msgstr "%s og %s er ikke på det samme filsystem, bruger mv til at omdøbe"
 
-#: plugins/sudoers/visudo.c:547
+#: plugins/sudoers/visudo.c:591
 #, c-format
 msgid "command failed: '%s %s %s', %s unchanged"
 msgstr "kommando fejlede: »%s %s %s«, %s uændret"
 
-#: plugins/sudoers/visudo.c:557
+#: plugins/sudoers/visudo.c:601
 #, c-format
 msgid "error renaming %s, %s unchanged"
 msgstr "fejl under omdøbing af %s, %s uændret"
 
-#: plugins/sudoers/visudo.c:617
+#: plugins/sudoers/visudo.c:661
 msgid "What now? "
 msgstr "Hvad nu? "
 
-#: plugins/sudoers/visudo.c:631
+#: plugins/sudoers/visudo.c:675
 msgid ""
 "Options are:\n"
 "  (e)dit sudoers file again\n"
@@ -1444,92 +1426,92 @@ msgstr ""
 "  afslut(x) uden at gemme ændringer til sudoersfil\n"
 "  afslut(Q) og gem ændringer til sudoersfil (FARLIGT!)\n"
 
-#: plugins/sudoers/visudo.c:668
+#: plugins/sudoers/visudo.c:712
 #, c-format
 msgid "unable to execute %s"
 msgstr "kan ikke udføre %s"
 
-#: plugins/sudoers/visudo.c:675
+#: plugins/sudoers/visudo.c:719
 #, c-format
 msgid "unable to run %s"
 msgstr "kan ikke køre %s"
 
-#: plugins/sudoers/visudo.c:706
+#: plugins/sudoers/visudo.c:750
 #, c-format
 msgid "failed to parse %s file, unknown error"
 msgstr "kunne ikke fortolke %s-fil, ukendt fejl"
 
-#: plugins/sudoers/visudo.c:718
+#: plugins/sudoers/visudo.c:762
 #, c-format
 msgid "parse error in %s near line %d\n"
 msgstr "fortolkningsfejl i %s nær linje %d\n"
 
-#: plugins/sudoers/visudo.c:721
+#: plugins/sudoers/visudo.c:765
 #, c-format
 msgid "parse error in %s\n"
 msgstr "fortolkningsfejl i %s\n"
 
-#: plugins/sudoers/visudo.c:723
+#: plugins/sudoers/visudo.c:767
 #, c-format
 msgid "%s: parsed OK\n"
 msgstr "%s: fortolket o.k.\n"
 
-#: plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:776
 #, c-format
-msgid "%s: wrong owner (uid, gid) should be (%d, %d)\n"
-msgstr "%s: forkert ejer (uid, gid) bør være (%d, %d)\n"
+msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
+msgstr "%s: forkert ejer (uid, gid) bør være (%u, %u)\n"
 
-#: plugins/sudoers/visudo.c:744
+#: plugins/sudoers/visudo.c:783
 #, c-format
 msgid "%s: bad permissions, should be mode 0%o\n"
 msgstr "%s: ugyldige rettigheder, bør være tilstand 0%o\n"
 
-#: plugins/sudoers/visudo.c:783
+#: plugins/sudoers/visudo.c:822
 #, c-format
 msgid "%s busy, try again later"
 msgstr "%s travl, forsøg igen senere"
 
-#: plugins/sudoers/visudo.c:826
+#: plugins/sudoers/visudo.c:865
 #, c-format
 msgid "specified editor (%s) doesn't exist"
 msgstr "angivet redigeringsprogram (%s) findes ikke"
 
-#: plugins/sudoers/visudo.c:849
+#: plugins/sudoers/visudo.c:888
 #, c-format
 msgid "unable to stat editor (%s)"
 msgstr "kan ikke stat redigeringsprogram (%s)"
 
-#: plugins/sudoers/visudo.c:897
+#: plugins/sudoers/visudo.c:936
 #, c-format
 msgid "no editor found (editor path = %s)"
 msgstr "intet redigeringsprogram fundet (sti for redigeringsprogram = %s)"
 
-#: plugins/sudoers/visudo.c:986
+#: plugins/sudoers/visudo.c:1025
 #, c-format
 msgid "Error: cycle in %s_Alias `%s'"
 msgstr "Fejl: Cyklus i %s_Alias »%s«"
 
-#: plugins/sudoers/visudo.c:987
+#: plugins/sudoers/visudo.c:1026
 #, c-format
 msgid "Warning: cycle in %s_Alias `%s'"
 msgstr "Advarsel: Cyklus i %s_Alias »%s«"
 
-#: plugins/sudoers/visudo.c:990
+#: plugins/sudoers/visudo.c:1029
 #, c-format
 msgid "Error: %s_Alias `%s' referenced but not defined"
 msgstr "Fejl: %s_Alias »%s« refereret men ikke defineret"
 
-#: plugins/sudoers/visudo.c:991
+#: plugins/sudoers/visudo.c:1030
 #, c-format
 msgid "Warning: %s_Alias `%s' referenced but not defined"
 msgstr "Advarsel: %s_Alias »%s« refereret men ikke defineret"
 
-#: plugins/sudoers/visudo.c:1128
+#: plugins/sudoers/visudo.c:1167
 #, c-format
 msgid "%s: unused %s_Alias %s"
 msgstr "%s: ubrugt %s_Alias %s"
 
-#: plugins/sudoers/visudo.c:1185
+#: plugins/sudoers/visudo.c:1224
 #, c-format
 msgid ""
 "%s - safely edit the sudoers file\n"
@@ -1538,7 +1520,7 @@ msgstr ""
 "%s - rediger sikkert sudoersfilen\n"
 "\n"
 
-#: plugins/sudoers/visudo.c:1187
+#: plugins/sudoers/visudo.c:1226
 msgid ""
 "\n"
 "Options:\n"
@@ -1740,3 +1722,16 @@ msgstr[1] "%d ukorrekte adgangskodeforsøg"
 #: plugins/sudoers/auth/sudo_auth.c:335
 msgid "Authentication methods:"
 msgstr "Godkendelsesmetoder:"
+
+#~ msgid ""
+#~ "Available options in a sudoers ``Defaults'' line:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Tilgængelige indstillinger i en sudoers »standardlinje«:\n"
+#~ "\n"
+
+#~ msgid "%s: %s\n"
+#~ msgstr "%s: %s\n"
+
+#~ msgid "%s: %.*s\n"
+#~ msgstr "%s: %.*s\n"
diff --git a/plugins/sudoers/po/eo.mo b/plugins/sudoers/po/eo.mo
new file mode 100644 (file)
index 0000000..fc6748a
Binary files /dev/null and b/plugins/sudoers/po/eo.mo differ
diff --git a/plugins/sudoers/po/eo.po b/plugins/sudoers/po/eo.po
new file mode 100644 (file)
index 0000000..d73936b
--- /dev/null
@@ -0,0 +1,1711 @@
+# Esperanto translations for sudo package.
+# This file is put in the public domain.
+# Keith Bowes <zooplah@gmail.com>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sudoers 1.8.3rc1\n"
+"Report-Msgid-Bugs-To: http://www.sudo.ws/bugs\n"
+"POT-Creation-Date: 2011-09-16 16:52-0400\n"
+"PO-Revision-Date: 2011-09-17 20:40-0400\n"
+"Last-Translator: Keith Bowes <zooplah@gmail.com>\n"
+"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: plugins/sudoers/alias.c:122
+#, c-format
+msgid "Alias `%s' already defined"
+msgstr "Kromnomo '%s' jam ekzistas"
+
+#: plugins/sudoers/bsm_audit.c:58 plugins/sudoers/bsm_audit.c:61
+#: plugins/sudoers/bsm_audit.c:109 plugins/sudoers/bsm_audit.c:113
+#: plugins/sudoers/bsm_audit.c:163 plugins/sudoers/bsm_audit.c:167
+msgid "getaudit: failed"
+msgstr "getaudit: malsukcesis"
+
+#: plugins/sudoers/bsm_audit.c:87 plugins/sudoers/bsm_audit.c:148
+msgid "Could not determine audit condition"
+msgstr "Ne eblis determini aŭdan kondiĉon"
+
+#: plugins/sudoers/bsm_audit.c:98
+msgid "getauid failed"
+msgstr "getauid: malsukcesis"
+
+#: plugins/sudoers/bsm_audit.c:100 plugins/sudoers/bsm_audit.c:157
+msgid "au_open: failed"
+msgstr "au_open: malsukcesis"
+
+#: plugins/sudoers/bsm_audit.c:115 plugins/sudoers/bsm_audit.c:169
+msgid "au_to_subject: failed"
+msgstr "au_to_subject: malsukcesis"
+
+#: plugins/sudoers/bsm_audit.c:119 plugins/sudoers/bsm_audit.c:173
+msgid "au_to_exec_args: failed"
+msgstr "au_to_exec_args: malsukcesis"
+
+#: plugins/sudoers/bsm_audit.c:123 plugins/sudoers/bsm_audit.c:182
+msgid "au_to_return32: failed"
+msgstr "getaudit: malsukcesis"
+
+#: plugins/sudoers/bsm_audit.c:126 plugins/sudoers/bsm_audit.c:185
+msgid "unable to commit audit record"
+msgstr "ne eblis konservi aŭdan rekordon"
+
+#: plugins/sudoers/bsm_audit.c:155
+msgid "getauid: failed"
+msgstr "getauid: malsukcesis"
+
+#: plugins/sudoers/bsm_audit.c:178
+msgid "au_to_text: failed"
+msgstr "au_to_text: malsukcesis"
+
+#: plugins/sudoers/check.c:141
+#, c-format
+msgid "sorry, a password is required to run %s"
+msgstr "bedaŭri pasvorto estas bezonata por plenumi: %s"
+
+#: plugins/sudoers/check.c:225 plugins/sudoers/iolog.c:169
+#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoreplay.c:325
+#: plugins/sudoers/sudoreplay.c:334 plugins/sudoers/sudoreplay.c:675
+#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:744
+#, c-format
+msgid "unable to open %s"
+msgstr "ne eblas malfermi: %s"
+
+#: plugins/sudoers/check.c:229 plugins/sudoers/iolog.c:199
+#, c-format
+msgid "unable to write to %s"
+msgstr "ne eblas skribi al %s"
+
+#: plugins/sudoers/check.c:237 plugins/sudoers/check.c:475
+#: plugins/sudoers/check.c:525 plugins/sudoers/iolog.c:122
+#: plugins/sudoers/iolog.c:153
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "ne eblas mkdir-i: %s"
+
+#: plugins/sudoers/check.c:370
+#, c-format
+msgid "internal error, expand_prompt() overflow"
+msgstr "ena eraro, expand_prompte() superfluo"
+
+#: plugins/sudoers/check.c:426
+#, c-format
+msgid "timestamp path too long: %s"
+msgstr "tempo-indikila pado tro longa: %s"
+
+#: plugins/sudoers/check.c:454 plugins/sudoers/check.c:498
+#: plugins/sudoers/iolog.c:155
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s ekzistas sed ne dosierujo (0%o)"
+
+#: plugins/sudoers/check.c:457 plugins/sudoers/check.c:501
+#: plugins/sudoers/check.c:546
+#, c-format
+msgid "%s owned by uid %u, should be uid %u"
+msgstr "%s estas estrita de uid %u, devas esti uid %u"
+
+#: plugins/sudoers/check.c:462 plugins/sudoers/check.c:506
+#, c-format
+msgid "%s writable by non-owner (0%o), should be mode 0700"
+msgstr "%s skribebla de ne-estro (0%o), devas esti reĝimo 0700"
+
+#: plugins/sudoers/check.c:470 plugins/sudoers/check.c:514
+#: plugins/sudoers/check.c:582 plugins/sudoers/sudoers.c:957
+#: plugins/sudoers/visudo.c:304 plugins/sudoers/visudo.c:544
+#, c-format
+msgid "unable to stat %s"
+msgstr "ne eblas stat-i: %s"
+
+#: plugins/sudoers/check.c:540
+#, c-format
+msgid "%s exists but is not a regular file (0%o)"
+msgstr "%s ekzistas sed ne estas regula dosiero (0%o)"
+
+#: plugins/sudoers/check.c:552
+#, c-format
+msgid "%s writable by non-owner (0%o), should be mode 0600"
+msgstr "%s skribebla de ne-estro (0%o), devas esti reĝimo 0600"
+
+#: plugins/sudoers/check.c:606
+#, c-format
+msgid "timestamp too far in the future: %20.20s"
+msgstr "tempo-indikilo tro estonte: %20.20s"
+
+#: plugins/sudoers/check.c:652
+#, c-format
+msgid "unable to remove %s (%s), will reset to the epoch"
+msgstr "ne eblas forigi: %s (%s); restarigos al la epoko"
+
+#: plugins/sudoers/check.c:660
+#, c-format
+msgid "unable to reset %s to the epoch"
+msgstr "ne eblas restarigi al la epoko: %s"
+
+#: plugins/sudoers/check.c:714 plugins/sudoers/check.c:720
+#, c-format
+msgid "unknown uid: %u"
+msgstr "nekonata uid: %u"
+
+#: plugins/sudoers/check.c:717 plugins/sudoers/sudoers.c:748
+#: plugins/sudoers/sudoers.c:814 plugins/sudoers/sudoers.c:815
+#: plugins/sudoers/sudoers.c:1088 plugins/sudoers/testsudoers.c:202
+#: plugins/sudoers/testsudoers.c:337
+#, c-format
+msgid "unknown user: %s"
+msgstr "nekonata uzanto: %s"
+
+#: plugins/sudoers/def_data.c:27
+#, c-format
+msgid "Syslog facility if syslog is being used for logging: %s"
+msgstr "Syslog-trajto se syslog estas uzata por protokoli: %s"
+
+#: plugins/sudoers/def_data.c:31
+#, c-format
+msgid "Syslog priority to use when user authenticates successfully: %s"
+msgstr "Syslog-prioritato por uzi, kiam uzanta sukcese konstatas: %s"
+
+#: plugins/sudoers/def_data.c:35
+#, c-format
+msgid "Syslog priority to use when user authenticates unsuccessfully: %s"
+msgstr "Syslog-prioritato por uzi kiam uzanto malsukcese konstatas: %s"
+
+#: plugins/sudoers/def_data.c:39
+msgid "Put OTP prompt on its own line"
+msgstr "Meti OTP-demandilon en sia propra linio"
+
+#: plugins/sudoers/def_data.c:43
+msgid "Ignore '.' in $PATH"
+msgstr "Ignoro punkton en $PATH"
+
+#: plugins/sudoers/def_data.c:47
+msgid "Always send mail when sudo is run"
+msgstr "Ĉiam sendi retmesaĝon kiam sudo plenumiĝas"
+
+#: plugins/sudoers/def_data.c:51
+msgid "Send mail if user authentication fails"
+msgstr "Sendi retmesaĝon se uzanto-konstato malsukcesas"
+
+#: plugins/sudoers/def_data.c:55
+msgid "Send mail if the user is not in sudoers"
+msgstr "Sendi retmesaĝon se la uzanto ne estas en sudoers"
+
+#: plugins/sudoers/def_data.c:59
+msgid "Send mail if the user is not in sudoers for this host"
+msgstr "Sendi retmesaĝon se la uzanto ne estas en sudors por la gastiganto"
+
+#: plugins/sudoers/def_data.c:63
+msgid "Send mail if the user is not allowed to run a command"
+msgstr "Sendi retmesaĝon se la uzanto ne estas permesata plenumigi komandon"
+
+#: plugins/sudoers/def_data.c:67
+msgid "Use a separate timestamp for each user/tty combo"
+msgstr "Uzi apartan tempo-indikilon por ĉiu uzanto/tty-kombino"
+
+#: plugins/sudoers/def_data.c:71
+msgid "Lecture user the first time they run sudo"
+msgstr "Averti uzanton dum la unua fojo ĝi plenumigas je sudo"
+
+#: plugins/sudoers/def_data.c:75
+#, c-format
+msgid "File containing the sudo lecture: %s"
+msgstr "Dosiero havanta la sudo-averton: %s"
+
+#: plugins/sudoers/def_data.c:79
+msgid "Require users to authenticate by default"
+msgstr "Postulas, ke uzantoj konstatas aŭtomate"
+
+#: plugins/sudoers/def_data.c:83
+msgid "Root may run sudo"
+msgstr "Radiko rajtas plenumigi: sudo"
+
+#: plugins/sudoers/def_data.c:87
+msgid "Log the hostname in the (non-syslog) log file"
+msgstr "Protokoli la gastignomon en la (ne syslog) protokolo"
+
+#: plugins/sudoers/def_data.c:91
+msgid "Log the year in the (non-syslog) log file"
+msgstr "Protokoli la jaron en la (ne syslog) protokolo"
+
+#: plugins/sudoers/def_data.c:95
+msgid "If sudo is invoked with no arguments, start a shell"
+msgstr "Se sudo estas vokata kun neniuj parametroj, komencu ŝelon"
+
+#: plugins/sudoers/def_data.c:99
+msgid "Set $HOME to the target user when starting a shell with -s"
+msgstr "Valorizi medivariablon $HOME al la cela uzanto dum komenci ŝelon kun -s"
+
+#: plugins/sudoers/def_data.c:103
+msgid "Always set $HOME to the target user's home directory"
+msgstr "Ĉiam valorizi medivariablon $HOME al la hejma dosierujo de la cela uzanto"
+
+#: plugins/sudoers/def_data.c:107
+msgid "Allow some information gathering to give useful error messages"
+msgstr "Permesi, ke iu informokolektado por doni utilajn eraromesaĝojn"
+
+#: plugins/sudoers/def_data.c:111
+msgid "Require fully-qualified hostnames in the sudoers file"
+msgstr "Postuli tute kvalifikitajn gastiganto-nomojn en la dosiero sudoers"
+
+#: plugins/sudoers/def_data.c:115
+msgid "Insult the user when they enter an incorrect password"
+msgstr "Insulti la uzanton, kiam si enmetas malĝustan pasvorton"
+
+#: plugins/sudoers/def_data.c:119
+msgid "Only allow the user to run sudo if they have a tty"
+msgstr "Nur permesi, ke uzanto plenumigu sudo-on se si havas tty-on"
+
+#: plugins/sudoers/def_data.c:123
+msgid "Visudo will honor the EDITOR environment variable"
+msgstr "Visudo honoru la medivariablon EDITOR"
+
+#: plugins/sudoers/def_data.c:127
+msgid "Prompt for root's password, not the users's"
+msgstr "Peti la ĉefuzantan pasvorton, ne la uzanto-pasvorton"
+
+#: plugins/sudoers/def_data.c:131
+msgid "Prompt for the runas_default user's password, not the users's"
+msgstr "Peti la pasvorton de runas_default, ne de la uzanto"
+
+#: plugins/sudoers/def_data.c:135
+msgid "Prompt for the target user's password, not the users's"
+msgstr "Peti la pasvorton de la cela uzanto, ne la nuna uzanto"
+
+#: plugins/sudoers/def_data.c:139
+msgid "Apply defaults in the target user's login class if there is one"
+msgstr "Apliki aŭtomataĵojn en la ensaluta klaso de la cela uzanto, se ĝi ekzistas"
+
+#: plugins/sudoers/def_data.c:143
+msgid "Set the LOGNAME and USER environment variables"
+msgstr "Valorizi la medivariablojn LOGNAME kaj USER"
+
+#: plugins/sudoers/def_data.c:147
+msgid "Only set the effective uid to the target user, not the real uid"
+msgstr "Nur valorizi la efikan uid-on al la cela uzanto, ne la realan uid-on"
+
+#: plugins/sudoers/def_data.c:151
+msgid "Don't initialize the group vector to that of the target user"
+msgstr "Ne iniciati la grupon vektoron al tio de la cela uzanto"
+
+#: plugins/sudoers/def_data.c:155
+#, c-format
+msgid "Length at which to wrap log file lines (0 for no wrap): %d"
+msgstr "Longo je kiu linfaldi la protokolon (0 por senfalda): %d"
+
+#: plugins/sudoers/def_data.c:159
+#, c-format
+msgid "Authentication timestamp timeout: %.1f minutes"
+msgstr "Eksvalidiĝo de la konstata tempo-indikilo: %.1f minutoj"
+
+#: plugins/sudoers/def_data.c:163
+#, c-format
+msgid "Password prompt timeout: %.1f minutes"
+msgstr "Eksvalidiĝo de la pasvortilo: %.1f minutoj"
+
+#: plugins/sudoers/def_data.c:167
+#, c-format
+msgid "Number of tries to enter a password: %d"
+msgstr "Nombro da provoj por enmeti pasvorton: %d"
+
+#: plugins/sudoers/def_data.c:171
+#, c-format
+msgid "Umask to use or 0777 to use user's: 0%o"
+msgstr "Umask uzi aŭ 07777 por uzi uzanton: 0%o"
+
+#: plugins/sudoers/def_data.c:175
+#, c-format
+msgid "Path to log file: %s"
+msgstr "Pado al protokolo: %s"
+
+#: plugins/sudoers/def_data.c:179
+#, c-format
+msgid "Path to mail program: %s"
+msgstr "Pado al retpoŝtilo: %s"
+
+#: plugins/sudoers/def_data.c:183
+#, c-format
+msgid "Flags for mail program: %s"
+msgstr "Parametroj por retpoŝtilo: %s"
+
+#: plugins/sudoers/def_data.c:187
+#, c-format
+msgid "Address to send mail to: %s"
+msgstr "Retpoŝtadreso adresata: %s"
+
+#: plugins/sudoers/def_data.c:191
+#, c-format
+msgid "Address to send mail from: %s"
+msgstr "Retpoŝtadreso adresanta: %s"
+
+#: plugins/sudoers/def_data.c:195
+#, c-format
+msgid "Subject line for mail messages: %s"
+msgstr "Subjekta linio por ĉiuj mesaĝoj: %s"
+
+#: plugins/sudoers/def_data.c:199
+#, c-format
+msgid "Incorrect password message: %s"
+msgstr "Neĝusta pasvorta mesaĝo: %s"
+
+#: plugins/sudoers/def_data.c:203
+#, c-format
+msgid "Path to authentication timestamp dir: %s"
+msgstr "Pado al dosierujo de konstata tempostampo: %s"
+
+#: plugins/sudoers/def_data.c:207
+#, c-format
+msgid "Owner of the authentication timestamp dir: %s"
+msgstr "Estro de la dosierujo de konstata tempostampo: %s"
+
+#: plugins/sudoers/def_data.c:211
+#, c-format
+msgid "Users in this group are exempt from password and PATH requirements: %s"
+msgstr "Uzantoj en la grupo en devas plenumi la postulojn de posvorto kaj PATH: %s"
+
+#: plugins/sudoers/def_data.c:215
+#, c-format
+msgid "Default password prompt: %s"
+msgstr "Defaŭlta pasvorta peto: %s"
+
+#: plugins/sudoers/def_data.c:219
+msgid "If set, passprompt will override system prompt in all cases."
+msgstr "Se aktivigita, passprompt superregas sistemajn invitojn ĉiuokaze."
+
+#: plugins/sudoers/def_data.c:223
+#, c-format
+msgid "Default user to run commands as: %s"
+msgstr "Defaŭlta uzanto por plenumigi komandojn: %s"
+
+#: plugins/sudoers/def_data.c:227
+#, c-format
+msgid "Value to override user's $PATH with: %s"
+msgstr "Valoro per kiu superregi la PATH-on de uzanto: %s"
+
+#: plugins/sudoers/def_data.c:231
+#, c-format
+msgid "Path to the editor for use by visudo: %s"
+msgstr "Pado al la tekstoredaktilo uzota de visudo: %s"
+
+#: plugins/sudoers/def_data.c:235
+#, c-format
+msgid "When to require a password for 'list' pseudocommand: %s"
+msgstr "Kiam postuli pasvorton por la pseŭdokomando 'list': %s"
+
+#: plugins/sudoers/def_data.c:239
+#, c-format
+msgid "When to require a password for 'verify' pseudocommand: %s"
+msgstr "Kiam postuli pasvorton por la pseŭdokamando 'verify': %s"
+
+#: plugins/sudoers/def_data.c:243
+msgid "Preload the dummy exec functions contained in 'noexec_file'"
+msgstr "Anstaŭŝargi la falsan exec-funkciojn enhavatajn en 'noexec_file'"
+
+#: plugins/sudoers/def_data.c:247
+#, c-format
+msgid "File containing dummy exec functions: %s"
+msgstr "Dosiero enhavantaj falsajn exec-funkciojn: %s"
+
+#: plugins/sudoers/def_data.c:251
+msgid "If LDAP directory is up, do we ignore local sudoers file"
+msgstr "Se LDAP-dosierujo estas aktiva, ni ignoru la lokan suders-dosieron"
+
+#: plugins/sudoers/def_data.c:255
+#, c-format
+msgid "File descriptors >= %d will be closed before executing a command"
+msgstr "Dosiero-priskribiloj >= %d fermiĝos antaŭ ol plenumigi komandon"
+
+#: plugins/sudoers/def_data.c:259
+msgid "If set, users may override the value of `closefrom' with the -C option"
+msgstr "Se aktiva, uzantoj rajtas superregi la voloron de 'closefrom' per la parametro -C"
+
+#: plugins/sudoers/def_data.c:263
+msgid "Allow users to set arbitrary environment variables"
+msgstr "Permesi, ke uzantoj valorizu arbitrajn medivariablojn"
+
+#: plugins/sudoers/def_data.c:267
+msgid "Reset the environment to a default set of variables"
+msgstr "Restarigi la medion al apriora aro da variabloj"
+
+#: plugins/sudoers/def_data.c:271
+msgid "Environment variables to check for sanity:"
+msgstr "Medivariabloj por kontroli por sano:"
+
+#: plugins/sudoers/def_data.c:275
+msgid "Environment variables to remove:"
+msgstr "Medivariabloj por forigi:"
+
+#: plugins/sudoers/def_data.c:279
+msgid "Environment variables to preserve:"
+msgstr "Medivariabloj konservi:"
+
+#: plugins/sudoers/def_data.c:283
+#, c-format
+msgid "SELinux role to use in the new security context: %s"
+msgstr "SELinux-rolo por uzi en la nova sekureca kunteksto: %s"
+
+#: plugins/sudoers/def_data.c:287
+#, c-format
+msgid "SELinux type to use in the new security context: %s"
+msgstr "SELinux-tipo por uzi en la nova sekureca kunteksto: %s"
+
+#: plugins/sudoers/def_data.c:291
+#, c-format
+msgid "Path to the sudo-specific environment file: %s"
+msgstr "Pado al media dosiero specifa al sudo: %s"
+
+#: plugins/sudoers/def_data.c:295
+#, c-format
+msgid "Locale to use while parsing sudoers: %s"
+msgstr "Lokaĵaro por uzi dum analizi dosieron sudoers: %s"
+
+#: plugins/sudoers/def_data.c:299
+msgid "Allow sudo to prompt for a password even if it would be visisble"
+msgstr "Permesi, ke sudo peti pasvorton eĉ se ĝi estus nevidebla"
+
+#: plugins/sudoers/def_data.c:303
+msgid "Provide visual feedback at the password prompt when there is user input"
+msgstr "Doni vidajn indikojn je la pasvorta enmetanta kiam ekzistas enmeto"
+
+#: plugins/sudoers/def_data.c:307
+msgid "Use faster globbing that is less accurate but does not access the filesystem"
+msgstr "Uzi pli rapida kunigo, kiu estas malpli ĝusta sed ne atingas la dosiersistemon"
+
+#: plugins/sudoers/def_data.c:311
+msgid "The umask specified in sudoers will override the user's, even if it is more permissive"
+msgstr "La umask specifa en sudors superregos tio de la uzanto, eĉ se ĝi estas pli permesema."
+
+#: plugins/sudoers/def_data.c:315
+msgid "Log user's input for the command being run"
+msgstr "Protokoli enmeton de uzanto por la komando, kiun si plenumigas"
+
+#: plugins/sudoers/def_data.c:319
+msgid "Log the output of the command being run"
+msgstr "Protokoli la eligon de la komando, kiu estas plenumiĝi"
+
+#: plugins/sudoers/def_data.c:323
+msgid "Compress I/O logs using zlib"
+msgstr "Kunpremi eneligaj protokoloj per  zlib"
+
+#: plugins/sudoers/def_data.c:327
+msgid "Always run commands in a pseudo-tty"
+msgstr "Ĉiam protokoli komandojn en pseŭda tty"
+
+#: plugins/sudoers/def_data.c:331
+msgid "Plugin for non-Unix group support"
+msgstr "Kromprogramo por kompreno de ne-uniksaj grupoj"
+
+#: plugins/sudoers/def_data.c:335
+msgid "Directory in which to store input/output logs"
+msgstr "Dosierujo en kiu konservi eneligaj protokoloj"
+
+#: plugins/sudoers/def_data.c:339
+msgid "File in which to store the input/output log"
+msgstr "Dosiero en kiu konservi la eneliga protokolo"
+
+#: plugins/sudoers/def_data.c:343
+msgid "Add an entry to the utmp/utmpx file when allocating a pty"
+msgstr "Aldoni eron al la utmp/utmpx-dosiero dum generi pty-on"
+
+#: plugins/sudoers/def_data.c:347
+msgid "Set the user in utmp to the runas user, not the invoking user"
+msgstr "Valorizi uzanton en utmp al la plenumigkiela uzanto, ne la vokanta uzanto"
+
+#: plugins/sudoers/defaults.c:205
+#, c-format
+msgid "unknown defaults entry `%s'"
+msgstr "nekonata ero '%s' en defaults"
+
+#: plugins/sudoers/defaults.c:213 plugins/sudoers/defaults.c:223
+#: plugins/sudoers/defaults.c:243 plugins/sudoers/defaults.c:256
+#: plugins/sudoers/defaults.c:269 plugins/sudoers/defaults.c:282
+#: plugins/sudoers/defaults.c:295 plugins/sudoers/defaults.c:315
+#: plugins/sudoers/defaults.c:325
+#, c-format
+msgid "value `%s' is invalid for option `%s'"
+msgstr "valoro '%s' estas nevalida por parametro '%s'"
+
+#: plugins/sudoers/defaults.c:216 plugins/sudoers/defaults.c:226
+#: plugins/sudoers/defaults.c:234 plugins/sudoers/defaults.c:251
+#: plugins/sudoers/defaults.c:264 plugins/sudoers/defaults.c:277
+#: plugins/sudoers/defaults.c:290 plugins/sudoers/defaults.c:310
+#: plugins/sudoers/defaults.c:321
+#, c-format
+msgid "no value specified for `%s'"
+msgstr "neniu valoro specifita por '%s'"
+
+#: plugins/sudoers/defaults.c:239
+#, c-format
+msgid "values for `%s' must start with a '/'"
+msgstr "Valoroj por '%s' devas komenciĝi per '/'"
+
+#: plugins/sudoers/defaults.c:301
+#, c-format
+msgid "option `%s' does not take a value"
+msgstr "parametro '%s' ne povas havi valoron"
+
+#: plugins/sudoers/env.c:259
+#, c-format
+msgid "internal error, sudo_setenv() overflow"
+msgstr "ena eraro, sudo_setenv() superfluo"
+
+#: plugins/sudoers/env.c:289
+#, c-format
+msgid "sudo_putenv: corrupted envp, length mismatch"
+msgstr "sudo_putenv: medio tro granda"
+
+#: plugins/sudoers/env.c:698
+#, c-format
+msgid "sorry, you are not allowed to set the following environment variables: %s"
+msgstr "bedaŭre vi ne estas permesata valorizi la jenajn medivariablojn: %s"
+
+#: plugins/sudoers/find_path.c:68 plugins/sudoers/find_path.c:107
+#: plugins/sudoers/find_path.c:122 plugins/sudoers/iolog.c:124
+#: plugins/sudoers/sudoers.c:903 toke.l:663 toke.l:814
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: gram.y:103
+#, c-format
+msgid ">>> %s: %s near line %d <<<"
+msgstr ">>> %s: %s apud linio %d <<<"
+
+#: plugins/sudoers/group_plugin.c:90
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: plugins/sudoers/group_plugin.c:102
+#, c-format
+msgid "%s must be owned by uid %d"
+msgstr "%s devas esti estrata de uid %d"
+
+#: plugins/sudoers/group_plugin.c:106
+#, c-format
+msgid "%s must only be writable by owner"
+msgstr "%s devas esti skribebla nur de estro"
+
+#: plugins/sudoers/group_plugin.c:113
+#, c-format
+msgid "unable to dlopen %s: %s"
+msgstr "ne eblas dlopen: %s: %s"
+
+#: plugins/sudoers/group_plugin.c:118
+#, c-format
+msgid "unable to find symbol \"group_plugin\" in %s"
+msgstr "ne eblas trovi simbolon \"group_plugin\" en %s"
+
+#: plugins/sudoers/group_plugin.c:123
+#, c-format
+msgid "%s: incompatible group plugin major version %d, expected %d"
+msgstr "%s: nekongrua grupa kromprogramo: ĉefa eldono %d, atendita %d"
+
+#: plugins/sudoers/interfaces.c:109
+msgid "Local IP address and netmask pairs:\n"
+msgstr "Loka IP-adresa kaj retmaska paroj:\n"
+
+#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:978
+#, c-format
+msgid "unable to read %s"
+msgstr "ne eblas legi %s"
+
+#: plugins/sudoers/iolog.c:179
+#, c-format
+msgid "invalid sequence number %s"
+msgstr "nevalida sinsekva numero %s"
+
+#: plugins/sudoers/iolog.c:225 plugins/sudoers/iolog.c:228
+#: plugins/sudoers/iolog.c:478 plugins/sudoers/iolog.c:483
+#: plugins/sudoers/iolog.c:489 plugins/sudoers/iolog.c:497
+#: plugins/sudoers/iolog.c:505 plugins/sudoers/iolog.c:513
+#: plugins/sudoers/iolog.c:521
+#, c-format
+msgid "unable to create %s"
+msgstr "ne eblas krei: %s"
+
+#: plugins/sudoers/iolog_path.c:247 plugins/sudoers/sudoers.c:357
+#, c-format
+msgid "unable to set locale to \"%s\", using \"C\""
+msgstr "ne eblas elekti lokaĵaron \"%s\", uzanta lokaĵaron \"C\""
+
+#: plugins/sudoers/ldap.c:368
+#, c-format
+msgid "sudo_ldap_conf_add_ports: port too large"
+msgstr "sudo_ldap_conf_add_ports: pordo tro granda"
+
+#: plugins/sudoers/ldap.c:391
+#, c-format
+msgid "sudo_ldap_conf_add_ports: out of space expanding hostbuf"
+msgstr "sudo_ldap_conf_add_ports: eluzis spacon etendanta la bufron"
+
+#: plugins/sudoers/ldap.c:420
+#, c-format
+msgid "unsupported LDAP uri type: %s"
+msgstr "nekonata retadresa tipo de LDAP: %s"
+
+#: plugins/sudoers/ldap.c:449
+#, c-format
+msgid "invalid uri: %s"
+msgstr "nevalida retadreso: %s"
+
+#: plugins/sudoers/ldap.c:455
+#, c-format
+msgid "unable to mix ldap and ldaps URIs"
+msgstr "ne eblas miksi sekurajn kaj nesekurajn retadresojn de LDAP"
+
+#: plugins/sudoers/ldap.c:459
+#, c-format
+msgid "unable to mix ldaps and starttls"
+msgstr "ne eblas miksi protokolojn ldaps kaj starttls"
+
+#: plugins/sudoers/ldap.c:478
+#, c-format
+msgid "sudo_ldap_parse_uri: out of space building hostbuf"
+msgstr "sudo_ldap_parse_uri: eluzis spacon muntanta la bufron"
+
+#: plugins/sudoers/ldap.c:541
+#, c-format
+msgid "unable to initialize SSL cert and key db: %s"
+msgstr "ne eblas iniciati SSL-asertilon kaj ŝlosilan datumbazon: %s"
+
+#: plugins/sudoers/ldap.c:937
+#, c-format
+msgid "unable to get GMT time"
+msgstr "ne eblas atingi GMT-tempon"
+
+#: plugins/sudoers/ldap.c:943
+#, c-format
+msgid "unable to format timestamp"
+msgstr "ne eblas aranĝi tempostampon"
+
+#: plugins/sudoers/ldap.c:951
+#, c-format
+msgid "unable to build time filter"
+msgstr "ne eblas munti tempan filtrilon"
+
+#: plugins/sudoers/ldap.c:1052
+#, c-format
+msgid "sudo_ldap_build_pass1 allocation mismatch"
+msgstr "sudo_ldap_build_pass1: genra malkongruaĵo"
+
+#: plugins/sudoers/ldap.c:1562
+#, c-format
+msgid ""
+"\n"
+"LDAP Role: %s\n"
+msgstr ""
+"\n"
+"LDAP-rolo: %s\n"
+
+#: plugins/sudoers/ldap.c:1564
+#, c-format
+msgid ""
+"\n"
+"LDAP Role: UNKNOWN\n"
+msgstr ""
+"\n"
+"LDAP-rolo: NEKONATA\n"
+
+#: plugins/sudoers/ldap.c:1611
+#, c-format
+msgid "    Order: %s\n"
+msgstr "    Ordo: %s\n"
+
+#: plugins/sudoers/ldap.c:1619
+#, c-format
+msgid "    Commands:\n"
+msgstr "    Komandoj:\n"
+
+#: plugins/sudoers/ldap.c:2006
+#, c-format
+msgid "unable to initialize LDAP: %s"
+msgstr "ne eblas iniciati LDAP-on: %s"
+
+#: plugins/sudoers/ldap.c:2037
+#, c-format
+msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
+msgstr "start_tls specifita sed LDAP-bibliotekoj ne havas la funkciojn ldap_start_tls_s() kaj ldap_start_tls_s_np()"
+
+#: plugins/sudoers/ldap.c:2268
+#, c-format
+msgid "invalid sudoOrder attribute: %s"
+msgstr "nevalida atributo de sudoOrdo: %s"
+
+#: plugins/sudoers/linux_audit.c:55
+#, c-format
+msgid "unable to open audit system"
+msgstr "ne eblas malfermi aŭdan sistemon"
+
+#: plugins/sudoers/linux_audit.c:79
+#, c-format
+msgid "internal error, linux_audit_command() overflow"
+msgstr "ena eraro, linux_audit_command() superfluo"
+
+#: plugins/sudoers/linux_audit.c:88
+#, c-format
+msgid "unable to send audit message"
+msgstr "ne eblas sendi aŭdan mesaĝon"
+
+#: plugins/sudoers/logging.c:192
+#, c-format
+msgid "unable to open log file: %s: %s"
+msgstr "ne eblas malfermi protokolon: %s: %s"
+
+#: plugins/sudoers/logging.c:195
+#, c-format
+msgid "unable to lock log file: %s: %s"
+msgstr "ne eblas ŝlosi protokolon: %s: %s"
+
+#: plugins/sudoers/logging.c:249
+msgid "user NOT in sudoers"
+msgstr "uzanto NE en sudoers"
+
+#: plugins/sudoers/logging.c:251
+msgid "user NOT authorized on host"
+msgstr "uzanto NE permesata en gastiganto"
+
+#: plugins/sudoers/logging.c:253
+msgid "command not allowed"
+msgstr "komando ne permesata"
+
+#: plugins/sudoers/logging.c:263
+#, c-format
+msgid "%s is not in the sudoers file.  This incident will be reported.\n"
+msgstr "%s ne estas en la dosiero sudoers. Ĉi tiu estos raportita.\n"
+
+#: plugins/sudoers/logging.c:266
+#, c-format
+msgid "%s is not allowed to run sudo on %s.  This incident will be reported.\n"
+msgstr "%s estas ne permesata plenumigi sudo-on en %s. Ĉi tio estos raportita\n"
+
+#: plugins/sudoers/logging.c:270
+#, c-format
+msgid "Sorry, user %s may not run sudo on %s.\n"
+msgstr "Bedaŭre uzanto %s ne rajtas plenumigi  sudo-on en %s.\n"
+
+#: plugins/sudoers/logging.c:273
+#, c-format
+msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
+msgstr "Bedaŭre uzanto %s ne rajtas plenumigi '%s%s%s'-on kiel %s%s%s en %s.\n"
+
+#: plugins/sudoers/logging.c:408
+#, c-format
+msgid "unable to fork"
+msgstr "ne eblas forki"
+
+#: plugins/sudoers/logging.c:415 plugins/sudoers/logging.c:472
+#, c-format
+msgid "unable to fork: %m"
+msgstr "ne eblas forki: %m"
+
+#: plugins/sudoers/logging.c:465
+#, c-format
+msgid "unable to open pipe: %m"
+msgstr "ne eblas malfermi tubon: %m"
+
+#: plugins/sudoers/logging.c:484
+#, c-format
+msgid "unable to dup stdin: %m"
+msgstr "ne eblas kopii enigon: %m"
+
+#: plugins/sudoers/logging.c:518
+#, c-format
+msgid "unable to execute %s: %m"
+msgstr "ne eblas plenumigi %s-on: %m"
+
+#: plugins/sudoers/logging.c:728
+#, c-format
+msgid "internal error: insufficient space for log line"
+msgstr "ena eraro: nesufiĉa spaco por protokola linio"
+
+#: plugins/sudoers/parse.c:115
+#, c-format
+msgid "parse error in %s near line %d"
+msgstr "analiza eraro en %s proksime al linio %d"
+
+#: plugins/sudoers/parse.c:371
+#, c-format
+msgid ""
+"\n"
+"Sudoers entry:\n"
+msgstr ""
+"\n"
+"Ero en sudoers:\n"
+
+#: plugins/sudoers/parse.c:373
+#, c-format
+msgid "    RunAsUsers: "
+msgstr "    RunAsUsers: "
+
+#: plugins/sudoers/parse.c:388
+#, c-format
+msgid "    RunAsGroups: "
+msgstr "    RunAsGroups: "
+
+#: plugins/sudoers/parse.c:397
+#, c-format
+msgid ""
+"    Commands:\n"
+"\t"
+msgstr ""
+"    Komandoj:\n"
+"\t"
+
+#: plugins/sudoers/plugin_error.c:100 plugins/sudoers/plugin_error.c:105
+msgid ": "
+msgstr ": "
+
+#: plugins/sudoers/pwutil.c:251
+#, c-format
+msgid "unable to cache uid %u (%s), already exists"
+msgstr "ne eblas konservi uid-on %u (%s), jam ekzistas"
+
+#: plugins/sudoers/pwutil.c:259
+#, c-format
+msgid "unable to cache uid %u, already exists"
+msgstr "ne eblas konservi uid-on %u, jam ekzistas"
+
+#: plugins/sudoers/pwutil.c:295 plugins/sudoers/pwutil.c:304
+#, c-format
+msgid "unable to cache user %s, already exists"
+msgstr "ne eblas konservi uzanton %s, jam ekzistas"
+
+#: plugins/sudoers/pwutil.c:607
+#, c-format
+msgid "unable to cache gid %u (%s), already exists"
+msgstr "ne eblas konservi gid-on %u (%s), jam ekzistas"
+
+#: plugins/sudoers/pwutil.c:615
+#, c-format
+msgid "unable to cache gid %u, already exists"
+msgstr "ne eblas konservi gid-on %u, jam ekzistas"
+
+#: plugins/sudoers/pwutil.c:644 plugins/sudoers/pwutil.c:653
+#, c-format
+msgid "unable to cache group %s, already exists"
+msgstr "ne eblas konservi grupon %s, jam ekzistas"
+
+#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:358
+#: plugins/sudoers/set_perms.c:590 plugins/sudoers/set_perms.c:824
+msgid "perm stack overflow"
+msgstr "permeso-staka superfluo"
+
+#: plugins/sudoers/set_perms.c:117 plugins/sudoers/set_perms.c:366
+#: plugins/sudoers/set_perms.c:598 plugins/sudoers/set_perms.c:832
+msgid "perm stack underflow"
+msgstr "permeso-staka subfluo"
+
+#: plugins/sudoers/set_perms.c:223 plugins/sudoers/set_perms.c:458
+#: plugins/sudoers/set_perms.c:695
+msgid "unable to change to runas gid"
+msgstr "ne eblas ŝanĝi al plenumigkiela gid"
+
+#: plugins/sudoers/set_perms.c:231 plugins/sudoers/set_perms.c:465
+#: plugins/sudoers/set_perms.c:702
+msgid "unable to change to runas uid"
+msgstr "ne eblas ŝanĝi al plenumigkiela uid"
+
+#: plugins/sudoers/set_perms.c:245 plugins/sudoers/set_perms.c:478
+#: plugins/sudoers/set_perms.c:715
+#, c-format
+msgid "unable to change to sudoers gid"
+msgstr "ne eblas ŝanĝi al gid de sudo-redaktantoj"
+
+#: plugins/sudoers/set_perms.c:286 plugins/sudoers/set_perms.c:516
+#: plugins/sudoers/set_perms.c:753 plugins/sudoers/set_perms.c:893
+msgid "too many processes"
+msgstr "tro da procezoj"
+
+#: plugins/sudoers/set_perms.c:955
+msgid "unable to set runas group vector"
+msgstr "ne eblas elekti vektoron de plenumigkiela grupo"
+
+#: plugins/sudoers/sudo_nss.c:238
+#, c-format
+msgid "Matching Defaults entries for %s on this host:\n"
+msgstr "Kongruantaj eroj de Defaults: %s en ĉi tiu gastiganto:\n"
+
+#: plugins/sudoers/sudo_nss.c:251
+#, c-format
+msgid "Runas and Command-specific defaults for %s:\n"
+msgstr "Plenumigkiela komando-specifaj aŭtomataĵoj por %s:\n"
+
+#: plugins/sudoers/sudo_nss.c:264
+#, c-format
+msgid "User %s may run the following commands on this host:\n"
+msgstr "Uzanto %s rajtas plenumigi la jenajn komandojn en ĉi tiu gastiganto:\n"
+
+#: plugins/sudoers/sudo_nss.c:274
+#, c-format
+msgid "User %s is not allowed to run sudo on %s.\n"
+msgstr "Uzanto %s ne rajton plenumigi sudo-on en %s.\n"
+
+#: plugins/sudoers/sudoers.c:199 plugins/sudoers/sudoers.c:234
+#: plugins/sudoers/sudoers.c:911
+msgid "problem with defaults entries"
+msgstr "problemoj kun aŭtomataj eroj"
+
+#: plugins/sudoers/sudoers.c:203
+#, c-format
+msgid "no valid sudoers sources found, quitting"
+msgstr "ne validaj fontotekstoj de sudoers trovita, ĉesiganta"
+
+#: plugins/sudoers/sudoers.c:257
+#, c-format
+msgid "unable to execute %s: %s"
+msgstr "ne eblas plenumigi %s-on: %s"
+
+#: plugins/sudoers/sudoers.c:306
+#, c-format
+msgid "sudoers specifies that root is not allowed to sudo"
+msgstr "sudoers specifas, ke ĉefradiko ne rajtas sudo-i"
+
+#: plugins/sudoers/sudoers.c:313
+#, c-format
+msgid "you are not permitted to use the -C option"
+msgstr "vi ne rajtas uzi la parametron -C"
+
+#: plugins/sudoers/sudoers.c:403
+#, c-format
+msgid "timestamp owner (%s): No such user"
+msgstr "tempo-indikila estro (%s): Nenia uzanto"
+
+#: plugins/sudoers/sudoers.c:419
+msgid "no tty"
+msgstr "neniu tty"
+
+#: plugins/sudoers/sudoers.c:420
+#, c-format
+msgid "sorry, you must have a tty to run sudo"
+msgstr "bedaŭre vi devas havi tty-on por plenumigi sudo-on"
+
+#: plugins/sudoers/sudoers.c:463
+msgid "No user or host"
+msgstr "Neniu uzanto aŭ gastiganto"
+
+#: plugins/sudoers/sudoers.c:477 plugins/sudoers/sudoers.c:498
+#: plugins/sudoers/sudoers.c:499 plugins/sudoers/sudoers.c:1465
+#: plugins/sudoers/sudoers.c:1466
+#, c-format
+msgid "%s: command not found"
+msgstr "%s: komando ne trovita"
+
+#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:495
+#, c-format
+msgid ""
+"ignoring `%s' found in '.'\n"
+"Use `sudo ./%s' if this is the `%s' you wish to run."
+msgstr ""
+"Ignoranta '%s'-on trovita en '.'\n"
+"Uzu 'sudo ./%s'-on se tio estas la '%s', kiun vi volas plenumigi."
+
+#: plugins/sudoers/sudoers.c:484
+msgid "validation failure"
+msgstr "validiga malsukceso"
+
+#: plugins/sudoers/sudoers.c:494
+msgid "command in current directory"
+msgstr "komando en nuna dosierujo"
+
+#: plugins/sudoers/sudoers.c:506
+#, c-format
+msgid "sorry, you are not allowed to preserve the environment"
+msgstr "bedaŭre vi ne rajtas konservi la medion"
+
+#: plugins/sudoers/sudoers.c:894
+#, c-format
+msgid "internal error, set_cmnd() overflow"
+msgstr "ena eraro, set_cmnd() superfluo"
+
+#: plugins/sudoers/sudoers.c:936
+#, c-format
+msgid "fixed mode on %s"
+msgstr "fiksita reĝimo en %s"
+
+#: plugins/sudoers/sudoers.c:940
+#, c-format
+msgid "set group on %s"
+msgstr "elekti grupon en %s"
+
+#: plugins/sudoers/sudoers.c:943
+#, c-format
+msgid "unable to set group on %s"
+msgstr "ne eblas elekti grupon en %s"
+
+#: plugins/sudoers/sudoers.c:946
+#, c-format
+msgid "unable to fix mode on %s"
+msgstr "ne eblas fiksi reĝimon en %s"
+
+#: plugins/sudoers/sudoers.c:959
+#, c-format
+msgid "%s is not a regular file"
+msgstr "%s ne estas regula dosiero"
+
+#: plugins/sudoers/sudoers.c:961
+#, c-format
+msgid "%s is mode 0%o, should be 0%o"
+msgstr "%s estas reĝimo 0%o, devas esti 0%o"
+
+#: plugins/sudoers/sudoers.c:965
+#, c-format
+msgid "%s is owned by uid %u, should be %u"
+msgstr "%s estas estrita de uid %u, devas esti %u"
+
+#: plugins/sudoers/sudoers.c:968
+#, c-format
+msgid "%s is owned by gid %u, should be %u"
+msgstr "%s estas estrita de gid %u, devas esti %u"
+
+#: plugins/sudoers/sudoers.c:1012
+#, c-format
+msgid "only root can use `-c %s'"
+msgstr "nur ĉefuzanto rajtas uzi '-c %s'"
+
+#: plugins/sudoers/sudoers.c:1022
+#, c-format
+msgid "unknown login class: %s"
+msgstr "nekonata ensaluta klaso: %s"
+
+#: plugins/sudoers/sudoers.c:1056
+#, c-format
+msgid "unable to resolve host %s"
+msgstr "ne eblas solvi gastiganton %s"
+
+#: plugins/sudoers/sudoers.c:1106 plugins/sudoers/testsudoers.c:351
+#, c-format
+msgid "unknown group: %s"
+msgstr "nekonata grupo: %s"
+
+#: plugins/sudoers/sudoers.c:1150
+#, c-format
+msgid "Sudoers policy plugin version %s\n"
+msgstr "Eldono %s de la konduta kromprogramo\n"
+
+#: plugins/sudoers/sudoers.c:1152
+#, c-format
+msgid "Sudoers file grammar version %d\n"
+msgstr "Eldono %d de la gramatikilo de sudoers\n"
+
+#: plugins/sudoers/sudoers.c:1156
+#, c-format
+msgid ""
+"\n"
+"Sudoers path: %s\n"
+msgstr ""
+"\n"
+"Pado de sudoers: %s\n"
+
+#: plugins/sudoers/sudoers.c:1159
+#, c-format
+msgid "nsswitch path: %s\n"
+msgstr "pado de nsswitch: %s\n"
+
+#: plugins/sudoers/sudoers.c:1161
+#, c-format
+msgid "ldap.conf path: %s\n"
+msgstr "pado de ldap.conf: %s\n"
+
+#: plugins/sudoers/sudoers.c:1162
+#, c-format
+msgid "ldap.secret path: %s\n"
+msgstr "pado de ldap.secret: %s\n"
+
+#: plugins/sudoers/sudoreplay.c:265
+#, c-format
+msgid "invalid filter option: %s"
+msgstr "nevalida filtrila elekto: %s"
+
+#: plugins/sudoers/sudoreplay.c:278
+#, c-format
+msgid "invalid max wait: %s"
+msgstr "nevalida maksimuma atendo: %s"
+
+#: plugins/sudoers/sudoreplay.c:284
+#, c-format
+msgid "invalid speed factor: %s"
+msgstr "nevalida rapida faktoro: %s"
+
+#: plugins/sudoers/sudoreplay.c:287 plugins/sudoers/visudo.c:174
+#, c-format
+msgid "%s version %s\n"
+msgstr "%s eldono %s\n"
+
+#: plugins/sudoers/sudoreplay.c:310
+#, c-format
+msgid "%s/%.2s/%.2s/%.2s/timing: %s"
+msgstr "%s/%.2s/%.2s/%.2s tempo-registrado: %s"
+
+#: plugins/sudoers/sudoreplay.c:316
+#, c-format
+msgid "%s/%s/timing: %s"
+msgstr "%s/%s/tempo-registrado: %s"
+
+#: plugins/sudoers/sudoreplay.c:341
+#, c-format
+msgid "invalid log file %s"
+msgstr "nevalida protokolo %s"
+
+#: plugins/sudoers/sudoreplay.c:343
+#, c-format
+msgid "Replaying sudo session: %s"
+msgstr "Refaranta sudo-seancon: %s"
+
+#: plugins/sudoers/sudoreplay.c:369
+#, c-format
+msgid "unable to set tty to raw mode"
+msgstr "ne eblas elekti tty-on en nudan reĝimon"
+
+#: plugins/sudoers/sudoreplay.c:383
+#, c-format
+msgid "invalid timing file line: %s"
+msgstr "nevalida linio en la tempo-registran dosieron: %s"
+
+#: plugins/sudoers/sudoreplay.c:425
+#, c-format
+msgid "writing to standard output"
+msgstr "skribanta al eligo"
+
+#: plugins/sudoers/sudoreplay.c:455
+#, c-format
+msgid "nanosleep: tv_sec %ld, tv_nsec %ld"
+msgstr "nanosleep: tv_sec %ld, tv_nsec %ld"
+
+#: plugins/sudoers/sudoreplay.c:503 plugins/sudoers/sudoreplay.c:528
+#, c-format
+msgid "ambiguous expression \"%s\""
+msgstr "ambigua esprimo \"%s\""
+
+#: plugins/sudoers/sudoreplay.c:545
+#, c-format
+msgid "too many parenthesized expressions, max %d"
+msgstr "tro da esprimoj en krampoj, maksimumo: %d"
+
+#: plugins/sudoers/sudoreplay.c:556
+#, c-format
+msgid "unmatched ')' in expression"
+msgstr "esprimo kun ')' sen samnivela '('"
+
+#: plugins/sudoers/sudoreplay.c:562
+#, c-format
+msgid "unknown search term \"%s\""
+msgstr "nekonata serĉaĵo \"%s\""
+
+#: plugins/sudoers/sudoreplay.c:576
+#, c-format
+msgid "%s requires an argument"
+msgstr "%s bezonas parametron"
+
+#: plugins/sudoers/sudoreplay.c:580
+#, c-format
+msgid "invalid regular expression: %s"
+msgstr "nevalida regulesprimo: %s"
+
+#: plugins/sudoers/sudoreplay.c:586
+#, c-format
+msgid "could not parse date \"%s\""
+msgstr "ne eblis analizi daton \"%s\""
+
+#: plugins/sudoers/sudoreplay.c:599
+#, c-format
+msgid "unmatched '(' in expression"
+msgstr "esprimo kun '(' sen samnivela ')'"
+
+#: plugins/sudoers/sudoreplay.c:601
+#, c-format
+msgid "illegal trailing \"or\""
+msgstr "nevalida posta \"or\""
+
+#: plugins/sudoers/sudoreplay.c:603
+#, c-format
+msgid "illegal trailing \"!\""
+msgstr "nevalida posta \"!\""
+
+#: plugins/sudoers/sudoreplay.c:819
+#, c-format
+msgid "invalid regex: %s"
+msgstr "nevalida regulesprimo: %s"
+
+#: plugins/sudoers/sudoreplay.c:941
+#, c-format
+msgid "usage: %s [-h] [-d directory] [-m max_wait] [-s speed_factor] ID\n"
+msgstr "uzado: %s [-h] [-d dosierujo] [-m maksimuma_atendo] [-s rapida_faktoro] identigilo\n"
+
+#: plugins/sudoers/sudoreplay.c:944
+#, c-format
+msgid "usage: %s [-h] [-d directory] -l [search expression]\n"
+msgstr "uzado: %s [-h] [-d dosierujo] -l [serĉaĵo]\n"
+
+#: plugins/sudoers/sudoreplay.c:953
+#, c-format
+msgid ""
+"%s - replay sudo session logs\n"
+"\n"
+msgstr ""
+"%s - refari sudo-seancajn protokolojn\n"
+"\n"
+
+#: plugins/sudoers/sudoreplay.c:955
+msgid ""
+"\n"
+"Options:\n"
+"  -d directory     specify directory for session logs\n"
+"  -f filter        specify which I/O type to display\n"
+"  -h               display help message and exit\n"
+"  -l [expression]  list available session IDs that match expression\n"
+"  -m max_wait      max number of seconds to wait between events\n"
+"  -s speed_factor  speed up or slow down output\n"
+"  -V               display version information and exit"
+msgstr ""
+"\n"
+"Parametroj:\n"
+"  -d dosierujo specifi dosierujon por seancaj protokoloj\n"
+"  -f filtrilo  specifi kiajn eneligajn tipojn por montri\n"
+"  -h           montri helpan mesaĝon kaj eliri  -l [esprimo] listigi haveblajn seancajn identigilojn, kiuj kongruas kun esprimo\n"
+"  -m [atendo]  maksimuma nombro da sekundoj por atendi inter okazoj\n"
+"  -s [rapido]  rapidigi aŭ malrapidigi eligon\n"
+"  -V           eligi eldonan informon kaj eliri"
+
+#: plugins/sudoers/testsudoers.c:230
+#, c-format
+msgid "internal error, init_vars() overflow"
+msgstr "ena eraro, init_vars() suprfluo"
+
+#: plugins/sudoers/testsudoers.c:309
+msgid "\thost  unmatched"
+msgstr "\thost  sen egalo"
+
+#: plugins/sudoers/testsudoers.c:312
+msgid ""
+"\n"
+"Command allowed"
+msgstr ""
+"\n"
+"Komando permesata"
+
+#: plugins/sudoers/testsudoers.c:313
+msgid ""
+"\n"
+"Command denied"
+msgstr ""
+"\n"
+"Komando rifuzata"
+
+#: plugins/sudoers/testsudoers.c:313
+msgid ""
+"\n"
+"Command unmatched"
+msgstr ""
+"\n"
+"Komando sen egalo"
+
+#: toke.l:667 toke.l:793 toke.l:818 toke.l:904 plugins/sudoers/toke_util.c:111
+#: plugins/sudoers/toke_util.c:163 plugins/sudoers/toke_util.c:202
+msgid "unable to allocate memory"
+msgstr "ne eblas generi memoron"
+
+#: toke.l:786
+msgid "too many levels of includes"
+msgstr "tro da niveloj de inluzivaĵoj"
+
+#: plugins/sudoers/toke_util.c:213
+msgid "fill_args: buffer overflow"
+msgstr "fill_args: bufra superfluo"
+
+#: plugins/sudoers/visudo.c:175
+#, c-format
+msgid "%s grammar version %d\n"
+msgstr "%s gramatika eldono %d\n"
+
+#: plugins/sudoers/visudo.c:208 plugins/sudoers/auth/rfc1938.c:103
+#, c-format
+msgid "you do not exist in the %s database"
+msgstr "vi ne ekzistas en la datumbazo %s"
+
+#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:518
+#, c-format
+msgid "press return to edit %s: "
+msgstr "premu enen-klavon por redakti %s-on: "
+
+#: plugins/sudoers/visudo.c:320 plugins/sudoers/visudo.c:326
+#, c-format
+msgid "write error"
+msgstr "skriba eraro"
+
+#: plugins/sudoers/visudo.c:408
+#, c-format
+msgid "unable to stat temporary file (%s), %s unchanged"
+msgstr "ne eblas stat-i provizoron dosieron (%s), %s neŝanĝita"
+
+#: plugins/sudoers/visudo.c:413
+#, c-format
+msgid "zero length temporary file (%s), %s unchanged"
+msgstr "nul-longa provizora dosiero (%s), %s neŝanĝita"
+
+#: plugins/sudoers/visudo.c:419
+#, c-format
+msgid "editor (%s) failed, %s unchanged"
+msgstr "redaktilo (%s) malsukcesis, %s neŝanĝita"
+
+#: plugins/sudoers/visudo.c:442
+#, c-format
+msgid "%s unchanged"
+msgstr "%s neŝanĝita"
+
+#: plugins/sudoers/visudo.c:466
+#, c-format
+msgid "unable to re-open temporary file (%s), %s unchanged."
+msgstr "ne eblas remalfermi provizoran dosieron (%s), %s neŝanĝita."
+
+#: plugins/sudoers/visudo.c:476
+#, c-format
+msgid "unabled to parse temporary file (%s), unknown error"
+msgstr "ne eblas analizi provizoran dosieron (%s), nekonata eraro"
+
+#: plugins/sudoers/visudo.c:511
+#, c-format
+msgid "internal error, unable to find %s in list!"
+msgstr "ena eraro, ne eblas trovi '%s'-on en listo!"
+
+#: plugins/sudoers/visudo.c:546 plugins/sudoers/visudo.c:555
+#, c-format
+msgid "unable to set (uid, gid) of %s to (%u, %u)"
+msgstr "ne eblas ŝanĝi (uid, gid) de %s al (%u, %u)"
+
+#: plugins/sudoers/visudo.c:550 plugins/sudoers/visudo.c:560
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "ne eblas ŝanĝi reĝimon de %s al 0%o"
+
+#: plugins/sudoers/visudo.c:577
+#, c-format
+msgid "%s and %s not on the same file system, using mv to rename"
+msgstr "%s kaj %s ne estas la sama dosiersistemo, uzanta mv-on por alinomi"
+
+#: plugins/sudoers/visudo.c:591
+#, c-format
+msgid "command failed: '%s %s %s', %s unchanged"
+msgstr "komando malsukcesis: '%s %s %s', %s neŝanĝita"
+
+#: plugins/sudoers/visudo.c:601
+#, c-format
+msgid "error renaming %s, %s unchanged"
+msgstr "eraro alinomanta %s-on, %s neŝanĝita"
+
+#: plugins/sudoers/visudo.c:661
+msgid "What now? "
+msgstr "Kion nun? "
+
+#: plugins/sudoers/visudo.c:675
+msgid ""
+"Options are:\n"
+"  (e)dit sudoers file again\n"
+"  e(x)it without saving changes to sudoers file\n"
+"  (Q)uit and save changes to sudoers file (DANGER!)\n"
+msgstr ""
+"Elektoj estas:\n"
+"  r(e)dakti refoje sudoers-dosieron\n"
+"  x) eliri sen konservi ŝanĝojn al sudoers-dosiero\n"
+"  q) Eliri kaj konservi ŝanĝojn al sudoers-dosiero (DANĜERA!)\n"
+
+#: plugins/sudoers/visudo.c:712
+#, c-format
+msgid "unable to execute %s"
+msgstr "ne eblas plenumigi: %s"
+
+#: plugins/sudoers/visudo.c:719
+#, c-format
+msgid "unable to run %s"
+msgstr "ne eblas plenumigi: %s"
+
+#: plugins/sudoers/visudo.c:750
+#, c-format
+msgid "failed to parse %s file, unknown error"
+msgstr "malsukcesis analizi dosieron %s, nekonata eraro"
+
+#: plugins/sudoers/visudo.c:762
+#, c-format
+msgid "parse error in %s near line %d\n"
+msgstr "analiza eraro en %s proksime al linio %d\n"
+
+#: plugins/sudoers/visudo.c:765
+#, c-format
+msgid "parse error in %s\n"
+msgstr "analiza eraro en %s\n"
+
+#: plugins/sudoers/visudo.c:767
+#, c-format
+msgid "%s: parsed OK\n"
+msgstr "%s: analizita senerare\n"
+
+#: plugins/sudoers/visudo.c:776
+#, c-format
+msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
+msgstr "%s: malĝusta estro (uid, gid) devas esti (%u, %u)\n"
+
+#: plugins/sudoers/visudo.c:783
+#, c-format
+msgid "%s: bad permissions, should be mode 0%o\n"
+msgstr "%s: misaj permesoj, devas esti reĝimo 0%o\n"
+
+#: plugins/sudoers/visudo.c:822
+#, c-format
+msgid "%s busy, try again later"
+msgstr "%s okupata, reprovu pli malfrue"
+
+#: plugins/sudoers/visudo.c:865
+#, c-format
+msgid "specified editor (%s) doesn't exist"
+msgstr "specifita tekstoredaktilo (%s) ne ekzistas"
+
+#: plugins/sudoers/visudo.c:888
+#, c-format
+msgid "unable to stat editor (%s)"
+msgstr "ne eblas stat-i tekstoredaktilon (%s)"
+
+#: plugins/sudoers/visudo.c:936
+#, c-format
+msgid "no editor found (editor path = %s)"
+msgstr "neniu tekstoredaktilo trovita (pado = %s)"
+
+#: plugins/sudoers/visudo.c:1025
+#, c-format
+msgid "Error: cycle in %s_Alias `%s'"
+msgstr "Eraro: ciklo en %s_Alias '%s'"
+
+#: plugins/sudoers/visudo.c:1026
+#, c-format
+msgid "Warning: cycle in %s_Alias `%s'"
+msgstr "Averto: ciklo en %s_Alias '%s'"
+
+#: plugins/sudoers/visudo.c:1029
+#, c-format
+msgid "Error: %s_Alias `%s' referenced but not defined"
+msgstr "Eraro: %s_Alias '%s' referinta sed ne difinita"
+
+#: plugins/sudoers/visudo.c:1030
+#, c-format
+msgid "Warning: %s_Alias `%s' referenced but not defined"
+msgstr "Averto: %s_Alias '%s' referinta sed ne difinita"
+
+#: plugins/sudoers/visudo.c:1167
+#, c-format
+msgid "%s: unused %s_Alias %s"
+msgstr "%s neuzata %s_Alias %s"
+
+#: plugins/sudoers/visudo.c:1224
+#, c-format
+msgid ""
+"%s - safely edit the sudoers file\n"
+"\n"
+msgstr ""
+"%s - sekure redakti la dosieron sudoers\n"
+"\n"
+
+#: plugins/sudoers/visudo.c:1226
+msgid ""
+"\n"
+"Options:\n"
+"  -c          check-only mode\n"
+"  -f sudoers  specify sudoers file location\n"
+"  -h          display help message and exit\n"
+"  -q          less verbose (quiet) syntax error messages\n"
+"  -s          strict syntax checking\n"
+"  -V          display version information and exit"
+msgstr ""
+"\n"
+"Parametroj:\n"
+"  -c          nur kontroli\n"
+"  -f sudoers  specifi lokon de la dosiero sudoers\n"
+"  -h          montri helpan mesaĝon kaj eliri\n"
+"  -q          silenta pri sintaksaj eraroj\n"
+"  -s          malsevera kontrolado de sintakso\n"
+"  -V          montri eldonon kaj eliri"
+
+#: plugins/sudoers/auth/bsdauth.c:64
+msgid "unable to begin bsd authentication"
+msgstr "ne eblas komenci bsd-konstatado"
+
+#: plugins/sudoers/auth/bsdauth.c:71
+msgid "invalid authentication type"
+msgstr "nevalida konstata tipo"
+
+#: plugins/sudoers/auth/bsdauth.c:79
+msgid "unable to setup authentication"
+msgstr "ne eblas starigi konstatadon"
+
+#: plugins/sudoers/auth/fwtk.c:59
+#, c-format
+msgid "unable to read fwtk config"
+msgstr "ne eblas legi fwtk-agordon"
+
+#: plugins/sudoers/auth/fwtk.c:64
+#, c-format
+msgid "unable to connect to authentication server"
+msgstr "ne eblas konekti al konstatanta servilo"
+
+#: plugins/sudoers/auth/fwtk.c:70 plugins/sudoers/auth/fwtk.c:93
+#: plugins/sudoers/auth/fwtk.c:126
+#, c-format
+msgid "lost connection to authentication server"
+msgstr "konekto al konstatanta servilo perdita"
+
+#: plugins/sudoers/auth/fwtk.c:74
+#, c-format
+msgid ""
+"authentication server error:\n"
+"%s"
+msgstr ""
+"eraro de konstatanta servilo:\n"
+"%s"
+
+#: plugins/sudoers/auth/kerb5.c:114
+#, c-format
+msgid "%s: unable to parse '%s': %s"
+msgstr "%s: ne eblas analizi: '%s': %s"
+
+#: plugins/sudoers/auth/kerb5.c:127
+#, c-format
+msgid "%s: unable to unparse princ ('%s'): %s"
+msgstr "%s ne eblas analizi princ-on ('%s'): %s"
+
+#: plugins/sudoers/auth/kerb5.c:144
+#, c-format
+msgid "%s: unable to resolve ccache: %s"
+msgstr "%s: ne eblas trovi ccache-on: %s"
+
+#: plugins/sudoers/auth/kerb5.c:188
+#, c-format
+msgid "%s: unable to allocate options: %s"
+msgstr "%s: ne eblas generi elektojn: %s"
+
+#: plugins/sudoers/auth/kerb5.c:204
+#, c-format
+msgid "%s: unable to get credentials: %s"
+msgstr "%s: ne eblas akiri atestilojn: %s"
+
+#: plugins/sudoers/auth/kerb5.c:217
+#, c-format
+msgid "%s: unable to initialize ccache: %s"
+msgstr "%s: ne eblas iniciati ccache-on: %s"
+
+#: plugins/sudoers/auth/kerb5.c:221
+#, c-format
+msgid "%s: unable to store cred in ccache: %s"
+msgstr "%s: ne eblas konservi atestilon en ccache: %s"
+
+#: plugins/sudoers/auth/kerb5.c:284
+#, c-format
+msgid "%s: unable to get host principal: %s"
+msgstr "%s: ne eblas atingi ĉefgastiganto: %s"
+
+#: plugins/sudoers/auth/kerb5.c:299
+#, c-format
+msgid "%s: Cannot verify TGT! Possible attack!: %s"
+msgstr "%s: Ne eblas konstati TGT-on! Ebla atako!: %s"
+
+#: plugins/sudoers/auth/pam.c:99
+msgid "unable to initialize PAM"
+msgstr "ne eblas iniciati PAM-on"
+
+#: plugins/sudoers/auth/pam.c:142
+msgid "account validation failure, is your account locked?"
+msgstr "malsukceso ĉe konta validigo, ĉu via konto estas ŝlosita?"
+
+#: plugins/sudoers/auth/pam.c:146
+msgid "Account or password is expired, reset your password and try again"
+msgstr "Konto aŭ pasvorto eksvalidiĝis, restarigu vian pasvorton kaj reprovu"
+
+#: plugins/sudoers/auth/pam.c:153
+#, c-format
+msgid "pam_chauthtok: %s"
+msgstr "pam_chauthtok: %s"
+
+#: plugins/sudoers/auth/pam.c:157
+msgid "Password expired, contact your system administrator"
+msgstr "Pasvorto eksvalidiĝis, kontaktu vian sistemestron"
+
+#: plugins/sudoers/auth/pam.c:161
+msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
+msgstr "Konto eksvalidiĝis aŭ PAM-agordon malhavas sekcion \"account\" por sudo, kontaktu vian sistemestron"
+
+#: plugins/sudoers/auth/pam.c:176
+#, c-format
+msgid "pam_authenticate: %s"
+msgstr "pam_authenticate: %s"
+
+#: plugins/sudoers/auth/pam.c:296
+msgid "Password: "
+msgstr "Pasvorto: "
+
+#: plugins/sudoers/auth/pam.c:297
+msgid "Password:"
+msgstr "Pasvorto:"
+
+#: plugins/sudoers/auth/securid.c:82 plugins/sudoers/auth/securid5.c:106
+#, c-format
+msgid "unable to contact the SecurID server"
+msgstr "ne eblas kontakti la servilon de SecurID"
+
+#: plugins/sudoers/auth/securid5.c:81
+#, c-format
+msgid "failed to initialise the ACE API library"
+msgstr "malsukcesis iniciati la bibliotekon de la API ACE"
+
+#: plugins/sudoers/auth/securid5.c:115
+#, c-format
+msgid "User ID locked for SecurID Authentication"
+msgstr "Uzanto identigilo ŝlosita pro konstatado en SecurID"
+
+#: plugins/sudoers/auth/securid5.c:119 plugins/sudoers/auth/securid5.c:169
+#, c-format
+msgid "invalid username length for SecurID"
+msgstr "nevalida salutnoma longo por SecurID"
+
+#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:174
+#, c-format
+msgid "invalid Authentication Handle for SecurID"
+msgstr "nevalida konstatilo por SecurID"
+
+#: plugins/sudoers/auth/securid5.c:127
+#, c-format
+msgid "SecurID communication failed"
+msgstr "Komunikiĝo kun SecurID malsukcesis"
+
+#: plugins/sudoers/auth/securid5.c:131 plugins/sudoers/auth/securid5.c:213
+#, c-format
+msgid "unknown SecurID error"
+msgstr "nekonata SecurID-eraro"
+
+#: plugins/sudoers/auth/securid5.c:164
+#, c-format
+msgid "invalid passcode length for SecurID"
+msgstr "nevalida paskoda longo por SecurID"
+
+#: plugins/sudoers/auth/sia.c:106
+msgid "unable to initialize SIA session"
+msgstr "ne eblas iniciati SIA-seascon"
+
+#: plugins/sudoers/auth/sudo_auth.c:124
+msgid "There are no authentication methods compiled into sudo!  If you want to turn off authentication, use the --disable-authentication configure option."
+msgstr "Ekzistas neniaj konstatantaj metodoj muntitaj en sudo! Se vi volas malŝalti konstatadon, uzu la munta parametro --disable-authentication."
+
+#: plugins/sudoers/auth/sudo_auth.c:134
+msgid "Invalid authentication methods compiled into sudo!  You may mix standalone and non-standalone authentication."
+msgstr "Nevalidaj konstatantaj metodoj muntitaj en sudo! Vi rajtas miksi dependan kaj sendependan konstatadon."
+
+#: plugins/sudoers/auth/sudo_auth.c:243
+#, c-format
+msgid "%d incorrect password attempt"
+msgid_plural "%d incorrect password attempts"
+msgstr[0] "%d malĝusta pasvorta provo"
+msgstr[1] "%d malĝustaj pasvortaj provoj"
+
+#: plugins/sudoers/auth/sudo_auth.c:335
+msgid "Authentication methods:"
+msgstr "Konstatantaj metodoj:"
index 5033c19697c01a9b20ddef3cf6d0b9d428b4b4a6..c4840e9a6e32fee6bcff2985ef090438e7e040ff 100644 (file)
Binary files a/plugins/sudoers/po/fi.mo and b/plugins/sudoers/po/fi.mo differ
index c4f36f10e172741570a38984bfd3413b51a21376..6815ff5437d839a18dc5a0958a59521d9cb20ebb 100644 (file)
@@ -6,10 +6,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: sudoers 1.8.2-rc9\n"
+"Project-Id-Version: sudoers 1.8.3rc1\n"
 "Report-Msgid-Bugs-To: http://www.sudo.ws/bugs\n"
-"POT-Creation-Date: 2011-08-05 13:34-0400\n"
-"PO-Revision-Date: 2011-08-08 14:25+0200\n"
+"POT-Creation-Date: 2011-09-16 16:52-0400\n"
+"PO-Revision-Date: 2011-09-18 15:17+0200\n"
 "Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
 "Language: fi\n"
@@ -72,9 +72,9 @@ msgstr "kohteen %s suorittamiseen vaaditaan salasana"
 
 #  Avaamisen kohde voi olla timestamp file, sudoers file tai pathbuf
 #: plugins/sudoers/check.c:225 plugins/sudoers/iolog.c:169
-#: plugins/sudoers/sudoers.c:970 plugins/sudoers/sudoreplay.c:325
+#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoreplay.c:325
 #: plugins/sudoers/sudoreplay.c:334 plugins/sudoers/sudoreplay.c:675
-#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:700
+#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:744
 #, c-format
 msgid "unable to open %s"
 msgstr "ei kyetä avaamaan kohdetta %s"
@@ -120,8 +120,8 @@ msgid "%s writable by non-owner (0%o), should be mode 0700"
 msgstr "%s on kirjoitettava ei-omistajalle (0%o), pitäisi olla tila 0700"
 
 #: plugins/sudoers/check.c:470 plugins/sudoers/check.c:514
-#: plugins/sudoers/check.c:582 plugins/sudoers/sudoers.c:956
-#: plugins/sudoers/visudo.c:284 plugins/sudoers/visudo.c:500
+#: plugins/sudoers/check.c:582 plugins/sudoers/sudoers.c:957
+#: plugins/sudoers/visudo.c:304 plugins/sudoers/visudo.c:544
 #, c-format
 msgid "unable to stat %s"
 msgstr "ei kyetä kutsumaan funktiota stat %s"
@@ -156,10 +156,10 @@ msgstr "ei kyetä nollaamaan %s ajaksi"
 msgid "unknown uid: %u"
 msgstr "tuntematon uid-käyttäjätunniste: %u"
 
-#: plugins/sudoers/check.c:717 plugins/sudoers/sudoers.c:747
-#: plugins/sudoers/sudoers.c:813 plugins/sudoers/sudoers.c:814
-#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/testsudoers.c:200
-#: plugins/sudoers/testsudoers.c:330
+#: plugins/sudoers/check.c:717 plugins/sudoers/sudoers.c:748
+#: plugins/sudoers/sudoers.c:814 plugins/sudoers/sudoers.c:815
+#: plugins/sudoers/sudoers.c:1088 plugins/sudoers/testsudoers.c:202
+#: plugins/sudoers/testsudoers.c:337
 #, c-format
 msgid "unknown user: %s"
 msgstr "tuntematon käyttäjä: %s"
@@ -520,55 +520,37 @@ msgstr "Lisää rivi utmp-/utmpx-tiedostoon, kun varataan pty"
 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/defaults.c:197
-msgid ""
-"Available options in a sudoers ``Defaults'' line:\n"
-"\n"
-msgstr ""
-"Käytettävissä olevat valitsimet sudoers ’’Defaults’’ -rivillä:\n"
-"\n"
-
-#: plugins/sudoers/defaults.c:204 plugins/sudoers/defaults.c:215
-#, c-format
-msgid "%s: %s\n"
-msgstr "%s: %s\n"
-
-#: plugins/sudoers/defaults.c:211
-#, c-format
-msgid "%s: %.*s\n"
-msgstr "%s: %.*s\n"
-
-#: plugins/sudoers/defaults.c:241
+#: plugins/sudoers/defaults.c:205
 #, c-format
 msgid "unknown defaults entry `%s'"
 msgstr "tuntematon oletusrivi ”%s”"
 
-#: plugins/sudoers/defaults.c:249 plugins/sudoers/defaults.c:259
-#: plugins/sudoers/defaults.c:279 plugins/sudoers/defaults.c:292
-#: plugins/sudoers/defaults.c:305 plugins/sudoers/defaults.c:318
-#: plugins/sudoers/defaults.c:331 plugins/sudoers/defaults.c:351
-#: plugins/sudoers/defaults.c:361
+#: plugins/sudoers/defaults.c:213 plugins/sudoers/defaults.c:223
+#: plugins/sudoers/defaults.c:243 plugins/sudoers/defaults.c:256
+#: plugins/sudoers/defaults.c:269 plugins/sudoers/defaults.c:282
+#: plugins/sudoers/defaults.c:295 plugins/sudoers/defaults.c:315
+#: plugins/sudoers/defaults.c:325
 #, c-format
 msgid "value `%s' is invalid for option `%s'"
 msgstr "arvo ”%s” on virheellinen valitsimelle ”%s”"
 
 #  parametrinä on variable
-#: plugins/sudoers/defaults.c:252 plugins/sudoers/defaults.c:262
-#: plugins/sudoers/defaults.c:270 plugins/sudoers/defaults.c:287
-#: plugins/sudoers/defaults.c:300 plugins/sudoers/defaults.c:313
-#: plugins/sudoers/defaults.c:326 plugins/sudoers/defaults.c:346
-#: plugins/sudoers/defaults.c:357
+#: plugins/sudoers/defaults.c:216 plugins/sudoers/defaults.c:226
+#: plugins/sudoers/defaults.c:234 plugins/sudoers/defaults.c:251
+#: plugins/sudoers/defaults.c:264 plugins/sudoers/defaults.c:277
+#: plugins/sudoers/defaults.c:290 plugins/sudoers/defaults.c:310
+#: plugins/sudoers/defaults.c:321
 #, c-format
 msgid "no value specified for `%s'"
 msgstr "arvoa ei ole määritelty muuttujalle ”%s”"
 
 #  Parametri on muuttuja
-#: plugins/sudoers/defaults.c:275
+#: plugins/sudoers/defaults.c:239
 #, c-format
 msgid "values for `%s' must start with a '/'"
 msgstr "muuttujan ”%s” arvojen on alettava merkillä ’/’"
 
-#: plugins/sudoers/defaults.c:337
+#: plugins/sudoers/defaults.c:301
 #, c-format
 msgid "option `%s' does not take a value"
 msgstr "valitsin ”%s” ei ota arvoa"
@@ -590,7 +572,7 @@ msgstr "seuraavia ympäristömuuttujia ei ole lupa asettaa: %s"
 
 #: plugins/sudoers/find_path.c:68 plugins/sudoers/find_path.c:107
 #: plugins/sudoers/find_path.c:122 plugins/sudoers/iolog.c:124
-#: plugins/sudoers/sudoers.c:899 toke.l:663 toke.l:814
+#: plugins/sudoers/sudoers.c:903 toke.l:663 toke.l:814
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
@@ -636,7 +618,7 @@ msgid "Local IP address and netmask pairs:\n"
 msgstr "Paikallinen ip-osoite ja verkkopeiteparit:\n"
 
 #  Parametrinä on sudoers-tiedosto tai pathbuf
-#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:977
+#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:978
 #, c-format
 msgid "unable to read %s"
 msgstr "ei kyetä lukemaan kohdetta %s"
@@ -656,73 +638,73 @@ msgstr "virheellinen sarjanumero %s"
 msgid "unable to create %s"
 msgstr "ei kyetä luomaan hakemistopolkua %s"
 
-#: plugins/sudoers/iolog_path.c:245 plugins/sudoers/sudoers.c:356
+#: plugins/sudoers/iolog_path.c:247 plugins/sudoers/sudoers.c:357
 #, c-format
 msgid "unable to set locale to \"%s\", using \"C\""
 msgstr "ei kyetä asettamaan locale-asetukseksi ”%s”, käytetään ”C”"
 
-#: plugins/sudoers/ldap.c:363
+#: plugins/sudoers/ldap.c:368
 #, c-format
 msgid "sudo_ldap_conf_add_ports: port too large"
 msgstr "sudo_ldap_conf_add_ports: portti on liian suuri"
 
-#: plugins/sudoers/ldap.c:386
+#: plugins/sudoers/ldap.c:391
 #, c-format
 msgid "sudo_ldap_conf_add_ports: out of space expanding hostbuf"
 msgstr "sudo_ldap_conf_add_ports: hostbuf-puskuritila loppui"
 
 #  URL on verkko-osoite, loogisesti URI on verkkoresurssi(osoite)
-#: plugins/sudoers/ldap.c:415
+#: plugins/sudoers/ldap.c:420
 #, c-format
 msgid "unsupported LDAP uri type: %s"
 msgstr "tukematon LDAP-verkkoresurssin tunnustyyppi: %s"
 
-#: plugins/sudoers/ldap.c:444
+#: plugins/sudoers/ldap.c:449
 #, c-format
 msgid "invalid uri: %s"
 msgstr "virheellinen verkkoresurssin tunnus: %s"
 
-#: plugins/sudoers/ldap.c:450
+#: plugins/sudoers/ldap.c:455
 #, c-format
 msgid "unable to mix ldap and ldaps URIs"
 msgstr "ei kyetä sekottamaan ldap:n ja ldap-kohteiden verkkoresurssitunnuksia"
 
-#: plugins/sudoers/ldap.c:454
+#: plugins/sudoers/ldap.c:459
 #, c-format
 msgid "unable to mix ldaps and starttls"
 msgstr "ei kyetä sekoittamaan ldap- ja starttl-kohteita"
 
-#: plugins/sudoers/ldap.c:473
+#: plugins/sudoers/ldap.c:478
 #, c-format
 msgid "sudo_ldap_parse_uri: out of space building hostbuf"
 msgstr "sudo_ldap_parse_uri: hostbuf-puskuritila loppui"
 
-#: plugins/sudoers/ldap.c:536
+#: plugins/sudoers/ldap.c:541
 #, c-format
 msgid "unable to initialize SSL cert and key db: %s"
 msgstr "ei kyetä alustamaan SSL-varmenne- ja -avaintietokantaa: %s"
 
-#: plugins/sudoers/ldap.c:932
+#: plugins/sudoers/ldap.c:937
 #, c-format
 msgid "unable to get GMT time"
 msgstr "ei kyetä saamaan GMT-aikaa"
 
-#: plugins/sudoers/ldap.c:938
+#: plugins/sudoers/ldap.c:943
 #, c-format
 msgid "unable to format timestamp"
 msgstr "ei kyetä muotoilemaan aikaleimaa"
 
-#: plugins/sudoers/ldap.c:946
+#: plugins/sudoers/ldap.c:951
 #, c-format
 msgid "unable to build time filter"
 msgstr "ei kyetä rakentamaan aikasuodatinta"
 
-#: plugins/sudoers/ldap.c:1047
+#: plugins/sudoers/ldap.c:1052
 #, c-format
 msgid "sudo_ldap_build_pass1 allocation mismatch"
 msgstr "sudo_ldap_build_pass1-varaustäsmäämättömyys"
 
-#: plugins/sudoers/ldap.c:1542
+#: plugins/sudoers/ldap.c:1562
 #, c-format
 msgid ""
 "\n"
@@ -731,7 +713,7 @@ msgstr ""
 "\n"
 "LDAP-rooli: %s\n"
 
-#: plugins/sudoers/ldap.c:1544
+#: plugins/sudoers/ldap.c:1564
 #, c-format
 msgid ""
 "\n"
@@ -740,27 +722,27 @@ msgstr ""
 "\n"
 "LDAP-rooli: TUNTEMATON\n"
 
-#: plugins/sudoers/ldap.c:1591
+#: plugins/sudoers/ldap.c:1611
 #, c-format
 msgid "    Order: %s\n"
 msgstr "    Järjestys: %s\n"
 
-#: plugins/sudoers/ldap.c:1599
+#: plugins/sudoers/ldap.c:1619
 #, c-format
 msgid "    Commands:\n"
 msgstr "    Komennot:\n"
 
-#: plugins/sudoers/ldap.c:1986
+#: plugins/sudoers/ldap.c:2006
 #, c-format
 msgid "unable to initialize LDAP: %s"
 msgstr "ei kyetä alustamaan kohdetta LDAP: %s"
 
-#: plugins/sudoers/ldap.c:2017
+#: plugins/sudoers/ldap.c:2037
 #, c-format
 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:2248
+#: plugins/sudoers/ldap.c:2268
 #, c-format
 msgid "invalid sudoOrder attribute: %s"
 msgstr "virheellinen sudoOrder-attribuutti: %s"
@@ -857,7 +839,7 @@ msgstr "sisäinen virhe: riittämättömästi tilaa lokiriville"
 msgid "parse error in %s near line %d"
 msgstr "jäsentämisvirhe tiedostossa %s lähellä riviä %d"
 
-#: plugins/sudoers/parse.c:369
+#: plugins/sudoers/parse.c:371
 #, c-format
 msgid ""
 "\n"
@@ -866,17 +848,17 @@ msgstr ""
 "\n"
 "Sudoers-rivi:\n"
 
-#: plugins/sudoers/parse.c:371
+#: plugins/sudoers/parse.c:373
 #, c-format
 msgid "    RunAsUsers: "
 msgstr "    SuoritaKäyttäjänä: "
 
-#: plugins/sudoers/parse.c:386
+#: plugins/sudoers/parse.c:388
 #, c-format
 msgid "    RunAsGroups: "
 msgstr "    SuoritaRyhmänä: "
 
-#: plugins/sudoers/parse.c:395
+#: plugins/sudoers/parse.c:397
 #, c-format
 msgid ""
 "    Commands:\n"
@@ -919,38 +901,38 @@ msgstr "ei kyetä laittamaan välimuistiin gid %u -ryhmää, on jo siellä"
 msgid "unable to cache group %s, already exists"
 msgstr "ei kyetä laittamaan välimuistiin ryhmää %s, on jo siellä"
 
-#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:355
-#: plugins/sudoers/set_perms.c:587 plugins/sudoers/set_perms.c:821
+#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:358
+#: plugins/sudoers/set_perms.c:590 plugins/sudoers/set_perms.c:824
 msgid "perm stack overflow"
 msgstr "käyttöoikeuspinoylivuoto"
 
-#: plugins/sudoers/set_perms.c:117 plugins/sudoers/set_perms.c:363
-#: plugins/sudoers/set_perms.c:595 plugins/sudoers/set_perms.c:829
+#: plugins/sudoers/set_perms.c:117 plugins/sudoers/set_perms.c:366
+#: plugins/sudoers/set_perms.c:598 plugins/sudoers/set_perms.c:832
 msgid "perm stack underflow"
 msgstr "käyttöoikeuspinovajaus"
 
-#: plugins/sudoers/set_perms.c:223 plugins/sudoers/set_perms.c:455
-#: plugins/sudoers/set_perms.c:692
+#: plugins/sudoers/set_perms.c:223 plugins/sudoers/set_perms.c:458
+#: plugins/sudoers/set_perms.c:695
 msgid "unable to change to runas gid"
 msgstr "ei kyetä vaihtamaan runas gid -tunnisteeksi"
 
-#: plugins/sudoers/set_perms.c:231 plugins/sudoers/set_perms.c:462
-#: plugins/sudoers/set_perms.c:699
+#: plugins/sudoers/set_perms.c:231 plugins/sudoers/set_perms.c:465
+#: plugins/sudoers/set_perms.c:702
 msgid "unable to change to runas uid"
 msgstr "ei kyetä vaihtamaan runas gid -tunnisteeksi"
 
-#: plugins/sudoers/set_perms.c:245 plugins/sudoers/set_perms.c:475
-#: plugins/sudoers/set_perms.c:712
+#: plugins/sudoers/set_perms.c:245 plugins/sudoers/set_perms.c:478
+#: plugins/sudoers/set_perms.c:715
 #, c-format
 msgid "unable to change to sudoers gid"
 msgstr "ei kyetä vaihtamaan sudoers gid-tunnisteeksi"
 
-#: plugins/sudoers/set_perms.c:286 plugins/sudoers/set_perms.c:513
-#: plugins/sudoers/set_perms.c:750 plugins/sudoers/set_perms.c:890
+#: plugins/sudoers/set_perms.c:286 plugins/sudoers/set_perms.c:516
+#: plugins/sudoers/set_perms.c:753 plugins/sudoers/set_perms.c:893
 msgid "too many processes"
 msgstr "liian monta prosessia"
 
-#: plugins/sudoers/set_perms.c:952
+#: plugins/sudoers/set_perms.c:955
 msgid "unable to set runas group vector"
 msgstr "ei kyetä asettaan runas-ryhmävektoria"
 
@@ -974,57 +956,57 @@ msgstr "Käyttäjä %s voi suorittaa seuraavat komennot tällä tietokoneella:\n
 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:198 plugins/sudoers/sudoers.c:233
-#: plugins/sudoers/sudoers.c:907
+#: plugins/sudoers/sudoers.c:199 plugins/sudoers/sudoers.c:234
+#: plugins/sudoers/sudoers.c:911
 msgid "problem with defaults entries"
 msgstr "oletusrivien pulma"
 
-#: plugins/sudoers/sudoers.c:202
+#: plugins/sudoers/sudoers.c:203
 #, c-format
 msgid "no valid sudoers sources found, quitting"
 msgstr "ei löytynyt kelvollisia sudoers-lähteitä, poistutaan"
 
-#: plugins/sudoers/sudoers.c:256
+#: plugins/sudoers/sudoers.c:257
 #, c-format
 msgid "unable to execute %s: %s"
 msgstr "ei kyetä suorittamaan komentoa %s: %s"
 
-#: plugins/sudoers/sudoers.c:305
+#: plugins/sudoers/sudoers.c:306
 #, c-format
 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:312
+#: plugins/sudoers/sudoers.c:313
 #, c-format
 msgid "you are not permitted to use the -C option"
 msgstr "ei käyttöoikeuksia valitsimelle -C"
 
-#: plugins/sudoers/sudoers.c:402
+#: plugins/sudoers/sudoers.c:403
 #, c-format
 msgid "timestamp owner (%s): No such user"
 msgstr "aikaleimaomistaja (%s): Tuntematon käyttäjä"
 
-#: plugins/sudoers/sudoers.c:418
+#: plugins/sudoers/sudoers.c:419
 msgid "no tty"
 msgstr "ei tty:tä"
 
-#: plugins/sudoers/sudoers.c:419
+#: plugins/sudoers/sudoers.c:420
 #, c-format
 msgid "sorry, you must have a tty to run sudo"
 msgstr "sudo-komennon suorittamiseksi on oltava tty"
 
-#: plugins/sudoers/sudoers.c:462
+#: plugins/sudoers/sudoers.c:463
 msgid "No user or host"
 msgstr "Ei käyttäjä eikä tietokone"
 
-#: plugins/sudoers/sudoers.c:476 plugins/sudoers/sudoers.c:497
-#: plugins/sudoers/sudoers.c:498 plugins/sudoers/sudoers.c:1452
-#: plugins/sudoers/sudoers.c:1453
+#: plugins/sudoers/sudoers.c:477 plugins/sudoers/sudoers.c:498
+#: plugins/sudoers/sudoers.c:499 plugins/sudoers/sudoers.c:1465
+#: plugins/sudoers/sudoers.c:1466
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: komentoa ei löytynyt"
 
-#: plugins/sudoers/sudoers.c:478 plugins/sudoers/sudoers.c:494
+#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:495
 #, c-format
 msgid ""
 "ignoring `%s' found in '.'\n"
@@ -1033,98 +1015,98 @@ msgstr ""
 "ohitetaan komento ”%s”, joka löytyi kohteesta ’.’\n"
 "Käytä ”sudo ./%s”, jos tämä on ”%s”-komento, joka halutaan suorittaa."
 
-#: plugins/sudoers/sudoers.c:483
+#: plugins/sudoers/sudoers.c:484
 msgid "validation failure"
 msgstr "kelpuutushäiriö"
 
-#: plugins/sudoers/sudoers.c:493
+#: plugins/sudoers/sudoers.c:494
 msgid "command in current directory"
 msgstr "komento nykyisessä hakemistossa"
 
-#: plugins/sudoers/sudoers.c:505
+#: plugins/sudoers/sudoers.c:506
 #, c-format
 msgid "sorry, you are not allowed to preserve the environment"
 msgstr "ympäristöä ei ole lupa säilyttää"
 
-#: plugins/sudoers/sudoers.c:890
+#: plugins/sudoers/sudoers.c:894
 #, c-format
 msgid "internal error, set_cmnd() overflow"
 msgstr "sisäinen virhe, set_cmnd()-ylivuoto"
 
 #  Parametri on sudoers file
-#: plugins/sudoers/sudoers.c:935
+#: plugins/sudoers/sudoers.c:936
 #, c-format
 msgid "fixed mode on %s"
 msgstr "korjattu tila tiedostossa %s"
 
 #  Parametri on suoders file
-#: plugins/sudoers/sudoers.c:939
+#: plugins/sudoers/sudoers.c:940
 #, c-format
 msgid "set group on %s"
 msgstr "aseta ryhmä tiedostossa %s"
 
 #  Parametri on sudoers file
-#: plugins/sudoers/sudoers.c:942
+#: plugins/sudoers/sudoers.c:943
 #, c-format
 msgid "unable to set group on %s"
 msgstr "ei kyetä asettamaan ryhmää tiedostossa %s"
 
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:946
 #, c-format
 msgid "unable to fix mode on %s"
 msgstr "ei kyetä korjaamaan tilaa tiedostossa %s"
 
-#: plugins/sudoers/sudoers.c:958
+#: plugins/sudoers/sudoers.c:959
 #, c-format
 msgid "%s is not a regular file"
 msgstr "%s ei ole tavallinen tiedosto"
 
-#: plugins/sudoers/sudoers.c:960
+#: plugins/sudoers/sudoers.c:961
 #, c-format
 msgid "%s is mode 0%o, should be 0%o"
 msgstr "%s on tila 0%o, pitäisi olla 0%o"
 
-#: plugins/sudoers/sudoers.c:964
+#: plugins/sudoers/sudoers.c:965
 #, 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:967
+#: plugins/sudoers/sudoers.c:968
 #, c-format
 msgid "%s is owned by gid %u, should be %u"
 msgstr "%s on gid %u -ryhmän omistama, pitäisi olla %u"
 
-#: plugins/sudoers/sudoers.c:1011
+#: plugins/sudoers/sudoers.c:1012
 #, c-format
 msgid "only root can use `-c %s'"
 msgstr "vain root-käyttäjä voi käyttää valitsinta ”-c %s”"
 
-#: plugins/sudoers/sudoers.c:1021
+#: plugins/sudoers/sudoers.c:1022
 #, c-format
 msgid "unknown login class: %s"
 msgstr "tuntematon kirjautumisluokka: %s"
 
-#: plugins/sudoers/sudoers.c:1055
+#: plugins/sudoers/sudoers.c:1056
 #, c-format
 msgid "unable to resolve host %s"
 msgstr "ei kyetä ratkaisemaan tietokonetta %s"
 
-#: plugins/sudoers/sudoers.c:1105 plugins/sudoers/testsudoers.c:342
+#: plugins/sudoers/sudoers.c:1106 plugins/sudoers/testsudoers.c:351
 #, c-format
 msgid "unknown group: %s"
 msgstr "tuntematon ryhmä: %s"
 
-#: plugins/sudoers/sudoers.c:1137
+#: plugins/sudoers/sudoers.c:1150
 #, c-format
 msgid "Sudoers policy plugin version %s\n"
 msgstr "Sudoers-menettelytapalisäosaversio %s\n"
 
-#: plugins/sudoers/sudoers.c:1139
+#: plugins/sudoers/sudoers.c:1152
 #, c-format
 msgid "Sudoers file grammar version %d\n"
 msgstr "Sudoers-tiedostokielioppiversio %d\n"
 
-#: plugins/sudoers/sudoers.c:1143
+#: plugins/sudoers/sudoers.c:1156
 #, c-format
 msgid ""
 "\n"
@@ -1133,17 +1115,17 @@ msgstr ""
 "\n"
 "Sudoers-polku: %s\n"
 
-#: plugins/sudoers/sudoers.c:1146
+#: plugins/sudoers/sudoers.c:1159
 #, c-format
 msgid "nsswitch path: %s\n"
 msgstr "nsswitch-polku: %s\n"
 
-#: plugins/sudoers/sudoers.c:1148
+#: plugins/sudoers/sudoers.c:1161
 #, c-format
 msgid "ldap.conf path: %s\n"
 msgstr "ldap.conf-polku: %s\n"
 
-#: plugins/sudoers/sudoers.c:1149
+#: plugins/sudoers/sudoers.c:1162
 #, c-format
 msgid "ldap.secret path: %s\n"
 msgstr "ldap.secret-polku: %s\n"
@@ -1304,16 +1286,16 @@ msgstr ""
 "  -s nopeustekijä  nopeuta tai hidasta tulostusta\n"
 "  -V               näytä versiotiedot ja poistu"
 
-#: plugins/sudoers/testsudoers.c:228
+#: plugins/sudoers/testsudoers.c:230
 #, c-format
 msgid "internal error, init_vars() overflow"
 msgstr "sisäinen virhe, init_vars()-ylivuoto"
 
-#: plugins/sudoers/testsudoers.c:304
+#: plugins/sudoers/testsudoers.c:309
 msgid "\thost  unmatched"
 msgstr "\ttietokone täsmäämätön"
 
-#: plugins/sudoers/testsudoers.c:307
+#: plugins/sudoers/testsudoers.c:312
 msgid ""
 "\n"
 "Command allowed"
@@ -1321,7 +1303,7 @@ msgstr ""
 "\n"
 "Komento sallittu"
 
-#: plugins/sudoers/testsudoers.c:308
+#: plugins/sudoers/testsudoers.c:313
 msgid ""
 "\n"
 "Command denied"
@@ -1329,7 +1311,7 @@ msgstr ""
 "\n"
 "Komento kielletty"
 
-#: plugins/sudoers/testsudoers.c:308
+#: plugins/sudoers/testsudoers.c:313
 msgid ""
 "\n"
 "Command unmatched"
@@ -1360,81 +1342,81 @@ msgstr "%s kielioppiversio %d\n"
 msgid "you do not exist in the %s database"
 msgstr "ei ole olemassa %s-tietokannassa"
 
-#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:470
+#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:518
 #, c-format
 msgid "press return to edit %s: "
 msgstr "muokkaa %s painamalla enter-painiketta: "
 
-#: plugins/sudoers/visudo.c:300 plugins/sudoers/visudo.c:306
+#: plugins/sudoers/visudo.c:320 plugins/sudoers/visudo.c:326
 #, c-format
 msgid "write error"
 msgstr "kirjoitusvirhe"
 
-#: plugins/sudoers/visudo.c:360
+#: plugins/sudoers/visudo.c:408
 #, c-format
 msgid "unable to stat temporary file (%s), %s unchanged"
 msgstr "ei kyetä kutsumaan stat-funktiota tilapäiselle tiedostolle (%s), %s ennallaan"
 
-#: plugins/sudoers/visudo.c:365
+#: plugins/sudoers/visudo.c:413
 #, c-format
 msgid "zero length temporary file (%s), %s unchanged"
 msgstr "nollapituinen tilapäinen tiedosto (%s), %s ennallaan"
 
-#: plugins/sudoers/visudo.c:371
+#: plugins/sudoers/visudo.c:419
 #, c-format
 msgid "editor (%s) failed, %s unchanged"
 msgstr "editori (%s) epäonnistui, %s ennallaan"
 
-#: plugins/sudoers/visudo.c:394
+#: plugins/sudoers/visudo.c:442
 #, c-format
 msgid "%s unchanged"
 msgstr "%s ennallaan"
 
-#: plugins/sudoers/visudo.c:418
+#: plugins/sudoers/visudo.c:466
 #, c-format
 msgid "unable to re-open temporary file (%s), %s unchanged."
 msgstr "ei kyetä avaamaan uudelleen tilapäistä tiedostoa (%s), %s ennallaan."
 
-#: plugins/sudoers/visudo.c:428
+#: plugins/sudoers/visudo.c:476
 #, c-format
 msgid "unabled to parse temporary file (%s), unknown error"
 msgstr "ei kyetä jäsentämään tilapäistä tiedostoa (%s), tuntematon virhe"
 
-#: plugins/sudoers/visudo.c:463
+#: plugins/sudoers/visudo.c:511
 #, c-format
 msgid "internal error, unable to find %s in list!"
 msgstr "sisäinen virhe, ei kyetä löytämään %s luettelosta!"
 
-#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:511
+#: plugins/sudoers/visudo.c:546 plugins/sudoers/visudo.c:555
 #, c-format
-msgid "unable to set (uid, gid) of %s to (%d, %d)"
-msgstr "ei kyetä asettamaan kohdetta %s (uid, gid) arvoihin (%d, %d)"
+msgid "unable to set (uid, gid) of %s to (%u, %u)"
+msgstr "ei kyetä asettamaan kohdetta %s (uid, gid) arvoihin (%u, %u)"
 
-#: plugins/sudoers/visudo.c:506 plugins/sudoers/visudo.c:516
+#: plugins/sudoers/visudo.c:550 plugins/sudoers/visudo.c:560
 #, c-format
 msgid "unable to change mode of %s to 0%o"
 msgstr "ei kyetä muuttamaan %s-tilaa arvoon 0%o"
 
-#: plugins/sudoers/visudo.c:533
+#: plugins/sudoers/visudo.c:577
 #, c-format
 msgid "%s and %s not on the same file system, using mv to rename"
 msgstr "%s ja %s eivät ole samassa tiedostojärjestelmässä, käytetään komentoa mv uudelleennimeämiseen"
 
-#: plugins/sudoers/visudo.c:547
+#: plugins/sudoers/visudo.c:591
 #, c-format
 msgid "command failed: '%s %s %s', %s unchanged"
 msgstr "komento epäonnistui: ’%s %s %s’, %s ennallaan"
 
-#: plugins/sudoers/visudo.c:557
+#: plugins/sudoers/visudo.c:601
 #, c-format
 msgid "error renaming %s, %s unchanged"
 msgstr "virhe nimettäessä %s uudelleen, %s ennallaan"
 
-#: plugins/sudoers/visudo.c:617
+#: plugins/sudoers/visudo.c:661
 msgid "What now? "
 msgstr "Mitä nyt?"
 
-#: plugins/sudoers/visudo.c:631
+#: plugins/sudoers/visudo.c:675
 msgid ""
 "Options are:\n"
 "  (e)dit sudoers file again\n"
@@ -1447,93 +1429,93 @@ msgstr ""
 "  (Q) poistu ja tallenna muutokset sudoers-tiedostoon (VAARA!)\n"
 
 #  Parametri on path, mutta saattaa sisältää suoritettavan ohjelman
-#: plugins/sudoers/visudo.c:668
+#: plugins/sudoers/visudo.c:712
 #, c-format
 msgid "unable to execute %s"
 msgstr "ei kyetä suorittamaan kohdetta %s"
 
 #  Parametri on path, mutta saattaa sisältää suoritettavan ohjelman
-#: plugins/sudoers/visudo.c:675
+#: plugins/sudoers/visudo.c:719
 #, c-format
 msgid "unable to run %s"
 msgstr "ei kyetä suorittamaan kohdetta %s"
 
-#: plugins/sudoers/visudo.c:706
+#: plugins/sudoers/visudo.c:750
 #, c-format
 msgid "failed to parse %s file, unknown error"
 msgstr "tiedoston %s jäsentäminen epäonnistui, tuntematon virhe"
 
-#: plugins/sudoers/visudo.c:718
+#: plugins/sudoers/visudo.c:762
 #, 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:721
+#: plugins/sudoers/visudo.c:765
 #, c-format
 msgid "parse error in %s\n"
 msgstr "jäsentämisvirhe tiedostossa %s\n"
 
-#: plugins/sudoers/visudo.c:723
+#: plugins/sudoers/visudo.c:767
 #, c-format
 msgid "%s: parsed OK\n"
 msgstr "%s: jäsentäminen valmis\n"
 
-#: plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:776
 #, c-format
-msgid "%s: wrong owner (uid, gid) should be (%d, %d)\n"
-msgstr "%s: väärä omistaja (uid, gid), pitäisi olla (%d, %d)\n"
+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:744
+#: plugins/sudoers/visudo.c:783
 #, 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:783
+#: plugins/sudoers/visudo.c:822
 #, c-format
 msgid "%s busy, try again later"
 msgstr "%s varattu, yritä myöhemmin uudelleen"
 
-#: plugins/sudoers/visudo.c:826
+#: plugins/sudoers/visudo.c:865
 #, c-format
 msgid "specified editor (%s) doesn't exist"
 msgstr "määritelty editori (%s) ei ole olemassa"
 
-#: plugins/sudoers/visudo.c:849
+#: plugins/sudoers/visudo.c:888
 #, c-format
 msgid "unable to stat editor (%s)"
 msgstr "ei kyetä kutsumaan funktiota stat editori (%s)"
 
-#: plugins/sudoers/visudo.c:897
+#: plugins/sudoers/visudo.c:936
 #, c-format
 msgid "no editor found (editor path = %s)"
 msgstr "editoria ei löytynyt (editoripolku = %s)"
 
-#: plugins/sudoers/visudo.c:986
+#: plugins/sudoers/visudo.c:1025
 #, c-format
 msgid "Error: cycle in %s_Alias `%s'"
 msgstr "Virhe: jakso kohteessa %s_Alias ”%s”"
 
-#: plugins/sudoers/visudo.c:987
+#: plugins/sudoers/visudo.c:1026
 #, c-format
 msgid "Warning: cycle in %s_Alias `%s'"
 msgstr "Varoitus: jakso kohteessa %s_Alias ”%s”"
 
-#: plugins/sudoers/visudo.c:990
+#: plugins/sudoers/visudo.c:1029
 #, c-format
 msgid "Error: %s_Alias `%s' referenced but not defined"
 msgstr "Virhe: %s_Alias ”%s” uudelleenviitattu, mutta ei määritelty"
 
-#: plugins/sudoers/visudo.c:991
+#: plugins/sudoers/visudo.c:1030
 #, c-format
 msgid "Warning: %s_Alias `%s' referenced but not defined"
 msgstr "Varoitus: %s_Alias ”%s” uudelleenviitattu, mutta ei määritelty"
 
-#: plugins/sudoers/visudo.c:1128
+#: plugins/sudoers/visudo.c:1167
 #, c-format
 msgid "%s: unused %s_Alias %s"
 msgstr "%s: käyttämätön %s_Alias %s"
 
-#: plugins/sudoers/visudo.c:1185
+#: plugins/sudoers/visudo.c:1224
 #, c-format
 msgid ""
 "%s - safely edit the sudoers file\n"
@@ -1542,7 +1524,7 @@ msgstr ""
 "%s - muokkaa sudoers-tiedostoa turvallisesti\n"
 "\n"
 
-#: plugins/sudoers/visudo.c:1187
+#: plugins/sudoers/visudo.c:1226
 msgid ""
 "\n"
 "Options:\n"
@@ -1747,6 +1729,19 @@ msgstr[1] "%d väärää salasanaa yritetty"
 msgid "Authentication methods:"
 msgstr "Todennusmenetelmät:"
 
+#~ msgid ""
+#~ "Available options in a sudoers ``Defaults'' line:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Käytettävissä olevat valitsimet sudoers ’’Defaults’’ -rivillä:\n"
+#~ "\n"
+
+#~ msgid "%s: %s\n"
+#~ msgstr "%s: %s\n"
+
+#~ msgid "%s: %.*s\n"
+#~ msgstr "%s: %.*s\n"
+
 #~ msgid "unable to get runas group vector"
 #~ msgstr "ei kyetä hakemaan runas-ryhmävektoria"
 
diff --git a/plugins/sudoers/po/ja.mo b/plugins/sudoers/po/ja.mo
new file mode 100644 (file)
index 0000000..af993f3
Binary files /dev/null and b/plugins/sudoers/po/ja.mo differ
diff --git a/plugins/sudoers/po/ja.po b/plugins/sudoers/po/ja.po
new file mode 100644 (file)
index 0000000..40b7ef5
--- /dev/null
@@ -0,0 +1,1713 @@
+# Japanese messages for sudoers
+# This file is put in the public domain.
+# Yasuaki Taniguchi <yasuakit@gmail.com>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sudoers 1.8.3rc1\n"
+"Report-Msgid-Bugs-To: http://www.sudo.ws/bugs\n"
+"POT-Creation-Date: 2011-09-16 16:52-0400\n"
+"PO-Revision-Date: 2011-10-20 05:47+0900\n"
+"Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
+"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: plugins/sudoers/alias.c:122
+#, c-format
+msgid "Alias `%s' already defined"
+msgstr "別名 `%s' はすでに定義されています"
+
+#: plugins/sudoers/bsm_audit.c:58 plugins/sudoers/bsm_audit.c:61
+#: plugins/sudoers/bsm_audit.c:109 plugins/sudoers/bsm_audit.c:113
+#: plugins/sudoers/bsm_audit.c:163 plugins/sudoers/bsm_audit.c:167
+msgid "getaudit: failed"
+msgstr "getaudit: 失敗しました"
+
+#: plugins/sudoers/bsm_audit.c:87 plugins/sudoers/bsm_audit.c:148
+msgid "Could not determine audit condition"
+msgstr "監査条件を決定できませんでした"
+
+#: plugins/sudoers/bsm_audit.c:98
+msgid "getauid failed"
+msgstr "getauid に失敗しました"
+
+#: plugins/sudoers/bsm_audit.c:100 plugins/sudoers/bsm_audit.c:157
+msgid "au_open: failed"
+msgstr "au_open: 失敗しました"
+
+#: plugins/sudoers/bsm_audit.c:115 plugins/sudoers/bsm_audit.c:169
+msgid "au_to_subject: failed"
+msgstr "au_to_subject: 失敗しました"
+
+#: plugins/sudoers/bsm_audit.c:119 plugins/sudoers/bsm_audit.c:173
+msgid "au_to_exec_args: failed"
+msgstr "au_to_exec_args: 失敗しました"
+
+#: plugins/sudoers/bsm_audit.c:123 plugins/sudoers/bsm_audit.c:182
+msgid "au_to_return32: failed"
+msgstr "au_to_return32: 失敗しました"
+
+#: plugins/sudoers/bsm_audit.c:126 plugins/sudoers/bsm_audit.c:185
+msgid "unable to commit audit record"
+msgstr "監査レコードをコミットできません"
+
+#: plugins/sudoers/bsm_audit.c:155
+msgid "getauid: failed"
+msgstr "getauid: 失敗しました"
+
+#: plugins/sudoers/bsm_audit.c:178
+msgid "au_to_text: failed"
+msgstr "au_to_text: 失敗しました"
+
+#: plugins/sudoers/check.c:141
+#, c-format
+msgid "sorry, a password is required to run %s"
+msgstr "%s を実行するにはパスワードが必要です。すみません"
+
+#: plugins/sudoers/check.c:225 plugins/sudoers/iolog.c:169
+#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoreplay.c:325
+#: plugins/sudoers/sudoreplay.c:334 plugins/sudoers/sudoreplay.c:675
+#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:744
+#, c-format
+msgid "unable to open %s"
+msgstr "%s を開けません"
+
+#: plugins/sudoers/check.c:229 plugins/sudoers/iolog.c:199
+#, c-format
+msgid "unable to write to %s"
+msgstr "%s へ書き込むことができません"
+
+#: plugins/sudoers/check.c:237 plugins/sudoers/check.c:475
+#: plugins/sudoers/check.c:525 plugins/sudoers/iolog.c:122
+#: plugins/sudoers/iolog.c:153
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "ディレクトリ %s を作成できません"
+
+#: plugins/sudoers/check.c:370
+#, c-format
+msgid "internal error, expand_prompt() overflow"
+msgstr "内部エラー、expand_prompt() がオーバーフローしました"
+
+#: plugins/sudoers/check.c:426
+#, c-format
+msgid "timestamp path too long: %s"
+msgstr "タイムスタンプ用パスが長すぎます: %s"
+
+#: plugins/sudoers/check.c:454 plugins/sudoers/check.c:498
+#: plugins/sudoers/iolog.c:155
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s が存在しますがディレクトリーではありません (0%o)"
+
+#: plugins/sudoers/check.c:457 plugins/sudoers/check.c:501
+#: plugins/sudoers/check.c:546
+#, c-format
+msgid "%s owned by uid %u, should be uid %u"
+msgstr "%s はユーザーID (uid) %u によって所有されています。これはユーザーID %u であるべきです"
+
+#: plugins/sudoers/check.c:462 plugins/sudoers/check.c:506
+#, c-format
+msgid "%s writable by non-owner (0%o), should be mode 0700"
+msgstr "%s は所有者以外でも書き込み可能 (0%o) です。アクセス権限のモードは 0700 であるべきです"
+
+#: plugins/sudoers/check.c:470 plugins/sudoers/check.c:514
+#: plugins/sudoers/check.c:582 plugins/sudoers/sudoers.c:957
+#: plugins/sudoers/visudo.c:304 plugins/sudoers/visudo.c:544
+#, c-format
+msgid "unable to stat %s"
+msgstr "%s の状態取得 (stat) ができません"
+
+#: plugins/sudoers/check.c:540
+#, c-format
+msgid "%s exists but is not a regular file (0%o)"
+msgstr "%s が存在しますが通常ファイル (0%o) ではありません"
+
+#: plugins/sudoers/check.c:552
+#, c-format
+msgid "%s writable by non-owner (0%o), should be mode 0600"
+msgstr "%s は所有者以外でも書き込み可能 (0%o) です。アクセス権限のモードは 0600 であるべきです"
+
+#: plugins/sudoers/check.c:606
+#, c-format
+msgid "timestamp too far in the future: %20.20s"
+msgstr "タイムスタンプが遠すぎる将来になっています: %20.20s"
+
+#: plugins/sudoers/check.c:652
+#, c-format
+msgid "unable to remove %s (%s), will reset to the epoch"
+msgstr "%s (%s) を削除できません。エポックにリセットします"
+
+#: plugins/sudoers/check.c:660
+#, c-format
+msgid "unable to reset %s to the epoch"
+msgstr "%s をエポックにリセットできません"
+
+#: plugins/sudoers/check.c:714 plugins/sudoers/check.c:720
+#, c-format
+msgid "unknown uid: %u"
+msgstr "不明なユーザーID (uid) です: %u"
+
+#: plugins/sudoers/check.c:717 plugins/sudoers/sudoers.c:748
+#: plugins/sudoers/sudoers.c:814 plugins/sudoers/sudoers.c:815
+#: plugins/sudoers/sudoers.c:1088 plugins/sudoers/testsudoers.c:202
+#: plugins/sudoers/testsudoers.c:337
+#, c-format
+msgid "unknown user: %s"
+msgstr "不明なユーザーです: %s"
+
+#: plugins/sudoers/def_data.c:27
+#, c-format
+msgid "Syslog facility if syslog is being used for logging: %s"
+msgstr "ログ記録時に syslog を使用する場合の syslog facility: %s"
+
+#: plugins/sudoers/def_data.c:31
+#, c-format
+msgid "Syslog priority to use when user authenticates successfully: %s"
+msgstr "ログ記録時に syslog を使用する場合の syslog priority: %s"
+
+#: plugins/sudoers/def_data.c:35
+#, c-format
+msgid "Syslog priority to use when user authenticates unsuccessfully: %s"
+msgstr "ユーザー認証に失敗したと時に使用される syslog priority: %s"
+
+#: plugins/sudoers/def_data.c:39
+msgid "Put OTP prompt on its own line"
+msgstr "ワンタイムパスワード入力要求をそれのみの行に表示します"
+
+#: plugins/sudoers/def_data.c:43
+msgid "Ignore '.' in $PATH"
+msgstr "$PATH 内にある '.' を無視します"
+
+#: plugins/sudoers/def_data.c:47
+msgid "Always send mail when sudo is run"
+msgstr "sudo を実行した時に、常にメールを送信します"
+
+#: plugins/sudoers/def_data.c:51
+msgid "Send mail if user authentication fails"
+msgstr "ユーザー認証に失敗した場合にメールを送信します"
+
+#: plugins/sudoers/def_data.c:55
+msgid "Send mail if the user is not in sudoers"
+msgstr "ユーザー他 sudoers 内に存在しない場合にメールを送信します"
+
+#: plugins/sudoers/def_data.c:59
+msgid "Send mail if the user is not in sudoers for this host"
+msgstr "ユーザーがこのホスト用の sudoers 内に存在しない場合にメールを送信します"
+
+#: plugins/sudoers/def_data.c:63
+msgid "Send mail if the user is not allowed to run a command"
+msgstr "ユーザーが許可されていないコマンドを実行しようとした場合にメールを送信します"
+
+#: plugins/sudoers/def_data.c:67
+msgid "Use a separate timestamp for each user/tty combo"
+msgstr "ユーザー/tty の組み合わせごとに分離したタイムスタンプを使用します"
+
+#: plugins/sudoers/def_data.c:71
+msgid "Lecture user the first time they run sudo"
+msgstr "ユーザーが最初に sudo を実行した時に講義を行う"
+
+#: plugins/sudoers/def_data.c:75
+#, c-format
+msgid "File containing the sudo lecture: %s"
+msgstr "sudo の講義が含まれているファイル: %s"
+
+#: plugins/sudoers/def_data.c:79
+msgid "Require users to authenticate by default"
+msgstr "デフォルトでユーザーが認証されていることを必要とします"
+
+#: plugins/sudoers/def_data.c:83
+msgid "Root may run sudo"
+msgstr "root が sudo を実行するかもしれません"
+
+#: plugins/sudoers/def_data.c:87
+msgid "Log the hostname in the (non-syslog) log file"
+msgstr " ログファイル (syslog 以外) に記録する時にホスト名を含めます"
+
+#: plugins/sudoers/def_data.c:91
+msgid "Log the year in the (non-syslog) log file"
+msgstr "ログファイル (syslog 以外) に記録する時に年情報を含めます"
+
+#: plugins/sudoers/def_data.c:95
+msgid "If sudo is invoked with no arguments, start a shell"
+msgstr "sudo を引数無しで起動した場合、シェルを開始します"
+
+#: plugins/sudoers/def_data.c:99
+msgid "Set $HOME to the target user when starting a shell with -s"
+msgstr "シェルを -s で開始した時に $HOME を変更後のユーザーのホームディレクトリーに設定します"
+
+#: plugins/sudoers/def_data.c:103
+msgid "Always set $HOME to the target user's home directory"
+msgstr "$HOME を常に変更後のユーザーのホームディレクトリーに設定します"
+
+#: plugins/sudoers/def_data.c:107
+msgid "Allow some information gathering to give useful error messages"
+msgstr "役に立つエラーメッセージを表示するためにいくつかの情報を収集することを許可します"
+
+#: plugins/sudoers/def_data.c:111
+msgid "Require fully-qualified hostnames in the sudoers file"
+msgstr "sudoers ファイルに完全修飾ホスト名 (FQDN) を要求します"
+
+#: plugins/sudoers/def_data.c:115
+msgid "Insult the user when they enter an incorrect password"
+msgstr "間違ったパスワードを入力した時にユーザーを侮辱します"
+
+#: plugins/sudoers/def_data.c:119
+msgid "Only allow the user to run sudo if they have a tty"
+msgstr "tty がある場合のみ sudo の実行を許可します"
+
+#: plugins/sudoers/def_data.c:123
+msgid "Visudo will honor the EDITOR environment variable"
+msgstr "visudo が EDITOR 環境変数を尊重して使用します"
+
+#: plugins/sudoers/def_data.c:127
+msgid "Prompt for root's password, not the users's"
+msgstr "ユーザーのパスワードではなく、root のパスワードの入力を要求します"
+
+#: plugins/sudoers/def_data.c:131
+msgid "Prompt for the runas_default user's password, not the users's"
+msgstr "ユーザーのパスワードではなく、 runas_default ユーザーのパスワードの入力を要求します"
+
+#: plugins/sudoers/def_data.c:135
+msgid "Prompt for the target user's password, not the users's"
+msgstr "現在のユーザーのパスワードではなく、変更先ユーザーのパスワードの入力を要求します"
+
+#: plugins/sudoers/def_data.c:139
+msgid "Apply defaults in the target user's login class if there is one"
+msgstr "変更先ユーザーのログインクラスのデフォルトが存在する場合は、デフォルトを適用します"
+
+#: plugins/sudoers/def_data.c:143
+msgid "Set the LOGNAME and USER environment variables"
+msgstr "LOGNAME および USER 環境変数を設定します"
+
+#: plugins/sudoers/def_data.c:147
+msgid "Only set the effective uid to the target user, not the real uid"
+msgstr "実効ユーザーIDのみ変更先ユーザーの UID に設定し、実ユーザーIDは変更しない"
+
+#: plugins/sudoers/def_data.c:151
+msgid "Don't initialize the group vector to that of the target user"
+msgstr "グループベクトルを変更先ユーザーの値で初期化しない"
+
+#: plugins/sudoers/def_data.c:155
+#, c-format
+msgid "Length at which to wrap log file lines (0 for no wrap): %d"
+msgstr "ログファイルの改行する長さ (0 の場合は改行しない): %d"
+
+#: plugins/sudoers/def_data.c:159
+#, c-format
+msgid "Authentication timestamp timeout: %.1f minutes"
+msgstr "認証タイムスタンプのタイムアウト値: %.1f 分"
+
+#: plugins/sudoers/def_data.c:163
+#, c-format
+msgid "Password prompt timeout: %.1f minutes"
+msgstr "パスワード入力要求のタイムアウト値: %.1f 分"
+
+#: plugins/sudoers/def_data.c:167
+#, c-format
+msgid "Number of tries to enter a password: %d"
+msgstr "パスワード入力の試行回数: %d"
+
+#: plugins/sudoers/def_data.c:171
+#, c-format
+msgid "Umask to use or 0777 to use user's: 0%o"
+msgstr "使用する umask 値 (0777 の場合はユーザーの設定値を使用します): 0%o"
+
+#: plugins/sudoers/def_data.c:175
+#, c-format
+msgid "Path to log file: %s"
+msgstr "ログファイルのパス: %s"
+
+#: plugins/sudoers/def_data.c:179
+#, c-format
+msgid "Path to mail program: %s"
+msgstr "メールプログラムのパス: %s"
+
+#: plugins/sudoers/def_data.c:183
+#, c-format
+msgid "Flags for mail program: %s"
+msgstr "メールプログラムの引数フラグ: %s"
+
+#: plugins/sudoers/def_data.c:187
+#, c-format
+msgid "Address to send mail to: %s"
+msgstr "メールの送信先アドレス: %s"
+
+#: plugins/sudoers/def_data.c:191
+#, c-format
+msgid "Address to send mail from: %s"
+msgstr "メールの送信元アドレス: %s"
+
+#: plugins/sudoers/def_data.c:195
+#, c-format
+msgid "Subject line for mail messages: %s"
+msgstr "メールの件名 (Subject) 行: %s"
+
+#: plugins/sudoers/def_data.c:199
+#, c-format
+msgid "Incorrect password message: %s"
+msgstr "パスワードを間違った時のメッセージ: %s"
+
+#: plugins/sudoers/def_data.c:203
+#, c-format
+msgid "Path to authentication timestamp dir: %s"
+msgstr "認証タイムスタンプディレクトリーのパス: %s"
+
+#: plugins/sudoers/def_data.c:207
+#, c-format
+msgid "Owner of the authentication timestamp dir: %s"
+msgstr "認証タイムスタンプディレクトリーの所有者: %s"
+
+#: plugins/sudoers/def_data.c:211
+#, c-format
+msgid "Users in this group are exempt from password and PATH requirements: %s"
+msgstr "パスワード入力と PATH の要求が免除されるグループに属するユーザー: %s"
+
+#: plugins/sudoers/def_data.c:215
+#, c-format
+msgid "Default password prompt: %s"
+msgstr "パスワード入力要求時に表示される文字列: %s"
+
+#: plugins/sudoers/def_data.c:219
+msgid "If set, passprompt will override system prompt in all cases."
+msgstr "設定した場合、すべての場合において passprompt がシステムの入力要求表示を上書きします"
+
+#: plugins/sudoers/def_data.c:223
+#, c-format
+msgid "Default user to run commands as: %s"
+msgstr "コマンドを実行するデフォルトの変更先ユーザー: %s"
+
+#: plugins/sudoers/def_data.c:227
+#, c-format
+msgid "Value to override user's $PATH with: %s"
+msgstr "ユーザーの $PATH を上書きする時の値: %s"
+
+#: plugins/sudoers/def_data.c:231
+#, c-format
+msgid "Path to the editor for use by visudo: %s"
+msgstr "visudo で使用されるエディターのパス: %s"
+
+#: plugins/sudoers/def_data.c:235
+#, c-format
+msgid "When to require a password for 'list' pseudocommand: %s"
+msgstr "'list' 疑似コマンド使用するためにパスワードを要求される時: %s"
+
+#: plugins/sudoers/def_data.c:239
+#, c-format
+msgid "When to require a password for 'verify' pseudocommand: %s"
+msgstr "'verify' 疑似コマンドを使用するためにパスワードを要求される時: %s"
+
+#: plugins/sudoers/def_data.c:243
+msgid "Preload the dummy exec functions contained in 'noexec_file'"
+msgstr "'noexec_file' にある偽の exec 関数群を事前ロードします"
+
+#: plugins/sudoers/def_data.c:247
+#, c-format
+msgid "File containing dummy exec functions: %s"
+msgstr "偽の exec 関数が含まれるファイル: %s"
+
+# do はたぶん強調の do
+#: plugins/sudoers/def_data.c:251
+msgid "If LDAP directory is up, do we ignore local sudoers file"
+msgstr "LDAP ディレクトリーが実行中の場合、ローカルの sudoers ファイルを無視します"
+
+#: plugins/sudoers/def_data.c:255
+#, c-format
+msgid "File descriptors >= %d will be closed before executing a command"
+msgstr "%d 以上の値をもつファイル記述子をコマンド実行前に閉じます"
+
+#: plugins/sudoers/def_data.c:259
+msgid "If set, users may override the value of `closefrom' with the -C option"
+msgstr "設定した場合、ユーザーが `closefrom' の値を -C オプションで上書きするかもしれません"
+
+#: plugins/sudoers/def_data.c:263
+msgid "Allow users to set arbitrary environment variables"
+msgstr "ユーザーが任意の環境変数を設定することを許可します"
+
+#: plugins/sudoers/def_data.c:267
+msgid "Reset the environment to a default set of variables"
+msgstr "環境変数の集合をデフォルトに設定します"
+
+#: plugins/sudoers/def_data.c:271
+msgid "Environment variables to check for sanity:"
+msgstr "正当性の確認を行う環境変数:"
+
+#: plugins/sudoers/def_data.c:275
+msgid "Environment variables to remove:"
+msgstr "削除する環境変数:"
+
+#: plugins/sudoers/def_data.c:279
+msgid "Environment variables to preserve:"
+msgstr "保護する環境変数:"
+
+#: plugins/sudoers/def_data.c:283
+#, c-format
+msgid "SELinux role to use in the new security context: %s"
+msgstr "新しいセキュリティコンテキスト内で使用する SELinux の役割: %s"
+
+#: plugins/sudoers/def_data.c:287
+#, c-format
+msgid "SELinux type to use in the new security context: %s"
+msgstr "新しいセキュリティコンテキスト内で使用する SELinux のタイプ: %s"
+
+#: plugins/sudoers/def_data.c:291
+#, c-format
+msgid "Path to the sudo-specific environment file: %s"
+msgstr "sudo 固有の環境ファイルのパス: %s"
+
+#: plugins/sudoers/def_data.c:295
+#, c-format
+msgid "Locale to use while parsing sudoers: %s"
+msgstr "sudoers を構文解析する時に使用するロケール: %s"
+
+#: plugins/sudoers/def_data.c:299
+msgid "Allow sudo to prompt for a password even if it would be visisble"
+msgstr "パスワードが表示される状態であっても sudo がパスワード入力を要求することを許可します"
+
+#: plugins/sudoers/def_data.c:303
+msgid "Provide visual feedback at the password prompt when there is user input"
+msgstr "パスワード入力要求でユーザーの入力があった時に、視覚的なフィードバックを提供します"
+
+#: plugins/sudoers/def_data.c:307
+msgid "Use faster globbing that is less accurate but does not access the filesystem"
+msgstr "ファイルシステムにアクセスしないがより正確では無い、素早い一致確認処理を行います"
+
+#: plugins/sudoers/def_data.c:311
+msgid "The umask specified in sudoers will override the user's, even if it is more permissive"
+msgstr "sudoers で指定した umask 値でユーザーの umask 値を上書きします (ユーザーの umask 値より緩い場合でも)"
+
+#: plugins/sudoers/def_data.c:315
+msgid "Log user's input for the command being run"
+msgstr "コマンドを実行した時のユーザー入力をログに記録します"
+
+#: plugins/sudoers/def_data.c:319
+msgid "Log the output of the command being run"
+msgstr "コマンドを実行した時の出力をログに記録します"
+
+#: plugins/sudoers/def_data.c:323
+msgid "Compress I/O logs using zlib"
+msgstr "I/O ログを zlib を使用して圧縮します"
+
+#: plugins/sudoers/def_data.c:327
+msgid "Always run commands in a pseudo-tty"
+msgstr "常に疑似 tty 内でコマンドを実行します"
+
+#: plugins/sudoers/def_data.c:331
+msgid "Plugin for non-Unix group support"
+msgstr "UNIX 以外のグループをサポートするためのプラグインです"
+
+#: plugins/sudoers/def_data.c:335
+msgid "Directory in which to store input/output logs"
+msgstr "入出力 (I/O) ログを保存するディレクトリーです"
+
+#: plugins/sudoers/def_data.c:339
+msgid "File in which to store the input/output log"
+msgstr "入出力 (I/O) ログを保存するファイルです"
+
+#: plugins/sudoers/def_data.c:343
+msgid "Add an entry to the utmp/utmpx file when allocating a pty"
+msgstr "pty を割り当てた時に utmp/utmpx ファイルに記録を加えます"
+
+#: plugins/sudoers/def_data.c:347
+msgid "Set the user in utmp to the runas user, not the invoking user"
+msgstr "utmp に記録するユーザーを、実行したユーザーではなく、変更後のユーザーにします"
+
+#: plugins/sudoers/defaults.c:205
+#, c-format
+msgid "unknown defaults entry `%s'"
+msgstr "不明なデフォルト項目 `%s' です"
+
+#: plugins/sudoers/defaults.c:213 plugins/sudoers/defaults.c:223
+#: plugins/sudoers/defaults.c:243 plugins/sudoers/defaults.c:256
+#: plugins/sudoers/defaults.c:269 plugins/sudoers/defaults.c:282
+#: plugins/sudoers/defaults.c:295 plugins/sudoers/defaults.c:315
+#: plugins/sudoers/defaults.c:325
+#, c-format
+msgid "value `%s' is invalid for option `%s'"
+msgstr "オプション `%2$s' の値 `%1$s' は無効です"
+
+#: plugins/sudoers/defaults.c:216 plugins/sudoers/defaults.c:226
+#: plugins/sudoers/defaults.c:234 plugins/sudoers/defaults.c:251
+#: plugins/sudoers/defaults.c:264 plugins/sudoers/defaults.c:277
+#: plugins/sudoers/defaults.c:290 plugins/sudoers/defaults.c:310
+#: plugins/sudoers/defaults.c:321
+#, c-format
+msgid "no value specified for `%s'"
+msgstr "`%s' に値が指定されていません"
+
+#: plugins/sudoers/defaults.c:239
+#, c-format
+msgid "values for `%s' must start with a '/'"
+msgstr "`%s' の値は '/' で開始しなければいけません"
+
+#: plugins/sudoers/defaults.c:301
+#, c-format
+msgid "option `%s' does not take a value"
+msgstr "オプション `%s' は値をとりません"
+
+#: plugins/sudoers/env.c:259
+#, c-format
+msgid "internal error, sudo_setenv() overflow"
+msgstr "内部エラー、 sudo_setenv() がオーバーフローしました"
+
+#: plugins/sudoers/env.c:289
+#, c-format
+msgid "sudo_putenv: corrupted envp, length mismatch"
+msgstr "sudo_putenv: envp が破損しています。長さが合いません"
+
+#: plugins/sudoers/env.c:698
+#, c-format
+msgid "sorry, you are not allowed to set the following environment variables: %s"
+msgstr "すみませんが、あなたは次の環境変数を設定することを許可されていません: %s"
+
+#: plugins/sudoers/find_path.c:68 plugins/sudoers/find_path.c:107
+#: plugins/sudoers/find_path.c:122 plugins/sudoers/iolog.c:124
+#: plugins/sudoers/sudoers.c:903 toke.l:663 toke.l:814
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: gram.y:103
+#, c-format
+msgid ">>> %s: %s near line %d <<<"
+msgstr ">>> %s: %s (%d行付近) <<<"
+
+#: plugins/sudoers/group_plugin.c:90
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: plugins/sudoers/group_plugin.c:102
+#, c-format
+msgid "%s must be owned by uid %d"
+msgstr "%s の所有者は uid %d でなければいけません"
+
+#: plugins/sudoers/group_plugin.c:106
+#, c-format
+msgid "%s must only be writable by owner"
+msgstr "%s は所有者のみ書き込み可能でなければいけません"
+
+#: plugins/sudoers/group_plugin.c:113
+#, c-format
+msgid "unable to dlopen %s: %s"
+msgstr "dlopen %s を行うことができません: %s"
+
+#: plugins/sudoers/group_plugin.c:118
+#, c-format
+msgid "unable to find symbol \"group_plugin\" in %s"
+msgstr "%s 内にシンボル \"group_plugin\" がありません"
+
+#: plugins/sudoers/group_plugin.c:123
+#, c-format
+msgid "%s: incompatible group plugin major version %d, expected %d"
+msgstr "%s: 互換性のないグループプラグインメジャーバージョン %d です。予期されるのは %d です"
+
+#: plugins/sudoers/interfaces.c:109
+msgid "Local IP address and netmask pairs:\n"
+msgstr "ローカル IP アドレスとネットマスクの組:\n"
+
+#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:978
+#, c-format
+msgid "unable to read %s"
+msgstr "%s を読み込めません"
+
+#: plugins/sudoers/iolog.c:179
+#, c-format
+msgid "invalid sequence number %s"
+msgstr "無効な順序番号です: %s"
+
+#: plugins/sudoers/iolog.c:225 plugins/sudoers/iolog.c:228
+#: plugins/sudoers/iolog.c:478 plugins/sudoers/iolog.c:483
+#: plugins/sudoers/iolog.c:489 plugins/sudoers/iolog.c:497
+#: plugins/sudoers/iolog.c:505 plugins/sudoers/iolog.c:513
+#: plugins/sudoers/iolog.c:521
+#, c-format
+msgid "unable to create %s"
+msgstr "%s を作成できません"
+
+#: plugins/sudoers/iolog_path.c:247 plugins/sudoers/sudoers.c:357
+#, c-format
+msgid "unable to set locale to \"%s\", using \"C\""
+msgstr "ロケールを \"%s\" に設定できません。 \"C\" を使用します"
+
+#: plugins/sudoers/ldap.c:368
+#, c-format
+msgid "sudo_ldap_conf_add_ports: port too large"
+msgstr "sudo_ldap_conf_add_ports: ポートが大きすぎます"
+
+#: plugins/sudoers/ldap.c:391
+#, c-format
+msgid "sudo_ldap_conf_add_ports: out of space expanding hostbuf"
+msgstr "sudo_ldap_conf_add_ports: hostbuf を拡張中にメモリ空間が不足しました"
+
+#: plugins/sudoers/ldap.c:420
+#, c-format
+msgid "unsupported LDAP uri type: %s"
+msgstr "サポートされてない LDAP URI タイプです: %s"
+
+#: plugins/sudoers/ldap.c:449
+#, c-format
+msgid "invalid uri: %s"
+msgstr "無効な URI です: %s"
+
+#: plugins/sudoers/ldap.c:455
+#, c-format
+msgid "unable to mix ldap and ldaps URIs"
+msgstr "ldap と ldaps の URI を混ぜて使用できません"
+
+#: plugins/sudoers/ldap.c:459
+#, c-format
+msgid "unable to mix ldaps and starttls"
+msgstr "ldaps と starttls を混ぜて使用できません"
+
+#: plugins/sudoers/ldap.c:478
+#, c-format
+msgid "sudo_ldap_parse_uri: out of space building hostbuf"
+msgstr "sudo_ldap_parse_uri: hostbuf を構築中にメモリ空間が不足しました"
+
+#: plugins/sudoers/ldap.c:541
+#, c-format
+msgid "unable to initialize SSL cert and key db: %s"
+msgstr "SSL 証明書と鍵データベースを初期化できません: %s"
+
+#: plugins/sudoers/ldap.c:937
+#, c-format
+msgid "unable to get GMT time"
+msgstr "GMT 時刻を取得できません"
+
+#: plugins/sudoers/ldap.c:943
+#, c-format
+msgid "unable to format timestamp"
+msgstr "タイムスタンプを書式整形できません"
+
+#: plugins/sudoers/ldap.c:951
+#, c-format
+msgid "unable to build time filter"
+msgstr "時刻フィルターを構築できません"
+
+#: plugins/sudoers/ldap.c:1052
+#, c-format
+msgid "sudo_ldap_build_pass1 allocation mismatch"
+msgstr "sudo_ldap_build_pass1 配置が一致しません"
+
+#: plugins/sudoers/ldap.c:1562
+#, c-format
+msgid ""
+"\n"
+"LDAP Role: %s\n"
+msgstr ""
+"\n"
+"LDAP 役割: %s\n"
+
+#: plugins/sudoers/ldap.c:1564
+#, c-format
+msgid ""
+"\n"
+"LDAP Role: UNKNOWN\n"
+msgstr ""
+"\n"
+"LDAP 役割: 不明\n"
+
+#: plugins/sudoers/ldap.c:1611
+#, c-format
+msgid "    Order: %s\n"
+msgstr "    Order: %s\n"
+
+#: plugins/sudoers/ldap.c:1619
+#, c-format
+msgid "    Commands:\n"
+msgstr "    コマンド:\n"
+
+#: plugins/sudoers/ldap.c:2006
+#, c-format
+msgid "unable to initialize LDAP: %s"
+msgstr "LDAP を初期化できません: %s"
+
+#: plugins/sudoers/ldap.c:2037
+#, c-format
+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:2268
+#, c-format
+msgid "invalid sudoOrder attribute: %s"
+msgstr "無効な sudoOrder 属性です: %s"
+
+#: plugins/sudoers/linux_audit.c:55
+#, c-format
+msgid "unable to open audit system"
+msgstr "監査システムを開くことができません"
+
+#: plugins/sudoers/linux_audit.c:79
+#, c-format
+msgid "internal error, linux_audit_command() overflow"
+msgstr "内部エラー、linux_audit_command() がオーバーフローしました"
+
+#: plugins/sudoers/linux_audit.c:88
+#, c-format
+msgid "unable to send audit message"
+msgstr "監査メッセージを送ることができません"
+
+#: plugins/sudoers/logging.c:192
+#, c-format
+msgid "unable to open log file: %s: %s"
+msgstr "ログファイルを開けません: %s: %s"
+
+#: plugins/sudoers/logging.c:195
+#, c-format
+msgid "unable to lock log file: %s: %s"
+msgstr "ログファイルをロックできません: %s: %s"
+
+#: plugins/sudoers/logging.c:249
+msgid "user NOT in sudoers"
+msgstr "ユーザーが sudoers 内にありません"
+
+#: plugins/sudoers/logging.c:251
+msgid "user NOT authorized on host"
+msgstr "ホスト上でユーザーが認証されていません"
+
+#: plugins/sudoers/logging.c:253
+msgid "command not allowed"
+msgstr "コマンドが許可されていません"
+
+#: plugins/sudoers/logging.c:263
+#, c-format
+msgid "%s is not in the sudoers file.  This incident will be reported.\n"
+msgstr "%s は sudoers ファイルではありません。この事象は記録・報告されます。\n"
+
+#: plugins/sudoers/logging.c:266
+#, 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:270
+#, c-format
+msgid "Sorry, user %s may not run sudo on %s.\n"
+msgstr "ユーザー %s は %s 上で sudo を実行できません。すみません。\n"
+
+#: plugins/sudoers/logging.c:273
+#, c-format
+msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
+msgstr "ユーザー %s は'%s%s%s' を %s%s%s として %s 上で実行することは許可されていません。すみません。\n"
+
+#: plugins/sudoers/logging.c:408
+#, c-format
+msgid "unable to fork"
+msgstr "fork できません"
+
+#: plugins/sudoers/logging.c:415 plugins/sudoers/logging.c:472
+#, c-format
+msgid "unable to fork: %m"
+msgstr "fork できません: %m"
+
+#: plugins/sudoers/logging.c:465
+#, c-format
+msgid "unable to open pipe: %m"
+msgstr "パイプを開けません: %m"
+
+#: plugins/sudoers/logging.c:484
+#, c-format
+msgid "unable to dup stdin: %m"
+msgstr "標準入力を複製できません: %m"
+
+#: plugins/sudoers/logging.c:518
+#, c-format
+msgid "unable to execute %s: %m"
+msgstr "%s を実行できません: %m"
+
+#: plugins/sudoers/logging.c:728
+#, c-format
+msgid "internal error: insufficient space for log line"
+msgstr "内部エラー: ログの行に十分な空間がありません"
+
+#: plugins/sudoers/parse.c:115
+#, c-format
+msgid "parse error in %s near line %d"
+msgstr "%s 内 %d 行付近で構文解析エラーが発生しました"
+
+#: plugins/sudoers/parse.c:371
+#, c-format
+msgid ""
+"\n"
+"Sudoers entry:\n"
+msgstr ""
+"\n"
+"sudoers 項目:\n"
+
+#: plugins/sudoers/parse.c:373
+#, c-format
+msgid "    RunAsUsers: "
+msgstr "    RunAsUsers: "
+
+#: plugins/sudoers/parse.c:388
+#, c-format
+msgid "    RunAsGroups: "
+msgstr "    RunAsGroups: "
+
+#: plugins/sudoers/parse.c:397
+#, c-format
+msgid ""
+"    Commands:\n"
+"\t"
+msgstr ""
+"    コマンド:\n"
+"\t"
+
+#: plugins/sudoers/plugin_error.c:100 plugins/sudoers/plugin_error.c:105
+msgid ": "
+msgstr ": "
+
+#: plugins/sudoers/pwutil.c:251
+#, c-format
+msgid "unable to cache uid %u (%s), already exists"
+msgstr "ユーザーID %u (%s) をキャッシュできません。すでに存在します"
+
+#: plugins/sudoers/pwutil.c:259
+#, c-format
+msgid "unable to cache uid %u, already exists"
+msgstr "ユーザーID %u をキャッシュできません。すでに存在します"
+
+#: plugins/sudoers/pwutil.c:295 plugins/sudoers/pwutil.c:304
+#, c-format
+msgid "unable to cache user %s, already exists"
+msgstr "ユーザー %s をキャッシュできません。すでに存在します"
+
+#: plugins/sudoers/pwutil.c:607
+#, c-format
+msgid "unable to cache gid %u (%s), already exists"
+msgstr "グループID %u (%s) をキャッシュできません。すでに存在します"
+
+#: plugins/sudoers/pwutil.c:615
+#, c-format
+msgid "unable to cache gid %u, already exists"
+msgstr "グループID %u をキャッシュできません。すでに存在します"
+
+#: plugins/sudoers/pwutil.c:644 plugins/sudoers/pwutil.c:653
+#, c-format
+msgid "unable to cache group %s, already exists"
+msgstr "グループ %s をキャッシュできません。すでに存在します"
+
+#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:358
+#: plugins/sudoers/set_perms.c:590 plugins/sudoers/set_perms.c:824
+msgid "perm stack overflow"
+msgstr "perm スタックがオーバーフローしました"
+
+#: plugins/sudoers/set_perms.c:117 plugins/sudoers/set_perms.c:366
+#: plugins/sudoers/set_perms.c:598 plugins/sudoers/set_perms.c:832
+msgid "perm stack underflow"
+msgstr "perm スタックがアンダーフローしました"
+
+#: plugins/sudoers/set_perms.c:223 plugins/sudoers/set_perms.c:458
+#: plugins/sudoers/set_perms.c:695
+msgid "unable to change to runas gid"
+msgstr "実行するためのグループIDに変更できません"
+
+#: plugins/sudoers/set_perms.c:231 plugins/sudoers/set_perms.c:465
+#: plugins/sudoers/set_perms.c:702
+msgid "unable to change to runas uid"
+msgstr "実行するためのユーザーIDに変更できません"
+
+#: plugins/sudoers/set_perms.c:245 plugins/sudoers/set_perms.c:478
+#: plugins/sudoers/set_perms.c:715
+#, c-format
+msgid "unable to change to sudoers gid"
+msgstr "sudoers のグループIDへ変更できません"
+
+#: plugins/sudoers/set_perms.c:286 plugins/sudoers/set_perms.c:516
+#: plugins/sudoers/set_perms.c:753 plugins/sudoers/set_perms.c:893
+msgid "too many processes"
+msgstr "プロセスが多すぎます"
+
+#: plugins/sudoers/set_perms.c:955
+msgid "unable to set runas group vector"
+msgstr "グループベクトルを実行するためのものに変更できません"
+
+#: plugins/sudoers/sudo_nss.c:238
+#, c-format
+msgid "Matching Defaults entries for %s on this host:\n"
+msgstr "このホスト上でユーザー %s に一致したデフォルト項目:\n"
+
+#: plugins/sudoers/sudo_nss.c:251
+#, c-format
+msgid "Runas and Command-specific defaults for %s:\n"
+msgstr "ユーザー %s 用の Runas およびコマンド特有のデフォルト:\n"
+
+#: plugins/sudoers/sudo_nss.c:264
+#, c-format
+msgid "User %s may run the following commands on this host:\n"
+msgstr "ユーザー %s は次のコマンドをこのホスト上で実行できます:\n"
+
+#: plugins/sudoers/sudo_nss.c:274
+#, c-format
+msgid "User %s is not allowed to run sudo on %s.\n"
+msgstr "ユーザー %s は %s 上で sudo を実行することを許可されていません。\n"
+
+#: plugins/sudoers/sudoers.c:199 plugins/sudoers/sudoers.c:234
+#: plugins/sudoers/sudoers.c:911
+msgid "problem with defaults entries"
+msgstr "デフォルト項目で問題が発生しました"
+
+#: plugins/sudoers/sudoers.c:203
+#, c-format
+msgid "no valid sudoers sources found, quitting"
+msgstr "有効な sudoers のソースが見つかりません。終了します"
+
+#: plugins/sudoers/sudoers.c:257
+#, c-format
+msgid "unable to execute %s: %s"
+msgstr "%s を実行できません: %s"
+
+#: plugins/sudoers/sudoers.c:306
+#, c-format
+msgid "sudoers specifies that root is not allowed to sudo"
+msgstr "sudoers の指定により root が sudo を使用することは禁止されています"
+
+#: plugins/sudoers/sudoers.c:313
+#, c-format
+msgid "you are not permitted to use the -C option"
+msgstr "-C オプションを使用することは許可されていません"
+
+#: plugins/sudoers/sudoers.c:403
+#, c-format
+msgid "timestamp owner (%s): No such user"
+msgstr "タイムスタンプの所有者 (%s): そのようなユーザーはありません"
+
+#: plugins/sudoers/sudoers.c:419
+msgid "no tty"
+msgstr "tty がありません"
+
+#: plugins/sudoers/sudoers.c:420
+#, c-format
+msgid "sorry, you must have a tty to run sudo"
+msgstr "sudo を実行するには tty がなければいけません。すみません"
+
+#: plugins/sudoers/sudoers.c:463
+msgid "No user or host"
+msgstr "ユーザーまたはホストがありません"
+
+#: plugins/sudoers/sudoers.c:477 plugins/sudoers/sudoers.c:498
+#: plugins/sudoers/sudoers.c:499 plugins/sudoers/sudoers.c:1465
+#: plugins/sudoers/sudoers.c:1466
+#, c-format
+msgid "%s: command not found"
+msgstr "%s: コマンドが見つかりません"
+
+#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:495
+#, c-format
+msgid ""
+"ignoring `%s' found in '.'\n"
+"Use `sudo ./%s' if this is the `%s' you wish to run."
+msgstr ""
+"'.' 内で見つかった `%1$s' を無視します\n"
+"この `%3$s' を実行したい場合は `sudo ./%2$s' を使用してください。"
+
+#: plugins/sudoers/sudoers.c:484
+msgid "validation failure"
+msgstr "検証に失敗しました"
+
+#: plugins/sudoers/sudoers.c:494
+msgid "command in current directory"
+msgstr "コマンドがカレントディレクトリーにあります"
+
+#: plugins/sudoers/sudoers.c:506
+#, c-format
+msgid "sorry, you are not allowed to preserve the environment"
+msgstr "あなたは環境変数を保護することを許可されていません。すみません"
+
+#: plugins/sudoers/sudoers.c:894
+#, c-format
+msgid "internal error, set_cmnd() overflow"
+msgstr "内部エラー、set_cmnd() がオーバーフローしました"
+
+#: plugins/sudoers/sudoers.c:936
+#, c-format
+msgid "fixed mode on %s"
+msgstr "%s のアクセス権限のモードを修正しました"
+
+#: plugins/sudoers/sudoers.c:940
+#, c-format
+msgid "set group on %s"
+msgstr "%s のグループを設定しました"
+
+#: plugins/sudoers/sudoers.c:943
+#, c-format
+msgid "unable to set group on %s"
+msgstr "%s のグループを設定できません"
+
+#: plugins/sudoers/sudoers.c:946
+#, c-format
+msgid "unable to fix mode on %s"
+msgstr "%s のアクセス権限のモードを修正できません"
+
+#: plugins/sudoers/sudoers.c:959
+#, c-format
+msgid "%s is not a regular file"
+msgstr "%s は通常ファイルではありません"
+
+#: plugins/sudoers/sudoers.c:961
+#, c-format
+msgid "%s is mode 0%o, should be 0%o"
+msgstr "%s のアクセス権限のモードは 0%o です。これは 0%o であるべきです"
+
+#: plugins/sudoers/sudoers.c:965
+#, c-format
+msgid "%s is owned by uid %u, should be %u"
+msgstr "%s はユーザーID %u によって所有されています。これは %u であるべきです"
+
+#: plugins/sudoers/sudoers.c:968
+#, c-format
+msgid "%s is owned by gid %u, should be %u"
+msgstr "%s のグループIDは %u になっています。これは %u であるべきです"
+
+#: plugins/sudoers/sudoers.c:1012
+#, c-format
+msgid "only root can use `-c %s'"
+msgstr "root のみ `-c %s' を使用できます"
+
+#: plugins/sudoers/sudoers.c:1022
+#, c-format
+msgid "unknown login class: %s"
+msgstr "不明なログインクラスです: %s"
+
+#: plugins/sudoers/sudoers.c:1056
+#, c-format
+msgid "unable to resolve host %s"
+msgstr "ホスト %s の名前解決ができません"
+
+#: plugins/sudoers/sudoers.c:1106 plugins/sudoers/testsudoers.c:351
+#, c-format
+msgid "unknown group: %s"
+msgstr "不明なグループです: %s"
+
+#: plugins/sudoers/sudoers.c:1150
+#, c-format
+msgid "Sudoers policy plugin version %s\n"
+msgstr "sudoers ポリシープラグイン  バージョン %s\n"
+
+#: plugins/sudoers/sudoers.c:1152
+#, c-format
+msgid "Sudoers file grammar version %d\n"
+msgstr "sudoers ファイル文法バージョン %d\n"
+
+#: plugins/sudoers/sudoers.c:1156
+#, c-format
+msgid ""
+"\n"
+"Sudoers path: %s\n"
+msgstr ""
+"\n"
+"sudoers のパス: %s\n"
+
+#: plugins/sudoers/sudoers.c:1159
+#, c-format
+msgid "nsswitch path: %s\n"
+msgstr "nsswitch のパス: %s\n"
+
+#: plugins/sudoers/sudoers.c:1161
+#, c-format
+msgid "ldap.conf path: %s\n"
+msgstr "ldap.conf のパス: %s\n"
+
+#: plugins/sudoers/sudoers.c:1162
+#, c-format
+msgid "ldap.secret path: %s\n"
+msgstr "ldap.secret のパス: %s\n"
+
+#: plugins/sudoers/sudoreplay.c:265
+#, c-format
+msgid "invalid filter option: %s"
+msgstr "無効なフィルターオプションです: %s"
+
+#: plugins/sudoers/sudoreplay.c:278
+#, c-format
+msgid "invalid max wait: %s"
+msgstr "無効な最大待機時間です: %s"
+
+#: plugins/sudoers/sudoreplay.c:284
+#, c-format
+msgid "invalid speed factor: %s"
+msgstr "無効な speed_factor の値です: %s"
+
+#: plugins/sudoers/sudoreplay.c:287 plugins/sudoers/visudo.c:174
+#, c-format
+msgid "%s version %s\n"
+msgstr "%s バージョン %s\n"
+
+#: plugins/sudoers/sudoreplay.c:310
+#, c-format
+msgid "%s/%.2s/%.2s/%.2s/timing: %s"
+msgstr "%s/%.2s/%.2s/%.2s/タイミング: %s"
+
+#: plugins/sudoers/sudoreplay.c:316
+#, c-format
+msgid "%s/%s/timing: %s"
+msgstr "%s/%s/タイミング: %s"
+
+#: plugins/sudoers/sudoreplay.c:341
+#, c-format
+msgid "invalid log file %s"
+msgstr "ログファイル %s は無効です"
+
+#: plugins/sudoers/sudoreplay.c:343
+#, c-format
+msgid "Replaying sudo session: %s"
+msgstr "リプレイする sudo セッション: %s"
+
+#: plugins/sudoers/sudoreplay.c:369
+#, c-format
+msgid "unable to set tty to raw mode"
+msgstr "tty を raw モードに設定できません"
+
+#: plugins/sudoers/sudoreplay.c:383
+#, c-format
+msgid "invalid timing file line: %s"
+msgstr "無効なタイミングファイルの行です: %s"
+
+#: plugins/sudoers/sudoreplay.c:425
+#, c-format
+msgid "writing to standard output"
+msgstr "標準出力に書き込んでいます"
+
+#: plugins/sudoers/sudoreplay.c:455
+#, c-format
+msgid "nanosleep: tv_sec %ld, tv_nsec %ld"
+msgstr "nanosleep: tv_sec %ld, tv_nsec %ld"
+
+#: plugins/sudoers/sudoreplay.c:503 plugins/sudoers/sudoreplay.c:528
+#, c-format
+msgid "ambiguous expression \"%s\""
+msgstr "曖昧な式 \"%s です\""
+
+#: plugins/sudoers/sudoreplay.c:545
+#, c-format
+msgid "too many parenthesized expressions, max %d"
+msgstr "式内の小括弧のくくりが多すぎます。最大は %d です。"
+
+#: plugins/sudoers/sudoreplay.c:556
+#, c-format
+msgid "unmatched ')' in expression"
+msgstr "式内で ')' が不一致です"
+
+#: plugins/sudoers/sudoreplay.c:562
+#, c-format
+msgid "unknown search term \"%s\""
+msgstr "不明な検索語 \"%s\" です"
+
+#: plugins/sudoers/sudoreplay.c:576
+#, c-format
+msgid "%s requires an argument"
+msgstr "%s は引数が必要です"
+
+#: plugins/sudoers/sudoreplay.c:580
+#, c-format
+msgid "invalid regular expression: %s"
+msgstr "無効な正規表現です: %s"
+
+#: plugins/sudoers/sudoreplay.c:586
+#, c-format
+msgid "could not parse date \"%s\""
+msgstr "日付 \"%s\" を構文解析できませんでした"
+
+#: plugins/sudoers/sudoreplay.c:599
+#, c-format
+msgid "unmatched '(' in expression"
+msgstr "式内で '(' が不一致です"
+
+#: plugins/sudoers/sudoreplay.c:601
+#, c-format
+msgid "illegal trailing \"or\""
+msgstr "末尾に \"or\" を配置できません"
+
+#: plugins/sudoers/sudoreplay.c:603
+#, c-format
+msgid "illegal trailing \"!\""
+msgstr "末尾に \"!\" を配置できません"
+
+#: plugins/sudoers/sudoreplay.c:819
+#, c-format
+msgid "invalid regex: %s"
+msgstr "無効な正規表現です: %s"
+
+#: plugins/sudoers/sudoreplay.c:941
+#, c-format
+msgid "usage: %s [-h] [-d directory] [-m max_wait] [-s speed_factor] ID\n"
+msgstr "使用法: %s [-h] [-d directory] [-m max_wait] [-s speed_factor] ID\n"
+
+#: plugins/sudoers/sudoreplay.c:944
+#, c-format
+msgid "usage: %s [-h] [-d directory] -l [search expression]\n"
+msgstr "使用法: %s [-h] [-d directory] -l [search expression]\n"
+
+#: plugins/sudoers/sudoreplay.c:953
+#, c-format
+msgid ""
+"%s - replay sudo session logs\n"
+"\n"
+msgstr ""
+"%s - sudo セッションログをリプレイします\n"
+"\n"
+
+#: plugins/sudoers/sudoreplay.c:955
+msgid ""
+"\n"
+"Options:\n"
+"  -d directory     specify directory for session logs\n"
+"  -f filter        specify which I/O type to display\n"
+"  -h               display help message and exit\n"
+"  -l [expression]  list available session IDs that match expression\n"
+"  -m max_wait      max number of seconds to wait between events\n"
+"  -s speed_factor  speed up or slow down output\n"
+"  -V               display version information and exit"
+msgstr ""
+"\n"
+"オプション:\n"
+"  -d directory     セッションログのディレクトリーを指定する\n"
+"  -f filter        表示する I/O タイプを指定する\n"
+"  -h               ヘルプメッセージを表示して終了する\n"
+"  -l [expression]  expression に一致する使用可能なセッションID\n"
+"                    を一覧表示する\n"
+"  -m max_wait      イベント間の待ち時間の最大秒数を指定する\n"
+"  -s speed_factor  出力速度を速くする、または遅くする\n"
+"  -V               バージョン情報を表示して終了する"
+
+#: plugins/sudoers/testsudoers.c:230
+#, c-format
+msgid "internal error, init_vars() overflow"
+msgstr "内部エラー、init_vars() がオーバーフローしました"
+
+#: plugins/sudoers/testsudoers.c:309
+msgid "\thost  unmatched"
+msgstr "\tホストが一致しません"
+
+#: plugins/sudoers/testsudoers.c:312
+msgid ""
+"\n"
+"Command allowed"
+msgstr ""
+"\n"
+"コマンドが許可されました"
+
+#: plugins/sudoers/testsudoers.c:313
+msgid ""
+"\n"
+"Command denied"
+msgstr ""
+"\n"
+"コマンドが拒否されました"
+
+#: plugins/sudoers/testsudoers.c:313
+msgid ""
+"\n"
+"Command unmatched"
+msgstr ""
+"\n"
+"コマンドが一致しませんでした"
+
+#: toke.l:667 toke.l:793 toke.l:818 toke.l:904 plugins/sudoers/toke_util.c:111
+#: plugins/sudoers/toke_util.c:163 plugins/sudoers/toke_util.c:202
+msgid "unable to allocate memory"
+msgstr "メモリ割り当てを行えませんでした"
+
+#: toke.l:786
+msgid "too many levels of includes"
+msgstr "インクルードの階層が大きすぎます"
+
+#: plugins/sudoers/toke_util.c:213
+msgid "fill_args: buffer overflow"
+msgstr "fill_args: バッファオーバーフローが発生しました"
+
+#: plugins/sudoers/visudo.c:175
+#, c-format
+msgid "%s grammar version %d\n"
+msgstr "%s 文法バージョン %d\n"
+
+#: plugins/sudoers/visudo.c:208 plugins/sudoers/auth/rfc1938.c:103
+#, c-format
+msgid "you do not exist in the %s database"
+msgstr "あなたは %s データベース内に存在しません"
+
+#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:518
+#, c-format
+msgid "press return to edit %s: "
+msgstr "%s を編集するためにリターンを押してください: "
+
+#: plugins/sudoers/visudo.c:320 plugins/sudoers/visudo.c:326
+#, c-format
+msgid "write error"
+msgstr "書き込みエラーです"
+
+#: plugins/sudoers/visudo.c:408
+#, c-format
+msgid "unable to stat temporary file (%s), %s unchanged"
+msgstr "一時ファイル (%s) の状態取得 (stat) ができません。%s は変更されません"
+
+#: plugins/sudoers/visudo.c:413
+#, c-format
+msgid "zero length temporary file (%s), %s unchanged"
+msgstr "一時ファイル (%s) の大きさが 0 です。%s は変更されません"
+
+#: plugins/sudoers/visudo.c:419
+#, c-format
+msgid "editor (%s) failed, %s unchanged"
+msgstr "エディター (%s) が異常終了しました。%s は変更されません"
+
+#: plugins/sudoers/visudo.c:442
+#, c-format
+msgid "%s unchanged"
+msgstr "%s は変更されません"
+
+#: plugins/sudoers/visudo.c:466
+#, c-format
+msgid "unable to re-open temporary file (%s), %s unchanged."
+msgstr "一時ファイル (%s) を再度開くことができません。%s は変更されません。"
+
+#: plugins/sudoers/visudo.c:476
+#, c-format
+msgid "unabled to parse temporary file (%s), unknown error"
+msgstr "一時ファイル (%s) の構文解析ができません。不明なエラーです"
+
+#: plugins/sudoers/visudo.c:511
+#, c-format
+msgid "internal error, unable to find %s in list!"
+msgstr "内部エラー、リスト内に %s が見つかりません!"
+
+#: plugins/sudoers/visudo.c:546 plugins/sudoers/visudo.c:555
+#, c-format
+msgid "unable to set (uid, gid) of %s to (%u, %u)"
+msgstr "%s の (ユーザーID, グループID) を (%u, %u) に設定できません"
+
+#: plugins/sudoers/visudo.c:550 plugins/sudoers/visudo.c:560
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "%s のアクセス権限のモードを 0%o に変更できません"
+
+#: plugins/sudoers/visudo.c:577
+#, c-format
+msgid "%s and %s not on the same file system, using mv to rename"
+msgstr "%s と %s は同じファイルシステム上にありません。名前を変更するために mv を使用しています"
+
+#: plugins/sudoers/visudo.c:591
+#, c-format
+msgid "command failed: '%s %s %s', %s unchanged"
+msgstr "コマンドの失敗です: '%s %s %s'。%s は変更されません"
+
+#: plugins/sudoers/visudo.c:601
+#, c-format
+msgid "error renaming %s, %s unchanged"
+msgstr "%s の名前変更に失敗しました。%s は変更されません"
+
+#: plugins/sudoers/visudo.c:661
+msgid "What now? "
+msgstr "次は何でしょうか? "
+
+#: plugins/sudoers/visudo.c:675
+msgid ""
+"Options are:\n"
+"  (e)dit sudoers file again\n"
+"  e(x)it without saving changes to sudoers file\n"
+"  (Q)uit and save changes to sudoers file (DANGER!)\n"
+msgstr ""
+"オプション:\n"
+"  e -- sudoers ファイルを再度編集します\n"
+"  x -- sudoers ファイルへの変更を保存せずに終了します\n"
+"  Q -- sudoers ファイルへの変更を保存して終了します (*危険です!*)\n"
+
+#: plugins/sudoers/visudo.c:712
+#, c-format
+msgid "unable to execute %s"
+msgstr "%s を実行できません"
+
+#: plugins/sudoers/visudo.c:719
+#, c-format
+msgid "unable to run %s"
+msgstr "%s を実行できません"
+
+#: plugins/sudoers/visudo.c:750
+#, c-format
+msgid "failed to parse %s file, unknown error"
+msgstr "%s ファイルの構文解析に失敗しました。不明なエラーです"
+
+#: plugins/sudoers/visudo.c:762
+#, c-format
+msgid "parse error in %s near line %d\n"
+msgstr "%s 内 %d 行付近で構文解析エラーが発生しました\n"
+
+#: plugins/sudoers/visudo.c:765
+#, c-format
+msgid "parse error in %s\n"
+msgstr "%s 内で構文解析エラーが発生しました\n"
+
+#: plugins/sudoers/visudo.c:767
+#, c-format
+msgid "%s: parsed OK\n"
+msgstr "%s: 正しく構文解析されました\n"
+
+#: plugins/sudoers/visudo.c:776
+#, c-format
+msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
+msgstr "%s: 所有権に誤りがあります。(ユーザーID, グループID) は (%u, %u) であるべきです\n"
+
+#: plugins/sudoers/visudo.c:783
+#, c-format
+msgid "%s: bad permissions, should be mode 0%o\n"
+msgstr "%s: アクセス権限に誤りがあります。モードは 0%o であるべきです\n"
+
+#: plugins/sudoers/visudo.c:822
+#, c-format
+msgid "%s busy, try again later"
+msgstr "%s がビジー状態です。後で再試行してください"
+
+#: plugins/sudoers/visudo.c:865
+#, c-format
+msgid "specified editor (%s) doesn't exist"
+msgstr "指定したエディター (%s) が存在しません"
+
+#: plugins/sudoers/visudo.c:888
+#, c-format
+msgid "unable to stat editor (%s)"
+msgstr "エディター (%s) の状態取得 (stat) ができません"
+
+#: plugins/sudoers/visudo.c:936
+#, c-format
+msgid "no editor found (editor path = %s)"
+msgstr "エディターが見つかりません (エディターのパス = %s)"
+
+#: plugins/sudoers/visudo.c:1025
+#, c-format
+msgid "Error: cycle in %s_Alias `%s'"
+msgstr "エラー: %s_Alias `%s' 内に循環があります"
+
+#: plugins/sudoers/visudo.c:1026
+#, c-format
+msgid "Warning: cycle in %s_Alias `%s'"
+msgstr "警告: %s_Alias `%s' 内に循環があります"
+
+#: plugins/sudoers/visudo.c:1029
+#, c-format
+msgid "Error: %s_Alias `%s' referenced but not defined"
+msgstr "エラー: %s_Alias `%s' は参照されていますが定義されていません"
+
+#: plugins/sudoers/visudo.c:1030
+#, c-format
+msgid "Warning: %s_Alias `%s' referenced but not defined"
+msgstr "警告: %s_Alias `%s' は参照されていますが定義されていません"
+
+#: plugins/sudoers/visudo.c:1167
+#, c-format
+msgid "%s: unused %s_Alias %s"
+msgstr "%s: %s_Alias %s は使用されていません"
+
+#: plugins/sudoers/visudo.c:1224
+#, c-format
+msgid ""
+"%s - safely edit the sudoers file\n"
+"\n"
+msgstr ""
+"%s - sudoers ファイルを安全に編集する\n"
+"\n"
+
+#: plugins/sudoers/visudo.c:1226
+msgid ""
+"\n"
+"Options:\n"
+"  -c          check-only mode\n"
+"  -f sudoers  specify sudoers file location\n"
+"  -h          display help message and exit\n"
+"  -q          less verbose (quiet) syntax error messages\n"
+"  -s          strict syntax checking\n"
+"  -V          display version information and exit"
+msgstr ""
+"\n"
+"オプション:\n"
+"  -c          検査のみを行う\n"
+"  -f sudoers  sudoers ファイルの位置を指定する\n"
+"  -h          ヘルプメッセージを表示して終了する\n"
+"  -q          文法エラーメッセージをより少なく (静かに) する\n"
+"  -s          厳密な文法検査を行う\n"
+"  -V          バージョン情報を表示して終了する"
+
+#: plugins/sudoers/auth/bsdauth.c:64
+msgid "unable to begin bsd authentication"
+msgstr "BSD 認証を開始できません"
+
+#: plugins/sudoers/auth/bsdauth.c:71
+msgid "invalid authentication type"
+msgstr "無効な認証タイプです"
+
+#: plugins/sudoers/auth/bsdauth.c:79
+msgid "unable to setup authentication"
+msgstr "認証をセットアップできません"
+
+#: plugins/sudoers/auth/fwtk.c:59
+#, c-format
+msgid "unable to read fwtk config"
+msgstr "fwtk 設定を読み込めません"
+
+#: plugins/sudoers/auth/fwtk.c:64
+#, c-format
+msgid "unable to connect to authentication server"
+msgstr "認証サーバーに接続できません"
+
+#: plugins/sudoers/auth/fwtk.c:70 plugins/sudoers/auth/fwtk.c:93
+#: plugins/sudoers/auth/fwtk.c:126
+#, c-format
+msgid "lost connection to authentication server"
+msgstr "認証サーバーへの接続が失われました"
+
+#: plugins/sudoers/auth/fwtk.c:74
+#, c-format
+msgid ""
+"authentication server error:\n"
+"%s"
+msgstr ""
+"認証サーバーエラーです:\n"
+"%s"
+
+#: plugins/sudoers/auth/kerb5.c:114
+#, c-format
+msgid "%s: unable to parse '%s': %s"
+msgstr "%s: '%s' を構文解析できません: %s"
+
+#: plugins/sudoers/auth/kerb5.c:127
+#, c-format
+msgid "%s: unable to unparse princ ('%s'): %s"
+msgstr "%s: princ ('%s') を符号化できません: %s"
+
+#: plugins/sudoers/auth/kerb5.c:144
+#, c-format
+msgid "%s: unable to resolve ccache: %s"
+msgstr "%s: 資格情報キャッシュ (ccache) を解決できません: %s"
+
+#: plugins/sudoers/auth/kerb5.c:188
+#, c-format
+msgid "%s: unable to allocate options: %s"
+msgstr "%s: オプションを設定できません: %s"
+
+#: plugins/sudoers/auth/kerb5.c:204
+#, c-format
+msgid "%s: unable to get credentials: %s"
+msgstr "%s: 資格情報を取得できません: %s"
+
+#: plugins/sudoers/auth/kerb5.c:217
+#, c-format
+msgid "%s: unable to initialize ccache: %s"
+msgstr "%s: 資格情報キャッシュ (ccache) を初期化できません: %s"
+
+#: plugins/sudoers/auth/kerb5.c:221
+#, c-format
+msgid "%s: unable to store cred in ccache: %s"
+msgstr "%s: 資格情報を資格情報キャッシュ (ccache) 内に保存できません: %s"
+
+#: plugins/sudoers/auth/kerb5.c:284
+#, c-format
+msgid "%s: unable to get host principal: %s"
+msgstr "%s: ホストプリンシパルを取得できません: %s"
+
+#: plugins/sudoers/auth/kerb5.c:299
+#, c-format
+msgid "%s: Cannot verify TGT! Possible attack!: %s"
+msgstr "%s: TGT を検証できません! おそらく攻撃です!: %s"
+
+#: plugins/sudoers/auth/pam.c:99
+msgid "unable to initialize PAM"
+msgstr "PAM を初期化できません"
+
+#: plugins/sudoers/auth/pam.c:142
+msgid "account validation failure, is your account locked?"
+msgstr "アカウントの有効性検証に失敗しました。あなたのアカウントはロックされていませんか?"
+
+#: plugins/sudoers/auth/pam.c:146
+msgid "Account or password is expired, reset your password and try again"
+msgstr "アカウントまたはパスワードが期限切れです。パスワードをリセットして再試行してください"
+
+#: plugins/sudoers/auth/pam.c:153
+#, c-format
+msgid "pam_chauthtok: %s"
+msgstr "pam_chauthtok: %s"
+
+#: plugins/sudoers/auth/pam.c:157
+msgid "Password expired, contact your system administrator"
+msgstr "パスワードが期限切れです。システム管理者に連絡してください"
+
+#: plugins/sudoers/auth/pam.c:161
+msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
+msgstr "アカウントの期限切れ、または sudo 用の PAM 設定に \"account\" セクションがありません。システム管理者に連絡してください"
+
+#: plugins/sudoers/auth/pam.c:176
+#, c-format
+msgid "pam_authenticate: %s"
+msgstr "pam_authenticate: %s"
+
+#: plugins/sudoers/auth/pam.c:296
+msgid "Password: "
+msgstr "パスワード: "
+
+#: plugins/sudoers/auth/pam.c:297
+msgid "Password:"
+msgstr "パスワード:"
+
+#: plugins/sudoers/auth/securid.c:82 plugins/sudoers/auth/securid5.c:106
+#, c-format
+msgid "unable to contact the SecurID server"
+msgstr "SecurID サーバーに接続できません"
+
+#: plugins/sudoers/auth/securid5.c:81
+#, c-format
+msgid "failed to initialise the ACE API library"
+msgstr "ACE API ライブラリの初期化に失敗しました"
+
+#: plugins/sudoers/auth/securid5.c:115
+#, c-format
+msgid "User ID locked for SecurID Authentication"
+msgstr "SecurID 認証のユーザーIDがロックされています"
+
+#: plugins/sudoers/auth/securid5.c:119 plugins/sudoers/auth/securid5.c:169
+#, c-format
+msgid "invalid username length for SecurID"
+msgstr "SecurID 用のユーザー名の長さが無効です"
+
+#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:174
+#, c-format
+msgid "invalid Authentication Handle for SecurID"
+msgstr "SecurID 用の認証ハンドルが無効です"
+
+#: plugins/sudoers/auth/securid5.c:127
+#, c-format
+msgid "SecurID communication failed"
+msgstr "SecurID 通信に失敗しました"
+
+#: plugins/sudoers/auth/securid5.c:131 plugins/sudoers/auth/securid5.c:213
+#, c-format
+msgid "unknown SecurID error"
+msgstr "不明な SecurID エラーです"
+
+#: plugins/sudoers/auth/securid5.c:164
+#, c-format
+msgid "invalid passcode length for SecurID"
+msgstr "SecurID 用のパスコード長が無効です"
+
+#: plugins/sudoers/auth/sia.c:106
+msgid "unable to initialize SIA session"
+msgstr "SIA セッションを初期化できません"
+
+#: plugins/sudoers/auth/sudo_auth.c:124
+msgid "There are no authentication methods compiled into sudo!  If you want to turn off authentication, use the --disable-authentication configure option."
+msgstr "認証方法が sudo のコンパイル時に組み込まれていません!  認証を無効にする場合には、configure オプションで --disable-authentication を指定してください。"
+
+#: plugins/sudoers/auth/sudo_auth.c:134
+msgid "Invalid authentication methods compiled into sudo!  You may mix standalone and non-standalone authentication."
+msgstr "無効な認証方法が sudo のコンパイル時に組み込まれています!  スタンドアローンと非スタンドアローン認証を組み合わせているようです。"
+
+#: plugins/sudoers/auth/sudo_auth.c:243
+#, c-format
+msgid "%d incorrect password attempt"
+msgid_plural "%d incorrect password attempts"
+msgstr[0] "%d 回パスワード試行を間違えました"
+
+#: plugins/sudoers/auth/sudo_auth.c:335
+msgid "Authentication methods:"
+msgstr "認証方法:"
index a804700d21810a39719a7c6055bf1b18ed83d36f..e2fa75839e72773e6f52de7eff2f02ea8b49df2e 100644 (file)
Binary files a/plugins/sudoers/po/pl.mo and b/plugins/sudoers/po/pl.mo differ
index 9f94c9e522845b939ec49522ea8a049368355c6b..574b887ffa0c6555f9bf454c4c328c0785998220 100644 (file)
@@ -4,10 +4,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: sudoers 1.8.2-rc9\n"
+"Project-Id-Version: sudoers 1.8.3rc1\n"
 "Report-Msgid-Bugs-To: http://www.sudo.ws/bugs\n"
-"POT-Creation-Date: 2011-08-05 13:34-0400\n"
-"PO-Revision-Date: 2011-08-09 17:40+0200\n"
+"POT-Creation-Date: 2011-09-16 16:52-0400\n"
+"PO-Revision-Date: 2011-09-17 14:02+0200\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
 "Language: pl\n"
@@ -69,9 +69,9 @@ msgid "sorry, a password is required to run %s"
 msgstr "niestety do uruchomienia %s wymagane jest hasło"
 
 #: plugins/sudoers/check.c:225 plugins/sudoers/iolog.c:169
-#: plugins/sudoers/sudoers.c:970 plugins/sudoers/sudoreplay.c:325
+#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoreplay.c:325
 #: plugins/sudoers/sudoreplay.c:334 plugins/sudoers/sudoreplay.c:675
-#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:700
+#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:744
 #, c-format
 msgid "unable to open %s"
 msgstr "nie udało się otworzyć %s"
@@ -116,8 +116,8 @@ msgid "%s writable by non-owner (0%o), should be mode 0700"
 msgstr "%s zapisywalny nie tylko dla właściciela (uprawnienia 0%o, powinny być 0700)"
 
 #: plugins/sudoers/check.c:470 plugins/sudoers/check.c:514
-#: plugins/sudoers/check.c:582 plugins/sudoers/sudoers.c:956
-#: plugins/sudoers/visudo.c:284 plugins/sudoers/visudo.c:500
+#: plugins/sudoers/check.c:582 plugins/sudoers/sudoers.c:957
+#: plugins/sudoers/visudo.c:304 plugins/sudoers/visudo.c:544
 #, c-format
 msgid "unable to stat %s"
 msgstr "nie udało się wykonać stat na %s"
@@ -152,10 +152,10 @@ msgstr "nie udało się zresetować %s do epoch"
 msgid "unknown uid: %u"
 msgstr "nieznany uid: %u"
 
-#: plugins/sudoers/check.c:717 plugins/sudoers/sudoers.c:747
-#: plugins/sudoers/sudoers.c:813 plugins/sudoers/sudoers.c:814
-#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/testsudoers.c:200
-#: plugins/sudoers/testsudoers.c:330
+#: plugins/sudoers/check.c:717 plugins/sudoers/sudoers.c:748
+#: plugins/sudoers/sudoers.c:814 plugins/sudoers/sudoers.c:815
+#: plugins/sudoers/sudoers.c:1088 plugins/sudoers/testsudoers.c:202
+#: plugins/sudoers/testsudoers.c:337
 #, c-format
 msgid "unknown user: %s"
 msgstr "nieznany użytkownik: %s"
@@ -515,53 +515,35 @@ msgstr "Dodawanie wpisu do pliku utmp/utmpx przy przydzielaniu pty"
 msgid "Set the user in utmp to the runas user, not the invoking user"
 msgstr "Ustawianie użytkownika w utmp jako docelowego, nie wywołującego"
 
-#: plugins/sudoers/defaults.c:197
-msgid ""
-"Available options in a sudoers ``Defaults'' line:\n"
-"\n"
-msgstr ""
-"Opcje dostępne w linii \"Defaults\" pliku sudoers:\n"
-"\n"
-
-#: plugins/sudoers/defaults.c:204 plugins/sudoers/defaults.c:215
-#, c-format
-msgid "%s: %s\n"
-msgstr "%s: %s\n"
-
-#: plugins/sudoers/defaults.c:211
-#, c-format
-msgid "%s: %.*s\n"
-msgstr "%s: %.*s\n"
-
-#: plugins/sudoers/defaults.c:241
+#: plugins/sudoers/defaults.c:205
 #, c-format
 msgid "unknown defaults entry `%s'"
 msgstr "nieznany wpis domyślny `%s'"
 
-#: plugins/sudoers/defaults.c:249 plugins/sudoers/defaults.c:259
-#: plugins/sudoers/defaults.c:279 plugins/sudoers/defaults.c:292
-#: plugins/sudoers/defaults.c:305 plugins/sudoers/defaults.c:318
-#: plugins/sudoers/defaults.c:331 plugins/sudoers/defaults.c:351
-#: plugins/sudoers/defaults.c:361
+#: plugins/sudoers/defaults.c:213 plugins/sudoers/defaults.c:223
+#: plugins/sudoers/defaults.c:243 plugins/sudoers/defaults.c:256
+#: plugins/sudoers/defaults.c:269 plugins/sudoers/defaults.c:282
+#: plugins/sudoers/defaults.c:295 plugins/sudoers/defaults.c:315
+#: plugins/sudoers/defaults.c:325
 #, c-format
 msgid "value `%s' is invalid for option `%s'"
 msgstr "błędna wartość `%s' dla opcji `%s'"
 
-#: plugins/sudoers/defaults.c:252 plugins/sudoers/defaults.c:262
-#: plugins/sudoers/defaults.c:270 plugins/sudoers/defaults.c:287
-#: plugins/sudoers/defaults.c:300 plugins/sudoers/defaults.c:313
-#: plugins/sudoers/defaults.c:326 plugins/sudoers/defaults.c:346
-#: plugins/sudoers/defaults.c:357
+#: plugins/sudoers/defaults.c:216 plugins/sudoers/defaults.c:226
+#: plugins/sudoers/defaults.c:234 plugins/sudoers/defaults.c:251
+#: plugins/sudoers/defaults.c:264 plugins/sudoers/defaults.c:277
+#: plugins/sudoers/defaults.c:290 plugins/sudoers/defaults.c:310
+#: plugins/sudoers/defaults.c:321
 #, c-format
 msgid "no value specified for `%s'"
 msgstr "nie podano wartości dla `%s'"
 
-#: plugins/sudoers/defaults.c:275
+#: plugins/sudoers/defaults.c:239
 #, c-format
 msgid "values for `%s' must start with a '/'"
 msgstr "wartości `%s' muszą zaczynać się od '/'"
 
-#: plugins/sudoers/defaults.c:337
+#: plugins/sudoers/defaults.c:301
 #, c-format
 msgid "option `%s' does not take a value"
 msgstr "opcja `%s' nie przyjmuje wartości"
@@ -583,7 +565,7 @@ msgstr "niestety nie jest dozwolone ustawianie następujących zmiennych środow
 
 #: plugins/sudoers/find_path.c:68 plugins/sudoers/find_path.c:107
 #: plugins/sudoers/find_path.c:122 plugins/sudoers/iolog.c:124
-#: plugins/sudoers/sudoers.c:899 toke.l:663 toke.l:814
+#: plugins/sudoers/sudoers.c:903 toke.l:663 toke.l:814
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
@@ -627,7 +609,7 @@ msgstr "%s: niezgodna główna wersja wtyczki grup %d, oczekiwano %d"
 msgid "Local IP address and netmask pairs:\n"
 msgstr "Pary lokalnych adresów IP i masek:\n"
 
-#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:977
+#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:978
 #, c-format
 msgid "unable to read %s"
 msgstr "nie udało się odczytać %s"
@@ -646,72 +628,72 @@ msgstr "błędny numer sekwencyjny %s"
 msgid "unable to create %s"
 msgstr "nie udało się utworzyć %s"
 
-#: plugins/sudoers/iolog_path.c:245 plugins/sudoers/sudoers.c:356
+#: plugins/sudoers/iolog_path.c:247 plugins/sudoers/sudoers.c:357
 #, c-format
 msgid "unable to set locale to \"%s\", using \"C\""
 msgstr "nie udało się ustawić lokalizacji na \"%s\", użyto \"C\""
 
-#: plugins/sudoers/ldap.c:363
+#: plugins/sudoers/ldap.c:368
 #, c-format
 msgid "sudo_ldap_conf_add_ports: port too large"
 msgstr "sudo_ldap_conf_add_ports: port zbyt duży"
 
-#: plugins/sudoers/ldap.c:386
+#: plugins/sudoers/ldap.c:391
 #, c-format
 msgid "sudo_ldap_conf_add_ports: out of space expanding hostbuf"
 msgstr "sudo_ldap_conf_add_ports: brak miejsca podczas rozszerzania hostbuf"
 
-#: plugins/sudoers/ldap.c:415
+#: plugins/sudoers/ldap.c:420
 #, c-format
 msgid "unsupported LDAP uri type: %s"
 msgstr "nieobsługiwany rodzaj URI LDAP: %s"
 
-#: plugins/sudoers/ldap.c:444
+#: plugins/sudoers/ldap.c:449
 #, c-format
 msgid "invalid uri: %s"
 msgstr "błędny URI: %s"
 
-#: plugins/sudoers/ldap.c:450
+#: plugins/sudoers/ldap.c:455
 #, c-format
 msgid "unable to mix ldap and ldaps URIs"
 msgstr "nie można mieszać URI ldap i ldaps"
 
-#: plugins/sudoers/ldap.c:454
+#: plugins/sudoers/ldap.c:459
 #, c-format
 msgid "unable to mix ldaps and starttls"
 msgstr "nie można mieszać ldaps i starttls"
 
-#: plugins/sudoers/ldap.c:473
+#: plugins/sudoers/ldap.c:478
 #, c-format
 msgid "sudo_ldap_parse_uri: out of space building hostbuf"
 msgstr "sudo_ldap_parse_uri: brak miejsca podczas konstruowania hostbuf"
 
-#: plugins/sudoers/ldap.c:536
+#: plugins/sudoers/ldap.c:541
 #, c-format
 msgid "unable to initialize SSL cert and key db: %s"
 msgstr "nie udało się zainicjować bazy certyfikatów i kluczy SSL: %s"
 
-#: plugins/sudoers/ldap.c:932
+#: plugins/sudoers/ldap.c:937
 #, c-format
 msgid "unable to get GMT time"
 msgstr "nie udało się pobrać czasu GMT"
 
-#: plugins/sudoers/ldap.c:938
+#: plugins/sudoers/ldap.c:943
 #, c-format
 msgid "unable to format timestamp"
 msgstr "nie udało się sformatować znacznika czasu"
 
-#: plugins/sudoers/ldap.c:946
+#: plugins/sudoers/ldap.c:951
 #, c-format
 msgid "unable to build time filter"
 msgstr "nie udało się stworzyć filtra czasu"
 
-#: plugins/sudoers/ldap.c:1047
+#: plugins/sudoers/ldap.c:1052
 #, c-format
 msgid "sudo_ldap_build_pass1 allocation mismatch"
 msgstr "niezgodność przydzielenia sudo_ldap_build_pass1"
 
-#: plugins/sudoers/ldap.c:1542
+#: plugins/sudoers/ldap.c:1562
 #, c-format
 msgid ""
 "\n"
@@ -720,7 +702,7 @@ msgstr ""
 "\n"
 "Rola LDAP: %s\n"
 
-#: plugins/sudoers/ldap.c:1544
+#: plugins/sudoers/ldap.c:1564
 #, c-format
 msgid ""
 "\n"
@@ -729,27 +711,27 @@ msgstr ""
 "\n"
 "Rola LDAP: NIEZNANA\n"
 
-#: plugins/sudoers/ldap.c:1591
+#: plugins/sudoers/ldap.c:1611
 #, c-format
 msgid "    Order: %s\n"
 msgstr "    Porządek: %s\n"
 
-#: plugins/sudoers/ldap.c:1599
+#: plugins/sudoers/ldap.c:1619
 #, c-format
 msgid "    Commands:\n"
 msgstr "    Polecenia:\n"
 
-#: plugins/sudoers/ldap.c:1986
+#: plugins/sudoers/ldap.c:2006
 #, c-format
 msgid "unable to initialize LDAP: %s"
 msgstr "nie udało się zainicjować LDAP: %s"
 
-#: plugins/sudoers/ldap.c:2017
+#: plugins/sudoers/ldap.c:2037
 #, c-format
 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
 msgstr "wybrano start_tls, ale biblioteki LDAP nie obsługują ldap_start_tls_s() ani ldap_start_tls_s_np()"
 
-#: plugins/sudoers/ldap.c:2248
+#: plugins/sudoers/ldap.c:2268
 #, c-format
 msgid "invalid sudoOrder attribute: %s"
 msgstr "błędny atrybut sudoOrder: %s"
@@ -846,7 +828,7 @@ msgstr "błąd wewnętrzny: za mało miejsca na linię logu"
 msgid "parse error in %s near line %d"
 msgstr "błąd składni w %s w okolicy linii %d"
 
-#: plugins/sudoers/parse.c:369
+#: plugins/sudoers/parse.c:371
 #, c-format
 msgid ""
 "\n"
@@ -855,17 +837,17 @@ msgstr ""
 "\n"
 "Wpis sudoers:\n"
 
-#: plugins/sudoers/parse.c:371
+#: plugins/sudoers/parse.c:373
 #, c-format
 msgid "    RunAsUsers: "
 msgstr "    Jako użytkownicy: "
 
-#: plugins/sudoers/parse.c:386
+#: plugins/sudoers/parse.c:388
 #, c-format
 msgid "    RunAsGroups: "
 msgstr "    Jako grupy: "
 
-#: plugins/sudoers/parse.c:395
+#: plugins/sudoers/parse.c:397
 #, c-format
 msgid ""
 "    Commands:\n"
@@ -908,38 +890,38 @@ msgstr "nie udało się zapamiętać gid-a %u, już istnieje"
 msgid "unable to cache group %s, already exists"
 msgstr "nie udało się zapamiętać grupy %s, już istnieje"
 
-#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:355
-#: plugins/sudoers/set_perms.c:587 plugins/sudoers/set_perms.c:821
+#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:358
+#: plugins/sudoers/set_perms.c:590 plugins/sudoers/set_perms.c:824
 msgid "perm stack overflow"
 msgstr "przepełnienie stosu uprawnień"
 
-#: plugins/sudoers/set_perms.c:117 plugins/sudoers/set_perms.c:363
-#: plugins/sudoers/set_perms.c:595 plugins/sudoers/set_perms.c:829
+#: plugins/sudoers/set_perms.c:117 plugins/sudoers/set_perms.c:366
+#: plugins/sudoers/set_perms.c:598 plugins/sudoers/set_perms.c:832
 msgid "perm stack underflow"
 msgstr "niedopełnienie stosu uprawnień"
 
-#: plugins/sudoers/set_perms.c:223 plugins/sudoers/set_perms.c:455
-#: plugins/sudoers/set_perms.c:692
+#: plugins/sudoers/set_perms.c:223 plugins/sudoers/set_perms.c:458
+#: plugins/sudoers/set_perms.c:695
 msgid "unable to change to runas gid"
 msgstr "nie udało się zmienić na docelowy gid"
 
-#: plugins/sudoers/set_perms.c:231 plugins/sudoers/set_perms.c:462
-#: plugins/sudoers/set_perms.c:699
+#: plugins/sudoers/set_perms.c:231 plugins/sudoers/set_perms.c:465
+#: plugins/sudoers/set_perms.c:702
 msgid "unable to change to runas uid"
 msgstr "nie udało się zmienić na docelowy uid"
 
-#: plugins/sudoers/set_perms.c:245 plugins/sudoers/set_perms.c:475
-#: plugins/sudoers/set_perms.c:712
+#: plugins/sudoers/set_perms.c:245 plugins/sudoers/set_perms.c:478
+#: plugins/sudoers/set_perms.c:715
 #, c-format
 msgid "unable to change to sudoers gid"
 msgstr "nie udało się zmienić na gid sudoers"
 
-#: plugins/sudoers/set_perms.c:286 plugins/sudoers/set_perms.c:513
-#: plugins/sudoers/set_perms.c:750 plugins/sudoers/set_perms.c:890
+#: plugins/sudoers/set_perms.c:286 plugins/sudoers/set_perms.c:516
+#: plugins/sudoers/set_perms.c:753 plugins/sudoers/set_perms.c:893
 msgid "too many processes"
 msgstr "zbyt dużo procesów"
 
-#: plugins/sudoers/set_perms.c:952
+#: plugins/sudoers/set_perms.c:955
 msgid "unable to set runas group vector"
 msgstr "nie udało się ustawić wektora grup docelowych"
 
@@ -963,57 +945,57 @@ msgstr "Użytkownik %s może uruchamiać na tym hoście następujące polecenia:
 msgid "User %s is not allowed to run sudo on %s.\n"
 msgstr "Użytkownik %s nie ma uprawnień do uruchamiania sudo na %s.\n"
 
-#: plugins/sudoers/sudoers.c:198 plugins/sudoers/sudoers.c:233
-#: plugins/sudoers/sudoers.c:907
+#: plugins/sudoers/sudoers.c:199 plugins/sudoers/sudoers.c:234
+#: plugins/sudoers/sudoers.c:911
 msgid "problem with defaults entries"
 msgstr "problem z wpisami domyślnymi"
 
-#: plugins/sudoers/sudoers.c:202
+#: plugins/sudoers/sudoers.c:203
 #, c-format
 msgid "no valid sudoers sources found, quitting"
 msgstr "nie znaleziono poprawnych źródeł sudoers, zakończenie"
 
-#: plugins/sudoers/sudoers.c:256
+#: plugins/sudoers/sudoers.c:257
 #, c-format
 msgid "unable to execute %s: %s"
 msgstr "nie udało się wywołać %s: %s"
 
-#: plugins/sudoers/sudoers.c:305
+#: plugins/sudoers/sudoers.c:306
 #, c-format
 msgid "sudoers specifies that root is not allowed to sudo"
 msgstr "wg sudoers root nie ma prawa używać sudo"
 
-#: plugins/sudoers/sudoers.c:312
+#: plugins/sudoers/sudoers.c:313
 #, c-format
 msgid "you are not permitted to use the -C option"
 msgstr "brak uprawnień do używania opcji -C"
 
-#: plugins/sudoers/sudoers.c:402
+#: plugins/sudoers/sudoers.c:403
 #, c-format
 msgid "timestamp owner (%s): No such user"
 msgstr "właściciel znacznika czasu (%s): nie ma takiego użytkownika"
 
-#: plugins/sudoers/sudoers.c:418
+#: plugins/sudoers/sudoers.c:419
 msgid "no tty"
 msgstr "brak tty"
 
-#: plugins/sudoers/sudoers.c:419
+#: plugins/sudoers/sudoers.c:420
 #, c-format
 msgid "sorry, you must have a tty to run sudo"
 msgstr "niestety do uruchomienia sudo konieczny jest tty"
 
-#: plugins/sudoers/sudoers.c:462
+#: plugins/sudoers/sudoers.c:463
 msgid "No user or host"
 msgstr "Brak użytkownika lub hosta"
 
-#: plugins/sudoers/sudoers.c:476 plugins/sudoers/sudoers.c:497
-#: plugins/sudoers/sudoers.c:498 plugins/sudoers/sudoers.c:1452
-#: plugins/sudoers/sudoers.c:1453
+#: plugins/sudoers/sudoers.c:477 plugins/sudoers/sudoers.c:498
+#: plugins/sudoers/sudoers.c:499 plugins/sudoers/sudoers.c:1465
+#: plugins/sudoers/sudoers.c:1466
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: nie znaleziono polecenia"
 
-#: plugins/sudoers/sudoers.c:478 plugins/sudoers/sudoers.c:494
+#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:495
 #, c-format
 msgid ""
 "ignoring `%s' found in '.'\n"
@@ -1022,95 +1004,95 @@ msgstr ""
 "zignorowano plik `%s' znaleziony w '.'\n"
 "Proszę użyć `sudo ./%s', jeśli to `%s' ma być uruchomiony."
 
-#: plugins/sudoers/sudoers.c:483
+#: plugins/sudoers/sudoers.c:484
 msgid "validation failure"
 msgstr "błąd kontroli poprawności"
 
-#: plugins/sudoers/sudoers.c:493
+#: plugins/sudoers/sudoers.c:494
 msgid "command in current directory"
 msgstr "polecenie w bieżącym katalogu"
 
-#: plugins/sudoers/sudoers.c:505
+#: plugins/sudoers/sudoers.c:506
 #, c-format
 msgid "sorry, you are not allowed to preserve the environment"
 msgstr "niestety brak uprawnień do zachowania środowiska"
 
-#: plugins/sudoers/sudoers.c:890
+#: plugins/sudoers/sudoers.c:894
 #, c-format
 msgid "internal error, set_cmnd() overflow"
 msgstr "błąd wewnętrzny, przepełnienie set_cmnd()"
 
-#: plugins/sudoers/sudoers.c:935
+#: plugins/sudoers/sudoers.c:936
 #, c-format
 msgid "fixed mode on %s"
 msgstr "poprawiono uprawnienia %s"
 
-#: plugins/sudoers/sudoers.c:939
+#: plugins/sudoers/sudoers.c:940
 #, c-format
 msgid "set group on %s"
 msgstr "ustawiono grupę %s"
 
-#: plugins/sudoers/sudoers.c:942
+#: plugins/sudoers/sudoers.c:943
 #, c-format
 msgid "unable to set group on %s"
 msgstr "nie udało się ustawić grupy %s"
 
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:946
 #, c-format
 msgid "unable to fix mode on %s"
 msgstr "nie udało się poprawić uprawnień %s"
 
-#: plugins/sudoers/sudoers.c:958
+#: plugins/sudoers/sudoers.c:959
 #, c-format
 msgid "%s is not a regular file"
 msgstr "%s nie jest zwykłym plikiem"
 
-#: plugins/sudoers/sudoers.c:960
+#: plugins/sudoers/sudoers.c:961
 #, c-format
 msgid "%s is mode 0%o, should be 0%o"
 msgstr "%s ma uprawnienia 0%o, powinny być 0%o"
 
-#: plugins/sudoers/sudoers.c:964
+#: plugins/sudoers/sudoers.c:965
 #, c-format
 msgid "%s is owned by uid %u, should be %u"
 msgstr "właścicielem %s jest uid %u, powinien być %u"
 
-#: plugins/sudoers/sudoers.c:967
+#: plugins/sudoers/sudoers.c:968
 #, c-format
 msgid "%s is owned by gid %u, should be %u"
 msgstr "właścicielem %s jest gid %u, powinien być %u"
 
-#: plugins/sudoers/sudoers.c:1011
+#: plugins/sudoers/sudoers.c:1012
 #, c-format
 msgid "only root can use `-c %s'"
 msgstr "tylko root może używać `-c %s'"
 
-#: plugins/sudoers/sudoers.c:1021
+#: plugins/sudoers/sudoers.c:1022
 #, c-format
 msgid "unknown login class: %s"
 msgstr "nieznana klasa logowania: %s"
 
-#: plugins/sudoers/sudoers.c:1055
+#: plugins/sudoers/sudoers.c:1056
 #, c-format
 msgid "unable to resolve host %s"
 msgstr "nie udało się rozwiązać nazwy hosta %s"
 
-#: plugins/sudoers/sudoers.c:1105 plugins/sudoers/testsudoers.c:342
+#: plugins/sudoers/sudoers.c:1106 plugins/sudoers/testsudoers.c:351
 #, c-format
 msgid "unknown group: %s"
 msgstr "nieznana grupa: %s"
 
-#: plugins/sudoers/sudoers.c:1137
+#: plugins/sudoers/sudoers.c:1150
 #, c-format
 msgid "Sudoers policy plugin version %s\n"
 msgstr "Wersja wtyczki polityki sudoers %s\n"
 
-#: plugins/sudoers/sudoers.c:1139
+#: plugins/sudoers/sudoers.c:1152
 #, c-format
 msgid "Sudoers file grammar version %d\n"
 msgstr "Wersja gramatyki pliku sudoers %d\n"
 
-#: plugins/sudoers/sudoers.c:1143
+#: plugins/sudoers/sudoers.c:1156
 #, c-format
 msgid ""
 "\n"
@@ -1119,17 +1101,17 @@ msgstr ""
 "\n"
 "Ścieżka do sudoers: %s\n"
 
-#: plugins/sudoers/sudoers.c:1146
+#: plugins/sudoers/sudoers.c:1159
 #, c-format
 msgid "nsswitch path: %s\n"
 msgstr "ścieżka do nsswitch: %s\n"
 
-#: plugins/sudoers/sudoers.c:1148
+#: plugins/sudoers/sudoers.c:1161
 #, c-format
 msgid "ldap.conf path: %s\n"
 msgstr "ścieżka do ldap.conf: %s\n"
 
-#: plugins/sudoers/sudoers.c:1149
+#: plugins/sudoers/sudoers.c:1162
 #, c-format
 msgid "ldap.secret path: %s\n"
 msgstr "ścieżka do ldap.secret: %s\n"
@@ -1290,16 +1272,16 @@ msgstr ""
 "  -s wsp_szybkości przyspieszenie lub spowolnienie wyjścia\n"
 "  -V               wyświetlenie informacji o wersji i zakończenie"
 
-#: plugins/sudoers/testsudoers.c:228
+#: plugins/sudoers/testsudoers.c:230
 #, c-format
 msgid "internal error, init_vars() overflow"
 msgstr "błąd wewnętrzny, przepełnienie init_vars()"
 
-#: plugins/sudoers/testsudoers.c:304
+#: plugins/sudoers/testsudoers.c:309
 msgid "\thost  unmatched"
 msgstr "\thost nie znaleziony"
 
-#: plugins/sudoers/testsudoers.c:307
+#: plugins/sudoers/testsudoers.c:312
 msgid ""
 "\n"
 "Command allowed"
@@ -1307,7 +1289,7 @@ msgstr ""
 "\n"
 "Polecenie dozwolone"
 
-#: plugins/sudoers/testsudoers.c:308
+#: plugins/sudoers/testsudoers.c:313
 msgid ""
 "\n"
 "Command denied"
@@ -1315,7 +1297,7 @@ msgstr ""
 "\n"
 "Polecenie niedozwolone"
 
-#: plugins/sudoers/testsudoers.c:308
+#: plugins/sudoers/testsudoers.c:313
 msgid ""
 "\n"
 "Command unmatched"
@@ -1346,81 +1328,81 @@ msgstr "%s, wersja gramatyki %d\n"
 msgid "you do not exist in the %s database"
 msgstr "nie istniejesz w bazie danych %s"
 
-#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:470
+#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:518
 #, c-format
 msgid "press return to edit %s: "
 msgstr "wciśnięcie return przejdzie do edycji %s: "
 
-#: plugins/sudoers/visudo.c:300 plugins/sudoers/visudo.c:306
+#: plugins/sudoers/visudo.c:320 plugins/sudoers/visudo.c:326
 #, c-format
 msgid "write error"
 msgstr "błąd zapisu"
 
-#: plugins/sudoers/visudo.c:360
+#: plugins/sudoers/visudo.c:408
 #, c-format
 msgid "unable to stat temporary file (%s), %s unchanged"
 msgstr "nie udało się wykonać stat na pliku tymczasowym (%s), %s nie zmieniony"
 
-#: plugins/sudoers/visudo.c:365
+#: plugins/sudoers/visudo.c:413
 #, c-format
 msgid "zero length temporary file (%s), %s unchanged"
 msgstr "plik tymczasowy (%s) zerowej długości, %s nie zmieniony"
 
-#: plugins/sudoers/visudo.c:371
+#: plugins/sudoers/visudo.c:419
 #, c-format
 msgid "editor (%s) failed, %s unchanged"
 msgstr "błąd edytora (%s), %s nie zmieniony"
 
-#: plugins/sudoers/visudo.c:394
+#: plugins/sudoers/visudo.c:442
 #, c-format
 msgid "%s unchanged"
 msgstr "%s nie zmieniony"
 
-#: plugins/sudoers/visudo.c:418
+#: plugins/sudoers/visudo.c:466
 #, c-format
 msgid "unable to re-open temporary file (%s), %s unchanged."
 msgstr "nie udało się ponownie otworzyć pliku tymczasowego (%s), %s nie zmieniony."
 
-#: plugins/sudoers/visudo.c:428
+#: plugins/sudoers/visudo.c:476
 #, c-format
 msgid "unabled to parse temporary file (%s), unknown error"
 msgstr "nie udało się przeanalizować pliku tymczasowego (%s), nieznany błąd"
 
-#: plugins/sudoers/visudo.c:463
+#: plugins/sudoers/visudo.c:511
 #, c-format
 msgid "internal error, unable to find %s in list!"
 msgstr "błąd wewnętrzny, nie znaleziono %s na liście!"
 
-#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:511
+#: plugins/sudoers/visudo.c:546 plugins/sudoers/visudo.c:555
 #, c-format
-msgid "unable to set (uid, gid) of %s to (%d, %d)"
-msgstr "nie udało się ustawić (uid, gid) %s na (%d, %d)"
+msgid "unable to set (uid, gid) of %s to (%u, %u)"
+msgstr "nie udało się ustawić (uid, gid) %s na (%u, %u)"
 
-#: plugins/sudoers/visudo.c:506 plugins/sudoers/visudo.c:516
+#: plugins/sudoers/visudo.c:550 plugins/sudoers/visudo.c:560
 #, c-format
 msgid "unable to change mode of %s to 0%o"
 msgstr "nie udało się zmienić uprawnień %s na 0%o"
 
-#: plugins/sudoers/visudo.c:533
+#: plugins/sudoers/visudo.c:577
 #, c-format
 msgid "%s and %s not on the same file system, using mv to rename"
 msgstr "%s i %s nie są na tym samym systemie plików, użycie mv do zmiany nazwy"
 
-#: plugins/sudoers/visudo.c:547
+#: plugins/sudoers/visudo.c:591
 #, c-format
 msgid "command failed: '%s %s %s', %s unchanged"
 msgstr "polecenie nie powiodło się: '%s %s %s', %s nie zmieniony"
 
-#: plugins/sudoers/visudo.c:557
+#: plugins/sudoers/visudo.c:601
 #, c-format
 msgid "error renaming %s, %s unchanged"
 msgstr "błąd podczas zmiany nazwy %s, %s nie zmieniony"
 
-#: plugins/sudoers/visudo.c:617
+#: plugins/sudoers/visudo.c:661
 msgid "What now? "
 msgstr "Co teraz? "
 
-#: plugins/sudoers/visudo.c:631
+#: plugins/sudoers/visudo.c:675
 msgid ""
 "Options are:\n"
 "  (e)dit sudoers file again\n"
@@ -1432,92 +1414,92 @@ msgstr ""
 "  (x) wyjście bez zapisu zmian do pliku sudoers\n"
 "  (Q) wyjście i zapisanie zmian w pliku sudoers (NIEBEZPIECZNE!)\n"
 
-#: plugins/sudoers/visudo.c:668
+#: plugins/sudoers/visudo.c:712
 #, c-format
 msgid "unable to execute %s"
 msgstr "nie udało się wywołać %s"
 
-#: plugins/sudoers/visudo.c:675
+#: plugins/sudoers/visudo.c:719
 #, c-format
 msgid "unable to run %s"
 msgstr "nie udało się uruchomić %s"
 
-#: plugins/sudoers/visudo.c:706
+#: plugins/sudoers/visudo.c:750
 #, c-format
 msgid "failed to parse %s file, unknown error"
 msgstr "nie udało się przeanalizować pliku %s, nieznany błąd"
 
-#: plugins/sudoers/visudo.c:718
+#: plugins/sudoers/visudo.c:762
 #, c-format
 msgid "parse error in %s near line %d\n"
 msgstr "błąd składni w %s w okolicy linii %d\n"
 
-#: plugins/sudoers/visudo.c:721
+#: plugins/sudoers/visudo.c:765
 #, c-format
 msgid "parse error in %s\n"
 msgstr "błąd składni w %s\n"
 
-#: plugins/sudoers/visudo.c:723
+#: plugins/sudoers/visudo.c:767
 #, c-format
 msgid "%s: parsed OK\n"
 msgstr "%s: składnia poprawna\n"
 
-#: plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:776
 #, c-format
-msgid "%s: wrong owner (uid, gid) should be (%d, %d)\n"
-msgstr "%s: błędny właściciel, (uid, gid) powinny wynosić (%d, %d)\n"
+msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
+msgstr "%s: błędny właściciel, (uid, gid) powinny wynosić (%u, %u)\n"
 
-#: plugins/sudoers/visudo.c:744
+#: plugins/sudoers/visudo.c:783
 #, c-format
 msgid "%s: bad permissions, should be mode 0%o\n"
 msgstr "%s: błędne uprawnienia, powinny być 0%o\n"
 
-#: plugins/sudoers/visudo.c:783
+#: plugins/sudoers/visudo.c:822
 #, c-format
 msgid "%s busy, try again later"
 msgstr "%s zajęty, proszę spróbować później"
 
-#: plugins/sudoers/visudo.c:826
+#: plugins/sudoers/visudo.c:865
 #, c-format
 msgid "specified editor (%s) doesn't exist"
 msgstr "podany edytor (%s) nie istnieje"
 
-#: plugins/sudoers/visudo.c:849
+#: plugins/sudoers/visudo.c:888
 #, c-format
 msgid "unable to stat editor (%s)"
 msgstr "nie udało się wykonać stat na edytorze (%s)"
 
-#: plugins/sudoers/visudo.c:897
+#: plugins/sudoers/visudo.c:936
 #, c-format
 msgid "no editor found (editor path = %s)"
 msgstr "nie znaleziono edytora (ścieżka = %s)"
 
-#: plugins/sudoers/visudo.c:986
+#: plugins/sudoers/visudo.c:1025
 #, c-format
 msgid "Error: cycle in %s_Alias `%s'"
 msgstr "Błąd: cykl w %s_Alias `%s'"
 
-#: plugins/sudoers/visudo.c:987
+#: plugins/sudoers/visudo.c:1026
 #, c-format
 msgid "Warning: cycle in %s_Alias `%s'"
 msgstr "Uwaga: cykl w %s_Alias `%s'"
 
-#: plugins/sudoers/visudo.c:990
+#: plugins/sudoers/visudo.c:1029
 #, c-format
 msgid "Error: %s_Alias `%s' referenced but not defined"
 msgstr "Błąd: %s_Alias `%s' użyty, ale nie zdefiniowany"
 
-#: plugins/sudoers/visudo.c:991
+#: plugins/sudoers/visudo.c:1030
 #, c-format
 msgid "Warning: %s_Alias `%s' referenced but not defined"
 msgstr "Uwaga: %s_Alias `%s' użyty, ale nie zdefiniowany"
 
-#: plugins/sudoers/visudo.c:1128
+#: plugins/sudoers/visudo.c:1167
 #, c-format
 msgid "%s: unused %s_Alias %s"
 msgstr "%s: nie użyty %s_Alias %s"
 
-#: plugins/sudoers/visudo.c:1185
+#: plugins/sudoers/visudo.c:1224
 #, c-format
 msgid ""
 "%s - safely edit the sudoers file\n"
@@ -1526,7 +1508,7 @@ msgstr ""
 "%s - bezpieczna edycja pliku sudoers\n"
 "\n"
 
-#: plugins/sudoers/visudo.c:1187
+#: plugins/sudoers/visudo.c:1226
 msgid ""
 "\n"
 "Options:\n"
index 21f619659af8dc832a7ed6492853dea16bd12a1e..abd875b8b35955cd789cae8bb47b7f71e176d992 100644 (file)
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: sudo 1.8.2\n"
+"Project-Id-Version: sudo 1.8.3\n"
 "Report-Msgid-Bugs-To: http://www.sudo.ws/bugs\n"
-"POT-Creation-Date: 2011-08-17 11:40-0400\n"
+"POT-Creation-Date: 2011-10-10 15:50-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -64,98 +64,98 @@ msgstr ""
 msgid "au_to_text: failed"
 msgstr ""
 
-#: plugins/sudoers/check.c:141
+#: plugins/sudoers/check.c:149
 #, c-format
 msgid "sorry, a password is required to run %s"
 msgstr ""
 
-#: plugins/sudoers/check.c:225 plugins/sudoers/iolog.c:169
-#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoreplay.c:325
+#: plugins/sudoers/check.c:236 plugins/sudoers/iolog.c:169
+#: plugins/sudoers/sudoers.c:964 plugins/sudoers/sudoreplay.c:325
 #: plugins/sudoers/sudoreplay.c:334 plugins/sudoers/sudoreplay.c:675
-#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:700
+#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:744
 #, c-format
 msgid "unable to open %s"
 msgstr ""
 
-#: plugins/sudoers/check.c:229 plugins/sudoers/iolog.c:199
+#: plugins/sudoers/check.c:240 plugins/sudoers/iolog.c:199
 #, c-format
 msgid "unable to write to %s"
 msgstr ""
 
-#: plugins/sudoers/check.c:237 plugins/sudoers/check.c:475
-#: plugins/sudoers/check.c:525 plugins/sudoers/iolog.c:122
+#: plugins/sudoers/check.c:248 plugins/sudoers/check.c:486
+#: plugins/sudoers/check.c:536 plugins/sudoers/iolog.c:122
 #: plugins/sudoers/iolog.c:153
 #, c-format
 msgid "unable to mkdir %s"
 msgstr ""
 
-#: plugins/sudoers/check.c:370
+#: plugins/sudoers/check.c:381
 #, c-format
 msgid "internal error, expand_prompt() overflow"
 msgstr ""
 
-#: plugins/sudoers/check.c:426
+#: plugins/sudoers/check.c:437
 #, c-format
 msgid "timestamp path too long: %s"
 msgstr ""
 
-#: plugins/sudoers/check.c:454 plugins/sudoers/check.c:498
+#: plugins/sudoers/check.c:465 plugins/sudoers/check.c:509
 #: plugins/sudoers/iolog.c:155
 #, c-format
 msgid "%s exists but is not a directory (0%o)"
 msgstr ""
 
-#: plugins/sudoers/check.c:457 plugins/sudoers/check.c:501
-#: plugins/sudoers/check.c:546
+#: plugins/sudoers/check.c:468 plugins/sudoers/check.c:512
+#: plugins/sudoers/check.c:557
 #, c-format
 msgid "%s owned by uid %u, should be uid %u"
 msgstr ""
 
-#: plugins/sudoers/check.c:462 plugins/sudoers/check.c:506
+#: plugins/sudoers/check.c:473 plugins/sudoers/check.c:517
 #, c-format
 msgid "%s writable by non-owner (0%o), should be mode 0700"
 msgstr ""
 
-#: plugins/sudoers/check.c:470 plugins/sudoers/check.c:514
-#: plugins/sudoers/check.c:582 plugins/sudoers/sudoers.c:957
-#: plugins/sudoers/visudo.c:284 plugins/sudoers/visudo.c:500
+#: plugins/sudoers/check.c:481 plugins/sudoers/check.c:525
+#: plugins/sudoers/check.c:593 plugins/sudoers/sudoers.c:950
+#: plugins/sudoers/visudo.c:304 plugins/sudoers/visudo.c:544
 #, c-format
 msgid "unable to stat %s"
 msgstr ""
 
-#: plugins/sudoers/check.c:540
+#: plugins/sudoers/check.c:551
 #, c-format
 msgid "%s exists but is not a regular file (0%o)"
 msgstr ""
 
-#: plugins/sudoers/check.c:552
+#: plugins/sudoers/check.c:563
 #, c-format
 msgid "%s writable by non-owner (0%o), should be mode 0600"
 msgstr ""
 
-#: plugins/sudoers/check.c:606
+#: plugins/sudoers/check.c:617
 #, c-format
 msgid "timestamp too far in the future: %20.20s"
 msgstr ""
 
-#: plugins/sudoers/check.c:652
+#: plugins/sudoers/check.c:663
 #, c-format
 msgid "unable to remove %s (%s), will reset to the epoch"
 msgstr ""
 
-#: plugins/sudoers/check.c:660
+#: plugins/sudoers/check.c:671
 #, c-format
 msgid "unable to reset %s to the epoch"
 msgstr ""
 
-#: plugins/sudoers/check.c:714 plugins/sudoers/check.c:720
+#: plugins/sudoers/check.c:725 plugins/sudoers/check.c:731
+#: plugins/sudoers/sudoers.c:804 plugins/sudoers/sudoers.c:808
 #, c-format
 msgid "unknown uid: %u"
 msgstr ""
 
-#: plugins/sudoers/check.c:717 plugins/sudoers/sudoers.c:748
-#: plugins/sudoers/sudoers.c:814 plugins/sudoers/sudoers.c:815
-#: plugins/sudoers/sudoers.c:1088 plugins/sudoers/testsudoers.c:202
+#: plugins/sudoers/check.c:728 plugins/sudoers/sudoers.c:746
+#: plugins/sudoers/sudoers.c:1081 plugins/sudoers/testsudoers.c:202
 #: plugins/sudoers/testsudoers.c:337
 #, c-format
 msgid "unknown user: %s"
@@ -519,51 +519,35 @@ msgstr ""
 msgid "Set the user in utmp to the runas user, not the invoking user"
 msgstr ""
 
-#: plugins/sudoers/defaults.c:197
-msgid ""
-"Available options in a sudoers ``Defaults'' line:\n"
-"\n"
-msgstr ""
-
-#: plugins/sudoers/defaults.c:204 plugins/sudoers/defaults.c:215
-#, c-format
-msgid "%s: %s\n"
-msgstr ""
-
-#: plugins/sudoers/defaults.c:211
-#, c-format
-msgid "%s: %.*s\n"
-msgstr ""
-
-#: plugins/sudoers/defaults.c:241
+#: plugins/sudoers/defaults.c:205
 #, c-format
 msgid "unknown defaults entry `%s'"
 msgstr ""
 
-#: plugins/sudoers/defaults.c:249 plugins/sudoers/defaults.c:259
-#: plugins/sudoers/defaults.c:279 plugins/sudoers/defaults.c:292
-#: plugins/sudoers/defaults.c:305 plugins/sudoers/defaults.c:318
-#: plugins/sudoers/defaults.c:331 plugins/sudoers/defaults.c:351
-#: plugins/sudoers/defaults.c:361
+#: plugins/sudoers/defaults.c:213 plugins/sudoers/defaults.c:223
+#: plugins/sudoers/defaults.c:243 plugins/sudoers/defaults.c:256
+#: plugins/sudoers/defaults.c:269 plugins/sudoers/defaults.c:282
+#: plugins/sudoers/defaults.c:295 plugins/sudoers/defaults.c:315
+#: plugins/sudoers/defaults.c:325
 #, c-format
 msgid "value `%s' is invalid for option `%s'"
 msgstr ""
 
-#: plugins/sudoers/defaults.c:252 plugins/sudoers/defaults.c:262
-#: plugins/sudoers/defaults.c:270 plugins/sudoers/defaults.c:287
-#: plugins/sudoers/defaults.c:300 plugins/sudoers/defaults.c:313
-#: plugins/sudoers/defaults.c:326 plugins/sudoers/defaults.c:346
-#: plugins/sudoers/defaults.c:357
+#: plugins/sudoers/defaults.c:216 plugins/sudoers/defaults.c:226
+#: plugins/sudoers/defaults.c:234 plugins/sudoers/defaults.c:251
+#: plugins/sudoers/defaults.c:264 plugins/sudoers/defaults.c:277
+#: plugins/sudoers/defaults.c:290 plugins/sudoers/defaults.c:310
+#: plugins/sudoers/defaults.c:321
 #, c-format
 msgid "no value specified for `%s'"
 msgstr ""
 
-#: plugins/sudoers/defaults.c:275
+#: plugins/sudoers/defaults.c:239
 #, c-format
 msgid "values for `%s' must start with a '/'"
 msgstr ""
 
-#: plugins/sudoers/defaults.c:337
+#: plugins/sudoers/defaults.c:301
 #, c-format
 msgid "option `%s' does not take a value"
 msgstr ""
@@ -578,7 +562,7 @@ msgstr ""
 msgid "sudo_putenv: corrupted envp, length mismatch"
 msgstr ""
 
-#: plugins/sudoers/env.c:698
+#: plugins/sudoers/env.c:703
 #, c-format
 msgid ""
 "sorry, you are not allowed to set the following environment variables: %s"
@@ -586,7 +570,7 @@ msgstr ""
 
 #: plugins/sudoers/find_path.c:68 plugins/sudoers/find_path.c:107
 #: plugins/sudoers/find_path.c:122 plugins/sudoers/iolog.c:124
-#: plugins/sudoers/sudoers.c:903 toke.l:663 toke.l:814
+#: plugins/sudoers/sudoers.c:896 toke.l:663 toke.l:814
 #, c-format
 msgid "%s: %s"
 msgstr ""
@@ -630,7 +614,7 @@ msgstr ""
 msgid "Local IP address and netmask pairs:\n"
 msgstr ""
 
-#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:978
+#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:971
 #, c-format
 msgid "unable to read %s"
 msgstr ""
@@ -649,108 +633,108 @@ msgstr ""
 msgid "unable to create %s"
 msgstr ""
 
-#: plugins/sudoers/iolog_path.c:245 plugins/sudoers/sudoers.c:357
+#: plugins/sudoers/iolog_path.c:247 plugins/sudoers/sudoers.c:355
 #, c-format
 msgid "unable to set locale to \"%s\", using \"C\""
 msgstr ""
 
-#: plugins/sudoers/ldap.c:363
+#: plugins/sudoers/ldap.c:368
 #, c-format
 msgid "sudo_ldap_conf_add_ports: port too large"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:386
+#: plugins/sudoers/ldap.c:391
 #, c-format
 msgid "sudo_ldap_conf_add_ports: out of space expanding hostbuf"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:415
+#: plugins/sudoers/ldap.c:420
 #, c-format
 msgid "unsupported LDAP uri type: %s"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:444
+#: plugins/sudoers/ldap.c:449
 #, c-format
 msgid "invalid uri: %s"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:450
+#: plugins/sudoers/ldap.c:455
 #, c-format
 msgid "unable to mix ldap and ldaps URIs"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:454
+#: plugins/sudoers/ldap.c:459
 #, c-format
 msgid "unable to mix ldaps and starttls"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:473
+#: plugins/sudoers/ldap.c:478
 #, c-format
 msgid "sudo_ldap_parse_uri: out of space building hostbuf"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:536
+#: plugins/sudoers/ldap.c:541
 #, c-format
 msgid "unable to initialize SSL cert and key db: %s"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:932
+#: plugins/sudoers/ldap.c:937
 #, c-format
 msgid "unable to get GMT time"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:938
+#: plugins/sudoers/ldap.c:943
 #, c-format
 msgid "unable to format timestamp"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:946
+#: plugins/sudoers/ldap.c:951
 #, c-format
 msgid "unable to build time filter"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:1047
+#: plugins/sudoers/ldap.c:1052
 #, c-format
 msgid "sudo_ldap_build_pass1 allocation mismatch"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:1542
+#: plugins/sudoers/ldap.c:1562
 #, c-format
 msgid ""
 "\n"
 "LDAP Role: %s\n"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:1544
+#: plugins/sudoers/ldap.c:1564
 #, c-format
 msgid ""
 "\n"
 "LDAP Role: UNKNOWN\n"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:1591
+#: plugins/sudoers/ldap.c:1611
 #, c-format
 msgid "    Order: %s\n"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:1599
+#: plugins/sudoers/ldap.c:1619
 #, c-format
 msgid "    Commands:\n"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:1986
+#: plugins/sudoers/ldap.c:2006
 #, c-format
 msgid "unable to initialize LDAP: %s"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:2017
+#: plugins/sudoers/ldap.c:2037
 #, c-format
 msgid ""
 "start_tls specified but LDAP libs do not support ldap_start_tls_s() or "
 "ldap_start_tls_s_np()"
 msgstr ""
 
-#: plugins/sudoers/ldap.c:2248
+#: plugins/sudoers/ldap.c:2268
 #, c-format
 msgid "invalid sudoOrder attribute: %s"
 msgstr ""
@@ -847,24 +831,24 @@ msgstr ""
 msgid "parse error in %s near line %d"
 msgstr ""
 
-#: plugins/sudoers/parse.c:369
+#: plugins/sudoers/parse.c:371
 #, c-format
 msgid ""
 "\n"
 "Sudoers entry:\n"
 msgstr ""
 
-#: plugins/sudoers/parse.c:371
+#: plugins/sudoers/parse.c:373
 #, c-format
 msgid "    RunAsUsers: "
 msgstr ""
 
-#: plugins/sudoers/parse.c:386
+#: plugins/sudoers/parse.c:388
 #, c-format
 msgid "    RunAsGroups: "
 msgstr ""
 
-#: plugins/sudoers/parse.c:395
+#: plugins/sudoers/parse.c:397
 #, c-format
 msgid ""
 "    Commands:\n"
@@ -890,53 +874,53 @@ msgstr ""
 msgid "unable to cache user %s, already exists"
 msgstr ""
 
-#: plugins/sudoers/pwutil.c:607
+#: plugins/sudoers/pwutil.c:622
 #, c-format
 msgid "unable to cache gid %u (%s), already exists"
 msgstr ""
 
-#: plugins/sudoers/pwutil.c:615
+#: plugins/sudoers/pwutil.c:630
 #, c-format
 msgid "unable to cache gid %u, already exists"
 msgstr ""
 
-#: plugins/sudoers/pwutil.c:644 plugins/sudoers/pwutil.c:653
+#: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:668
 #, c-format
 msgid "unable to cache group %s, already exists"
 msgstr ""
 
-#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:355
-#: plugins/sudoers/set_perms.c:587 plugins/sudoers/set_perms.c:821
+#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:358
+#: plugins/sudoers/set_perms.c:591 plugins/sudoers/set_perms.c:825
 msgid "perm stack overflow"
 msgstr ""
 
-#: plugins/sudoers/set_perms.c:117 plugins/sudoers/set_perms.c:363
-#: plugins/sudoers/set_perms.c:595 plugins/sudoers/set_perms.c:829
+#: plugins/sudoers/set_perms.c:117 plugins/sudoers/set_perms.c:366
+#: plugins/sudoers/set_perms.c:599 plugins/sudoers/set_perms.c:833
 msgid "perm stack underflow"
 msgstr ""
 
-#: plugins/sudoers/set_perms.c:223 plugins/sudoers/set_perms.c:455
-#: plugins/sudoers/set_perms.c:692
+#: plugins/sudoers/set_perms.c:223 plugins/sudoers/set_perms.c:458
+#: plugins/sudoers/set_perms.c:696
 msgid "unable to change to runas gid"
 msgstr ""
 
-#: plugins/sudoers/set_perms.c:231 plugins/sudoers/set_perms.c:462
-#: plugins/sudoers/set_perms.c:699
+#: plugins/sudoers/set_perms.c:231 plugins/sudoers/set_perms.c:465
+#: plugins/sudoers/set_perms.c:703
 msgid "unable to change to runas uid"
 msgstr ""
 
-#: plugins/sudoers/set_perms.c:245 plugins/sudoers/set_perms.c:475
-#: plugins/sudoers/set_perms.c:712
+#: plugins/sudoers/set_perms.c:245 plugins/sudoers/set_perms.c:478
+#: plugins/sudoers/set_perms.c:716
 #, c-format
 msgid "unable to change to sudoers gid"
 msgstr ""
 
-#: plugins/sudoers/set_perms.c:286 plugins/sudoers/set_perms.c:513
-#: plugins/sudoers/set_perms.c:750 plugins/sudoers/set_perms.c:890
+#: plugins/sudoers/set_perms.c:286 plugins/sudoers/set_perms.c:516
+#: plugins/sudoers/set_perms.c:754 plugins/sudoers/set_perms.c:894
 msgid "too many processes"
 msgstr ""
 
-#: plugins/sudoers/set_perms.c:952
+#: plugins/sudoers/set_perms.c:956
 msgid "unable to set runas group vector"
 msgstr ""
 
@@ -960,169 +944,169 @@ msgstr ""
 msgid "User %s is not allowed to run sudo on %s.\n"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:199 plugins/sudoers/sudoers.c:234
-#: plugins/sudoers/sudoers.c:911
+#: plugins/sudoers/sudoers.c:201 plugins/sudoers/sudoers.c:232
+#: plugins/sudoers/sudoers.c:904
 msgid "problem with defaults entries"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:203
+#: plugins/sudoers/sudoers.c:205
 #, c-format
 msgid "no valid sudoers sources found, quitting"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:257
+#: plugins/sudoers/sudoers.c:255
 #, c-format
 msgid "unable to execute %s: %s"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:306
+#: plugins/sudoers/sudoers.c:304
 #, c-format
 msgid "sudoers specifies that root is not allowed to sudo"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:313
+#: plugins/sudoers/sudoers.c:311
 #, c-format
 msgid "you are not permitted to use the -C option"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:403
+#: plugins/sudoers/sudoers.c:401
 #, c-format
 msgid "timestamp owner (%s): No such user"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:419
+#: plugins/sudoers/sudoers.c:417
 msgid "no tty"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:420
+#: plugins/sudoers/sudoers.c:418
 #, c-format
 msgid "sorry, you must have a tty to run sudo"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:463
+#: plugins/sudoers/sudoers.c:461
 msgid "No user or host"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:477 plugins/sudoers/sudoers.c:498
-#: plugins/sudoers/sudoers.c:499 plugins/sudoers/sudoers.c:1465
-#: plugins/sudoers/sudoers.c:1466
+#: plugins/sudoers/sudoers.c:475 plugins/sudoers/sudoers.c:496
+#: plugins/sudoers/sudoers.c:497 plugins/sudoers/sudoers.c:1458
+#: plugins/sudoers/sudoers.c:1459
 #, c-format
 msgid "%s: command not found"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:477 plugins/sudoers/sudoers.c:493
 #, c-format
 msgid ""
 "ignoring `%s' found in '.'\n"
 "Use `sudo ./%s' if this is the `%s' you wish to run."
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:484
+#: plugins/sudoers/sudoers.c:482
 msgid "validation failure"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:494
+#: plugins/sudoers/sudoers.c:492
 msgid "command in current directory"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:506
+#: plugins/sudoers/sudoers.c:504
 #, c-format
 msgid "sorry, you are not allowed to preserve the environment"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:894
+#: plugins/sudoers/sudoers.c:887
 #, c-format
 msgid "internal error, set_cmnd() overflow"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:936
+#: plugins/sudoers/sudoers.c:929
 #, c-format
 msgid "fixed mode on %s"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:940
+#: plugins/sudoers/sudoers.c:933
 #, c-format
 msgid "set group on %s"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:943
+#: plugins/sudoers/sudoers.c:936
 #, c-format
 msgid "unable to set group on %s"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:946
+#: plugins/sudoers/sudoers.c:939
 #, c-format
 msgid "unable to fix mode on %s"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:959
+#: plugins/sudoers/sudoers.c:952
 #, c-format
 msgid "%s is not a regular file"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:961
+#: plugins/sudoers/sudoers.c:954
 #, c-format
 msgid "%s is mode 0%o, should be 0%o"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:965
+#: plugins/sudoers/sudoers.c:958
 #, c-format
 msgid "%s is owned by uid %u, should be %u"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:968
+#: plugins/sudoers/sudoers.c:961
 #, c-format
 msgid "%s is owned by gid %u, should be %u"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:1012
+#: plugins/sudoers/sudoers.c:1005
 #, c-format
 msgid "only root can use `-c %s'"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:1022
+#: plugins/sudoers/sudoers.c:1015
 #, c-format
 msgid "unknown login class: %s"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:1056
+#: plugins/sudoers/sudoers.c:1049
 #, c-format
 msgid "unable to resolve host %s"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:1106 plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/sudoers.c:1099 plugins/sudoers/testsudoers.c:351
 #, c-format
 msgid "unknown group: %s"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1143
 #, c-format
 msgid "Sudoers policy plugin version %s\n"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:1152
+#: plugins/sudoers/sudoers.c:1145
 #, c-format
 msgid "Sudoers file grammar version %d\n"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:1156
+#: plugins/sudoers/sudoers.c:1149
 #, c-format
 msgid ""
 "\n"
 "Sudoers path: %s\n"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:1159
+#: plugins/sudoers/sudoers.c:1152
 #, c-format
 msgid "nsswitch path: %s\n"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:1161
+#: plugins/sudoers/sudoers.c:1154
 #, c-format
 msgid "ldap.conf path: %s\n"
 msgstr ""
 
-#: plugins/sudoers/sudoers.c:1162
+#: plugins/sudoers/sudoers.c:1155
 #, c-format
 msgid "ldap.secret path: %s\n"
 msgstr ""
@@ -1322,81 +1306,81 @@ msgstr ""
 msgid "you do not exist in the %s database"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:470
+#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:518
 #, c-format
 msgid "press return to edit %s: "
 msgstr ""
 
-#: plugins/sudoers/visudo.c:300 plugins/sudoers/visudo.c:306
+#: plugins/sudoers/visudo.c:320 plugins/sudoers/visudo.c:326
 #, c-format
 msgid "write error"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:360
+#: plugins/sudoers/visudo.c:408
 #, c-format
 msgid "unable to stat temporary file (%s), %s unchanged"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:365
+#: plugins/sudoers/visudo.c:413
 #, c-format
 msgid "zero length temporary file (%s), %s unchanged"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:371
+#: plugins/sudoers/visudo.c:419
 #, c-format
 msgid "editor (%s) failed, %s unchanged"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:394
+#: plugins/sudoers/visudo.c:442
 #, c-format
 msgid "%s unchanged"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:418
+#: plugins/sudoers/visudo.c:466
 #, c-format
 msgid "unable to re-open temporary file (%s), %s unchanged."
 msgstr ""
 
-#: plugins/sudoers/visudo.c:428
+#: plugins/sudoers/visudo.c:476
 #, c-format
 msgid "unabled to parse temporary file (%s), unknown error"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:463
+#: plugins/sudoers/visudo.c:511
 #, c-format
 msgid "internal error, unable to find %s in list!"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:511
+#: plugins/sudoers/visudo.c:546 plugins/sudoers/visudo.c:555
 #, c-format
-msgid "unable to set (uid, gid) of %s to (%d, %d)"
+msgid "unable to set (uid, gid) of %s to (%u, %u)"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:506 plugins/sudoers/visudo.c:516
+#: plugins/sudoers/visudo.c:550 plugins/sudoers/visudo.c:560
 #, c-format
 msgid "unable to change mode of %s to 0%o"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:533
+#: plugins/sudoers/visudo.c:577
 #, c-format
 msgid "%s and %s not on the same file system, using mv to rename"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:547
+#: plugins/sudoers/visudo.c:591
 #, c-format
 msgid "command failed: '%s %s %s', %s unchanged"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:557
+#: plugins/sudoers/visudo.c:601
 #, c-format
 msgid "error renaming %s, %s unchanged"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:617
+#: plugins/sudoers/visudo.c:661
 msgid "What now? "
 msgstr ""
 
-#: plugins/sudoers/visudo.c:631
+#: plugins/sudoers/visudo.c:675
 msgid ""
 "Options are:\n"
 "  (e)dit sudoers file again\n"
@@ -1404,99 +1388,99 @@ msgid ""
 "  (Q)uit and save changes to sudoers file (DANGER!)\n"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:668
+#: plugins/sudoers/visudo.c:712
 #, c-format
 msgid "unable to execute %s"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:675
+#: plugins/sudoers/visudo.c:719
 #, c-format
 msgid "unable to run %s"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:706
+#: plugins/sudoers/visudo.c:750
 #, c-format
 msgid "failed to parse %s file, unknown error"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:718
+#: plugins/sudoers/visudo.c:762
 #, c-format
 msgid "parse error in %s near line %d\n"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:721
+#: plugins/sudoers/visudo.c:765
 #, c-format
 msgid "parse error in %s\n"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:723
+#: plugins/sudoers/visudo.c:767
 #, c-format
 msgid "%s: parsed OK\n"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:776
 #, c-format
-msgid "%s: wrong owner (uid, gid) should be (%d, %d)\n"
+msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:744
+#: plugins/sudoers/visudo.c:783
 #, c-format
 msgid "%s: bad permissions, should be mode 0%o\n"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:783
+#: plugins/sudoers/visudo.c:822
 #, c-format
 msgid "%s busy, try again later"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:826
+#: plugins/sudoers/visudo.c:865
 #, c-format
 msgid "specified editor (%s) doesn't exist"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:849
+#: plugins/sudoers/visudo.c:888
 #, c-format
 msgid "unable to stat editor (%s)"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:897
+#: plugins/sudoers/visudo.c:936
 #, c-format
 msgid "no editor found (editor path = %s)"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:986
+#: plugins/sudoers/visudo.c:1025
 #, c-format
 msgid "Error: cycle in %s_Alias `%s'"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:987
+#: plugins/sudoers/visudo.c:1026
 #, c-format
 msgid "Warning: cycle in %s_Alias `%s'"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:990
+#: plugins/sudoers/visudo.c:1029
 #, c-format
 msgid "Error: %s_Alias `%s' referenced but not defined"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:991
+#: plugins/sudoers/visudo.c:1030
 #, c-format
 msgid "Warning: %s_Alias `%s' referenced but not defined"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:1128
+#: plugins/sudoers/visudo.c:1167
 #, c-format
 msgid "%s: unused %s_Alias %s"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:1185
+#: plugins/sudoers/visudo.c:1224
 #, c-format
 msgid ""
 "%s - safely edit the sudoers file\n"
 "\n"
 msgstr ""
 
-#: plugins/sudoers/visudo.c:1187
+#: plugins/sudoers/visudo.c:1226
 msgid ""
 "\n"
 "Options:\n"
@@ -1543,47 +1527,47 @@ msgid ""
 "%s"
 msgstr ""
 
-#: plugins/sudoers/auth/kerb5.c:114
+#: plugins/sudoers/auth/kerb5.c:110
 #, c-format
-msgid "%s: unable to parse '%s': %s"
+msgid "%s: unable to unparse princ ('%s'): %s"
 msgstr ""
 
-#: plugins/sudoers/auth/kerb5.c:127
+#: plugins/sudoers/auth/kerb5.c:149
 #, c-format
-msgid "%s: unable to unparse princ ('%s'): %s"
+msgid "%s: unable to parse '%s': %s"
 msgstr ""
 
-#: plugins/sudoers/auth/kerb5.c:144
+#: plugins/sudoers/auth/kerb5.c:160
 #, c-format
 msgid "%s: unable to resolve ccache: %s"
 msgstr ""
 
-#: plugins/sudoers/auth/kerb5.c:188
+#: plugins/sudoers/auth/kerb5.c:204
 #, c-format
 msgid "%s: unable to allocate options: %s"
 msgstr ""
 
-#: plugins/sudoers/auth/kerb5.c:204
+#: plugins/sudoers/auth/kerb5.c:220
 #, c-format
 msgid "%s: unable to get credentials: %s"
 msgstr ""
 
-#: plugins/sudoers/auth/kerb5.c:217
+#: plugins/sudoers/auth/kerb5.c:233
 #, c-format
 msgid "%s: unable to initialize ccache: %s"
 msgstr ""
 
-#: plugins/sudoers/auth/kerb5.c:221
+#: plugins/sudoers/auth/kerb5.c:237
 #, c-format
 msgid "%s: unable to store cred in ccache: %s"
 msgstr ""
 
-#: plugins/sudoers/auth/kerb5.c:284
+#: plugins/sudoers/auth/kerb5.c:300
 #, c-format
 msgid "%s: unable to get host principal: %s"
 msgstr ""
 
-#: plugins/sudoers/auth/kerb5.c:299
+#: plugins/sudoers/auth/kerb5.c:315
 #, c-format
 msgid "%s: Cannot verify TGT! Possible attack!: %s"
 msgstr ""
@@ -1620,50 +1604,50 @@ msgstr ""
 msgid "pam_authenticate: %s"
 msgstr ""
 
-#: plugins/sudoers/auth/pam.c:296
+#: plugins/sudoers/auth/pam.c:300
 msgid "Password: "
 msgstr ""
 
-#: plugins/sudoers/auth/pam.c:297
+#: plugins/sudoers/auth/pam.c:301
 msgid "Password:"
 msgstr ""
 
-#: plugins/sudoers/auth/securid.c:82 plugins/sudoers/auth/securid5.c:106
+#: plugins/sudoers/auth/securid.c:82 plugins/sudoers/auth/securid5.c:105
 #, c-format
 msgid "unable to contact the SecurID server"
 msgstr ""
 
-#: plugins/sudoers/auth/securid5.c:81
+#: plugins/sudoers/auth/securid5.c:80
 #, c-format
 msgid "failed to initialise the ACE API library"
 msgstr ""
 
-#: plugins/sudoers/auth/securid5.c:115
+#: plugins/sudoers/auth/securid5.c:114
 #, c-format
 msgid "User ID locked for SecurID Authentication"
 msgstr ""
 
-#: plugins/sudoers/auth/securid5.c:119 plugins/sudoers/auth/securid5.c:169
+#: plugins/sudoers/auth/securid5.c:118 plugins/sudoers/auth/securid5.c:168
 #, c-format
 msgid "invalid username length for SecurID"
 msgstr ""
 
-#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:174
+#: plugins/sudoers/auth/securid5.c:122 plugins/sudoers/auth/securid5.c:173
 #, c-format
 msgid "invalid Authentication Handle for SecurID"
 msgstr ""
 
-#: plugins/sudoers/auth/securid5.c:127
+#: plugins/sudoers/auth/securid5.c:126
 #, c-format
 msgid "SecurID communication failed"
 msgstr ""
 
-#: plugins/sudoers/auth/securid5.c:131 plugins/sudoers/auth/securid5.c:213
+#: plugins/sudoers/auth/securid5.c:130 plugins/sudoers/auth/securid5.c:212
 #, c-format
 msgid "unknown SecurID error"
 msgstr ""
 
-#: plugins/sudoers/auth/securid5.c:164
+#: plugins/sudoers/auth/securid5.c:163
 #, c-format
 msgid "invalid passcode length for SecurID"
 msgstr ""
@@ -1672,25 +1656,25 @@ msgstr ""
 msgid "unable to initialize SIA session"
 msgstr ""
 
-#: plugins/sudoers/auth/sudo_auth.c:124
+#: plugins/sudoers/auth/sudo_auth.c:119
 msgid ""
-"There are no authentication methods compiled into sudo!  If you want to turn "
-"off authentication, use the --disable-authentication configure option."
+"Invalid authentication methods compiled into sudo!  You may mix standalone "
+"and non-standalone authentication."
 msgstr ""
 
-#: plugins/sudoers/auth/sudo_auth.c:134
+#: plugins/sudoers/auth/sudo_auth.c:199
 msgid ""
-"Invalid authentication methods compiled into sudo!  You may mix standalone "
-"and non-standalone authentication."
+"There are no authentication methods compiled into sudo!  If you want to turn "
+"off authentication, use the --disable-authentication configure option."
 msgstr ""
 
-#: plugins/sudoers/auth/sudo_auth.c:243
+#: plugins/sudoers/auth/sudo_auth.c:271
 #, c-format
 msgid "%d incorrect password attempt"
 msgid_plural "%d incorrect password attempts"
 msgstr[0] ""
 msgstr[1] ""
 
-#: plugins/sudoers/auth/sudo_auth.c:335
+#: plugins/sudoers/auth/sudo_auth.c:367
 msgid "Authentication methods:"
 msgstr ""
index 131c776c6ec06b30dfb89c7d02d651c48284ca76..f27723501fd6ec5b8ef43d001b03c7fd5d432653 100644 (file)
Binary files a/plugins/sudoers/po/uk.mo and b/plugins/sudoers/po/uk.mo differ
index 706220bbdd0caaa29a68a332dd05baff27181d8a..4fe0c35057127a003702f8abcaebe2e562b29451 100644 (file)
@@ -4,10 +4,10 @@
 # Yuri Chornoivan <yurchor@ukr.net>, 2011.
 msgid ""
 msgstr ""
-"Project-Id-Version: sudoers 1.8.2-rc9\n"
+"Project-Id-Version: sudoers 1.8.3rc1\n"
 "Report-Msgid-Bugs-To: http://www.sudo.ws/bugs\n"
-"POT-Creation-Date: 2011-08-05 13:34-0400\n"
-"PO-Revision-Date: 2011-08-09 08:41+0300\n"
+"POT-Creation-Date: 2011-09-16 16:52-0400\n"
+"PO-Revision-Date: 2011-09-17 12:50+0300\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
 "Language: \n"
@@ -70,9 +70,9 @@ msgid "sorry, a password is required to run %s"
 msgstr "вибачте, для виконання %s слід вказати пароль"
 
 #: plugins/sudoers/check.c:225 plugins/sudoers/iolog.c:169
-#: plugins/sudoers/sudoers.c:970 plugins/sudoers/sudoreplay.c:325
+#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoreplay.c:325
 #: plugins/sudoers/sudoreplay.c:334 plugins/sudoers/sudoreplay.c:675
-#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:700
+#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:744
 #, c-format
 msgid "unable to open %s"
 msgstr "не вдалося відкрити %s"
@@ -117,8 +117,8 @@ msgid "%s writable by non-owner (0%o), should be mode 0700"
 msgstr "%s доступний до запису невласником (0%o), має бути встановлено режим 0700"
 
 #: plugins/sudoers/check.c:470 plugins/sudoers/check.c:514
-#: plugins/sudoers/check.c:582 plugins/sudoers/sudoers.c:956
-#: plugins/sudoers/visudo.c:284 plugins/sudoers/visudo.c:500
+#: plugins/sudoers/check.c:582 plugins/sudoers/sudoers.c:957
+#: plugins/sudoers/visudo.c:304 plugins/sudoers/visudo.c:544
 #, c-format
 msgid "unable to stat %s"
 msgstr "не вдалося виконати stat для %s"
@@ -153,10 +153,10 @@ msgstr "не вдалося встановити для %s час епохи"
 msgid "unknown uid: %u"
 msgstr "невідоме значення uid: %u"
 
-#: plugins/sudoers/check.c:717 plugins/sudoers/sudoers.c:747
-#: plugins/sudoers/sudoers.c:813 plugins/sudoers/sudoers.c:814
-#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/testsudoers.c:200
-#: plugins/sudoers/testsudoers.c:330
+#: plugins/sudoers/check.c:717 plugins/sudoers/sudoers.c:748
+#: plugins/sudoers/sudoers.c:814 plugins/sudoers/sudoers.c:815
+#: plugins/sudoers/sudoers.c:1088 plugins/sudoers/testsudoers.c:202
+#: plugins/sudoers/testsudoers.c:337
 #, c-format
 msgid "unknown user: %s"
 msgstr "невідомий користувач: %s"
@@ -516,53 +516,35 @@ msgstr "Додати запис до файла utmp/utmpx під час роз
 msgid "Set the user in utmp to the runas user, not the invoking user"
 msgstr "Встановити користувача у utmp у значення користувача, від імені якого виконується команда"
 
-#: plugins/sudoers/defaults.c:197
-msgid ""
-"Available options in a sudoers ``Defaults'' line:\n"
-"\n"
-msgstr ""
-"Можливі параметри у рядку «Defaults» sudoers:\n"
-"\n"
-
-#: plugins/sudoers/defaults.c:204 plugins/sudoers/defaults.c:215
-#, c-format
-msgid "%s: %s\n"
-msgstr "%s: %s\n"
-
-#: plugins/sudoers/defaults.c:211
-#, c-format
-msgid "%s: %.*s\n"
-msgstr "%s: %.*s\n"
-
-#: plugins/sudoers/defaults.c:241
+#: plugins/sudoers/defaults.c:205
 #, c-format
 msgid "unknown defaults entry `%s'"
 msgstr "невідомий запис типових параметрів «%s»"
 
-#: plugins/sudoers/defaults.c:249 plugins/sudoers/defaults.c:259
-#: plugins/sudoers/defaults.c:279 plugins/sudoers/defaults.c:292
-#: plugins/sudoers/defaults.c:305 plugins/sudoers/defaults.c:318
-#: plugins/sudoers/defaults.c:331 plugins/sudoers/defaults.c:351
-#: plugins/sudoers/defaults.c:361
+#: plugins/sudoers/defaults.c:213 plugins/sudoers/defaults.c:223
+#: plugins/sudoers/defaults.c:243 plugins/sudoers/defaults.c:256
+#: plugins/sudoers/defaults.c:269 plugins/sudoers/defaults.c:282
+#: plugins/sudoers/defaults.c:295 plugins/sudoers/defaults.c:315
+#: plugins/sudoers/defaults.c:325
 #, c-format
 msgid "value `%s' is invalid for option `%s'"
 msgstr "значення «%s» є некоректним для параметра «%s»"
 
-#: plugins/sudoers/defaults.c:252 plugins/sudoers/defaults.c:262
-#: plugins/sudoers/defaults.c:270 plugins/sudoers/defaults.c:287
-#: plugins/sudoers/defaults.c:300 plugins/sudoers/defaults.c:313
-#: plugins/sudoers/defaults.c:326 plugins/sudoers/defaults.c:346
-#: plugins/sudoers/defaults.c:357
+#: plugins/sudoers/defaults.c:216 plugins/sudoers/defaults.c:226
+#: plugins/sudoers/defaults.c:234 plugins/sudoers/defaults.c:251
+#: plugins/sudoers/defaults.c:264 plugins/sudoers/defaults.c:277
+#: plugins/sudoers/defaults.c:290 plugins/sudoers/defaults.c:310
+#: plugins/sudoers/defaults.c:321
 #, c-format
 msgid "no value specified for `%s'"
 msgstr "не вказано значення для «%s»"
 
-#: plugins/sudoers/defaults.c:275
+#: plugins/sudoers/defaults.c:239
 #, c-format
 msgid "values for `%s' must start with a '/'"
 msgstr "значення для «%s» має починатися з «/»"
 
-#: plugins/sudoers/defaults.c:337
+#: plugins/sudoers/defaults.c:301
 #, c-format
 msgid "option `%s' does not take a value"
 msgstr "параметру «%s» не потрібно передавати значення"
@@ -584,7 +566,7 @@ msgstr "вибачте, вам не дозволено встановлюват
 
 #: plugins/sudoers/find_path.c:68 plugins/sudoers/find_path.c:107
 #: plugins/sudoers/find_path.c:122 plugins/sudoers/iolog.c:124
-#: plugins/sudoers/sudoers.c:899 toke.l:663 toke.l:814
+#: plugins/sudoers/sudoers.c:903 toke.l:663 toke.l:814
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
@@ -628,7 +610,7 @@ msgstr "%s: несумісна основна версія додатка обр
 msgid "Local IP address and netmask pairs:\n"
 msgstr "Пари локальних IP-адрес і масок мережі:\n"
 
-#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:977
+#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:978
 #, c-format
 msgid "unable to read %s"
 msgstr "не вдалося прочитати %s"
@@ -647,72 +629,72 @@ msgstr "некоректний номер у послідовності %s"
 msgid "unable to create %s"
 msgstr "не вдалося створити %s"
 
-#: plugins/sudoers/iolog_path.c:245 plugins/sudoers/sudoers.c:356
+#: plugins/sudoers/iolog_path.c:247 plugins/sudoers/sudoers.c:357
 #, c-format
 msgid "unable to set locale to \"%s\", using \"C\""
 msgstr "не вдалося встановити локаль у значення «%s», використовуємо локаль «C»"
 
-#: plugins/sudoers/ldap.c:363
+#: plugins/sudoers/ldap.c:368
 #, c-format
 msgid "sudo_ldap_conf_add_ports: port too large"
 msgstr "sudo_ldap_conf_add_ports: занадто великий номер порту"
 
-#: plugins/sudoers/ldap.c:386
+#: plugins/sudoers/ldap.c:391
 #, c-format
 msgid "sudo_ldap_conf_add_ports: out of space expanding hostbuf"
 msgstr "sudo_ldap_conf_add_ports: вихід за межі розширеного буфера вузла"
 
-#: plugins/sudoers/ldap.c:415
+#: plugins/sudoers/ldap.c:420
 #, c-format
 msgid "unsupported LDAP uri type: %s"
 msgstr "непідтримуваний тип адреси LDAP: %s"
 
-#: plugins/sudoers/ldap.c:444
+#: plugins/sudoers/ldap.c:449
 #, c-format
 msgid "invalid uri: %s"
 msgstr "некоректна адреса: %s"
 
-#: plugins/sudoers/ldap.c:450
+#: plugins/sudoers/ldap.c:455
 #, c-format
 msgid "unable to mix ldap and ldaps URIs"
 msgstr "не можна використовувати суміш з адрес ldap і ldaps"
 
-#: plugins/sudoers/ldap.c:454
+#: plugins/sudoers/ldap.c:459
 #, c-format
 msgid "unable to mix ldaps and starttls"
 msgstr "не можна використовувати суміш з ldaps і starttls"
 
-#: plugins/sudoers/ldap.c:473
+#: plugins/sudoers/ldap.c:478
 #, c-format
 msgid "sudo_ldap_parse_uri: out of space building hostbuf"
 msgstr "sudo_ldap_parse_uri: вихід за межі пам’яті під час побудови буфера вузла"
 
-#: plugins/sudoers/ldap.c:536
+#: plugins/sudoers/ldap.c:541
 #, c-format
 msgid "unable to initialize SSL cert and key db: %s"
 msgstr "не вдалося ініціалізувати базу даних сертифікатів і ключів SSL: %s"
 
-#: plugins/sudoers/ldap.c:932
+#: plugins/sudoers/ldap.c:937
 #, c-format
 msgid "unable to get GMT time"
 msgstr "не вдалося отримати гринвіцький час"
 
-#: plugins/sudoers/ldap.c:938
+#: plugins/sudoers/ldap.c:943
 #, c-format
 msgid "unable to format timestamp"
 msgstr "не вдалося виконати форматування часового штампа"
 
-#: plugins/sudoers/ldap.c:946
+#: plugins/sudoers/ldap.c:951
 #, c-format
 msgid "unable to build time filter"
 msgstr "не вдалося побудувати фільтр часу"
 
-#: plugins/sudoers/ldap.c:1047
+#: plugins/sudoers/ldap.c:1052
 #, c-format
 msgid "sudo_ldap_build_pass1 allocation mismatch"
 msgstr "sudo_ldap_build_pass1: невідповідність розміщення"
 
-#: plugins/sudoers/ldap.c:1542
+#: plugins/sudoers/ldap.c:1562
 #, c-format
 msgid ""
 "\n"
@@ -721,7 +703,7 @@ msgstr ""
 "\n"
 "Роль LDAP: %s\n"
 
-#: plugins/sudoers/ldap.c:1544
+#: plugins/sudoers/ldap.c:1564
 #, c-format
 msgid ""
 "\n"
@@ -730,27 +712,27 @@ msgstr ""
 "\n"
 "Роль у LDAP: НЕВІДОМА\n"
 
-#: plugins/sudoers/ldap.c:1591
+#: plugins/sudoers/ldap.c:1611
 #, c-format
 msgid "    Order: %s\n"
 msgstr "    Порядок: %s\n"
 
-#: plugins/sudoers/ldap.c:1599
+#: plugins/sudoers/ldap.c:1619
 #, c-format
 msgid "    Commands:\n"
 msgstr "    Команди:\n"
 
-#: plugins/sudoers/ldap.c:1986
+#: plugins/sudoers/ldap.c:2006
 #, c-format
 msgid "unable to initialize LDAP: %s"
 msgstr "не вдалося ініціалізувати LDAP: %s"
 
-#: plugins/sudoers/ldap.c:2017
+#: plugins/sudoers/ldap.c:2037
 #, c-format
 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:2248
+#: plugins/sudoers/ldap.c:2268
 #, c-format
 msgid "invalid sudoOrder attribute: %s"
 msgstr "некоректний атрибут sudoOrder: %s"
@@ -847,7 +829,7 @@ msgstr "внутрішня помилка: недостатньо місця д
 msgid "parse error in %s near line %d"
 msgstr "помилка обробки у %s поблизу рядка %d"
 
-#: plugins/sudoers/parse.c:369
+#: plugins/sudoers/parse.c:371
 #, c-format
 msgid ""
 "\n"
@@ -856,17 +838,17 @@ msgstr ""
 "\n"
 "Запис sudoers:\n"
 
-#: plugins/sudoers/parse.c:371
+#: plugins/sudoers/parse.c:373
 #, c-format
 msgid "    RunAsUsers: "
 msgstr "    Користувачі для запуску: "
 
-#: plugins/sudoers/parse.c:386
+#: plugins/sudoers/parse.c:388
 #, c-format
 msgid "    RunAsGroups: "
 msgstr "    Групи для запуску: "
 
-#: plugins/sudoers/parse.c:395
+#: plugins/sudoers/parse.c:397
 #, c-format
 msgid ""
 "    Commands:\n"
@@ -909,38 +891,38 @@ msgstr "не вдалося кешувати gid %u, запис вже існу
 msgid "unable to cache group %s, already exists"
 msgstr "не вдалося кешувати групу %s, запис вже існує"
 
-#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:355
-#: plugins/sudoers/set_perms.c:587 plugins/sudoers/set_perms.c:821
+#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:358
+#: plugins/sudoers/set_perms.c:590 plugins/sudoers/set_perms.c:824
 msgid "perm stack overflow"
 msgstr "переповнення стека доступу"
 
-#: plugins/sudoers/set_perms.c:117 plugins/sudoers/set_perms.c:363
-#: plugins/sudoers/set_perms.c:595 plugins/sudoers/set_perms.c:829
+#: plugins/sudoers/set_perms.c:117 plugins/sudoers/set_perms.c:366
+#: plugins/sudoers/set_perms.c:598 plugins/sudoers/set_perms.c:832
 msgid "perm stack underflow"
 msgstr "вичерпання стека доступу"
 
-#: plugins/sudoers/set_perms.c:223 plugins/sudoers/set_perms.c:455
-#: plugins/sudoers/set_perms.c:692
+#: plugins/sudoers/set_perms.c:223 plugins/sudoers/set_perms.c:458
+#: plugins/sudoers/set_perms.c:695
 msgid "unable to change to runas gid"
 msgstr "не вдалося змінити gid на runas"
 
-#: plugins/sudoers/set_perms.c:231 plugins/sudoers/set_perms.c:462
-#: plugins/sudoers/set_perms.c:699
+#: plugins/sudoers/set_perms.c:231 plugins/sudoers/set_perms.c:465
+#: plugins/sudoers/set_perms.c:702
 msgid "unable to change to runas uid"
 msgstr "не вдалося змінити uid на runas"
 
-#: plugins/sudoers/set_perms.c:245 plugins/sudoers/set_perms.c:475
-#: plugins/sudoers/set_perms.c:712
+#: plugins/sudoers/set_perms.c:245 plugins/sudoers/set_perms.c:478
+#: plugins/sudoers/set_perms.c:715
 #, c-format
 msgid "unable to change to sudoers gid"
 msgstr "не вдалося змінити gid на sudoers"
 
-#: plugins/sudoers/set_perms.c:286 plugins/sudoers/set_perms.c:513
-#: plugins/sudoers/set_perms.c:750 plugins/sudoers/set_perms.c:890
+#: plugins/sudoers/set_perms.c:286 plugins/sudoers/set_perms.c:516
+#: plugins/sudoers/set_perms.c:753 plugins/sudoers/set_perms.c:893
 msgid "too many processes"
 msgstr "забагато процесів"
 
-#: plugins/sudoers/set_perms.c:952
+#: plugins/sudoers/set_perms.c:955
 msgid "unable to set runas group vector"
 msgstr "не вдалося встановити вектор групи виконання"
 
@@ -964,57 +946,57 @@ msgstr "Користувач %s має право виконувати на ць
 msgid "User %s is not allowed to run sudo on %s.\n"
 msgstr "Користувач %s не має права виконувати sudo на %s.\n"
 
-#: plugins/sudoers/sudoers.c:198 plugins/sudoers/sudoers.c:233
-#: plugins/sudoers/sudoers.c:907
+#: plugins/sudoers/sudoers.c:199 plugins/sudoers/sudoers.c:234
+#: plugins/sudoers/sudoers.c:911
 msgid "problem with defaults entries"
 msgstr "проблема з типовими записами"
 
-#: plugins/sudoers/sudoers.c:202
+#: plugins/sudoers/sudoers.c:203
 #, c-format
 msgid "no valid sudoers sources found, quitting"
 msgstr "не знайдено коректних джерел даних sudoers, завершення роботи"
 
-#: plugins/sudoers/sudoers.c:256
+#: plugins/sudoers/sudoers.c:257
 #, c-format
 msgid "unable to execute %s: %s"
 msgstr "не вдалося виконати %s: %s"
 
-#: plugins/sudoers/sudoers.c:305
+#: plugins/sudoers/sudoers.c:306
 #, c-format
 msgid "sudoers specifies that root is not allowed to sudo"
 msgstr "sudoers вказує, що sudo не можна користуватися для виконання команд від  root"
 
-#: plugins/sudoers/sudoers.c:312
+#: plugins/sudoers/sudoers.c:313
 #, c-format
 msgid "you are not permitted to use the -C option"
 msgstr "вам не дозволено використовувати параметр -C"
 
-#: plugins/sudoers/sudoers.c:402
+#: plugins/sudoers/sudoers.c:403
 #, c-format
 msgid "timestamp owner (%s): No such user"
 msgstr "власник часового штампа (%s): не знайдено користувача з таким іменем"
 
-#: plugins/sudoers/sudoers.c:418
+#: plugins/sudoers/sudoers.c:419
 msgid "no tty"
 msgstr "немає tty"
 
-#: plugins/sudoers/sudoers.c:419
+#: plugins/sudoers/sudoers.c:420
 #, c-format
 msgid "sorry, you must have a tty to run sudo"
 msgstr "вибачте, для виконання sudo вашому користувачеві потрібен tty"
 
-#: plugins/sudoers/sudoers.c:462
+#: plugins/sudoers/sudoers.c:463
 msgid "No user or host"
 msgstr "Немає користувача або вузла"
 
-#: plugins/sudoers/sudoers.c:476 plugins/sudoers/sudoers.c:497
-#: plugins/sudoers/sudoers.c:498 plugins/sudoers/sudoers.c:1452
-#: plugins/sudoers/sudoers.c:1453
+#: plugins/sudoers/sudoers.c:477 plugins/sudoers/sudoers.c:498
+#: plugins/sudoers/sudoers.c:499 plugins/sudoers/sudoers.c:1465
+#: plugins/sudoers/sudoers.c:1466
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: команду не знайдено"
 
-#: plugins/sudoers/sudoers.c:478 plugins/sudoers/sudoers.c:494
+#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:495
 #, c-format
 msgid ""
 "ignoring `%s' found in '.'\n"
@@ -1023,95 +1005,95 @@ msgstr ""
 "пропущено «%s» знайдений у «.»\n"
 "Скористайтеся командою «sudo ./%s», якщо вам потрібно виконати саме «%s»."
 
-#: plugins/sudoers/sudoers.c:483
+#: plugins/sudoers/sudoers.c:484
 msgid "validation failure"
 msgstr "помилка під час спроби перевірки"
 
-#: plugins/sudoers/sudoers.c:493
+#: plugins/sudoers/sudoers.c:494
 msgid "command in current directory"
 msgstr "команда у поточному каталозі"
 
-#: plugins/sudoers/sudoers.c:505
+#: plugins/sudoers/sudoers.c:506
 #, c-format
 msgid "sorry, you are not allowed to preserve the environment"
 msgstr "вибачте, вам не дозволено зберігати середовище"
 
-#: plugins/sudoers/sudoers.c:890
+#: plugins/sudoers/sudoers.c:894
 #, c-format
 msgid "internal error, set_cmnd() overflow"
 msgstr "внутрішня помилка, переповнення set_cmnd()"
 
-#: plugins/sudoers/sudoers.c:935
+#: plugins/sudoers/sudoers.c:936
 #, c-format
 msgid "fixed mode on %s"
 msgstr "виправлено режим на %s"
 
-#: plugins/sudoers/sudoers.c:939
+#: plugins/sudoers/sudoers.c:940
 #, c-format
 msgid "set group on %s"
 msgstr "встановлено групу у %s"
 
-#: plugins/sudoers/sudoers.c:942
+#: plugins/sudoers/sudoers.c:943
 #, c-format
 msgid "unable to set group on %s"
 msgstr "не вдалося встановити групу на %s"
 
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:946
 #, c-format
 msgid "unable to fix mode on %s"
 msgstr "не вдалося виправити режим на %s"
 
-#: plugins/sudoers/sudoers.c:958
+#: plugins/sudoers/sudoers.c:959
 #, c-format
 msgid "%s is not a regular file"
 msgstr "%s не є звичайним файлом"
 
-#: plugins/sudoers/sudoers.c:960
+#: plugins/sudoers/sudoers.c:961
 #, c-format
 msgid "%s is mode 0%o, should be 0%o"
 msgstr "%s має режим доступу 0%o, має бути 0%o"
 
-#: plugins/sudoers/sudoers.c:964
+#: plugins/sudoers/sudoers.c:965
 #, c-format
 msgid "%s is owned by uid %u, should be %u"
 msgstr "%s належить uid %u, має належати %u"
 
-#: plugins/sudoers/sudoers.c:967
+#: plugins/sudoers/sudoers.c:968
 #, c-format
 msgid "%s is owned by gid %u, should be %u"
 msgstr "%s належить gid %u, має належати %u"
 
-#: plugins/sudoers/sudoers.c:1011
+#: plugins/sudoers/sudoers.c:1012
 #, c-format
 msgid "only root can use `-c %s'"
 msgstr "використовувати «-c %s» може лише root"
 
-#: plugins/sudoers/sudoers.c:1021
+#: plugins/sudoers/sudoers.c:1022
 #, c-format
 msgid "unknown login class: %s"
 msgstr "невідомий клас входу: %s"
 
-#: plugins/sudoers/sudoers.c:1055
+#: plugins/sudoers/sudoers.c:1056
 #, c-format
 msgid "unable to resolve host %s"
 msgstr "не вдалося визначити адресу вузла %s"
 
-#: plugins/sudoers/sudoers.c:1105 plugins/sudoers/testsudoers.c:342
+#: plugins/sudoers/sudoers.c:1106 plugins/sudoers/testsudoers.c:351
 #, c-format
 msgid "unknown group: %s"
 msgstr "невідома група: %s"
 
-#: plugins/sudoers/sudoers.c:1137
+#: plugins/sudoers/sudoers.c:1150
 #, c-format
 msgid "Sudoers policy plugin version %s\n"
 msgstr "Додаток правил sudoers версії %s\n"
 
-#: plugins/sudoers/sudoers.c:1139
+#: plugins/sudoers/sudoers.c:1152
 #, c-format
 msgid "Sudoers file grammar version %d\n"
 msgstr "Граматична перевірка файла sudoers версії %d\n"
 
-#: plugins/sudoers/sudoers.c:1143
+#: plugins/sudoers/sudoers.c:1156
 #, c-format
 msgid ""
 "\n"
@@ -1120,17 +1102,17 @@ msgstr ""
 "\n"
 "Шлях до sudoers: %s\n"
 
-#: plugins/sudoers/sudoers.c:1146
+#: plugins/sudoers/sudoers.c:1159
 #, c-format
 msgid "nsswitch path: %s\n"
 msgstr "Шлях до nsswitch: %s\n"
 
-#: plugins/sudoers/sudoers.c:1148
+#: plugins/sudoers/sudoers.c:1161
 #, c-format
 msgid "ldap.conf path: %s\n"
 msgstr "Шлях до ldap.conf: %s\n"
 
-#: plugins/sudoers/sudoers.c:1149
+#: plugins/sudoers/sudoers.c:1162
 #, c-format
 msgid "ldap.secret path: %s\n"
 msgstr "Шлях до ldap.secret: %s\n"
@@ -1291,16 +1273,16 @@ msgstr ""
 "  -s коеф_швидк    коефіцієнт прискорення або сповільнення виводу даних\n"
 "  -V               показати дані щодо версії і завершити роботу"
 
-#: plugins/sudoers/testsudoers.c:228
+#: plugins/sudoers/testsudoers.c:230
 #, c-format
 msgid "internal error, init_vars() overflow"
 msgstr "внутрішня помилка, переповнення init_vars()"
 
-#: plugins/sudoers/testsudoers.c:304
+#: plugins/sudoers/testsudoers.c:309
 msgid "\thost  unmatched"
 msgstr "\tвідповідника вузла не знайдено"
 
-#: plugins/sudoers/testsudoers.c:307
+#: plugins/sudoers/testsudoers.c:312
 msgid ""
 "\n"
 "Command allowed"
@@ -1308,7 +1290,7 @@ msgstr ""
 "\n"
 "Команду дозволено"
 
-#: plugins/sudoers/testsudoers.c:308
+#: plugins/sudoers/testsudoers.c:313
 msgid ""
 "\n"
 "Command denied"
@@ -1316,7 +1298,7 @@ msgstr ""
 "\n"
 "Команду заборонено"
 
-#: plugins/sudoers/testsudoers.c:308
+#: plugins/sudoers/testsudoers.c:313
 msgid ""
 "\n"
 "Command unmatched"
@@ -1347,81 +1329,81 @@ msgstr "Граматична перевірка %s, версія %d\n"
 msgid "you do not exist in the %s database"
 msgstr "вас немає у базі даних %s"
 
-#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:470
+#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:518
 #, c-format
 msgid "press return to edit %s: "
 msgstr "натисніть Enter для редагування %s: "
 
-#: plugins/sudoers/visudo.c:300 plugins/sudoers/visudo.c:306
+#: plugins/sudoers/visudo.c:320 plugins/sudoers/visudo.c:326
 #, c-format
 msgid "write error"
 msgstr "помилка запису"
 
-#: plugins/sudoers/visudo.c:360
+#: plugins/sudoers/visudo.c:408
 #, c-format
 msgid "unable to stat temporary file (%s), %s unchanged"
 msgstr "не вдалося обробити stat файл тимчасових даних (%s), %s не змінено"
 
-#: plugins/sudoers/visudo.c:365
+#: plugins/sudoers/visudo.c:413
 #, c-format
 msgid "zero length temporary file (%s), %s unchanged"
 msgstr "файл тимчасових даних має нульовий об’єм (%s), %s не змінено"
 
-#: plugins/sudoers/visudo.c:371
+#: plugins/sudoers/visudo.c:419
 #, c-format
 msgid "editor (%s) failed, %s unchanged"
 msgstr "помилка редактора (%s), %s не змінено"
 
-#: plugins/sudoers/visudo.c:394
+#: plugins/sudoers/visudo.c:442
 #, c-format
 msgid "%s unchanged"
 msgstr "%s не змінено"
 
-#: plugins/sudoers/visudo.c:418
+#: plugins/sudoers/visudo.c:466
 #, c-format
 msgid "unable to re-open temporary file (%s), %s unchanged."
 msgstr "не вдалося повторно відкрити файл тимчасових даних (%s), %s не змінено."
 
-#: plugins/sudoers/visudo.c:428
+#: plugins/sudoers/visudo.c:476
 #, c-format
 msgid "unabled to parse temporary file (%s), unknown error"
 msgstr "не вдалося обробити файл тимчасових даних (%s), невідома помилка"
 
-#: plugins/sudoers/visudo.c:463
+#: plugins/sudoers/visudo.c:511
 #, c-format
 msgid "internal error, unable to find %s in list!"
 msgstr "внутрішня помилка, не вдалося знайти %s у списку!"
 
-#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:511
+#: plugins/sudoers/visudo.c:546 plugins/sudoers/visudo.c:555
 #, c-format
-msgid "unable to set (uid, gid) of %s to (%d, %d)"
-msgstr "не вдалося встановити (uid, gid) %s у значення (%d, %d)"
+msgid "unable to set (uid, gid) of %s to (%u, %u)"
+msgstr "не вдалося встановити (uid, gid) %s у значення (%u, %u)"
 
-#: plugins/sudoers/visudo.c:506 plugins/sudoers/visudo.c:516
+#: plugins/sudoers/visudo.c:550 plugins/sudoers/visudo.c:560
 #, c-format
 msgid "unable to change mode of %s to 0%o"
 msgstr "не вдалося змінити режим доступу до %s на значення 0%o"
 
-#: plugins/sudoers/visudo.c:533
+#: plugins/sudoers/visudo.c:577
 #, c-format
 msgid "%s and %s not on the same file system, using mv to rename"
 msgstr "%s і %s не перебувають у одній файловій системі, використовуємо mv для перейменування"
 
-#: plugins/sudoers/visudo.c:547
+#: plugins/sudoers/visudo.c:591
 #, c-format
 msgid "command failed: '%s %s %s', %s unchanged"
 msgstr "помилка команди: «%s %s %s», %s не змінено"
 
-#: plugins/sudoers/visudo.c:557
+#: plugins/sudoers/visudo.c:601
 #, c-format
 msgid "error renaming %s, %s unchanged"
 msgstr "помилка перейменування %s, %s не змінено"
 
-#: plugins/sudoers/visudo.c:617
+#: plugins/sudoers/visudo.c:661
 msgid "What now? "
 msgstr "А зараз що? "
 
-#: plugins/sudoers/visudo.c:631
+#: plugins/sudoers/visudo.c:675
 msgid ""
 "Options are:\n"
 "  (e)dit sudoers file again\n"
@@ -1433,92 +1415,92 @@ msgstr ""
 "  (x) — вийти без внесення змін до файла sudoers\n"
 "  (Q) — вийти зі збереженням файла sudoers (НЕБЕЗПЕЧНО!)\n"
 
-#: plugins/sudoers/visudo.c:668
+#: plugins/sudoers/visudo.c:712
 #, c-format
 msgid "unable to execute %s"
 msgstr "не вдалося виконати %s"
 
-#: plugins/sudoers/visudo.c:675
+#: plugins/sudoers/visudo.c:719
 #, c-format
 msgid "unable to run %s"
 msgstr "не вдалося виконати %s"
 
-#: plugins/sudoers/visudo.c:706
+#: plugins/sudoers/visudo.c:750
 #, c-format
 msgid "failed to parse %s file, unknown error"
 msgstr "не вдалося обробити файл %s, невідома помилка"
 
-#: plugins/sudoers/visudo.c:718
+#: plugins/sudoers/visudo.c:762
 #, c-format
 msgid "parse error in %s near line %d\n"
 msgstr "помилка обробки у %s поблизу рядка %d\n"
 
-#: plugins/sudoers/visudo.c:721
+#: plugins/sudoers/visudo.c:765
 #, c-format
 msgid "parse error in %s\n"
 msgstr "помилка обробки у %s\n"
 
-#: plugins/sudoers/visudo.c:723
+#: plugins/sudoers/visudo.c:767
 #, c-format
 msgid "%s: parsed OK\n"
 msgstr "%s: вдала обробка\n"
 
-#: plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:776
 #, c-format
-msgid "%s: wrong owner (uid, gid) should be (%d, %d)\n"
-msgstr "%s: помилковий власник (uid, gid), має бути (%d, %d)\n"
+msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
+msgstr "%s: помилковий власник (uid, gid), має бути (%u, %u)\n"
 
-#: plugins/sudoers/visudo.c:744
+#: plugins/sudoers/visudo.c:783
 #, c-format
 msgid "%s: bad permissions, should be mode 0%o\n"
 msgstr "%s: помилкові права доступу, режим доступу має бути 0%o\n"
 
-#: plugins/sudoers/visudo.c:783
+#: plugins/sudoers/visudo.c:822
 #, c-format
 msgid "%s busy, try again later"
 msgstr "%s зайнято, повторіть спробу пізніше"
 
-#: plugins/sudoers/visudo.c:826
+#: plugins/sudoers/visudo.c:865
 #, c-format
 msgid "specified editor (%s) doesn't exist"
 msgstr "вказаного редактора (%s) не існує"
 
-#: plugins/sudoers/visudo.c:849
+#: plugins/sudoers/visudo.c:888
 #, c-format
 msgid "unable to stat editor (%s)"
 msgstr "не вдалося виконати stat для редактора (%s)"
 
-#: plugins/sudoers/visudo.c:897
+#: plugins/sudoers/visudo.c:936
 #, c-format
 msgid "no editor found (editor path = %s)"
 msgstr "не знайдено жодного редактора (шлях до редактора = %s)"
 
-#: plugins/sudoers/visudo.c:986
+#: plugins/sudoers/visudo.c:1025
 #, c-format
 msgid "Error: cycle in %s_Alias `%s'"
 msgstr "Помилка: цикл у %s_Alias «%s»"
 
-#: plugins/sudoers/visudo.c:987
+#: plugins/sudoers/visudo.c:1026
 #, c-format
 msgid "Warning: cycle in %s_Alias `%s'"
 msgstr "Попередження: цикл у %s_Alias «%s»"
 
-#: plugins/sudoers/visudo.c:990
+#: plugins/sudoers/visudo.c:1029
 #, c-format
 msgid "Error: %s_Alias `%s' referenced but not defined"
 msgstr "Помилка: виявлено посилання %s_Alias «%s», яке не визначено"
 
-#: plugins/sudoers/visudo.c:991
+#: plugins/sudoers/visudo.c:1030
 #, c-format
 msgid "Warning: %s_Alias `%s' referenced but not defined"
 msgstr "Попередження: виявлено посилання %s_Alias «%s», яке не визначено"
 
-#: plugins/sudoers/visudo.c:1128
+#: plugins/sudoers/visudo.c:1167
 #, c-format
 msgid "%s: unused %s_Alias %s"
 msgstr "%s: невикористаний %s_Alias %s"
 
-#: plugins/sudoers/visudo.c:1185
+#: plugins/sudoers/visudo.c:1224
 #, c-format
 msgid ""
 "%s - safely edit the sudoers file\n"
@@ -1527,7 +1509,7 @@ msgstr ""
 "%s — безпечне редагування файла sudoers\n"
 "\n"
 
-#: plugins/sudoers/visudo.c:1187
+#: plugins/sudoers/visudo.c:1226
 msgid ""
 "\n"
 "Options:\n"
@@ -1732,6 +1714,19 @@ msgstr[3] "одна невдала спроба введення пароля"
 msgid "Authentication methods:"
 msgstr "Способи розпізнавання:"
 
+#~ msgid ""
+#~ "Available options in a sudoers ``Defaults'' line:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Можливі параметри у рядку «Defaults» sudoers:\n"
+#~ "\n"
+
+#~ msgid "%s: %s\n"
+#~ msgstr "%s: %s\n"
+
+#~ msgid "%s: %.*s\n"
+#~ msgstr "%s: %.*s\n"
+
 #~ msgid "unable to get runas group vector"
 #~ msgstr "не вдалося отримати вектор групи виконання"
 
index a569b804f07e7be55affc5d7030c52335614c987..daa4ad47205e19a9252cb3b0affe457ba95afc7f 100644 (file)
Binary files a/plugins/sudoers/po/zh_CN.mo and b/plugins/sudoers/po/zh_CN.mo differ
index 55b7206289d58745196f600d5d3551be18e0c7a6..69be1fed2f415bea1b43a97dac2c89fb9e7c615c 100644 (file)
@@ -4,10 +4,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: sudoers 1.8.2-rc8\n"
+"Project-Id-Version: sudoers 1.8.3rc1\n"
 "Report-Msgid-Bugs-To: http://www.sudo.ws/bugs\n"
-"POT-Creation-Date: 2011-07-27 14:21-0400\n"
-"PO-Revision-Date: 2011-07-28 19:21+0800\n"
+"POT-Creation-Date: 2011-09-16 16:52-0400\n"
+"PO-Revision-Date: 2011-09-18 10:01+0800\n"
 "Last-Translator: Wylmer Wang <wantinghard@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
 "Language: \n"
@@ -69,9 +69,9 @@ msgid "sorry, a password is required to run %s"
 msgstr "抱歉,执行 %s 需要密码"
 
 #: plugins/sudoers/check.c:225 plugins/sudoers/iolog.c:169
-#: plugins/sudoers/sudoers.c:953 plugins/sudoers/sudoreplay.c:325
+#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoreplay.c:325
 #: plugins/sudoers/sudoreplay.c:334 plugins/sudoers/sudoreplay.c:675
-#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:700
+#: plugins/sudoers/sudoreplay.c:767 plugins/sudoers/visudo.c:744
 #, c-format
 msgid "unable to open %s"
 msgstr "无法打开 %s"
@@ -116,8 +116,8 @@ msgid "%s writable by non-owner (0%o), should be mode 0700"
 msgstr "%s 对非所有者可写(0%o),模式应该为 0700"
 
 #: plugins/sudoers/check.c:470 plugins/sudoers/check.c:514
-#: plugins/sudoers/check.c:582 plugins/sudoers/sudoers.c:939
-#: plugins/sudoers/visudo.c:284 plugins/sudoers/visudo.c:500
+#: plugins/sudoers/check.c:582 plugins/sudoers/sudoers.c:957
+#: plugins/sudoers/visudo.c:304 plugins/sudoers/visudo.c:544
 #, c-format
 msgid "unable to stat %s"
 msgstr "无法 stat %s"
@@ -142,20 +142,20 @@ msgstr "时间戳太超前:%20.20s"
 msgid "unable to remove %s (%s), will reset to the epoch"
 msgstr "无法移除 %s (%s),将重设为戳记"
 
-#: plugins/sudoers/check.c:659
+#: plugins/sudoers/check.c:660
 #, c-format
 msgid "unable to reset %s to the epoch"
 msgstr "无法将 %s 重设为戳记"
 
-#: plugins/sudoers/check.c:713 plugins/sudoers/check.c:719
+#: plugins/sudoers/check.c:714 plugins/sudoers/check.c:720
 #, c-format
 msgid "unknown uid: %u"
 msgstr "未知的用户 ID:%u"
 
-#: plugins/sudoers/check.c:716 plugins/sudoers/sudoers.c:747
-#: plugins/sudoers/sudoers.c:813 plugins/sudoers/sudoers.c:814
-#: plugins/sudoers/sudoers.c:1070 plugins/sudoers/testsudoers.c:200
-#: plugins/sudoers/testsudoers.c:330
+#: plugins/sudoers/check.c:717 plugins/sudoers/sudoers.c:748
+#: plugins/sudoers/sudoers.c:814 plugins/sudoers/sudoers.c:815
+#: plugins/sudoers/sudoers.c:1088 plugins/sudoers/testsudoers.c:202
+#: plugins/sudoers/testsudoers.c:337
 #, c-format
 msgid "unknown user: %s"
 msgstr "未知用户:%s"
@@ -403,12 +403,11 @@ msgid "When to require a password for 'verify' pseudocommand: %s"
 msgstr "何时为“verify”伪命令请求密码:%s"
 
 #: plugins/sudoers/def_data.c:243
-#, fuzzy
 msgid "Preload the dummy exec functions contained in 'noexec_file'"
 msgstr "预加载“noexec_file”中包含的哑 exec 函数"
 
 #: plugins/sudoers/def_data.c:247
-#, fuzzy, c-format
+#, c-format
 msgid "File containing dummy exec functions: %s"
 msgstr "含有哑 exec 函数的文件:%s"
 
@@ -517,53 +516,35 @@ msgstr "在分配伪终端时向 utmp/utmpx 文件中添加一条记录"
 msgid "Set the user in utmp to the runas user, not the invoking user"
 msgstr "将 utmp 中的用户设为 runas 用户,而不是调用用户"
 
-#: plugins/sudoers/defaults.c:197
-msgid ""
-"Available options in a sudoers ``Defaults'' line:\n"
-"\n"
-msgstr ""
-"sudoers 中“Defaults”行中的可用选项:\n"
-"\n"
-
-#: plugins/sudoers/defaults.c:204 plugins/sudoers/defaults.c:215
-#, c-format
-msgid "%s: %s\n"
-msgstr "%s:%s\n"
-
-#: plugins/sudoers/defaults.c:211
-#, c-format
-msgid "%s: %.*s\n"
-msgstr "%s:%.*s\n"
-
-#: plugins/sudoers/defaults.c:241
+#: plugins/sudoers/defaults.c:205
 #, c-format
 msgid "unknown defaults entry `%s'"
 msgstr "未知的默认条目“%s”"
 
-#: plugins/sudoers/defaults.c:249 plugins/sudoers/defaults.c:259
-#: plugins/sudoers/defaults.c:279 plugins/sudoers/defaults.c:292
-#: plugins/sudoers/defaults.c:305 plugins/sudoers/defaults.c:318
-#: plugins/sudoers/defaults.c:331 plugins/sudoers/defaults.c:351
-#: plugins/sudoers/defaults.c:361
+#: plugins/sudoers/defaults.c:213 plugins/sudoers/defaults.c:223
+#: plugins/sudoers/defaults.c:243 plugins/sudoers/defaults.c:256
+#: plugins/sudoers/defaults.c:269 plugins/sudoers/defaults.c:282
+#: plugins/sudoers/defaults.c:295 plugins/sudoers/defaults.c:315
+#: plugins/sudoers/defaults.c:325
 #, c-format
 msgid "value `%s' is invalid for option `%s'"
 msgstr "值“%s”对选项“%s”无效"
 
-#: plugins/sudoers/defaults.c:252 plugins/sudoers/defaults.c:262
-#: plugins/sudoers/defaults.c:270 plugins/sudoers/defaults.c:287
-#: plugins/sudoers/defaults.c:300 plugins/sudoers/defaults.c:313
-#: plugins/sudoers/defaults.c:326 plugins/sudoers/defaults.c:346
-#: plugins/sudoers/defaults.c:357
+#: plugins/sudoers/defaults.c:216 plugins/sudoers/defaults.c:226
+#: plugins/sudoers/defaults.c:234 plugins/sudoers/defaults.c:251
+#: plugins/sudoers/defaults.c:264 plugins/sudoers/defaults.c:277
+#: plugins/sudoers/defaults.c:290 plugins/sudoers/defaults.c:310
+#: plugins/sudoers/defaults.c:321
 #, c-format
 msgid "no value specified for `%s'"
 msgstr "没有给“%s”指定值"
 
-#: plugins/sudoers/defaults.c:275
+#: plugins/sudoers/defaults.c:239
 #, c-format
 msgid "values for `%s' must start with a '/'"
 msgstr "“%s”的值必须以“/”开头"
 
-#: plugins/sudoers/defaults.c:337
+#: plugins/sudoers/defaults.c:301
 #, c-format
 msgid "option `%s' does not take a value"
 msgstr "“%s”选项不带值"
@@ -585,7 +566,7 @@ msgstr "对不起,您无权设置以下环境变量:%s"
 
 #: plugins/sudoers/find_path.c:68 plugins/sudoers/find_path.c:107
 #: plugins/sudoers/find_path.c:122 plugins/sudoers/iolog.c:124
-#: plugins/sudoers/sudoers.c:882 toke.l:663 toke.l:814
+#: plugins/sudoers/sudoers.c:903 toke.l:663 toke.l:814
 #, c-format
 msgid "%s: %s"
 msgstr "%s:%s"
@@ -595,32 +576,32 @@ msgstr "%s:%s"
 msgid ">>> %s: %s near line %d <<<"
 msgstr ">>> %s:%s 在行 %d 附近<<<"
 
-#: plugins/sudoers/group_plugin.c:91
+#: plugins/sudoers/group_plugin.c:90
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s:%s"
 
-#: plugins/sudoers/group_plugin.c:103
+#: plugins/sudoers/group_plugin.c:102
 #, c-format
 msgid "%s must be owned by uid %d"
 msgstr "%s 必须属于用户 ID %d"
 
-#: plugins/sudoers/group_plugin.c:107
+#: plugins/sudoers/group_plugin.c:106
 #, c-format
 msgid "%s must only be writable by owner"
 msgstr "%s 必须只对所有者可写"
 
-#: plugins/sudoers/group_plugin.c:114
+#: plugins/sudoers/group_plugin.c:113
 #, c-format
 msgid "unable to dlopen %s: %s"
 msgstr "无法执行 dlopen %s:%s"
 
-#: plugins/sudoers/group_plugin.c:119
+#: plugins/sudoers/group_plugin.c:118
 #, c-format
 msgid "unable to find symbol \"group_plugin\" in %s"
 msgstr "无法在 %s 中找到符号“group_plugin”"
 
-#: plugins/sudoers/group_plugin.c:124
+#: plugins/sudoers/group_plugin.c:123
 #, c-format
 msgid "%s: incompatible group plugin major version %d, expected %d"
 msgstr "%s:不兼容的组插件主版本号 %d,应为 %d"
@@ -629,7 +610,7 @@ msgstr "%s:不兼容的组插件主版本号 %d,应为 %d"
 msgid "Local IP address and netmask pairs:\n"
 msgstr "本地 IP 地址和网络掩码对:\n"
 
-#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:960
+#: plugins/sudoers/iolog.c:176 plugins/sudoers/sudoers.c:978
 #, c-format
 msgid "unable to read %s"
 msgstr "无法读取 %s"
@@ -648,72 +629,72 @@ msgstr "无效的序列号:%s"
 msgid "unable to create %s"
 msgstr "无法创建 %s"
 
-#: plugins/sudoers/iolog_path.c:245 plugins/sudoers/sudoers.c:356
+#: plugins/sudoers/iolog_path.c:247 plugins/sudoers/sudoers.c:357
 #, c-format
 msgid "unable to set locale to \"%s\", using \"C\""
 msgstr "无法将区域设置为“%s”,将使用“C”"
 
-#: plugins/sudoers/ldap.c:363
+#: plugins/sudoers/ldap.c:368
 #, c-format
 msgid "sudo_ldap_conf_add_ports: port too large"
 msgstr "sudo_ldap_conf_add_ports:端口太大"
 
-#: plugins/sudoers/ldap.c:386
+#: plugins/sudoers/ldap.c:391
 #, c-format
 msgid "sudo_ldap_conf_add_ports: out of space expanding hostbuf"
 msgstr "sudo_ldap_conf_add_ports:扩展主机缓存时空间不足"
 
-#: plugins/sudoers/ldap.c:415
+#: plugins/sudoers/ldap.c:420
 #, c-format
 msgid "unsupported LDAP uri type: %s"
 msgstr "不支持的 LDAP URI 类型:%s"
 
-#: plugins/sudoers/ldap.c:444
+#: plugins/sudoers/ldap.c:449
 #, c-format
 msgid "invalid uri: %s"
 msgstr "无效的 URI:%s"
 
-#: plugins/sudoers/ldap.c:450
+#: plugins/sudoers/ldap.c:455
 #, c-format
 msgid "unable to mix ldap and ldaps URIs"
 msgstr "无法混合 ldap 和 ldaps URI"
 
-#: plugins/sudoers/ldap.c:454
+#: plugins/sudoers/ldap.c:459
 #, c-format
 msgid "unable to mix ldaps and starttls"
 msgstr "无法混合 ldaps 和 starttls"
 
-#: plugins/sudoers/ldap.c:473
+#: plugins/sudoers/ldap.c:478
 #, c-format
 msgid "sudo_ldap_parse_uri: out of space building hostbuf"
 msgstr "sudo_ldap_parse_uri:构建主机缓存时空间不足"
 
-#: plugins/sudoers/ldap.c:536
+#: plugins/sudoers/ldap.c:541
 #, c-format
 msgid "unable to initialize SSL cert and key db: %s"
 msgstr "无法初始化 SSL 证书和密钥数据库:%s"
 
-#: plugins/sudoers/ldap.c:932
+#: plugins/sudoers/ldap.c:937
 #, c-format
 msgid "unable to get GMT time"
 msgstr "无法获取 GMT 时间"
 
-#: plugins/sudoers/ldap.c:938
+#: plugins/sudoers/ldap.c:943
 #, c-format
 msgid "unable to format timestamp"
 msgstr "无法格式化时间戳"
 
-#: plugins/sudoers/ldap.c:946
+#: plugins/sudoers/ldap.c:951
 #, c-format
 msgid "unable to build time filter"
 msgstr "无法构建时间过滤器"
 
-#: plugins/sudoers/ldap.c:1047
+#: plugins/sudoers/ldap.c:1052
 #, c-format
 msgid "sudo_ldap_build_pass1 allocation mismatch"
 msgstr "sudo_ldap_build_pass1 分配不匹配"
 
-#: plugins/sudoers/ldap.c:1542
+#: plugins/sudoers/ldap.c:1562
 #, c-format
 msgid ""
 "\n"
@@ -722,7 +703,7 @@ msgstr ""
 "\n"
 "LDAP 角色:%s\n"
 
-#: plugins/sudoers/ldap.c:1544
+#: plugins/sudoers/ldap.c:1564
 #, c-format
 msgid ""
 "\n"
@@ -731,27 +712,27 @@ msgstr ""
 "\n"
 "LDAP 角色:未知\n"
 
-#: plugins/sudoers/ldap.c:1591
+#: plugins/sudoers/ldap.c:1611
 #, c-format
 msgid "    Order: %s\n"
 msgstr "    顺序:%s\n"
 
-#: plugins/sudoers/ldap.c:1599
+#: plugins/sudoers/ldap.c:1619
 #, c-format
 msgid "    Commands:\n"
 msgstr "    命令:\n"
 
-#: plugins/sudoers/ldap.c:1986
+#: plugins/sudoers/ldap.c:2006
 #, c-format
 msgid "unable to initialize LDAP: %s"
 msgstr "无法初始化 LDAP:%s"
 
-#: plugins/sudoers/ldap.c:2017
+#: plugins/sudoers/ldap.c:2037
 #, c-format
 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:2248
+#: plugins/sudoers/ldap.c:2268
 #, c-format
 msgid "invalid sudoOrder attribute: %s"
 msgstr "无效的 sudoOrder 属性:%s"
@@ -848,7 +829,7 @@ msgstr "内部错误:没有足够的空间存放日志行"
 msgid "parse error in %s near line %d"
 msgstr "%s 中第 %d 行附近有解析错误"
 
-#: plugins/sudoers/parse.c:369
+#: plugins/sudoers/parse.c:371
 #, c-format
 msgid ""
 "\n"
@@ -857,17 +838,17 @@ msgstr ""
 "\n"
 "Sudoers 条目:\n"
 
-#: plugins/sudoers/parse.c:371
+#: plugins/sudoers/parse.c:373
 #, c-format
 msgid "    RunAsUsers: "
 msgstr "    RunAs 用户:"
 
-#: plugins/sudoers/parse.c:386
+#: plugins/sudoers/parse.c:388
 #, c-format
 msgid "    RunAsGroups: "
 msgstr "    RunAs 组:"
 
-#: plugins/sudoers/parse.c:395
+#: plugins/sudoers/parse.c:397
 #, c-format
 msgid ""
 "    Commands:\n"
@@ -910,33 +891,40 @@ msgstr "无法缓存组 ID %u,已存在"
 msgid "unable to cache group %s, already exists"
 msgstr "无法缓存组 %s,已存在"
 
-#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:350
-#: plugins/sudoers/set_perms.c:577 plugins/sudoers/set_perms.c:806
+#: plugins/sudoers/set_perms.c:109 plugins/sudoers/set_perms.c:358
+#: plugins/sudoers/set_perms.c:590 plugins/sudoers/set_perms.c:824
+#, fuzzy
 msgid "perm stack overflow"
-msgstr ""
+msgstr "perm 堆栈上溢"
 
-#: plugins/sudoers/set_perms.c:218 plugins/sudoers/set_perms.c:445
-#: plugins/sudoers/set_perms.c:677
+#: plugins/sudoers/set_perms.c:117 plugins/sudoers/set_perms.c:366
+#: plugins/sudoers/set_perms.c:598 plugins/sudoers/set_perms.c:832
+#, fuzzy
+msgid "perm stack underflow"
+msgstr "perm 堆栈下溢"
+
+#: plugins/sudoers/set_perms.c:223 plugins/sudoers/set_perms.c:458
+#: plugins/sudoers/set_perms.c:695
 msgid "unable to change to runas gid"
 msgstr "无法切换为 runas 组 ID"
 
-#: plugins/sudoers/set_perms.c:226 plugins/sudoers/set_perms.c:452
-#: plugins/sudoers/set_perms.c:684
+#: plugins/sudoers/set_perms.c:231 plugins/sudoers/set_perms.c:465
+#: plugins/sudoers/set_perms.c:702
 msgid "unable to change to runas uid"
 msgstr "无法切换为 runas 用户 ID"
 
-#: plugins/sudoers/set_perms.c:240 plugins/sudoers/set_perms.c:465
-#: plugins/sudoers/set_perms.c:697
+#: plugins/sudoers/set_perms.c:245 plugins/sudoers/set_perms.c:478
+#: plugins/sudoers/set_perms.c:715
 #, c-format
 msgid "unable to change to sudoers gid"
 msgstr "无法切换为 sudoers 组 ID"
 
-#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:503
-#: plugins/sudoers/set_perms.c:735 plugins/sudoers/set_perms.c:870
+#: plugins/sudoers/set_perms.c:286 plugins/sudoers/set_perms.c:516
+#: plugins/sudoers/set_perms.c:753 plugins/sudoers/set_perms.c:893
 msgid "too many processes"
 msgstr "进程过多"
 
-#: plugins/sudoers/set_perms.c:932
+#: plugins/sudoers/set_perms.c:955
 msgid "unable to set runas group vector"
 msgstr "无法设置 runas 组向量"
 
@@ -960,57 +948,57 @@ msgstr "用户 %s 可以在该主机上运行以下命令:\n"
 msgid "User %s is not allowed to run sudo on %s.\n"
 msgstr "用户 %s 无权在 %s 上运行 sudo。\n"
 
-#: plugins/sudoers/sudoers.c:198 plugins/sudoers/sudoers.c:233
-#: plugins/sudoers/sudoers.c:890
+#: plugins/sudoers/sudoers.c:199 plugins/sudoers/sudoers.c:234
+#: plugins/sudoers/sudoers.c:911
 msgid "problem with defaults entries"
 msgstr "默认条目有问题"
 
-#: plugins/sudoers/sudoers.c:202
+#: plugins/sudoers/sudoers.c:203
 #, c-format
 msgid "no valid sudoers sources found, quitting"
 msgstr "没有找到有效的 sudoers 资源,退出"
 
-#: plugins/sudoers/sudoers.c:256
+#: plugins/sudoers/sudoers.c:257
 #, c-format
 msgid "unable to execute %s: %s"
 msgstr "无法执行 %s:%s"
 
-#: plugins/sudoers/sudoers.c:305
+#: plugins/sudoers/sudoers.c:306
 #, c-format
 msgid "sudoers specifies that root is not allowed to sudo"
 msgstr "sudoers 指定 root 不允许执行 sudo"
 
-#: plugins/sudoers/sudoers.c:312
+#: plugins/sudoers/sudoers.c:313
 #, c-format
 msgid "you are not permitted to use the -C option"
 msgstr "您无权使用 -C 选项"
 
-#: plugins/sudoers/sudoers.c:402
+#: plugins/sudoers/sudoers.c:403
 #, c-format
 msgid "timestamp owner (%s): No such user"
 msgstr "时间戳所有者(%s):无此用户"
 
-#: plugins/sudoers/sudoers.c:418
+#: plugins/sudoers/sudoers.c:419
 msgid "no tty"
 msgstr "无终端"
 
-#: plugins/sudoers/sudoers.c:419
+#: plugins/sudoers/sudoers.c:420
 #, c-format
 msgid "sorry, you must have a tty to run sudo"
 msgstr "抱歉,您必须拥有一个终端来执行 sudo"
 
-#: plugins/sudoers/sudoers.c:462
+#: plugins/sudoers/sudoers.c:463
 msgid "No user or host"
 msgstr "无用户或主机"
 
-#: plugins/sudoers/sudoers.c:476 plugins/sudoers/sudoers.c:497
-#: plugins/sudoers/sudoers.c:498 plugins/sudoers/sudoers.c:1435
-#: plugins/sudoers/sudoers.c:1436
+#: plugins/sudoers/sudoers.c:477 plugins/sudoers/sudoers.c:498
+#: plugins/sudoers/sudoers.c:499 plugins/sudoers/sudoers.c:1465
+#: plugins/sudoers/sudoers.c:1466
 #, c-format
 msgid "%s: command not found"
 msgstr "%s:找不到命令"
 
-#: plugins/sudoers/sudoers.c:478 plugins/sudoers/sudoers.c:494
+#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:495
 #, c-format
 msgid ""
 "ignoring `%s' found in '.'\n"
@@ -1019,95 +1007,95 @@ msgstr ""
 "忽略在“.”中找到的“%s”\n"
 "请使用“sudo ./%s”,如果这是您想运行的“%s”。"
 
-#: plugins/sudoers/sudoers.c:483
+#: plugins/sudoers/sudoers.c:484
 msgid "validation failure"
 msgstr "校验失败"
 
-#: plugins/sudoers/sudoers.c:493
+#: plugins/sudoers/sudoers.c:494
 msgid "command in current directory"
 msgstr "当前目录中的命令"
 
-#: plugins/sudoers/sudoers.c:505
+#: plugins/sudoers/sudoers.c:506
 #, c-format
 msgid "sorry, you are not allowed to preserve the environment"
 msgstr "抱歉,您无权保留环境"
 
-#: plugins/sudoers/sudoers.c:874
+#: plugins/sudoers/sudoers.c:894
 #, c-format
 msgid "internal error, set_cmnd() overflow"
 msgstr "内部错误:set_cmnd() 溢出"
 
-#: plugins/sudoers/sudoers.c:918
+#: plugins/sudoers/sudoers.c:936
 #, fuzzy, c-format
 msgid "fixed mode on %s"
 msgstr "对 %s 修正了模式"
 
-#: plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:940
 #, c-format
 msgid "set group on %s"
 msgstr "对 %s 设置组"
 
-#: plugins/sudoers/sudoers.c:925
+#: plugins/sudoers/sudoers.c:943
 #, c-format
 msgid "unable to set group on %s"
 msgstr "无法对 %s 设置组"
 
-#: plugins/sudoers/sudoers.c:928
+#: plugins/sudoers/sudoers.c:946
 #, c-format
 msgid "unable to fix mode on %s"
 msgstr "无法对 %s 修正模式"
 
-#: plugins/sudoers/sudoers.c:941
+#: plugins/sudoers/sudoers.c:959
 #, c-format
 msgid "%s is not a regular file"
 msgstr "%s 不是常规文件"
 
-#: plugins/sudoers/sudoers.c:943
+#: plugins/sudoers/sudoers.c:961
 #, c-format
 msgid "%s is mode 0%o, should be 0%o"
 msgstr "%s 的模式为 0%o,应为 0%o"
 
-#: plugins/sudoers/sudoers.c:947
+#: plugins/sudoers/sudoers.c:965
 #, c-format
 msgid "%s is owned by uid %u, should be %u"
 msgstr "%s 属于用户 ID %u,应为 %u"
 
-#: plugins/sudoers/sudoers.c:950
+#: plugins/sudoers/sudoers.c:968
 #, c-format
 msgid "%s is owned by gid %u, should be %u"
 msgstr "%s 属于组 ID %u,应为 %u"
 
-#: plugins/sudoers/sudoers.c:994
+#: plugins/sudoers/sudoers.c:1012
 #, c-format
 msgid "only root can use `-c %s'"
 msgstr "只有 root 才能使用“-c %s”"
 
-#: plugins/sudoers/sudoers.c:1004
+#: plugins/sudoers/sudoers.c:1022
 #, c-format
 msgid "unknown login class: %s"
 msgstr "未知的登录类别:%s"
 
-#: plugins/sudoers/sudoers.c:1038
+#: plugins/sudoers/sudoers.c:1056
 #, c-format
 msgid "unable to resolve host %s"
 msgstr "无法解析主机:%s"
 
-#: plugins/sudoers/sudoers.c:1088 plugins/sudoers/testsudoers.c:342
+#: plugins/sudoers/sudoers.c:1106 plugins/sudoers/testsudoers.c:351
 #, c-format
 msgid "unknown group: %s"
 msgstr "未知组:%s"
 
-#: plugins/sudoers/sudoers.c:1120
+#: plugins/sudoers/sudoers.c:1150
 #, c-format
 msgid "Sudoers policy plugin version %s\n"
 msgstr "Sudoers 策略插件版本 %s\n"
 
-#: plugins/sudoers/sudoers.c:1122
+#: plugins/sudoers/sudoers.c:1152
 #, c-format
 msgid "Sudoers file grammar version %d\n"
 msgstr "Sudoers 文件语法版本 %d\n"
 
-#: plugins/sudoers/sudoers.c:1126
+#: plugins/sudoers/sudoers.c:1156
 #, c-format
 msgid ""
 "\n"
@@ -1116,17 +1104,17 @@ msgstr ""
 "\n"
 "Sudoers 路径:%s\n"
 
-#: plugins/sudoers/sudoers.c:1129
+#: plugins/sudoers/sudoers.c:1159
 #, c-format
 msgid "nsswitch path: %s\n"
 msgstr "nsswitch 路径:%s\n"
 
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1161
 #, c-format
 msgid "ldap.conf path: %s\n"
 msgstr "ldap.conf 路径:%s\n"
 
-#: plugins/sudoers/sudoers.c:1132
+#: plugins/sudoers/sudoers.c:1162
 #, c-format
 msgid "ldap.secret path: %s\n"
 msgstr "ldap.secret 路径:%s\n"
@@ -1287,16 +1275,16 @@ msgstr ""
 "  -s 速度系数      加速或减慢输出\n"
 "  -V               显示版本信息并退出"
 
-#: plugins/sudoers/testsudoers.c:228
+#: plugins/sudoers/testsudoers.c:230
 #, c-format
 msgid "internal error, init_vars() overflow"
 msgstr "内部错误,init_vars() 溢出"
 
-#: plugins/sudoers/testsudoers.c:304
+#: plugins/sudoers/testsudoers.c:309
 msgid "\thost  unmatched"
 msgstr "\t主机不匹配"
 
-#: plugins/sudoers/testsudoers.c:307
+#: plugins/sudoers/testsudoers.c:312
 msgid ""
 "\n"
 "Command allowed"
@@ -1304,7 +1292,7 @@ msgstr ""
 "\n"
 "命令允许"
 
-#: plugins/sudoers/testsudoers.c:308
+#: plugins/sudoers/testsudoers.c:313
 msgid ""
 "\n"
 "Command denied"
@@ -1312,7 +1300,7 @@ msgstr ""
 "\n"
 "命令被拒"
 
-#: plugins/sudoers/testsudoers.c:308
+#: plugins/sudoers/testsudoers.c:313
 msgid ""
 "\n"
 "Command unmatched"
@@ -1326,7 +1314,6 @@ msgid "unable to allocate memory"
 msgstr "无法分配内存"
 
 #: toke.l:786
-#, fuzzy
 msgid "too many levels of includes"
 msgstr "include 嵌套层数过多"
 
@@ -1344,81 +1331,81 @@ msgstr "%s 语法版本 %d\n"
 msgid "you do not exist in the %s database"
 msgstr "%s 数据库中没有您"
 
-#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:470
+#: plugins/sudoers/visudo.c:238 plugins/sudoers/visudo.c:518
 #, c-format
 msgid "press return to edit %s: "
 msgstr "按回车键编辑 %s:"
 
-#: plugins/sudoers/visudo.c:300 plugins/sudoers/visudo.c:306
+#: plugins/sudoers/visudo.c:320 plugins/sudoers/visudo.c:326
 #, c-format
 msgid "write error"
 msgstr "写错误"
 
-#: plugins/sudoers/visudo.c:360
+#: plugins/sudoers/visudo.c:408
 #, c-format
 msgid "unable to stat temporary file (%s), %s unchanged"
 msgstr "无法 stat 临时文件(%s),%s 未更改"
 
-#: plugins/sudoers/visudo.c:365
+#: plugins/sudoers/visudo.c:413
 #, c-format
 msgid "zero length temporary file (%s), %s unchanged"
 msgstr "零长度的临时文件(%s),%s 未更改"
 
-#: plugins/sudoers/visudo.c:371
+#: plugins/sudoers/visudo.c:419
 #, c-format
 msgid "editor (%s) failed, %s unchanged"
 msgstr "编辑器(%s)失败,%s 未更改"
 
-#: plugins/sudoers/visudo.c:394
+#: plugins/sudoers/visudo.c:442
 #, c-format
 msgid "%s unchanged"
 msgstr "%s 未更改"
 
-#: plugins/sudoers/visudo.c:418
+#: plugins/sudoers/visudo.c:466
 #, c-format
 msgid "unable to re-open temporary file (%s), %s unchanged."
 msgstr "无法重新打开临时文件(%s),%s 未更改"
 
-#: plugins/sudoers/visudo.c:428
+#: plugins/sudoers/visudo.c:476
 #, c-format
 msgid "unabled to parse temporary file (%s), unknown error"
 msgstr "无法解析临时文件(%s),未知错误"
 
-#: plugins/sudoers/visudo.c:463
+#: plugins/sudoers/visudo.c:511
 #, c-format
 msgid "internal error, unable to find %s in list!"
 msgstr "内部错误,在列表中找不到 %s!"
 
-#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:511
+#: plugins/sudoers/visudo.c:546 plugins/sudoers/visudo.c:555
 #, c-format
-msgid "unable to set (uid, gid) of %s to (%d, %d)"
-msgstr "无法将 %s 的 (uid, gid) 设为 (%d, %d)"
+msgid "unable to set (uid, gid) of %s to (%u, %u)"
+msgstr "无法将 %s 的 (uid, gid) 设为 (%u, %u)"
 
-#: plugins/sudoers/visudo.c:506 plugins/sudoers/visudo.c:516
+#: plugins/sudoers/visudo.c:550 plugins/sudoers/visudo.c:560
 #, c-format
 msgid "unable to change mode of %s to 0%o"
 msgstr "无法将 %s 的模式更改为 0%o"
 
-#: plugins/sudoers/visudo.c:533
+#: plugins/sudoers/visudo.c:577
 #, c-format
 msgid "%s and %s not on the same file system, using mv to rename"
 msgstr "%s 和 %s 不在同一个文件系统,使用 mv 进行重命名"
 
-#: plugins/sudoers/visudo.c:547
+#: plugins/sudoers/visudo.c:591
 #, c-format
 msgid "command failed: '%s %s %s', %s unchanged"
 msgstr "命令失败:“%s %s %s”,%s 未更改"
 
-#: plugins/sudoers/visudo.c:557
+#: plugins/sudoers/visudo.c:601
 #, c-format
 msgid "error renaming %s, %s unchanged"
 msgstr "重命名 %s 出错,%s 未更改"
 
-#: plugins/sudoers/visudo.c:617
+#: plugins/sudoers/visudo.c:661
 msgid "What now? "
 msgstr "现在做什么?"
 
-#: plugins/sudoers/visudo.c:631
+#: plugins/sudoers/visudo.c:675
 msgid ""
 "Options are:\n"
 "  (e)dit sudoers file again\n"
@@ -1430,92 +1417,92 @@ msgstr ""
 "  退出,不保存对 sudoers 文件的更改(x)\n"
 "  退出并将更改保存到 sudoers 文件(危险!)(Q)\n"
 
-#: plugins/sudoers/visudo.c:668
+#: plugins/sudoers/visudo.c:712
 #, c-format
 msgid "unable to execute %s"
 msgstr "无法执行 %s"
 
-#: plugins/sudoers/visudo.c:675
+#: plugins/sudoers/visudo.c:719
 #, c-format
 msgid "unable to run %s"
 msgstr "无法运行 %s"
 
-#: plugins/sudoers/visudo.c:706
+#: plugins/sudoers/visudo.c:750
 #, c-format
 msgid "failed to parse %s file, unknown error"
 msgstr "解析 %s 文件失败,未知错误"
 
-#: plugins/sudoers/visudo.c:718
+#: plugins/sudoers/visudo.c:762
 #, c-format
 msgid "parse error in %s near line %d\n"
 msgstr "%s 中第 %d 行附近出现解析错误\n"
 
-#: plugins/sudoers/visudo.c:721
+#: plugins/sudoers/visudo.c:765
 #, c-format
 msgid "parse error in %s\n"
 msgstr "%s 中出现解析错误\n"
 
-#: plugins/sudoers/visudo.c:723
+#: plugins/sudoers/visudo.c:767
 #, c-format
 msgid "%s: parsed OK\n"
 msgstr "%s:解析正确\n"
 
-#: plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:776
 #, c-format
-msgid "%s: wrong owner (uid, gid) should be (%d, %d)\n"
-msgstr "%s:错误的所有者(uid, gid),应为(%d, %d)\n"
+msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
+msgstr "%s:错误的所有者(uid, gid),应为 (%u, %u)\n"
 
-#: plugins/sudoers/visudo.c:744
+#: plugins/sudoers/visudo.c:783
 #, c-format
 msgid "%s: bad permissions, should be mode 0%o\n"
 msgstr "%s:权限不正确,模式应该是 0%o\n"
 
-#: plugins/sudoers/visudo.c:783
+#: plugins/sudoers/visudo.c:822
 #, c-format
 msgid "%s busy, try again later"
 msgstr "%s 忙,请稍后重试"
 
-#: plugins/sudoers/visudo.c:826
+#: plugins/sudoers/visudo.c:865
 #, c-format
 msgid "specified editor (%s) doesn't exist"
 msgstr "指定的编辑器(%s)不存在"
 
-#: plugins/sudoers/visudo.c:849
+#: plugins/sudoers/visudo.c:888
 #, c-format
 msgid "unable to stat editor (%s)"
 msgstr "无法 stat 编辑器(%s)"
 
-#: plugins/sudoers/visudo.c:897
+#: plugins/sudoers/visudo.c:936
 #, c-format
 msgid "no editor found (editor path = %s)"
 msgstr "未找到编辑器(编辑器路径 = %s)"
 
-#: plugins/sudoers/visudo.c:986
+#: plugins/sudoers/visudo.c:1025
 #, c-format
 msgid "Error: cycle in %s_Alias `%s'"
 msgstr "错误:在 %s_Alias “%s”中循环"
 
-#: plugins/sudoers/visudo.c:987
+#: plugins/sudoers/visudo.c:1026
 #, c-format
 msgid "Warning: cycle in %s_Alias `%s'"
 msgstr "警告:在 %s_Alias “%s”中循环"
 
-#: plugins/sudoers/visudo.c:990
+#: plugins/sudoers/visudo.c:1029
 #, fuzzy, c-format
 msgid "Error: %s_Alias `%s' referenced but not defined"
-msgstr "%s:引用了 %s_Alias “%s”但未定义"
+msgstr "错误:引用了 %s_Alias “%s”但尚未定义"
 
-#: plugins/sudoers/visudo.c:991
+#: plugins/sudoers/visudo.c:1030
 #, fuzzy, c-format
 msgid "Warning: %s_Alias `%s' referenced but not defined"
-msgstr "%s:引用了 %s_Alias “%s”但未定义"
+msgstr "警告:引用了 %s_Alias “%s”但尚未定义"
 
-#: plugins/sudoers/visudo.c:1128
+#: plugins/sudoers/visudo.c:1167
 #, c-format
 msgid "%s: unused %s_Alias %s"
 msgstr "%s:未使用的 %s_Alias %s"
 
-#: plugins/sudoers/visudo.c:1185
+#: plugins/sudoers/visudo.c:1224
 #, c-format
 msgid ""
 "%s - safely edit the sudoers file\n"
@@ -1524,7 +1511,7 @@ msgstr ""
 "%s - 安全地编辑 sudoers 文件\n"
 "\n"
 
-#: plugins/sudoers/visudo.c:1187
+#: plugins/sudoers/visudo.c:1226
 msgid ""
 "\n"
 "Options:\n"
@@ -1622,7 +1609,7 @@ msgid "%s: unable to get host principal: %s"
 msgstr ""
 
 #: plugins/sudoers/auth/kerb5.c:299
-#, fuzzy, c-format
+#, c-format
 msgid "%s: Cannot verify TGT! Possible attack!: %s"
 msgstr "%s:无法验证目标!可能遭到了攻击!:%s"
 
@@ -1715,7 +1702,7 @@ msgstr "sudo 编译时没有加入任何认证方法!如果您想关闭认证
 #: plugins/sudoers/auth/sudo_auth.c:134
 #, fuzzy
 msgid "Invalid authentication methods compiled into sudo!  You may mix standalone and non-standalone authentication."
-msgstr "编译进 sudo 的认证方法无效!您可以混用独立和非独立认证。"
+msgstr "编译进 sudo 的认证方法无效!您可能混用了独立和非独立认证。"
 
 #: plugins/sudoers/auth/sudo_auth.c:243
 #, c-format
@@ -1727,6 +1714,19 @@ msgstr[0] "%d 次错误密码尝试"
 msgid "Authentication methods:"
 msgstr "认证方法:"
 
+#~ msgid ""
+#~ "Available options in a sudoers ``Defaults'' line:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "sudoers 中“Defaults”行中的可用选项:\n"
+#~ "\n"
+
+#~ msgid "%s: %s\n"
+#~ msgstr "%s:%s\n"
+
+#~ msgid "%s: %.*s\n"
+#~ msgstr "%s:%.*s\n"
+
 #~ msgid "unable to get runas group vector"
 #~ msgstr "无法获取 runas 组向量"
 
index b511472c3fdc2e79be62d0c38a85f591b90ebc63..aac32325ac42b7ad0d59e0dd0c3a68ac565be115 100644 (file)
@@ -312,10 +312,10 @@ done:
 }
 
 /*
- * Take a uid in string form "#123" and return a faked up passwd struct.
+ * Take a user, uid and gid and return a faked up passwd struct.
  */
 struct passwd *
-sudo_fakepwnam(const char *user, gid_t gid)
+sudo_fakepwnamid(const char *user, uid_t uid, gid_t gid)
 {
     struct cache_item *item;
     struct passwd *pw;
@@ -332,7 +332,7 @@ sudo_fakepwnam(const char *user, gid_t gid)
        item = emalloc(len);
        zero_bytes(item, sizeof(*item) + sizeof(*pw));
        pw = (struct passwd *) ((char *)item + sizeof(*item));
-       pw->pw_uid = (uid_t) atoi(user + 1);
+       pw->pw_uid = uid;
        pw->pw_gid = gid;
        pw->pw_name = (char *)pw + sizeof(struct passwd);
        memcpy(pw->pw_name, user, namelen + 1);
@@ -367,6 +367,18 @@ sudo_fakepwnam(const char *user, gid_t gid)
     return pw;
 }
 
+/*
+ * Take a uid in string form "#123" and return a faked up passwd struct.
+ */
+struct passwd *
+sudo_fakepwnam(const char *user, gid_t gid)
+{
+    uid_t uid;
+
+    uid = (uid_t) atoi(user + 1);
+    return sudo_fakepwnamid(user, uid, gid);
+}
+
 void
 sudo_setpwent(void)
 {
@@ -474,12 +486,12 @@ make_gritem(const struct group *gr, const char *name)
 }
 
 #ifdef HAVE_UTMPX_H
-# define GROUPNAME_LEN (sizeof((struct utmpx *)0)->ut_user)
+# define GROUPNAME_LEN (sizeof((struct utmpx *)0)->ut_user + 1)
 #else
 # ifdef HAVE_STRUCT_UTMP_UT_USER
-#  define GROUPNAME_LEN        (sizeof((struct utmp *)0)->ut_user)
+#  define GROUPNAME_LEN        (sizeof((struct utmp *)0)->ut_user + 1)
 # else
-#  define GROUPNAME_LEN        (sizeof((struct utmp *)0)->ut_name)
+#  define GROUPNAME_LEN        (sizeof((struct utmp *)0)->ut_name + 1)
 # endif
 #endif /* HAVE_UTMPX_H */
 
@@ -491,11 +503,15 @@ static struct cache_item *
 make_grlist_item(const char *user, GETGROUPS_T *gids, int ngids)
 {
     char *cp;
-    size_t i, nsize, ngroups = 0, total, len;
+    size_t i, nsize, ngroups, total, len;
     struct cache_item *item;
     struct group_list *grlist;
     struct group *grp;
 
+#ifdef HAVE_SETAUTHDB
+    aix_setauthdb((char *) user);
+#endif
+
     /* Allocate in one big chunk for easy freeing. */
     nsize = strlen(user) + 1;
     total = sizeof(struct cache_item) + sizeof(struct group_list) + nsize;
@@ -503,21 +519,22 @@ make_grlist_item(const char *user, GETGROUPS_T *gids, int ngids)
     total += sizeof(gid_t *) * ngids;
     total += GROUPNAME_LEN * ngids;
 
+again:
     item = emalloc(total);
     cp = (char *) item + sizeof(struct cache_item);
 
     /*
      * Copy in group list and make pointers relative to space
-     * at the end of the buffer.  Note that the gids array must come
+     * at the end of the buffer.  Note that the groups array must come
      * immediately after struct group to guarantee proper alignment.
      */
     grlist = (struct group_list *)cp;
     zero_bytes(grlist, sizeof(struct group_list));
     cp += sizeof(struct group_list);
-    grlist->gids = (gid_t *)cp;
-    cp += sizeof(gid_t) * ngids;
     grlist->groups = (char **)cp;
     cp += sizeof(char *) * ngids;
+    grlist->gids = (gid_t *)cp;
+    cp += sizeof(gid_t) * ngids;
 
     /* Set key and datum. */
     memcpy(cp, user, nsize);
@@ -533,20 +550,18 @@ make_grlist_item(const char *user, GETGROUPS_T *gids, int ngids)
        grlist->gids[i] = gids[i];
     grlist->ngids = ngids;
 
-#ifdef HAVE_SETAUTHDB
-    aix_setauthdb((char *) user);
-#endif
     /*
-     * Resolve group names by ID and store at the end.
+     * Resolve and store group names by ID.
      */
+    ngroups = 0;
     for (i = 0; i < ngids; i++) {
        if ((grp = sudo_getgrgid(gids[i])) != NULL) {
            len = strlen(grp->gr_name) + 1;
-           if (cp - (char *)grlist + len > total) {
-               void *ptr = erealloc(grlist, total + len + GROUPNAME_LEN);
+           if (cp - (char *)item + len > total) {
                total += len + GROUPNAME_LEN;
-               cp = (char *)ptr + (cp - (char *)grlist);
-               grlist = ptr;
+               efree(item);
+               gr_delref(grp);
+               goto again;
            }
            memcpy(cp, grp->gr_name, len);
            grlist->groups[ngroups++] = cp;
index cef22ffabde19f9e0df8fd0a9b0823ca0d5599bf..036d86a71a94346ca8438dbff53a69cc94bfbbe3 100644 (file)
@@ -105,6 +105,10 @@ main(int argc, char *argv[])
     int errors = 0;
     int tests = 0;
 
+#if !defined(HAVE_GETPROGNAME) && !defined(HAVE___PROGNAME)
+    setprogname(argc > 0 ? argv[0] : "check_iolog_path");
+#endif
+
     if (argc != 2)
        usage();
 
index e2877b2b7271c2206f492763fc43dc7d400f13b3..dcc3942b1136236fbb700e451b2a80ad15eba1b4 100644 (file)
@@ -70,3 +70,27 @@ su
 /var/log/sudo-io
 nobody/root/su_%Y%m%s_%H%M
 
+000001
+nobody
+1
+root
+0
+somehost
+su
+/var/log/sudo-io/%d%m%Y
+%{user}/%{runas_user}/%{command}
+/var/log/sudo-io/%d%m%Y
+nobody/root/su
+
+000001
+nobody
+1
+root
+0
+somehost
+su
+////////
+%{user}/%{runas_user}/%{command}
+/
+nobody/root/su
+
index 2b904d929096d863186fd3964b0afcc29370e632..33d7b9ddd7ef75d7d6de3f48baaf3e79fc9ea85f 100644 (file)
@@ -56,6 +56,10 @@ main(int argc, char *argv[])
     char *cp, *dash, *line, lines[2][2048];
     int which = 0;
 
+#if !defined(HAVE_GETPROGNAME) && !defined(HAVE___PROGNAME)
+    setprogname(argc > 0 ? argv[0] : "check_wrap");
+#endif
+
     if (argc != 2)
        usage();
 
diff --git a/plugins/sudoers/regress/parser/check_addr.c b/plugins/sudoers/regress/parser/check_addr.c
new file mode 100644 (file)
index 0000000..184b99f
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 2011 Todd C. Miller <Todd.Miller@courtesan.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <stdio.h>
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif /* STDC_HEADERS */
+#include <stdarg.h>
+#ifdef HAVE_STRING_H
+# include <string.h>
+#endif /* HAVE_STRING_H */
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif /* HAVE_STRINGS_H */
+#include <ctype.h>
+#include <errno.h>
+#include <grp.h>
+#include <pwd.h>
+
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+
+#include "sudoers.h"
+#include "parse.h"
+#include "interfaces.h"
+
+static int check_addr_printf(int msg_type, const char *fmt, ...);
+
+/* for match_addr.c */
+struct interface *interfaces;
+sudo_printf_t sudo_printf = check_addr_printf;
+
+static int
+check_addr(char *input)
+{
+    int expected, matched;
+    size_t len;
+    char *cp;
+
+    while (isspace((unsigned char)*input))
+       input++;
+
+    /* input: "addr[/mask] 1/0" */
+    len = strcspn(input, " \t");
+    cp = input + len;
+    while (isspace((unsigned char)*cp))
+       cp++;
+    expected = atoi(cp);
+    input[len] = '\0';
+
+    matched = addr_matches(input);
+    if (matched != expected) {
+       warningx("%s %smatched: FAIL", input, matched ? "" : "not ");
+       return 1;
+    }
+    return 0;
+}
+
+static void
+usage(void)
+{
+    fprintf(stderr, "usage: check_addr datafile\n");
+    exit(1);
+}
+
+int
+main(int argc, char *argv[])
+{
+    int ntests = 0, errors = 0;
+    char *cp, line[2048];
+    size_t len;
+    FILE *fp;
+
+#if !defined(HAVE_GETPROGNAME) && !defined(HAVE___PROGNAME)
+    setprogname(argc > 0 ? argv[0] : "check_addr");
+#endif
+
+    if (argc != 2)
+       usage();
+
+    fp = fopen(argv[1], "r");
+    if (fp == NULL)
+       errorx(1, "unable to open %s", argv[1]);
+
+    /*
+     * Input is in the following format.  There are two types of
+     * lines: interfaces, which sets the address and mask of the
+     * locally connected ethernet interfaces for the lines that
+     * follow and, address lines that include and address (with
+     * optional netmask) to match, followed by expected match status
+     * (1 or 0).  E.g.
+     *
+     * interfaces: addr1/mask addr2/mask ...
+     * address: addr[/mask] 1/0
+     * address: addr[/mask] 1/0
+     * interfaces: addr3/mask addr4/mask ...
+     * address: addr[/mask] 1/0
+     */
+
+    while (fgets(line, sizeof(line), fp) != NULL) {
+       len = strcspn(line, "\n");
+       line[len] = '\0';
+
+       /* Ignore comments */
+       if ((cp = strchr(line, '#')) != NULL)
+           *cp = '\0';
+
+       /* Skip blank lines. */
+       if (line[0] == '\0')
+           continue;
+
+       if (strncmp(line, "interfaces:", sizeof("interfaces:") - 1) == 0) {
+           set_interfaces(line + sizeof("interfaces:") - 1);
+       } else if (strncmp(line, "address:", sizeof("address:") - 1) == 0) {
+           errors += check_addr(line + sizeof("address:") - 1);
+           ntests++;
+       } else {
+           warningx("unexpected data line: %s\n", line);
+           continue;
+       }
+    }
+
+    printf("check_addr: %d tests run, %d errors, %d%% success rate\n",
+       ntests, errors, (ntests - errors) * 100 / ntests);
+
+    exit(errors);
+}
+
+/* STUB */
+void
+cleanup(int gotsig)
+{
+    return;
+}
+
+static int
+check_addr_printf(int msg_type, const char *fmt, ...)
+{
+    va_list ap;
+    FILE *fp;
+            
+    switch (msg_type) {
+    case SUDO_CONV_INFO_MSG:
+        fp = stdout;
+        break;
+    case SUDO_CONV_ERROR_MSG:
+        fp = stderr;
+        break;
+    default:
+        errno = EINVAL;
+        return -1;
+    }
+   
+    va_start(ap, fmt);
+    vfprintf(fp, fmt, ap);
+    va_end(ap);
+   
+    return 0;
+}
diff --git a/plugins/sudoers/regress/parser/check_addr.in b/plugins/sudoers/regress/parser/check_addr.in
new file mode 100644 (file)
index 0000000..a3c8612
--- /dev/null
@@ -0,0 +1,13 @@
+# 
+interfaces: 10.5.54.73/255.255.240.0
+address: 10.5.48.0 1
+address: 10.5.54.0/20 1
+#
+interfaces: 128.138.243.151/255.255.255.0 128.138.241.53/255.255.255.0
+address: 128.138.243.0 1
+address: 128.138.243.0/24 1
+address: 128.138.241.0 1
+address: 128.138.241.0/24 1
+address: 128.138.242.0/24 0
+address: 128.138.0.0 0
+address: 128.138.0.0/16 1
index 84215fb098764c3b430f95b20c5d1d494b265c07..655ed298354899748ba82a87ddb3fe522bcaed92 100644 (file)
@@ -98,7 +98,7 @@ rewind_perms(void)
 int
 set_perms(int perm)
 {
-    struct perm_state *state, *ostate;
+    struct perm_state *state, *ostate = NULL;
     const char *errstr;
     int noexit;
 
@@ -304,19 +304,22 @@ restore_perms(void)
     /* XXX - more cases here where euid != ruid */
     if (OID(euid) == ROOT_UID && state->euid != ROOT_UID) {
        if (setresuid(-1, ROOT_UID, -1)) {
-           warning("setresuid() [%d, %d, %d] -> [%d, %d, %d]", state->ruid,
-               state->euid, state->suid, -1, ROOT_UID, -1);
+           warning("setresuid() [%d, %d, %d] -> [%d, %d, %d]",
+               (int)state->ruid, (int)state->euid, (int)state->suid,
+               -1, ROOT_UID, -1);
            goto bad;
        }
     }
     if (setresuid(OID(ruid), OID(euid), OID(suid))) {
-       warning("setresuid() [%d, %d, %d] -> [%d, %d, %d]", state->ruid,
-           state->euid, state->suid, OID(ruid), OID(euid), OID(suid));
+       warning("setresuid() [%d, %d, %d] -> [%d, %d, %d]",
+           (int)state->ruid, (int)state->euid, (int)state->suid,
+           (int)OID(ruid), (int)OID(euid), (int)OID(suid));
        goto bad;
     }
     if (setresgid(OID(rgid), OID(egid), OID(sgid))) {
-       warning("setresgid() [%d, %d, %d] -> [%d, %d, %d]", state->rgid,
-           state->egid, state->sgid, OID(rgid), OID(egid), OID(sgid));
+       warning("setresgid() [%d, %d, %d] -> [%d, %d, %d]",
+           (int)state->rgid, (int)state->egid, (int)state->sgid,
+           (int)OID(rgid), (int)OID(egid), (int)OID(sgid));
        goto bad;
     }
     if (state->grlist != ostate->grlist) {
@@ -344,7 +347,7 @@ bad:
 int
 set_perms(int perm)
 {
-    struct perm_state *state, *ostate;
+    struct perm_state *state, *ostate = NULL;
     const char *errstr;
     int noexit;
 
@@ -537,18 +540,19 @@ restore_perms(void)
        if (ID(euid) != ROOT_UID)
            (void)setreuid(-1, ROOT_UID);
        if (setuid(ROOT_UID)) {
-           warning("setuid(%d)", ROOT_UID);
+           warning("setuid() [%d, %d] -> %d)", (int)state->ruid,
+               (int)state->euid, ROOT_UID);
            goto bad;
        }
     }
     if (setreuid(OID(ruid), OID(euid))) {
-       warning("setreuid() [%d, %d] -> [%d, %d]", state->ruid,
-           state->euid, OID(ruid), OID(euid));
+       warning("setreuid() [%d, %d] -> [%d, %d]", (int)state->ruid,
+           (int)state->euid, (int)OID(ruid), (int)OID(euid));
        goto bad;
     }
     if (setregid(OID(rgid), OID(egid))) {
-       warning("setregid() [%d, %d] -> [%d, %d]", state->rgid,
-           state->egid, OID(rgid), OID(egid));
+       warning("setregid() [%d, %d] -> [%d, %d]", (int)state->rgid,
+           (int)state->egid, (int)OID(rgid), (int)OID(egid));
        goto bad;
     }
     if (state->grlist != ostate->grlist) {
@@ -576,7 +580,7 @@ bad:
 int
 set_perms(int perm)
 {
-    struct perm_state *state, *ostate;
+    struct perm_state *state, *ostate = NULL;
     const char *errstr;
     int noexit;
 
@@ -780,7 +784,7 @@ restore_perms(void)
     }
 
     if (setegid(OID(egid))) {
-       warning("setegid(%d)", OID(egid));
+       warning("setegid(%d)", (int)OID(egid));
        goto bad;
     }
     if (state->grlist != ostate->grlist) {
@@ -790,7 +794,7 @@ restore_perms(void)
        }
     }
     if (seteuid(OID(euid))) {
-       warning("seteuid(%d)", OID(euid));
+       warning("seteuid(%d)", (int)OID(euid));
        goto bad;
     }
     grlist_delref(state->grlist);
@@ -810,7 +814,7 @@ bad:
 int
 set_perms(int perm)
 {
-    struct perm_state *state, *ostate;
+    struct perm_state *state, *ostate = NULL;
     const char *errstr;
     int noexit;
 
@@ -906,7 +910,7 @@ restore_perms(void)
     perm_stack_depth--;
 
     if (OID(rgid) != -1 && setgid(ostate->rgid)) {
-       warning("setgid(%d)", ostate->rgid);
+       warning("setgid(%d)", (int)ostate->rgid);
        goto bad;
     }
     if (state->grlist != ostate->grlist) {
@@ -917,7 +921,7 @@ restore_perms(void)
     }
     grlist_delref(state->grlist);
     if (OID(ruid) != -1 && setuid(ostate->ruid)) {
-       warning("setuid(%d)", ostate->ruid);
+       warning("setuid(%d)", (int)ostate->ruid);
        goto bad;
     }
     return;
index a3816e2cb8785ec0a9527d6c87870f7e321ec505..8f3c54822c119a4e7a09aa75208a7479edcbfb35 100644 (file)
@@ -189,7 +189,9 @@ sudoers_policy_open(unsigned int version, sudo_conv_t conversation,
     /* Parse nsswitch.conf for sudoers order. */
     snl = sudo_read_nss();
 
+    /* LDAP or NSS may modify the euid so we need to be root for the open. */
     set_perms(PERM_INITIAL);
+    set_perms(PERM_ROOT);
 
     /* Open and parse sudoers, set global defaults */
     tq_foreach_fwd(snl, nss) {
@@ -207,15 +209,11 @@ sudoers_policy_open(unsigned int version, sudo_conv_t conversation,
     /* XXX - collect post-sudoers parse settings into a function */
 
     /*
-     * Initialize external group plugin.
+     * Initialize external group plugin, if any.
      */
     if (def_group_plugin) {
-       switch (group_plugin_load(def_group_plugin)) {
-       case -1:
-           return -1;
-       case FALSE:
+       if (group_plugin_load(def_group_plugin) != TRUE)
            def_group_plugin = NULL;
-       }
     }
 
     /*
@@ -258,7 +256,7 @@ sudoers_policy_close(int exit_status, int error_code)
 
     /* Close the session we opened in sudoers_policy_init_session(). */
     if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT))
-       (void)auth_end_session();
+       (void)sudo_auth_end_session(runas_pw);
 
     /* Free remaining references to password and group entries. */
     pw_delref(sudo_user.pw);
@@ -281,7 +279,7 @@ sudoers_policy_init_session(struct passwd *pwd)
        return -1;
     }
 
-    return auth_begin_session(pwd);
+    return sudo_auth_begin_session(pwd);
 }
 
 static int
@@ -796,23 +794,18 @@ init_vars(char * const envp[])
      * if necessary.  It is assumed that euid is 0 at this point so we
      * can read the shadow passwd file if necessary.
      */
-    if ((sudo_user.pw = sudo_getpwnam(user_name)) == NULL) {
-       struct passwd pw;
-
-       /* Create a fake struct passwd for log_error(). */
-       memset(&pw, 0, sizeof(pw));
-       pw.pw_uid = getuid();
-       pw.pw_name = user_name;
-       sudo_user.pw = &pw;
-
+    if ((sudo_user.pw = sudo_getpwuid(user_uid)) == NULL) {
        /*
         * It is not unusual for users to place "sudo -k" in a .logout
         * file which can cause sudo to be run during reboot after the
         * YP/NIS/NIS+/LDAP/etc daemon has died.
         */
        if (sudo_mode == MODE_KILL || sudo_mode == MODE_INVALIDATE)
-           errorx(1, _("unknown user: %s"), user_name);
-       log_error(0, _("unknown user: %s"), user_name);
+           errorx(1, _("unknown uid: %u"), (unsigned int) user_uid);
+
+       /* Need to make a fake struct passwd for the call to log_error(). */
+       sudo_user.pw = sudo_fakepwnamid(user_name, user_uid, user_gid);
+       log_error(0, _("unknown uid: %u"), (unsigned int) user_uid);
        /* NOTREACHED */
     }
 
index 3c8c6a1e35456899576e7733d689e29860728394..8b51e1d334f73c370ba0c3a0d02aa9c99a016187 100644 (file)
@@ -218,8 +218,10 @@ int user_is_exempt(void);
 
 /* sudo_auth.c */
 int verify_user(struct passwd *, char *);
-int auth_begin_session(struct passwd *);
-int auth_end_session();
+int sudo_auth_begin_session(struct passwd *);
+int sudo_auth_end_session(struct passwd *);
+int sudo_auth_init(struct passwd *pw);
+int sudo_auth_cleanup(struct passwd *pw);
 
 /* parse.c */
 int sudo_file_open(struct sudo_nss *);
@@ -268,6 +270,7 @@ void sudo_endspent(void);
 struct group_list *get_group_list(struct passwd *pw);
 void set_group_list(const char *, GETGROUPS_T *gids, int ngids);
 struct passwd *sudo_getpwnam(const char *);
+struct passwd *sudo_fakepwnamid(const char *user, uid_t uid, gid_t gid);
 struct passwd *sudo_fakepwnam(const char *, gid_t);
 struct passwd *sudo_getpwuid(uid_t);
 struct group *sudo_getgrnam(const char *);
@@ -341,9 +344,4 @@ extern sudo_conv_t sudo_conv;
 extern sudo_printf_t sudo_printf;
 #endif
 
-/* Some systems don't declare errno in errno.h */
-#ifndef errno
-extern int errno;
-#endif
-
 #endif /* _SUDO_SUDOERS_H */
index 43119e233c57e35517baedfe2e776a86d8dee974..e37f6d50fc14cdaf82bd2909bc84eba7e5f9a333 100644 (file)
@@ -256,6 +256,30 @@ main(int argc, char *argv[])
     exit(0);
 }
 
+/*
+ * List of editors that support the "+lineno" command line syntax.
+ * If an entry starts with '*' the tail end of the string is matched.
+ * No other wild cards are supported.
+ */
+static char *lineno_editors[] = {
+    "ex",
+    "nex",
+    "vi",
+    "nvi",
+    "vim",
+    "elvis",
+    "*macs",
+    "mg",
+    "vile",
+    "jove",
+    "pico",
+    "nano",
+    "ee",
+    "joe",
+    "zile",
+    NULL
+};
+
 /*
  * Edit each sudoers file.
  * Returns TRUE on success, else FALSE.
@@ -276,11 +300,7 @@ edit_sudoers(struct sudoersfile *sp, char *editor, char *args, int lineno)
     ssize_t nread;                     /* number of bytes read */
     struct stat sb;                    /* stat buffer */
 
-#ifdef HAVE_FSTAT
     if (fstat(sp->fd, &sb) == -1)
-#else
-    if (stat(sp->path, &sb) == -1)
-#endif
        error(1, _("unable to stat %s"), sp->path);
     orig_size = sb.st_size;
     mtim_get(&sb, &orig_mtim);
@@ -310,6 +330,34 @@ edit_sudoers(struct sudoersfile *sp, char *editor, char *args, int lineno)
     }
     (void) touch(-1, sp->tpath, &orig_mtim);
 
+    /* Does the editor support +lineno? */
+    if (lineno > 0)
+    {
+       char *editor_base = strrchr(editor, '/');
+       if (editor_base != NULL)
+           editor_base++;
+       else
+           editor_base = editor;
+       if (*editor_base == 'r')
+           editor_base++;
+
+       for (av = lineno_editors; (cp = *av) != NULL; av++) {
+           /* We only handle a leading '*' wildcard. */
+           if (*cp == '*') {
+               size_t blen = strlen(editor_base);
+               size_t clen = strlen(++cp);
+               if (blen >= clen) {
+                   if (strcmp(cp, editor_base + blen - clen) == 0)
+                       break;
+               }
+           } else if (strcmp(cp, editor_base) == 0)
+               break;
+       }
+       /* Disable +lineno if editor doesn't support it. */
+       if (cp == NULL)
+           lineno = -1;
+    }
+
     /* Find the length of the argument vector */
     ac = 3 + (lineno > 0);
     if (args) {
@@ -492,23 +540,19 @@ install_sudoers(struct sudoersfile *sp, int oldperms)
      */
     if (oldperms) {
        /* Use perms of the existing file.  */
-#ifdef HAVE_FSTAT
        if (fstat(sp->fd, &sb) == -1)
-#else
-       if (stat(sp->path, &sb) == -1)
-#endif
            error(1, _("unable to stat %s"), sp->path);
        if (chown(sp->tpath, sb.st_uid, sb.st_gid) != 0) {
-           warning(_("unable to set (uid, gid) of %s to (%d, %d)"),
-               sp->tpath, sb.st_uid, sb.st_gid);
+           warning(_("unable to set (uid, gid) of %s to (%u, %u)"),
+               sp->tpath, (unsigned int)sb.st_uid, (unsigned int)sb.st_gid);
        }
        if (chmod(sp->tpath, sb.st_mode & 0777) != 0) {
            warning(_("unable to change mode of %s to 0%o"), sp->tpath,
-               (sb.st_mode & 0777));
+               (unsigned int)(sb.st_mode & 0777));
        }
     } else {
        if (chown(sp->tpath, SUDOERS_UID, SUDOERS_GID) != 0) {
-           warning(_("unable to set (uid, gid) of %s to (%d, %d)"),
+           warning(_("unable to set (uid, gid) of %s to (%u, %u)"),
                sp->tpath, SUDOERS_UID, SUDOERS_GID);
            return FALSE;
        }
@@ -724,17 +768,12 @@ check_syntax(char *sudoers_path, int quiet, int strict)
        }
     }
     /* Check mode and owner in strict mode. */
-#ifdef HAVE_FSTAT
-    if (strict && yyin != stdin && fstat(fileno(yyin), &sb) == 0)
-#else
-    if (strict && yyin != stdin && stat(sudoers_path, &sb) == 0)
-#endif
-    {
+    if (strict && yyin != stdin && fstat(fileno(yyin), &sb) == 0) {
        if (sb.st_uid != SUDOERS_UID || sb.st_gid != SUDOERS_GID) {
            error = TRUE;
            if (!quiet) {
                fprintf(stderr,
-                   _("%s: wrong owner (uid, gid) should be (%d, %d)\n"),
+                   _("%s: wrong owner (uid, gid) should be (%u, %u)\n"),
                    sudoers_path, SUDOERS_UID, SUDOERS_GID);
                }
        }
index 52dbdbb1dce70acd0a7db15e245271c33c18b4d5..fab19803e829d5b8723dfc1100c51639935c1e16 100644 (file)
@@ -451,8 +451,10 @@ handle_signals(int fd, pid_t child, int log_io, struct command_status *cstat)
                        int fd = open(_PATH_TTY, O_RDWR|O_NOCTTY, 0);
                        if (fd != -1)
                            saved_pgrp = tcgetpgrp(fd);
-                       if (kill(getpid(), WSTOPSIG(status)) != 0)
-                           warning("kill(%d, %d)", getpid(), WSTOPSIG(status));
+                       if (kill(getpid(), WSTOPSIG(status)) != 0) {
+                           warning("kill(%d, %d)", (int)getpid(),
+                               WSTOPSIG(status));
+                       }
                        if (fd != -1) {
                            if (saved_pgrp != (pid_t)-1)
                                (void)tcsetpgrp(fd, saved_pgrp);
@@ -476,7 +478,7 @@ handle_signals(int fd, pid_t child, int log_io, struct command_status *cstat)
                if (signo == SIGALRM)
                    terminate_child(child, FALSE);
                else if (kill(child, signo) != 0)
-                   warning("kill(%d, %d)", child, signo);
+                   warning("kill(%d, %d)", (int)child, signo);
            }
        }
     }
index b24d691b6c0826aa51041bca92791a8b5e3d778d..60ed7efc969e1184dd1524e39faacfc777b19a83 100644 (file)
@@ -323,7 +323,7 @@ suspend_parent(int signo)
        sigaction(signo, &sa, &osa);
        sudo_debug(8, "kill parent %d", signo);
        if (killpg(ppgrp, signo) != 0)
-           warning("killpg(%d, %d)", ppgrp, signo);
+           warning("killpg(%d, %d)", (int)ppgrp, signo);
 
        /* Check foreground/background status on resume. */
        check_foreground();
index 4bac6b931b87c45d4b6c8e1bb058a9969e1dfc6a..f303721d2d391599e89989d1eb97517f0e6156dc 100644 (file)
@@ -46,7 +46,9 @@
 #include <grp.h>
 #include <pwd.h>
 
-#ifdef HAVE_UTIL_H
+#if defined(HAVE_LIBUTIL_H)
+# include <libutil.h>
+#elif defined(HAVE_UTIL_H)
 # include <util.h>
 #endif
 #ifdef HAVE_PTY_H
diff --git a/src/po/eo.mo b/src/po/eo.mo
new file mode 100644 (file)
index 0000000..8ed6906
Binary files /dev/null and b/src/po/eo.mo differ
diff --git a/src/po/eo.po b/src/po/eo.po
new file mode 100644 (file)
index 0000000..69de1be
--- /dev/null
@@ -0,0 +1,740 @@
+# Esperanto translations for sudo package.
+# This file is put in the public domain.
+# Keith Bowes <zooplah@gmail.com>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sudo 1.8.2-rc9\n"
+"Report-Msgid-Bugs-To: http://www.sudo.ws/bugs\n"
+"POT-Creation-Date: 2011-08-05 13:34-0400\n"
+"PO-Revision-Date: 2011-08-21 18:59-0400\n"
+"Last-Translator: Keith Bowes <zooplah@gmail.com>\n"
+"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/error.c:82 src/error.c:86
+msgid ": "
+msgstr ": "
+
+#: src/exec.c:125 src/exec_pty.c:573 src/exec_pty.c:880 src/tgetpass.c:224
+#, c-format
+msgid "unable to fork"
+msgstr "ne eblas forki"
+
+#: src/exec.c:246
+#, c-format
+msgid "unable to create sockets"
+msgstr "ne eblas krei konektingojn"
+
+#: src/exec.c:253 src/exec_pty.c:526 src/exec_pty.c:534 src/exec_pty.c:541
+#: src/exec_pty.c:826 src/exec_pty.c:877 src/tgetpass.c:221
+#, c-format
+msgid "unable to create pipe"
+msgstr "ne eblas krei tubon"
+
+#: src/exec.c:319 src/exec_pty.c:944 src/exec_pty.c:1077
+#, c-format
+msgid "select failed"
+msgstr "elekto malsukcesis"
+
+#: src/exec.c:387
+#, c-format
+msgid "unable to restore tty label"
+msgstr "ne eblis reatingi tty-etikedon"
+
+#: src/exec_pty.c:136
+#, c-format
+msgid "unable to allocate pty"
+msgstr "ne eblis generi pty-on"
+
+#: src/exec_pty.c:566
+#, c-format
+msgid "unable to set terminal to raw mode"
+msgstr "ne eblas elekti nudan reĝimon ĉe la terminalo"
+
+#: src/exec_pty.c:858
+#, c-format
+msgid "unable to set controlling tty"
+msgstr "ne eblas elekti la regan tty-on"
+
+#: src/exec_pty.c:952
+#, c-format
+msgid "error reading from signal pipe"
+msgstr "eraro dum legi la signalan tubon"
+
+#: src/exec_pty.c:971
+#, c-format
+msgid "error reading from pipe"
+msgstr "eraro dum legi el tubo"
+
+#: src/exec_pty.c:987
+#, c-format
+msgid "error reading from socketpair"
+msgstr "eraro dum legi la konektingan paron"
+
+#: src/exec_pty.c:991
+#, c-format
+msgid "unexpected reply type on backchannel: %d"
+msgstr "neatendita respondotipo ĉe la postkanalo: %d"
+
+#: src/load_plugins.c:158
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: src/load_plugins.c:164
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: src/load_plugins.c:174
+#, c-format
+msgid "%s must be owned by uid %d"
+msgstr "%s devas esti estrita de uid %d"
+
+#: src/load_plugins.c:178
+#, c-format
+msgid "%s must be only be writable by owner"
+msgstr "%s estas skribebla nur de estro"
+
+#: src/load_plugins.c:185
+#, c-format
+msgid "unable to dlopen %s: %s"
+msgstr "malebla: dlopen %s: %s"
+
+#: src/load_plugins.c:190
+#, c-format
+msgid "%s: unable to find symbol %s"
+msgstr "%s: ne eblas trovi simbolon %s"
+
+#: src/load_plugins.c:196
+#, c-format
+msgid "%s: unknown policy type %d"
+msgstr "%s: nekonata konduta tipo %d"
+
+#: src/load_plugins.c:200
+#, c-format
+msgid "%s: incompatible policy major version %d, expected %d"
+msgstr "%s: malkongrua konduto, ĉefa eldono %d, atendita %d"
+
+#: src/load_plugins.c:207
+#, c-format
+msgid "%s: only a single policy plugin may be loaded"
+msgstr "%s: nur unu konduta kromprogramo eblas ŝargiĝi"
+
+#: src/load_plugins.c:225
+#, c-format
+msgid "%s: at least one policy plugin must be specified"
+msgstr "%s: almenaŭ unu konduku devas esti specifita"
+
+#: src/load_plugins.c:230
+#, c-format
+msgid "policy plugin %s does not include a check_policy method"
+msgstr "konduta kromprogramo %s ne inkluzivas la metodon check_policy"
+
+#: src/net_ifs.c:155 src/net_ifs.c:164 src/net_ifs.c:176 src/net_ifs.c:185
+#: src/net_ifs.c:295 src/net_ifs.c:319
+#, c-format
+msgid "load_interfaces: overflow detected"
+msgstr "load_interfaces: superfluo malkovrita"
+
+#: src/net_ifs.c:224
+#, c-format
+msgid "unable to open socket"
+msgstr "ne eblas malfermi konektingon"
+
+#: src/parse_args.c:180
+#, c-format
+msgid "the argument to -C must be a number greater than or equal to 3"
+msgstr "la parametro de -C devas esti nombron almenaŭ 3"
+
+#: src/parse_args.c:192
+#, c-format
+msgid "the argument to -D must be between 1 and 9 inclusive"
+msgstr "la argumento de -D devas esti de 1 ĝis 9"
+
+#: src/parse_args.c:273
+#, c-format
+msgid "unknown user: %s"
+msgstr "nekonata uzanto: %s"
+
+#: src/parse_args.c:332
+#, c-format
+msgid "you may not specify both the `-i' and `-s' options"
+msgstr "vi ne rajtas specifi kaj '-i' kaj '-s'"
+
+#: src/parse_args.c:336
+#, c-format
+msgid "you may not specify both the `-i' and `-E' options"
+msgstr "vi ne rajtas specifi kaj '-i' kaj '-E'"
+
+#: src/parse_args.c:346
+#, c-format
+msgid "the `-E' option is not valid in edit mode"
+msgstr "la parametro '-E' ne validas en redakta reĝimo"
+
+#: src/parse_args.c:348
+#, c-format
+msgid "you may not specify environment variables in edit mode"
+msgstr "vi ne rajtas specifi medivariablojn en redakta reĝimo"
+
+#: src/parse_args.c:356
+#, c-format
+msgid "the `-U' option may only be used with the `-l' option"
+msgstr "la parametro '-U' ne validas kun '-l'"
+
+#: src/parse_args.c:360
+#, c-format
+msgid "the `-A' and `-S' options may not be used together"
+msgstr "'-A' kaj '-S' ne eblas uziĝi kune"
+
+#: src/parse_args.c:429 src/sudo.c:435 src/sudo.c:455 src/sudo.c:463
+#: src/sudo.c:473 common/alloc.c:85 common/alloc.c:105 common/alloc.c:123
+#: common/alloc.c:145 common/alloc.c:203 common/alloc.c:217
+#, c-format
+msgid "unable to allocate memory"
+msgstr "ne eblas generi memoron"
+
+#: src/parse_args.c:442
+#, c-format
+msgid "sudoedit is not supported on this platform"
+msgstr "sudoedit ne estas havebla en ĉi tiu platformon"
+
+#: src/parse_args.c:513
+#, c-format
+msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified"
+msgstr "Vi rajtas specifi nur unu el -e, -h, -i, -K, -l, -s, -v aŭ -V"
+
+#: src/parse_args.c:526
+#, c-format
+msgid ""
+"%s - edit files as another user\n"
+"\n"
+msgstr ""
+"%s - redakti dosierojn kiel alia uzanto\n"
+"\n"
+
+#: src/parse_args.c:528
+#, c-format
+msgid ""
+"%s - execute a command as another user\n"
+"\n"
+msgstr ""
+"%s - plenumigi komandon kiel alia uzanto\n"
+"\n"
+
+#: src/parse_args.c:533
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Parametroj:\n"
+
+#: src/parse_args.c:536
+msgid "use helper program for password prompting\n"
+msgstr "uzi helpoprogrogramon por pasvortilo\n"
+
+#: src/parse_args.c:539
+msgid "use specified BSD authentication type\n"
+msgstr "uzi specifitan BSD-konstatan tipon\n"
+
+#: src/parse_args.c:541
+msgid "run command in the background\n"
+msgstr "plenumigi komandon fone\n"
+
+#: src/parse_args.c:543
+msgid "close all file descriptors >= fd\n"
+msgstr "fermi ĉiujn dosierpriskribilojn >= fd\n"
+
+#: src/parse_args.c:546
+msgid "run command with specified login class\n"
+msgstr "plenumigi komandon per specifitan ensalutan klason\n"
+
+#: src/parse_args.c:549
+msgid "preserve user environment when executing command\n"
+msgstr "konservi uzanto-medivariablojn dum plenumigi komandon\n"
+
+#: src/parse_args.c:551
+msgid "edit files instead of running a command\n"
+msgstr "redakti dosierojn anstataŭ plenumigi komandon\n"
+
+#: src/parse_args.c:553
+msgid "execute command as the specified group\n"
+msgstr "plenumigi komandon kiel la specifitan grupon\n"
+
+#: src/parse_args.c:555
+msgid "set HOME variable to target user's home dir.\n"
+msgstr "valorizi medivariablon HOME je la hejma dosierujo de la cela uzanto.\n"
+
+#: src/parse_args.c:557
+msgid "display help message and exit\n"
+msgstr "elmontri helpan mesaĝon kaj eliri\n"
+
+#: src/parse_args.c:559
+msgid "run a login shell as target user\n"
+msgstr "plenumigi ensalutan ŝelon kiel celan uzanton\n"
+
+#: src/parse_args.c:561
+msgid "remove timestamp file completely\n"
+msgstr "tute forigi tempo-indikilan dosieron\n"
+
+#: src/parse_args.c:563
+msgid "invalidate timestamp file\n"
+msgstr "eksvalidigi tempo-indikilan dosieron\n"
+
+#: src/parse_args.c:565
+msgid "list user's available commands\n"
+msgstr "listigi disponeblajn komandojn de uzanto\n"
+
+#: src/parse_args.c:567
+msgid "non-interactive mode, will not prompt user\n"
+msgstr "neinteraga reĝimo, ne demandos uzanton\n"
+
+#: src/parse_args.c:569
+msgid "preserve group vector instead of setting to target's\n"
+msgstr "konservi grupan vektoron anstataŭ elekti celan vektoron\n"
+
+#: src/parse_args.c:571
+msgid "use specified password prompt\n"
+msgstr "uzi specifitan pasvortilon\n"
+
+#: src/parse_args.c:574 src/parse_args.c:582
+msgid "create SELinux security context with specified role\n"
+msgstr "krei SELinux-sekurecan kuntekstan kun specifita rolo\n"
+
+#: src/parse_args.c:577
+msgid "read password from standard input\n"
+msgstr "legi pasvorton el norma enigo\n"
+
+#: src/parse_args.c:579
+msgid "run a shell as target user\n"
+msgstr "plenumigi ŝelon kiel cela uzanto\n"
+
+#: src/parse_args.c:585
+msgid "when listing, list specified user's privileges\n"
+msgstr "dum listigo, listigi privilegiojn de specifita uzanto\n"
+
+#: src/parse_args.c:587
+msgid "run command (or edit file) as specified user\n"
+msgstr "plenumigi komandon (aŭ redakti dosieron) kiel specifita uzanto\n"
+
+#: src/parse_args.c:589
+msgid "display version information and exit\n"
+msgstr "elmontri eldonan informon kaj eliri\n"
+
+#: src/parse_args.c:591
+msgid "update user's timestamp without running a command\n"
+msgstr "ĝisdatigi la tempo-indikilon de la uzanto, sed ne plenumigi komandon\n"
+
+#: src/parse_args.c:593
+msgid "stop processing command line arguments\n"
+msgstr "ĉesigi procedi komandliniajn parametrojn\n"
+
+#: src/selinux.c:75
+#, c-format
+msgid "unable to open audit system"
+msgstr "ne eblas malfermi aŭdan sistemon"
+
+#: src/selinux.c:85
+#, c-format
+msgid "unable to send audit message"
+msgstr "ne eblas sendi aŭdan mesaĝon"
+
+#: src/selinux.c:112
+#, c-format
+msgid "unable to fgetfilecon %s"
+msgstr "ne eblas voki fgetfilecon %s"
+
+#: src/selinux.c:117
+#, c-format
+msgid "%s changed labels"
+msgstr "%s ŝanĝis etikedojn"
+
+#: src/selinux.c:122
+#, c-format
+msgid "unable to restore context for %s"
+msgstr "ne eblas restarigi kuntekston por %s"
+
+#: src/selinux.c:161
+#, c-format
+msgid "unable to open %s, not relabeling tty"
+msgstr "ne eblas malfermi %s, ne remarkanta tty-on"
+
+#: src/selinux.c:170
+#, c-format
+msgid "unable to get current tty context, not relabeling tty"
+msgstr "ne eblas akiri aktualan tty-kuntekston, ne remarkanta"
+
+#: src/selinux.c:177
+#, c-format
+msgid "unable to get new tty context, not relabeling tty"
+msgstr "ne eblas akiri novan tty-kuntekston, ne remarkanta"
+
+#: src/selinux.c:184
+#, c-format
+msgid "unable to set new tty context"
+msgstr "ne eblas elekti novan tty-kuntekston"
+
+#: src/selinux.c:194 src/selinux.c:207 src/sudo.c:323
+#, c-format
+msgid "unable to open %s"
+msgstr "ne eblas malfermi %s"
+
+#: src/selinux.c:249
+#, c-format
+msgid "you must specify a role for type %s"
+msgstr "vi devas specifi rolon por tipon %s"
+
+#: src/selinux.c:255
+#, c-format
+msgid "unable to get default type for role %s"
+msgstr "ne eblas akiri aŭtomatan tipon por rolo %s"
+
+#: src/selinux.c:273
+#, c-format
+msgid "failed to set new role %s"
+msgstr "malsukcesis elekti novan rolon %s"
+
+#: src/selinux.c:277
+#, c-format
+msgid "failed to set new type %s"
+msgstr "malsukcesis elekti novan tipon %s"
+
+#: src/selinux.c:286
+#, c-format
+msgid "%s is not a valid context"
+msgstr "%s ne estas valida kunteksto"
+
+#: src/selinux.c:320
+#, c-format
+msgid "failed to get old_context"
+msgstr "malsukcesis je old_context"
+
+#: src/selinux.c:326
+#, c-format
+msgid "unable to determine enforcing mode."
+msgstr "ne povas determini eldevigan reĝimon."
+
+#: src/selinux.c:338
+#, c-format
+msgid "unable to setup tty context for %s"
+msgstr "ne eblas agordi tty-kuntekston por %s"
+
+#: src/selinux.c:367
+#, c-format
+msgid "unable to set exec context to %s"
+msgstr "ne eblas elekti exec-kuntekston al %s"
+
+#: src/selinux.c:374
+#, c-format
+msgid "unable to set key creation context to %s"
+msgstr "ne eblas elekti ŝlosilkrean kuntekston al %s"
+
+#: src/sesh.c:48
+msgid "requires at least one argument"
+msgstr "postulas almenaŭ unu parametron"
+
+#: src/sesh.c:64
+#, c-format
+msgid "unable to execute %s"
+msgstr "ne eblas plenumigi: %s"
+
+#: src/sudo.c:191
+#, c-format
+msgid "must be setuid root"
+msgstr "devas esti ĉefuzanto setuid"
+
+#: src/sudo.c:209
+#, c-format
+msgid "Sudo version %s\n"
+msgstr "Sudo: eldono %s\n"
+
+#: src/sudo.c:211
+#, c-format
+msgid "Configure options: %s\n"
+msgstr "Muntaj parametroj: %s\n"
+
+#: src/sudo.c:216
+#, c-format
+msgid "fatal error, unable to load plugins"
+msgstr "ĉesiga eraro: ne eblas ŝargi kromprogramojn"
+
+#: src/sudo.c:224
+#, c-format
+msgid "unable to initialize policy plugin"
+msgstr "ne eblas komenci konduktan kromprogramon"
+
+#: src/sudo.c:279
+#, c-format
+msgid "error initializing I/O plugin %s"
+msgstr "eraro dum komenci eneligan kromprogramon %s"
+
+#: src/sudo.c:300
+#, c-format
+msgid "unexpected sudo mode 0x%x"
+msgstr "neatendita sudo-reĝimon 0x%x"
+
+#: src/sudo.c:389
+#, c-format
+msgid "unable to get group vector"
+msgstr "ne eblas elekti grupan vektoron"
+
+#: src/sudo.c:431
+#, c-format
+msgid "unknown uid %u: who are you?"
+msgstr "nekonata uid %u: kiu vi estas?"
+
+#: src/sudo.c:773
+#, c-format
+msgid "resource control limit has been reached"
+msgstr "rimedo-rega limigo estis atingita"
+
+#: src/sudo.c:776
+#, c-format
+msgid "user \"%s\" is not a member of project \"%s\""
+msgstr "uzanto \"%s\" ne estas ano de projekto \"%s\""
+
+#: src/sudo.c:780
+#, c-format
+msgid "the invoking task is final"
+msgstr "la voka tasko estas nenuligebla"
+
+#: src/sudo.c:783
+#, c-format
+msgid "could not join project \"%s\""
+msgstr "ne eblis aliĝi al projekto \"%s\""
+
+#: src/sudo.c:788
+#, c-format
+msgid "no resource pool accepting default bindings exists for project \"%s\""
+msgstr "neniu rimedujo akceptanta aŭtomatajn bindaĵojn ekzistas por projekto \"%s\""
+
+#: src/sudo.c:792
+#, c-format
+msgid "specified resource pool does not exist for project \"%s\""
+msgstr "specifita rimedujo ne ekzistas por projekto \"%s\""
+
+#: src/sudo.c:796
+#, c-format
+msgid "could not bind to default resource pool for project \"%s\""
+msgstr "ne eblis bindi al aprioran rimedujo por projekto \"%s\""
+
+#: src/sudo.c:802
+#, c-format
+msgid "setproject failed for project \"%s\""
+msgstr "setproject malsukcesis por projekto \"%s\""
+
+#: src/sudo.c:804
+#, c-format
+msgid "warning, resource control assignment failed for project \"%s\""
+msgstr "averto, rimedo-rega asigno malsukcesis por projekto \"%s\""
+
+#: src/sudo.c:832
+#, c-format
+msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT"
+msgstr "ne eblas forigi PRIV_PROC_EXEC-on de PRIV_LIMIT"
+
+#: src/sudo.c:938
+#, c-format
+msgid "unknown login class %s"
+msgstr "nekonata ensaluta klaso %s"
+
+#: src/sudo.c:945 src/sudo.c:948
+#, c-format
+msgid "unable to set user context"
+msgstr "ne eblas elekti uzanto-kuntekston"
+
+#: src/sudo.c:959
+#, c-format
+msgid "unable to set effective gid to runas gid %u"
+msgstr "ne eblas elekti efikan gid-on al plenumigkiela gid %u"
+
+#: src/sudo.c:964
+#, c-format
+msgid "unable to set gid to runas gid %u"
+msgstr "ne eblas elekti gid-on kiel plenumigkielan gid-on %u"
+
+#: src/sudo.c:971
+#, c-format
+msgid "unable to set supplementary group IDs"
+msgstr "ne eblas elekti suplementajn grupajn identigilojn"
+
+#: src/sudo.c:979
+#, c-format
+msgid "unable to set process priority"
+msgstr "ne eblas elekti procezan prioritaton"
+
+#: src/sudo.c:987
+#, c-format
+msgid "unable to change root to %s"
+msgstr "ne eblas ŝanĝi ĉefuzanton al %s"
+
+#: src/sudo.c:997 src/sudo.c:1003 src/sudo.c:1009
+#, c-format
+msgid "unable to change to runas uid (%u, %u)"
+msgstr "ne eblas ŝanĝi al plenumigkiela uid (%u, %u)"
+
+#: src/sudo.c:1023
+#, c-format
+msgid "unable to change directory to %s"
+msgstr "ne eblas ŝanĝi dosierujon al %s"
+
+#: src/sudo.c:1090
+#, c-format
+msgid "unexpected child termination condition: %d"
+msgstr "neatendita ido ekzekutiĝis laŭ la kondiĉo: %d"
+
+#: src/sudo.c:1130
+#, c-format
+msgid "policy plugin %s does not support listing privileges"
+msgstr "konduta kromprogramo %s ne komprenas listigon de privilegioj"
+
+#: src/sudo.c:1141
+#, c-format
+msgid "policy plugin %s does not support the -v option"
+msgstr "konduta kromprogramo %s ne komprenas la parametron -v"
+
+#: src/sudo.c:1152
+#, c-format
+msgid "policy plugin %s does not support the -k/-K options"
+msgstr "konduta kromprogramo %s ne komprenas la parametrojn -k kaj -K"
+
+#: src/sudo_edit.c:108
+#, c-format
+msgid "unable to change uid to root (%u)"
+msgstr "ne eblas ŝanĝi uid-on al ĉefuzanto (%u)"
+
+#: src/sudo_edit.c:140
+#, c-format
+msgid "plugin error: missing file list for sudoedit"
+msgstr "kromprograma eraro: malhavas dosieran liston por sudoedit"
+
+#: src/sudo_edit.c:172 src/sudo_edit.c:280
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: ne regula dosiero"
+
+#: src/sudo_edit.c:206 src/sudo_edit.c:316
+#, c-format
+msgid "%s: short write"
+msgstr "%s: mallonga skribado"
+
+#: src/sudo_edit.c:281
+#, c-format
+msgid "%s left unmodified"
+msgstr "%s restas ne modifita"
+
+#: src/sudo_edit.c:294
+#, c-format
+msgid "%s unchanged"
+msgstr "%s ne ŝanĝita"
+
+#: src/sudo_edit.c:306 src/sudo_edit.c:327
+#, c-format
+msgid "unable to write to %s"
+msgstr "ne eblas skribi al %s"
+
+#: src/sudo_edit.c:307 src/sudo_edit.c:325 src/sudo_edit.c:328
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "enhavo de redakta seanco restas en %s"
+
+#: src/sudo_edit.c:324
+#, c-format
+msgid "unable to read temporary file"
+msgstr "ne eblas legi provizoran dosieron"
+
+#: src/tgetpass.c:95
+#, c-format
+msgid "no tty present and no askpass program specified"
+msgstr "neniu tty ĉeestas kaj neniu pasvorto-programo specifita"
+
+#: src/tgetpass.c:104
+#, c-format
+msgid "no askpass program specified, try setting SUDO_ASKPASS"
+msgstr "neniu pasvorto-programo specifita, provi valorizi SUDO_ASKPASS-on"
+
+#: src/tgetpass.c:234
+#, c-format
+msgid "unable to set gid to %u"
+msgstr "ne eblas elekti gid-on al %u"
+
+#: src/tgetpass.c:238
+#, c-format
+msgid "unable to set uid to %u"
+msgstr "ne eblas elekti uid-on al %u"
+
+#: src/tgetpass.c:243
+#, c-format
+msgid "unable to run %s"
+msgstr "ne eblas plenumigi: %s"
+
+#: src/utmp.c:263
+#, c-format
+msgid "unable to save stdin"
+msgstr "ne eblas konservi enigon"
+
+#: src/utmp.c:265
+#, c-format
+msgid "unable to dup2 stdin"
+msgstr "ne eblas kopii al enigo"
+
+#: src/utmp.c:268
+#, c-format
+msgid "unable to restore stdin"
+msgstr "ne eblas restarigi enigon"
+
+#: common/aix.c:144
+#, c-format
+msgid "unable to open userdb"
+msgstr "ne eblas malfermi la uzanto-datumbazon"
+
+#: common/aix.c:147
+#, c-format
+msgid "unable to switch to registry \"%s\" for %s"
+msgstr "ne eblas ŝanĝiĝi al registrejo \"%s\" por %s"
+
+#: common/aix.c:161
+#, c-format
+msgid "unable to restore registry"
+msgstr "ne eblas restarigi registrejon"
+
+#: common/alloc.c:82
+#, c-format
+msgid "internal error, tried to emalloc(0)"
+msgstr "ena eraro, provis je emalloc(0)"
+
+#: common/alloc.c:99
+#, c-format
+msgid "internal error, tried to emalloc2(0)"
+msgstr "ena eraro, provis je emalloc2(0)"
+
+#: common/alloc.c:101
+#, c-format
+msgid "internal error, emalloc2() overflow"
+msgstr "ena eraro, emalloc2() superfluo"
+
+#: common/alloc.c:119
+#, c-format
+msgid "internal error, tried to erealloc(0)"
+msgstr "ena eraro, provis je erealloc(0)"
+
+#: common/alloc.c:138
+#, c-format
+msgid "internal error, tried to erealloc3(0)"
+msgstr "ena eraro, provis je erealloc3(0)"
+
+#: common/alloc.c:140
+#, c-format
+msgid "internal error, erealloc3() overflow"
+msgstr "ena eraro, erealloc3() superfluo"
+
+#: compat/strsignal.c:47
+msgid "Unknown signal"
+msgstr "Nekonata signalo"
diff --git a/src/po/it.mo b/src/po/it.mo
new file mode 100644 (file)
index 0000000..9b34a40
Binary files /dev/null and b/src/po/it.mo differ
diff --git a/src/po/it.po b/src/po/it.po
new file mode 100644 (file)
index 0000000..06c6898
--- /dev/null
@@ -0,0 +1,742 @@
+# Italian translations for sudo package
+# Copyright (c) 2011, The Free Software Foundation
+# This file is distributed under the same license as the sudo package. 
+# Milo Casagrande <milo@casagrande.name>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sudo-1.8.3rc1\n"
+"Report-Msgid-Bugs-To: http://www.sudo.ws/bugs\n"
+"POT-Creation-Date: 2011-09-16 13:37-0400\n"
+"PO-Revision-Date: 2011-09-21 21:51+0200\n"
+"Last-Translator: Milo Casagrande <milo@casagrande.name>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/error.c:82 src/error.c:86
+msgid ": "
+msgstr ": "
+
+#: src/exec.c:125 src/exec_pty.c:573 src/exec_pty.c:880 src/tgetpass.c:224
+#, c-format
+msgid "unable to fork"
+msgstr "impossibile eseguire fork"
+
+#: src/exec.c:246
+#, c-format
+msgid "unable to create sockets"
+msgstr "impossibile creare socket"
+
+#: src/exec.c:253 src/exec_pty.c:526 src/exec_pty.c:534 src/exec_pty.c:541
+#: src/exec_pty.c:826 src/exec_pty.c:877 src/tgetpass.c:221
+#, c-format
+msgid "unable to create pipe"
+msgstr "impossibile creare una pipe"
+
+#: src/exec.c:319 src/exec_pty.c:944 src/exec_pty.c:1077
+#, c-format
+msgid "select failed"
+msgstr "select non riuscita"
+
+#: src/exec.c:387
+#, c-format
+msgid "unable to restore tty label"
+msgstr "impossibile ripristinare l'etichetta tty"
+
+#: src/exec_pty.c:136
+#, c-format
+msgid "unable to allocate pty"
+msgstr "impossibile allocare pty"
+
+#: src/exec_pty.c:566
+#, c-format
+msgid "unable to set terminal to raw mode"
+msgstr "impossibile impostare il terminale in modalità raw"
+
+#: src/exec_pty.c:858
+#, c-format
+msgid "unable to set controlling tty"
+msgstr "impossibile impostare il tty di controllo"
+
+#: src/exec_pty.c:952
+#, c-format
+msgid "error reading from signal pipe"
+msgstr "errore nel leggere dalla pipe di segnale"
+
+#: src/exec_pty.c:971
+#, c-format
+msgid "error reading from pipe"
+msgstr "errore nel leggere dalla pipe"
+
+#: src/exec_pty.c:987
+#, c-format
+msgid "error reading from socketpair"
+msgstr "errore nel leggere dal socketpair"
+
+#: src/exec_pty.c:991
+#, c-format
+msgid "unexpected reply type on backchannel: %d"
+msgstr "tipologia di risposta inattesa sul backchannel: %d"
+
+#: src/load_plugins.c:158
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: src/load_plugins.c:164
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: src/load_plugins.c:174
+#, c-format
+msgid "%s must be owned by uid %d"
+msgstr "%s deve essere di proprietà dello uid %d"
+
+#: src/load_plugins.c:178
+#, c-format
+msgid "%s must be only be writable by owner"
+msgstr "%s deve essere scrivibile solo dal proprietario"
+
+#: src/load_plugins.c:185
+#, c-format
+msgid "unable to dlopen %s: %s"
+msgstr "impossibile eseguire dlopen su %s: %s"
+
+#: src/load_plugins.c:190
+#, c-format
+msgid "%s: unable to find symbol %s"
+msgstr "%s: impossibile trovare il simbolo %s"
+
+#: src/load_plugins.c:196
+#, c-format
+msgid "%s: unknown policy type %d"
+msgstr "%s: politica di tipo %d sconosciuta"
+
+#: src/load_plugins.c:200
+#, c-format
+msgid "%s: incompatible policy major version %d, expected %d"
+msgstr "%s: numero principale di versione %d non compatibile, atteso %d"
+
+#: src/load_plugins.c:207
+#, c-format
+msgid "%s: only a single policy plugin may be loaded"
+msgstr "%s: solo un plugin di politica può essere caricato"
+
+#: src/load_plugins.c:225
+#, c-format
+msgid "%s: at least one policy plugin must be specified"
+msgstr "%s: almeno un plugin di politica deve essere specificato"
+
+#: src/load_plugins.c:230
+#, c-format
+msgid "policy plugin %s does not include a check_policy method"
+msgstr "il plugin di politica %s non include un metodo check_policy"
+
+#: src/net_ifs.c:155 src/net_ifs.c:164 src/net_ifs.c:176 src/net_ifs.c:185
+#: src/net_ifs.c:295 src/net_ifs.c:319
+#, c-format
+msgid "load_interfaces: overflow detected"
+msgstr "load_interfaces: rilevato overflow"
+
+#: src/net_ifs.c:224
+#, c-format
+msgid "unable to open socket"
+msgstr "impossibile aprire socket"
+
+#: src/parse_args.c:180
+#, c-format
+msgid "the argument to -C must be a number greater than or equal to 3"
+msgstr "l'argomento di -C deve essere un numero maggiore o uguale a 3"
+
+#: src/parse_args.c:192
+#, c-format
+msgid "the argument to -D must be between 1 and 9 inclusive"
+msgstr "l'argomento di -D deve essere tra 1 e 9 compresi"
+
+#: src/parse_args.c:273
+#, c-format
+msgid "unknown user: %s"
+msgstr "utente sconosciuto: %s"
+
+#: src/parse_args.c:332
+#, c-format
+msgid "you may not specify both the `-i' and `-s' options"
+msgstr "non è possibile specificare entrambe le opzioni \"-i\" e \"-s\""
+
+#: src/parse_args.c:336
+#, c-format
+msgid "you may not specify both the `-i' and `-E' options"
+msgstr "non è possibile specificare entrambe le opzioni \"-i\" ed \"-E\""
+
+#: src/parse_args.c:346
+#, c-format
+msgid "the `-E' option is not valid in edit mode"
+msgstr "l'opzione \"-E\" non è valida in modalità di modifica"
+
+#: src/parse_args.c:348
+#, c-format
+msgid "you may not specify environment variables in edit mode"
+msgstr "non è possibile specificare variabili d'ambiente in modalità di modifica"
+
+#: src/parse_args.c:356
+#, c-format
+msgid "the `-U' option may only be used with the `-l' option"
+msgstr "l'opzione \"-U\" può essere usata solo con l'opzione \"-l\""
+
+#: src/parse_args.c:360
+#, c-format
+msgid "the `-A' and `-S' options may not be used together"
+msgstr "non è possibile usare assieme le opzioni \"-A\" e \"-S\""
+
+#: src/parse_args.c:429 src/sudo.c:435 src/sudo.c:455 src/sudo.c:463
+#: src/sudo.c:473 common/alloc.c:85 common/alloc.c:105 common/alloc.c:123
+#: common/alloc.c:145 common/alloc.c:203 common/alloc.c:217
+#, c-format
+msgid "unable to allocate memory"
+msgstr "impossibile allocare la memoria"
+
+#: src/parse_args.c:442
+#, c-format
+msgid "sudoedit is not supported on this platform"
+msgstr "sudoedit non è supportato su questa piattaforma"
+
+#: src/parse_args.c:513
+#, c-format
+msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified"
+msgstr "Solo una delle opzioni -e, -h, -i, -K, -l, -s, -v o -V può essere specificata"
+
+#: src/parse_args.c:526
+#, c-format
+msgid ""
+"%s - edit files as another user\n"
+"\n"
+msgstr ""
+"%s - modifica file come un altro utente\n"
+"\n"
+
+#: src/parse_args.c:528
+#, c-format
+msgid ""
+"%s - execute a command as another user\n"
+"\n"
+msgstr ""
+"%s - esegue un comando come un altro utente\n"
+"\n"
+
+#: src/parse_args.c:533
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Opzioni:\n"
+
+#: src/parse_args.c:536
+msgid "use helper program for password prompting\n"
+msgstr "Utilizza un programma d'aiuto per richiedere la password\n"
+
+#: src/parse_args.c:539
+msgid "use specified BSD authentication type\n"
+msgstr "Utilizza la tipologia di autenticazione BSD specificata\n"
+
+#: src/parse_args.c:541
+msgid "run command in the background\n"
+msgstr "Esegue il comando in background\n"
+
+#: src/parse_args.c:543
+msgid "close all file descriptors >= fd\n"
+msgstr "Chiude tutti i descrittori di file >= fd\n"
+
+#: src/parse_args.c:546
+msgid "run command with specified login class\n"
+msgstr "Esegue il comando con la classe di accesso specificata\n"
+
+#: src/parse_args.c:549
+msgid "preserve user environment when executing command\n"
+msgstr "Mantiene l'ambiente dell'utente quando viene eseguito il comando\n"
+
+#: src/parse_args.c:551
+msgid "edit files instead of running a command\n"
+msgstr "Modifica i file invece di eseguire un comando\n"
+
+#: src/parse_args.c:553
+msgid "execute command as the specified group\n"
+msgstr "Esegue il comando come il gruppo specificato\n"
+
+#: src/parse_args.c:555
+msgid "set HOME variable to target user's home dir.\n"
+msgstr "Imposta la variabile HOME alla directory dell'utente finale\n"
+
+#: src/parse_args.c:557
+msgid "display help message and exit\n"
+msgstr "Visualizza il messaggio di aiuto ed esce\n"
+
+#: src/parse_args.c:559
+msgid "run a login shell as target user\n"
+msgstr "Esegue una shell di login come l'utente finale\n"
+
+#: src/parse_args.c:561
+msgid "remove timestamp file completely\n"
+msgstr "Rimuove completamente il file temporale\n"
+
+#: src/parse_args.c:563
+msgid "invalidate timestamp file\n"
+msgstr "Invalida il file temporale\n"
+
+#: src/parse_args.c:565
+msgid "list user's available commands\n"
+msgstr "Elenca i comandi utente disponibili\n"
+
+#: src/parse_args.c:567
+msgid "non-interactive mode, will not prompt user\n"
+msgstr "Modalità non interattiva, non richiede nulla all'utente\n"
+
+#: src/parse_args.c:569
+msgid "preserve group vector instead of setting to target's\n"
+msgstr "Mantiene il vettore di gruppo invece di impostarlo a quello dell'obiettivo\n"
+
+#: src/parse_args.c:571
+msgid "use specified password prompt\n"
+msgstr "Utilizza la richiesta della password specificata\n"
+
+#: src/parse_args.c:574 src/parse_args.c:582
+msgid "create SELinux security context with specified role\n"
+msgstr "Crea il contesto di sicurezza SELinux con il ruolo specificato\n"
+
+#: src/parse_args.c:577
+msgid "read password from standard input\n"
+msgstr "Legge la password dallo standard input\n"
+
+#: src/parse_args.c:579
+msgid "run a shell as target user\n"
+msgstr "Esegue una shell come l'utente finale\n"
+
+#: src/parse_args.c:585
+msgid "when listing, list specified user's privileges\n"
+msgstr "Durante l'elencazione, visualizza i privilegi dell'utente specificato\n"
+
+#: src/parse_args.c:587
+msgid "run command (or edit file) as specified user\n"
+msgstr "Esegue un comando (o modifica un file) come l'utente specificato\n"
+
+#: src/parse_args.c:589
+msgid "display version information and exit\n"
+msgstr "Visualizza le informazioni sulla versione ed esce\n"
+
+#: src/parse_args.c:591
+msgid "update user's timestamp without running a command\n"
+msgstr "Aggiorna il timestamp dell'utente senza eseguire un comando\n"
+
+#: src/parse_args.c:593
+msgid "stop processing command line arguments\n"
+msgstr "Ferma l'elaborazione degli argomenti a riga di comando\n"
+
+#: src/selinux.c:75
+#, c-format
+msgid "unable to open audit system"
+msgstr "impossibile aprire il sistema di audit"
+
+#: src/selinux.c:85
+#, c-format
+msgid "unable to send audit message"
+msgstr "impossibile inviare il messaggio di audit"
+
+#: src/selinux.c:112
+#, c-format
+msgid "unable to fgetfilecon %s"
+msgstr "impossibile eseguire fgetfilecon %s"
+
+#: src/selinux.c:117
+#, c-format
+msgid "%s changed labels"
+msgstr "%s ha modificato le etichette"
+
+#: src/selinux.c:122
+#, c-format
+msgid "unable to restore context for %s"
+msgstr "impossibile ripristinare il contesto per %s"
+
+#: src/selinux.c:161
+#, c-format
+msgid "unable to open %s, not relabeling tty"
+msgstr "impossibile aprire %s, tty non viene etichettato nuovamente"
+
+#: src/selinux.c:170
+#, c-format
+msgid "unable to get current tty context, not relabeling tty"
+msgstr "impossibile ottenere il contesto tty attuale, tty non viene etichettato nuovamente"
+
+#: src/selinux.c:177
+#, c-format
+msgid "unable to get new tty context, not relabeling tty"
+msgstr "impossibile ottenere il nuovo contesto tty, tty non viene etichettato nuovamente"
+
+#: src/selinux.c:184
+#, c-format
+msgid "unable to set new tty context"
+msgstr "impossibile impostare il nuovo contesto tty"
+
+#: src/selinux.c:194 src/selinux.c:207 src/sudo.c:323
+#, c-format
+msgid "unable to open %s"
+msgstr "impossibile aprire %s"
+
+#: src/selinux.c:249
+#, c-format
+msgid "you must specify a role for type %s"
+msgstr "è necessario specificare un ruolo per la tipologia %s"
+
+#: src/selinux.c:255
+#, c-format
+msgid "unable to get default type for role %s"
+msgstr "impossibile ottenere la tipologia predefinita per il ruolo %s"
+
+#: src/selinux.c:273
+#, c-format
+msgid "failed to set new role %s"
+msgstr "impossibile impostare il nuovo ruolo %s"
+
+#: src/selinux.c:277
+#, c-format
+msgid "failed to set new type %s"
+msgstr "impossibile impostare la nuova tipologia %s"
+
+#: src/selinux.c:286
+#, c-format
+msgid "%s is not a valid context"
+msgstr "%s non è un contesto valido"
+
+#: src/selinux.c:320
+#, c-format
+msgid "failed to get old_context"
+msgstr "recupero del vecchio contesto non riuscito"
+
+#: src/selinux.c:326
+#, c-format
+msgid "unable to determine enforcing mode."
+msgstr "impossibile determinare la modalità di rispetto."
+
+#: src/selinux.c:338
+#, c-format
+msgid "unable to setup tty context for %s"
+msgstr "impossibile impostare il contesto tty per %s"
+
+#: src/selinux.c:367
+#, c-format
+msgid "unable to set exec context to %s"
+msgstr "impossibile impostare il contesto exec a %s"
+
+#: src/selinux.c:374
+#, c-format
+msgid "unable to set key creation context to %s"
+msgstr "impossibile impostare il contesto di creazione della chiave a %s"
+
+#: src/sesh.c:48
+msgid "requires at least one argument"
+msgstr "richiede almeno un argomento"
+
+#: src/sesh.c:64
+#, c-format
+msgid "unable to execute %s"
+msgstr "impossibile eseguire %s"
+
+#: src/sudo.c:191
+#, c-format
+msgid "must be setuid root"
+msgstr "è necessario essere setuid root"
+
+#: src/sudo.c:209
+#, c-format
+msgid "Sudo version %s\n"
+msgstr "Versione di sudo: %s\n"
+
+#: src/sudo.c:211
+#, c-format
+msgid "Configure options: %s\n"
+msgstr "Opzioni di configurazione: %s\n"
+
+#: src/sudo.c:216
+#, c-format
+msgid "fatal error, unable to load plugins"
+msgstr "errore irreversibile, impossibile caricare i plugin"
+
+#: src/sudo.c:224
+#, c-format
+msgid "unable to initialize policy plugin"
+msgstr "impossibile inizializzare il plugin delle politiche"
+
+#: src/sudo.c:279
+#, c-format
+msgid "error initializing I/O plugin %s"
+msgstr "errore nell'inizializzare il plugin di I/O %s"
+
+#: src/sudo.c:300
+#, c-format
+msgid "unexpected sudo mode 0x%x"
+msgstr "modalità 0x%x di sudo non attesa"
+
+#: src/sudo.c:389
+#, c-format
+msgid "unable to get group vector"
+msgstr "impossibile ottenere il vettore di gruppo"
+
+# (ndt) mah... andrebbe resa meglio...
+#: src/sudo.c:431
+#, c-format
+msgid "unknown uid %u: who are you?"
+msgstr "uid %u sconosciuto: identificarsi."
+
+#: src/sudo.c:773
+#, c-format
+msgid "resource control limit has been reached"
+msgstr "raggiunto il limite di controllo delle risorse"
+
+#: src/sudo.c:776
+#, c-format
+msgid "user \"%s\" is not a member of project \"%s\""
+msgstr "l'utente \"%s\" non fa parte del progetto \"%s\""
+
+#: src/sudo.c:780
+#, c-format
+msgid "the invoking task is final"
+msgstr "il task chiamante è definitivo"
+
+#: src/sudo.c:783
+#, c-format
+msgid "could not join project \"%s\""
+msgstr "impossibile unirsi al progetto \"%s\""
+
+#: src/sudo.c:788
+#, c-format
+msgid "no resource pool accepting default bindings exists for project \"%s\""
+msgstr "non esiste alcun pool di risorse per il progetto \"%s\" che accetti binding predefiniti"
+
+#: src/sudo.c:792
+#, c-format
+msgid "specified resource pool does not exist for project \"%s\""
+msgstr "il pool di risorse specificato non esiste per il progetto \"%s\""
+
+#: src/sudo.c:796
+#, c-format
+msgid "could not bind to default resource pool for project \"%s\""
+msgstr "impossibile unirsi al pool di risorse predefinito per il progetto \"%s\""
+
+#: src/sudo.c:802
+#, c-format
+msgid "setproject failed for project \"%s\""
+msgstr "setproject per il progetto \"%s\" non riuscita"
+
+#: src/sudo.c:804
+#, c-format
+msgid "warning, resource control assignment failed for project \"%s\""
+msgstr "attenzione, assegnazione della risorsa di controllo per il progetto \"%s\" non riuscita"
+
+#: src/sudo.c:832
+#, c-format
+msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT"
+msgstr "impossibile rimuovere PRIV_PROC_EXEC da PRIV_LIMIT"
+
+#: src/sudo.c:938
+#, c-format
+msgid "unknown login class %s"
+msgstr "classe di accesso %s sconosciuta"
+
+#: src/sudo.c:945 src/sudo.c:948
+#, c-format
+msgid "unable to set user context"
+msgstr "impossibile impostare il contesto utente"
+
+#: src/sudo.c:959
+#, c-format
+msgid "unable to set effective gid to runas gid %u"
+msgstr "impossibile impostare il gid effettivo per eseguire come %u"
+
+#: src/sudo.c:965
+#, c-format
+msgid "unable to set gid to runas gid %u"
+msgstr "impossibile impostare il gid per eseguire come gid %u"
+
+#: src/sudo.c:973
+#, c-format
+msgid "unable to set supplementary group IDs"
+msgstr "impossibile impostare ID di gruppo supplementari"
+
+#: src/sudo.c:981
+#, c-format
+msgid "unable to set process priority"
+msgstr "impossibile impostare la priorità del processo"
+
+#: src/sudo.c:989
+#, c-format
+msgid "unable to change root to %s"
+msgstr "impossibile modificare root a %s"
+
+#: src/sudo.c:999 src/sudo.c:1005 src/sudo.c:1011
+#, c-format
+msgid "unable to change to runas uid (%u, %u)"
+msgstr "impossibile passare a un diverso uid (%u, %u)"
+
+#: src/sudo.c:1025
+#, c-format
+msgid "unable to change directory to %s"
+msgstr "impossibile passare alla directory %s"
+
+#: src/sudo.c:1092
+#, c-format
+msgid "unexpected child termination condition: %d"
+msgstr "condizione di uscita del figlio inattesa: %d"
+
+#: src/sudo.c:1132
+#, c-format
+msgid "policy plugin %s does not support listing privileges"
+msgstr "il plugin di politica %s non supporta l'elencazione dei privilegi"
+
+#: src/sudo.c:1143
+#, c-format
+msgid "policy plugin %s does not support the -v option"
+msgstr "il plugin di politica %s non supporta l'opzione -v"
+
+#: src/sudo.c:1154
+#, c-format
+msgid "policy plugin %s does not support the -k/-K options"
+msgstr "il plguind di politica %s non supporta le opzioni -k/-K"
+
+#: src/sudo_edit.c:108
+#, c-format
+msgid "unable to change uid to root (%u)"
+msgstr "impossibile modificare lo uid a root (%u)"
+
+#: src/sudo_edit.c:140
+#, c-format
+msgid "plugin error: missing file list for sudoedit"
+msgstr "errore di plugin: elenco file mancante per sudoedit"
+
+#: src/sudo_edit.c:168 src/sudo_edit.c:268
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: non è un file regolare"
+
+#: src/sudo_edit.c:202 src/sudo_edit.c:304
+#, c-format
+msgid "%s: short write"
+msgstr "%s: scrittura breve"
+
+#: src/sudo_edit.c:269
+#, c-format
+msgid "%s left unmodified"
+msgstr "%s lasciato non modificato"
+
+#: src/sudo_edit.c:282
+#, c-format
+msgid "%s unchanged"
+msgstr "%s non modificato"
+
+#: src/sudo_edit.c:294 src/sudo_edit.c:315
+#, c-format
+msgid "unable to write to %s"
+msgstr "impossibile scrivere su %s"
+
+#: src/sudo_edit.c:295 src/sudo_edit.c:313 src/sudo_edit.c:316
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "contenuto della sessione di modifica tralasciato in %s"
+
+#: src/sudo_edit.c:312
+#, c-format
+msgid "unable to read temporary file"
+msgstr "impossibile leggere il file temporaneo"
+
+#: src/tgetpass.c:95
+#, c-format
+msgid "no tty present and no askpass program specified"
+msgstr "nessun tty presente e nessun programma di richiesta password specificato"
+
+#: src/tgetpass.c:104
+#, c-format
+msgid "no askpass program specified, try setting SUDO_ASKPASS"
+msgstr "nessun programma di richiesta password specificato, impostare SUDO_ASKPASS"
+
+#: src/tgetpass.c:234
+#, c-format
+msgid "unable to set gid to %u"
+msgstr "impossibile impostare lo gid a %u"
+
+#: src/tgetpass.c:238
+#, c-format
+msgid "unable to set uid to %u"
+msgstr "impossibile impostare lo uid a %u"
+
+#: src/tgetpass.c:243
+#, c-format
+msgid "unable to run %s"
+msgstr "impossibile eseguire %s"
+
+#: src/utmp.c:263
+#, c-format
+msgid "unable to save stdin"
+msgstr "impossibile salvare lo stdin"
+
+#: src/utmp.c:265
+#, c-format
+msgid "unable to dup2 stdin"
+msgstr "impossibile eseguire dup2 sullo stdin"
+
+#: src/utmp.c:268
+#, c-format
+msgid "unable to restore stdin"
+msgstr "impossibile ripristinare lo stdin"
+
+#: common/aix.c:144
+#, c-format
+msgid "unable to open userdb"
+msgstr "impossibile aprire lo userdb"
+
+#: common/aix.c:147
+#, c-format
+msgid "unable to switch to registry \"%s\" for %s"
+msgstr "impossibile passare al registro \"%s\" per %s"
+
+#: common/aix.c:161
+#, c-format
+msgid "unable to restore registry"
+msgstr "impossibile ripristinare il registro"
+
+#: common/alloc.c:82
+#, c-format
+msgid "internal error, tried to emalloc(0)"
+msgstr "errore interno, tentativo di chiamare emalloc(0)"
+
+#: common/alloc.c:99
+#, c-format
+msgid "internal error, tried to emalloc2(0)"
+msgstr "errore interno, tentativo di chiamare emalloc2(0)"
+
+#: common/alloc.c:101
+#, c-format
+msgid "internal error, emalloc2() overflow"
+msgstr "errore interno, overflow di emalloc2()"
+
+#: common/alloc.c:119
+#, c-format
+msgid "internal error, tried to erealloc(0)"
+msgstr "errore interno, tentativo di chiamare erealloc(0)"
+
+#: common/alloc.c:138
+#, c-format
+msgid "internal error, tried to erealloc3(0)"
+msgstr "errore interno, tentativo di chiamare erealloc3(0)"
+
+#: common/alloc.c:140
+#, c-format
+msgid "internal error, erealloc3() overflow"
+msgstr "errore interno, overflow di erealloc3()"
+
+#: compat/strsignal.c:47
+msgid "Unknown signal"
+msgstr "Segnale sconosciuto"
diff --git a/src/po/ja.mo b/src/po/ja.mo
new file mode 100644 (file)
index 0000000..72339ae
Binary files /dev/null and b/src/po/ja.mo differ
diff --git a/src/po/ja.po b/src/po/ja.po
new file mode 100644 (file)
index 0000000..15b5c5d
--- /dev/null
@@ -0,0 +1,740 @@
+# Japanese messages for sudo
+# This file is put in the public domain.
+# Yasuaki Taniguchi <yasuakit@gmail.com>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sudo 1.8.3rc1\n"
+"Report-Msgid-Bugs-To: http://www.sudo.ws/bugs\n"
+"POT-Creation-Date: 2011-09-16 13:37-0400\n"
+"PO-Revision-Date: 2011-10-09 22:21+0900\n"
+"Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
+"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/error.c:82 src/error.c:86
+msgid ": "
+msgstr ": "
+
+#: src/exec.c:125 src/exec_pty.c:573 src/exec_pty.c:880 src/tgetpass.c:224
+#, c-format
+msgid "unable to fork"
+msgstr "fork できません"
+
+#: src/exec.c:246
+#, c-format
+msgid "unable to create sockets"
+msgstr "ソケットを作成できません"
+
+#: src/exec.c:253 src/exec_pty.c:526 src/exec_pty.c:534 src/exec_pty.c:541
+#: src/exec_pty.c:826 src/exec_pty.c:877 src/tgetpass.c:221
+#, c-format
+msgid "unable to create pipe"
+msgstr "パイプを作成できません"
+
+#: src/exec.c:319 src/exec_pty.c:944 src/exec_pty.c:1077
+#, c-format
+msgid "select failed"
+msgstr "select に失敗しました"
+
+#: src/exec.c:387
+#, c-format
+msgid "unable to restore tty label"
+msgstr "tty ラベルを復旧できません"
+
+#: src/exec_pty.c:136
+#, c-format
+msgid "unable to allocate pty"
+msgstr "pty を割り当てられません"
+
+#: src/exec_pty.c:566
+#, c-format
+msgid "unable to set terminal to raw mode"
+msgstr "端末を raw モードに設定できません"
+
+#: src/exec_pty.c:858
+#, c-format
+msgid "unable to set controlling tty"
+msgstr "tty の制御設定ができません"
+
+#: src/exec_pty.c:952
+#, c-format
+msgid "error reading from signal pipe"
+msgstr "シグナルパイプからの読み込み中にエラーが発生しました"
+
+#: src/exec_pty.c:971
+#, c-format
+msgid "error reading from pipe"
+msgstr "パイプからの読み込み中にエラーが発生しました"
+
+#: src/exec_pty.c:987
+#, c-format
+msgid "error reading from socketpair"
+msgstr "ソケットペアからの読み込み中にエラーが発生しました"
+
+#: src/exec_pty.c:991
+#, c-format
+msgid "unexpected reply type on backchannel: %d"
+msgstr "バックチャンネルに関する予期しないリプレイタイプです: %d"
+
+#: src/load_plugins.c:158
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: src/load_plugins.c:164
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: src/load_plugins.c:174
+#, c-format
+msgid "%s must be owned by uid %d"
+msgstr "%s の所有者は uid %d でなければいけません"
+
+#: src/load_plugins.c:178
+#, c-format
+msgid "%s must be only be writable by owner"
+msgstr "%s は所有者のみ書き込み可能で無ければいけません"
+
+#: src/load_plugins.c:185
+#, c-format
+msgid "unable to dlopen %s: %s"
+msgstr "dlopen %s を行うことができません: %s"
+
+#: src/load_plugins.c:190
+#, c-format
+msgid "%s: unable to find symbol %s"
+msgstr "%s: シンボル %s を見つけることができません"
+
+#: src/load_plugins.c:196
+#, c-format
+msgid "%s: unknown policy type %d"
+msgstr "%s: 不明なポリシータイプ %d です"
+
+#: src/load_plugins.c:200
+#, c-format
+msgid "%s: incompatible policy major version %d, expected %d"
+msgstr "%s: 互換性の無いポリシーメジャーバージョン %d です。予期されるのは %d です"
+
+#: src/load_plugins.c:207
+#, c-format
+msgid "%s: only a single policy plugin may be loaded"
+msgstr "%s: 一つのポリシープラグインのみロードされているようです"
+
+#: src/load_plugins.c:225
+#, c-format
+msgid "%s: at least one policy plugin must be specified"
+msgstr "%s: 最低でも一つ以上のポリシープラグインを指定しなければいけません"
+
+#: src/load_plugins.c:230
+#, c-format
+msgid "policy plugin %s does not include a check_policy method"
+msgstr "ポリシープラグイン %s には check_policy メソッドが含まれていません"
+
+#: src/net_ifs.c:155 src/net_ifs.c:164 src/net_ifs.c:176 src/net_ifs.c:185
+#: src/net_ifs.c:295 src/net_ifs.c:319
+#, c-format
+msgid "load_interfaces: overflow detected"
+msgstr "load_interfaces: オーバーフローが検出されました"
+
+#: src/net_ifs.c:224
+#, c-format
+msgid "unable to open socket"
+msgstr "ソケットを開くことができません"
+
+#: src/parse_args.c:180
+#, c-format
+msgid "the argument to -C must be a number greater than or equal to 3"
+msgstr "-C の引数は 3 以上の数値でなければいけません"
+
+#: src/parse_args.c:192
+#, c-format
+msgid "the argument to -D must be between 1 and 9 inclusive"
+msgstr "-D の引数は 1 から 9 の間でなければいけません"
+
+#: src/parse_args.c:273
+#, c-format
+msgid "unknown user: %s"
+msgstr "不明なユーザーです: %s"
+
+#: src/parse_args.c:332
+#, c-format
+msgid "you may not specify both the `-i' and `-s' options"
+msgstr "`-i' と `-s' オプションを同時に指定することはできません"
+
+#: src/parse_args.c:336
+#, c-format
+msgid "you may not specify both the `-i' and `-E' options"
+msgstr "`-i' と `-E' オプションを同時に指定することはできません"
+
+#: src/parse_args.c:346
+#, c-format
+msgid "the `-E' option is not valid in edit mode"
+msgstr "`-E' オプションは編集モードでは無効です"
+
+#: src/parse_args.c:348
+#, c-format
+msgid "you may not specify environment variables in edit mode"
+msgstr "編集モードでは環境変数を指定できません"
+
+#: src/parse_args.c:356
+#, c-format
+msgid "the `-U' option may only be used with the `-l' option"
+msgstr "`-U' オプションは `-l' オプションのみと同時に指定できます"
+
+#: src/parse_args.c:360
+#, c-format
+msgid "the `-A' and `-S' options may not be used together"
+msgstr "`-A' と `-S' オプションは同時に指定することはできません"
+
+#: src/parse_args.c:429 src/sudo.c:435 src/sudo.c:455 src/sudo.c:463
+#: src/sudo.c:473 common/alloc.c:85 common/alloc.c:105 common/alloc.c:123
+#: common/alloc.c:145 common/alloc.c:203 common/alloc.c:217
+#, c-format
+msgid "unable to allocate memory"
+msgstr "メモリ割り当てを行えませんでした"
+
+#: src/parse_args.c:442
+#, c-format
+msgid "sudoedit is not supported on this platform"
+msgstr "sudoedit はこのプラットフォームではサポートされていません"
+
+#: src/parse_args.c:513
+#, c-format
+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:526
+#, c-format
+msgid ""
+"%s - edit files as another user\n"
+"\n"
+msgstr ""
+"%s - 別のユーザーとしてファイルを編集します\n"
+"\n"
+
+#: src/parse_args.c:528
+#, c-format
+msgid ""
+"%s - execute a command as another user\n"
+"\n"
+msgstr ""
+"%s - 別のユーザーとしてコマンドを実行します\n"
+"\n"
+
+#: src/parse_args.c:533
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"オプション:\n"
+
+#: src/parse_args.c:536
+msgid "use helper program for password prompting\n"
+msgstr "パスワード要求のために補助プログラムを使用する\n"
+
+#: src/parse_args.c:539
+msgid "use specified BSD authentication type\n"
+msgstr "指定した BSD 認証タイプを使用する\n"
+
+#: src/parse_args.c:541
+msgid "run command in the background\n"
+msgstr "コマンドをバックグラウンドで実行する\n"
+
+#: src/parse_args.c:543
+msgid "close all file descriptors >= fd\n"
+msgstr "fd 以上のすべてのファイル記述子を閉じる\n"
+
+#: src/parse_args.c:546
+msgid "run command with specified login class\n"
+msgstr "指定したログインクラスでコマンドを実行する\n"
+
+#: src/parse_args.c:549
+msgid "preserve user environment when executing command\n"
+msgstr "コマンドを実行する時にユーザーの環境変数を保護する\n"
+
+#: src/parse_args.c:551
+msgid "edit files instead of running a command\n"
+msgstr "コマンドを実行する代わりにファイルを編集する\n"
+
+#: src/parse_args.c:553
+msgid "execute command as the specified group\n"
+msgstr "指定したグループでコマンドを実行する\n"
+
+#: src/parse_args.c:555
+msgid "set HOME variable to target user's home dir.\n"
+msgstr "HOME 変数を変更先となるユーザーのホームディレクトリに設定する\n"
+
+#: src/parse_args.c:557
+msgid "display help message and exit\n"
+msgstr "ヘルプメッセージを表示して終了する\n"
+
+#: src/parse_args.c:559
+msgid "run a login shell as target user\n"
+msgstr "変更先のユーザーとしてログインシェルを実行する\n"
+
+#: src/parse_args.c:561
+msgid "remove timestamp file completely\n"
+msgstr "タイムスタンプファイルを完全に削除する\n"
+
+#: src/parse_args.c:563
+msgid "invalidate timestamp file\n"
+msgstr "タイムスタンプファイルを無効にする\n"
+
+#: src/parse_args.c:565
+msgid "list user's available commands\n"
+msgstr "ユーザーが使用可能なコマンドを一覧表示する\n"
+
+#: src/parse_args.c:567
+msgid "non-interactive mode, will not prompt user\n"
+msgstr "非対話モードで実行し、ユーザーに入力を求めない\n"
+
+#: src/parse_args.c:569
+msgid "preserve group vector instead of setting to target's\n"
+msgstr "グループベクトルを保護する (変更先のユーザーのものに設定しない)\n"
+
+#: src/parse_args.c:571
+msgid "use specified password prompt\n"
+msgstr "指定したパスワードプロンプトを使用する\n"
+
+#: src/parse_args.c:574 src/parse_args.c:582
+msgid "create SELinux security context with specified role\n"
+msgstr "指定した役割で SELinux セキュリティーコンテキストを作成する\n"
+
+#: src/parse_args.c:577
+msgid "read password from standard input\n"
+msgstr "標準入力からパスワードを読み込む\n"
+
+#: src/parse_args.c:579
+msgid "run a shell as target user\n"
+msgstr "変更先のユーザーとしてシェルを実行する\n"
+
+#: src/parse_args.c:585
+msgid "when listing, list specified user's privileges\n"
+msgstr "一覧表示する時に、指定したユーザーの権限を一覧表示する\n"
+
+#: src/parse_args.c:587
+msgid "run command (or edit file) as specified user\n"
+msgstr "指定したユーザーでコマンドを実行する (またはファイルを編集する)\n"
+
+#: src/parse_args.c:589
+msgid "display version information and exit\n"
+msgstr "バージョン情報を表示して終了する\n"
+
+#: src/parse_args.c:591
+msgid "update user's timestamp without running a command\n"
+msgstr "コマンドを実行せずにユーザーのタイムスタンプを更新する\n"
+
+#: src/parse_args.c:593
+msgid "stop processing command line arguments\n"
+msgstr "コマンドライン引数の処理を終了する\n"
+
+#: src/selinux.c:75
+#, c-format
+msgid "unable to open audit system"
+msgstr "監査システムを開くことができません"
+
+#: src/selinux.c:85
+#, c-format
+msgid "unable to send audit message"
+msgstr "監査メッセージを送ることができません"
+
+#: src/selinux.c:112
+#, c-format
+msgid "unable to fgetfilecon %s"
+msgstr "fgetfilecon %s を行うことができません"
+
+#: src/selinux.c:117
+#, c-format
+msgid "%s changed labels"
+msgstr "%s はラベルを変更しました"
+
+#: src/selinux.c:122
+#, c-format
+msgid "unable to restore context for %s"
+msgstr "%s 用のコンテキストを復元することができません"
+
+#: src/selinux.c:161
+#, c-format
+msgid "unable to open %s, not relabeling tty"
+msgstr "%s を開くことができません。tty の再ラベル付けを行いません"
+
+#: src/selinux.c:170
+#, c-format
+msgid "unable to get current tty context, not relabeling tty"
+msgstr "現在の tty コンテキストを取得できません。 tty の再ラベル付けを行いません"
+
+#: src/selinux.c:177
+#, c-format
+msgid "unable to get new tty context, not relabeling tty"
+msgstr "新しい tty コンテキストを取得できません。 tty の再ラベル付けを行いません"
+
+#: src/selinux.c:184
+#, c-format
+msgid "unable to set new tty context"
+msgstr "新しい tty コンテキストを設定できません"
+
+#: src/selinux.c:194 src/selinux.c:207 src/sudo.c:323
+#, c-format
+msgid "unable to open %s"
+msgstr "%s を開けません"
+
+#: src/selinux.c:249
+#, c-format
+msgid "you must specify a role for type %s"
+msgstr "タイプ %s 用の役割を指定しなければいけません"
+
+#: src/selinux.c:255
+#, c-format
+msgid "unable to get default type for role %s"
+msgstr "役割 %s 用のデフォルトのタイプを取得できません"
+
+#: src/selinux.c:273
+#, c-format
+msgid "failed to set new role %s"
+msgstr "新しい役割 %s の設定に失敗しました"
+
+#: src/selinux.c:277
+#, c-format
+msgid "failed to set new type %s"
+msgstr "新しいタイプ %s の設定に失敗しました"
+
+#: src/selinux.c:286
+#, c-format
+msgid "%s is not a valid context"
+msgstr "%s は有効なコンテキストではありません"
+
+#: src/selinux.c:320
+#, c-format
+msgid "failed to get old_context"
+msgstr "古いコンテキスト (old_context) の取得に失敗しました"
+
+#: src/selinux.c:326
+#, c-format
+msgid "unable to determine enforcing mode."
+msgstr "強制モードを決定することができません。"
+
+#: src/selinux.c:338
+#, c-format
+msgid "unable to setup tty context for %s"
+msgstr "%s 用の tty コンテキストをセットアップできません"
+
+#: src/selinux.c:367
+#, c-format
+msgid "unable to set exec context to %s"
+msgstr "実行コンテキストを %s に設定できません"
+
+#: src/selinux.c:374
+#, c-format
+msgid "unable to set key creation context to %s"
+msgstr "キー作成コンテキストを %s へ設定できません"
+
+#: src/sesh.c:48
+msgid "requires at least one argument"
+msgstr "最低でも一つ以上おの引数が必要です"
+
+#: src/sesh.c:64
+#, c-format
+msgid "unable to execute %s"
+msgstr "%s を実行できません"
+
+#: src/sudo.c:191
+#, c-format
+msgid "must be setuid root"
+msgstr "setuid root されていなければいけません"
+
+#: src/sudo.c:209
+#, c-format
+msgid "Sudo version %s\n"
+msgstr "Sudo バージョン %s\n"
+
+#: src/sudo.c:211
+#, c-format
+msgid "Configure options: %s\n"
+msgstr "configure オプション: %s\n"
+
+#: src/sudo.c:216
+#, c-format
+msgid "fatal error, unable to load plugins"
+msgstr "致命的エラー、プラグインをロードできません"
+
+#: src/sudo.c:224
+#, c-format
+msgid "unable to initialize policy plugin"
+msgstr "ポリシープラグインを初期化できません"
+
+#: src/sudo.c:279
+#, c-format
+msgid "error initializing I/O plugin %s"
+msgstr "I/O プラグイン %s を初期化中にエラーが発生しました"
+
+#: src/sudo.c:300
+#, c-format
+msgid "unexpected sudo mode 0x%x"
+msgstr "予期しない sudo のモード 0x%x です"
+
+#: src/sudo.c:389
+#, c-format
+msgid "unable to get group vector"
+msgstr "グループベクトルを取得できません"
+
+#: src/sudo.c:431
+#, c-format
+msgid "unknown uid %u: who are you?"
+msgstr "不明なユーザーID %u です: 誰ですか?"
+
+#: src/sudo.c:773
+#, c-format
+msgid "resource control limit has been reached"
+msgstr "資源制御の制限の最大値に達しました"
+
+#: src/sudo.c:776
+#, c-format
+msgid "user \"%s\" is not a member of project \"%s\""
+msgstr "ユーザー \"%s\" はプロジェクト \"%s\" のメンバーではありません"
+
+#: src/sudo.c:780
+#, c-format
+msgid "the invoking task is final"
+msgstr "起動しているタスクは最後 (final) です"
+
+#: src/sudo.c:783
+#, c-format
+msgid "could not join project \"%s\""
+msgstr "プロジェクト \"%s\" に参加できません"
+
+#: src/sudo.c:788
+#, c-format
+msgid "no resource pool accepting default bindings exists for project \"%s\""
+msgstr "プロジェクト \"%s\" 用にはデフォルト割り当てとして受け付けられる資源プールがありません"
+
+#: src/sudo.c:792
+#, c-format
+msgid "specified resource pool does not exist for project \"%s\""
+msgstr "プロジェクト \"%s\" 用として指定した資源プールは存在しません"
+
+#: src/sudo.c:796
+#, c-format
+msgid "could not bind to default resource pool for project \"%s\""
+msgstr "プロジェクト \"%s\" 用にデフォルト資源プールを割り当てられませんでした"
+
+#: src/sudo.c:802
+#, c-format
+msgid "setproject failed for project \"%s\""
+msgstr "プロジェクト\"%s\" への setproject に失敗しました"
+
+#: src/sudo.c:804
+#, c-format
+msgid "warning, resource control assignment failed for project \"%s\""
+msgstr "警告、プロジェクト \"%s\" への資源制御割り当てに失敗しました"
+
+#: src/sudo.c:832
+#, c-format
+msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT"
+msgstr "PRIV_LIMIT から PRIV_PROC_EXEC を取り除くことができません"
+
+#: src/sudo.c:938
+#, c-format
+msgid "unknown login class %s"
+msgstr "不明なログインクラス %s です"
+
+#: src/sudo.c:945 src/sudo.c:948
+#, c-format
+msgid "unable to set user context"
+msgstr "ユーザーコンテキストを設定できません"
+
+#: src/sudo.c:959
+#, c-format
+msgid "unable to set effective gid to runas gid %u"
+msgstr "実行時のグループID (gid) %u を実効グループIDに設定できません"
+
+#: src/sudo.c:965
+#, c-format
+msgid "unable to set gid to runas gid %u"
+msgstr "実行時のグループID (gid) %u をグループIDに設定できません"
+
+#: src/sudo.c:973
+#, c-format
+msgid "unable to set supplementary group IDs"
+msgstr "追加のグループIDを設定できません"
+
+#: src/sudo.c:981
+#, c-format
+msgid "unable to set process priority"
+msgstr "プロセス優先度を設定できません"
+
+#: src/sudo.c:989
+#, c-format
+msgid "unable to change root to %s"
+msgstr "root を %s へ変更できません"
+
+#: src/sudo.c:999 src/sudo.c:1005 src/sudo.c:1011
+#, c-format
+msgid "unable to change to runas uid (%u, %u)"
+msgstr "実行時のユーザーID (uid) (%u, %u) へ変更できません"
+
+#: src/sudo.c:1025
+#, c-format
+msgid "unable to change directory to %s"
+msgstr "ディレクトリーを %s に変更できません"
+
+#: src/sudo.c:1092
+#, c-format
+msgid "unexpected child termination condition: %d"
+msgstr "予期しない子プロセスの終了コードです: %d"
+
+#: src/sudo.c:1132
+#, c-format
+msgid "policy plugin %s does not support listing privileges"
+msgstr "ポリシープラグイン %s は権限の一覧表示をサポートしていません"
+
+#: src/sudo.c:1143
+#, c-format
+msgid "policy plugin %s does not support the -v option"
+msgstr "ポリシープラグイン %s は -v オプションをサポートしません"
+
+#: src/sudo.c:1154
+#, c-format
+msgid "policy plugin %s does not support the -k/-K options"
+msgstr "ポリシープラグイン %s は -k/-K オプションをサポートしません"
+
+#: src/sudo_edit.c:108
+#, c-format
+msgid "unable to change uid to root (%u)"
+msgstr "ユーザーID (uid) を root (%u) に変更できません"
+
+#: src/sudo_edit.c:140
+#, c-format
+msgid "plugin error: missing file list for sudoedit"
+msgstr "プラグインエラー: sudoedit 用のファイル一覧がありません"
+
+#: src/sudo_edit.c:168 src/sudo_edit.c:268
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: 通常ファイルではありません"
+
+#: src/sudo_edit.c:202 src/sudo_edit.c:304
+#, c-format
+msgid "%s: short write"
+msgstr "%s: 短い書き込みです"
+
+#: src/sudo_edit.c:269
+#, c-format
+msgid "%s left unmodified"
+msgstr "%s を修正しないままにします"
+
+#: src/sudo_edit.c:282
+#, c-format
+msgid "%s unchanged"
+msgstr "%s を変更しません"
+
+#: src/sudo_edit.c:294 src/sudo_edit.c:315
+#, c-format
+msgid "unable to write to %s"
+msgstr "%s へ書き込むことができません"
+
+#: src/sudo_edit.c:295 src/sudo_edit.c:313 src/sudo_edit.c:316
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "編集セッションの内容が %s 内に残っています"
+
+#: src/sudo_edit.c:312
+#, c-format
+msgid "unable to read temporary file"
+msgstr "一時ファイルを読み込むことができません"
+
+#: src/tgetpass.c:95
+#, c-format
+msgid "no tty present and no askpass program specified"
+msgstr "端末 (tty) が存在せず、パスワードを尋ねる (askpass) プログラムが指定されていません"
+
+#: src/tgetpass.c:104
+#, c-format
+msgid "no askpass program specified, try setting SUDO_ASKPASS"
+msgstr "パスワードを尋ねる (askpass) プログラムが指定されていません。 SUDO_ASKPASS の設定を試みます"
+
+#: src/tgetpass.c:234
+#, c-format
+msgid "unable to set gid to %u"
+msgstr "グループIDを %u に設定できません"
+
+#: src/tgetpass.c:238
+#, c-format
+msgid "unable to set uid to %u"
+msgstr "ユーザーIDを %u に設定できません"
+
+#: src/tgetpass.c:243
+#, c-format
+msgid "unable to run %s"
+msgstr "%s を実行できません"
+
+#: src/utmp.c:263
+#, c-format
+msgid "unable to save stdin"
+msgstr "標準入力を保存できません"
+
+#: src/utmp.c:265
+#, c-format
+msgid "unable to dup2 stdin"
+msgstr "標準入力へ dup2 を実行できません"
+
+#: src/utmp.c:268
+#, c-format
+msgid "unable to restore stdin"
+msgstr "標準入力を復元できません"
+
+#: common/aix.c:144
+#, c-format
+msgid "unable to open userdb"
+msgstr "ユーザーデータベースを開くことができません"
+
+#: common/aix.c:147
+#, c-format
+msgid "unable to switch to registry \"%s\" for %s"
+msgstr "%s 用のレジストリー \"%s\" へ切り替えることができません"
+
+#: common/aix.c:161
+#, c-format
+msgid "unable to restore registry"
+msgstr "レジストリーを復元できません"
+
+#: common/alloc.c:82
+#, c-format
+msgid "internal error, tried to emalloc(0)"
+msgstr "内部エラー、emalloc(0) を試みました"
+
+#: common/alloc.c:99
+#, c-format
+msgid "internal error, tried to emalloc2(0)"
+msgstr "内部エラー、 emalloc2(0) を試みました"
+
+#: common/alloc.c:101
+#, c-format
+msgid "internal error, emalloc2() overflow"
+msgstr "内部エラー、 emalloc2() がオーバーフローしました"
+
+#: common/alloc.c:119
+#, c-format
+msgid "internal error, tried to erealloc(0)"
+msgstr "内部エラー、 erealloc(0) を試みました"
+
+#: common/alloc.c:138
+#, c-format
+msgid "internal error, tried to erealloc3(0)"
+msgstr "内部エラー、 erealloc3(0) を試みました"
+
+#: common/alloc.c:140
+#, c-format
+msgid "internal error, erealloc3() overflow"
+msgstr "内部エラー、 erealloc3() がオーバーフローしました"
+
+#: compat/strsignal.c:47
+msgid "Unknown signal"
+msgstr "不明なシグナルです"
index b2ef767207781af4ffa8f7d535f6440746fe0b43..f0c1c7638aee9cb84459485843bb22bd3d29188f 100644 (file)
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: sudo 1.8.2\n"
+"Project-Id-Version: sudo 1.8.3\n"
 "Report-Msgid-Bugs-To: http://www.sudo.ws/bugs\n"
-"POT-Creation-Date: 2011-08-05 13:34-0400\n"
+"POT-Creation-Date: 2011-09-27 14:07-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -550,52 +550,52 @@ msgstr ""
 msgid "unable to set effective gid to runas gid %u"
 msgstr ""
 
-#: src/sudo.c:964
+#: src/sudo.c:965
 #, c-format
 msgid "unable to set gid to runas gid %u"
 msgstr ""
 
-#: src/sudo.c:971
+#: src/sudo.c:973
 #, c-format
 msgid "unable to set supplementary group IDs"
 msgstr ""
 
-#: src/sudo.c:979
+#: src/sudo.c:981
 #, c-format
 msgid "unable to set process priority"
 msgstr ""
 
-#: src/sudo.c:987
+#: src/sudo.c:989
 #, c-format
 msgid "unable to change root to %s"
 msgstr ""
 
-#: src/sudo.c:997 src/sudo.c:1003 src/sudo.c:1009
+#: src/sudo.c:999 src/sudo.c:1005 src/sudo.c:1011
 #, c-format
 msgid "unable to change to runas uid (%u, %u)"
 msgstr ""
 
-#: src/sudo.c:1023
+#: src/sudo.c:1025
 #, c-format
 msgid "unable to change directory to %s"
 msgstr ""
 
-#: src/sudo.c:1090
+#: src/sudo.c:1092
 #, c-format
 msgid "unexpected child termination condition: %d"
 msgstr ""
 
-#: src/sudo.c:1130
+#: src/sudo.c:1132
 #, c-format
 msgid "policy plugin %s does not support listing privileges"
 msgstr ""
 
-#: src/sudo.c:1141
+#: src/sudo.c:1143
 #, c-format
 msgid "policy plugin %s does not support the -v option"
 msgstr ""
 
-#: src/sudo.c:1152
+#: src/sudo.c:1154
 #, c-format
 msgid "policy plugin %s does not support the -k/-K options"
 msgstr ""
@@ -610,37 +610,37 @@ msgstr ""
 msgid "plugin error: missing file list for sudoedit"
 msgstr ""
 
-#: src/sudo_edit.c:172 src/sudo_edit.c:280
+#: src/sudo_edit.c:168 src/sudo_edit.c:268
 #, c-format
 msgid "%s: not a regular file"
 msgstr ""
 
-#: src/sudo_edit.c:206 src/sudo_edit.c:316
+#: src/sudo_edit.c:202 src/sudo_edit.c:304
 #, c-format
 msgid "%s: short write"
 msgstr ""
 
-#: src/sudo_edit.c:281
+#: src/sudo_edit.c:269
 #, c-format
 msgid "%s left unmodified"
 msgstr ""
 
-#: src/sudo_edit.c:294
+#: src/sudo_edit.c:282
 #, c-format
 msgid "%s unchanged"
 msgstr ""
 
-#: src/sudo_edit.c:306 src/sudo_edit.c:327
+#: src/sudo_edit.c:294 src/sudo_edit.c:315
 #, c-format
 msgid "unable to write to %s"
 msgstr ""
 
-#: src/sudo_edit.c:307 src/sudo_edit.c:325 src/sudo_edit.c:328
+#: src/sudo_edit.c:295 src/sudo_edit.c:313 src/sudo_edit.c:316
 #, c-format
 msgid "contents of edit session left in %s"
 msgstr ""
 
-#: src/sudo_edit.c:324
+#: src/sudo_edit.c:312
 #, c-format
 msgid "unable to read temporary file"
 msgstr ""
@@ -670,17 +670,17 @@ msgstr ""
 msgid "unable to run %s"
 msgstr ""
 
-#: src/utmp.c:263
+#: src/utmp.c:265
 #, c-format
 msgid "unable to save stdin"
 msgstr ""
 
-#: src/utmp.c:265
+#: src/utmp.c:267
 #, c-format
 msgid "unable to dup2 stdin"
 msgstr ""
 
-#: src/utmp.c:268
+#: src/utmp.c:270
 #, c-format
 msgid "unable to restore stdin"
 msgstr ""
index 658d23eeaa588897431fc4596a38c94d5ceb23a0..40cfc2f4cfeb4103bdf33a74965b7326d9752529 100644 (file)
@@ -956,12 +956,14 @@ exec_setup(struct command_details *details, const char *ptyname, int ptyfd)
      */
 #ifdef HAVE_SETEUID
     if (ISSET(details->flags, CD_SET_EGID) && setegid(details->egid)) {
-       warning(_("unable to set effective gid to runas gid %u"), details->egid);
+       warning(_("unable to set effective gid to runas gid %u"),
+           (unsigned int)details->egid);
        goto done;
     }
 #endif
     if (ISSET(details->flags, CD_SET_GID) && setgid(details->gid)) {
-       warning(_("unable to set gid to runas gid %u"), details->gid);
+       warning(_("unable to set gid to runas gid %u"),
+           (unsigned int)details->gid);
        goto done;
     }
 
@@ -1000,8 +1002,8 @@ exec_setup(struct command_details *details, const char *ptyname, int ptyfd)
     }
 #elif HAVE_SETREUID
     if (setreuid(details->uid, details->euid) != 0) {
-       warning(_("unable to change to runas uid (%u, %u)"), details->uid,
-           details->euid);
+       warning(_("unable to change to runas uid (%u, %u)"),
+           (unsigned int)details->uid, (unsigned int)details->euid);
        goto done;
     }
 #else
index cbf4860d3e2cb4e957541c62068a2f95ba2146e2..f3155059fdec9346c726770d3f9698ab4a3f4212 100644 (file)
@@ -230,8 +230,4 @@ int get_net_ifs(char **addrinfo);
 /* setgroups.c */
 int sudo_setgroups(int ngids, const GETGROUPS_T *gids);
 
-#ifndef errno
-extern int errno;
-#endif
-
 #endif /* _SUDO_SUDO_H */
index 0a4d511f80f2f91aa4f7ac251dd0ac9f5793ecf7..af7f07192e423969b8bc7d42ee0613c0a608038c 100644 (file)
@@ -156,11 +156,7 @@ sudo_edit(struct command_details *command_details)
                zero_bytes(&sb, sizeof(sb));            /* new file */
                rc = 0;
            } else {
-#ifdef HAVE_FSTAT
                rc = fstat(ofd, &sb);
-#else
-               rc = stat(tf[j].ofile, &sb);
-#endif
            }
        }
        switch_user(ROOT_UID, user_details.egid,
@@ -217,11 +213,7 @@ sudo_edit(struct command_details *command_details)
         * to determine whether or not a file has been modified.
         */
        (void) touch(tfd, NULL, &tf[j].omtim);
-#ifdef HAVE_FSTAT
        rc = fstat(tfd, &sb);
-#else
-       rc = stat(tf[j].tfile, &sb);
-#endif
        if (!rc)
            mtim_get(&sb, &tf[j].omtim);
        close(tfd);
@@ -265,11 +257,7 @@ sudo_edit(struct command_details *command_details)
        if (seteuid(user_details.uid) != 0)
            error(1, "seteuid(%d)", (int)user_details.uid);
        if ((tfd = open(tf[i].tfile, O_RDONLY, 0644)) != -1) {
-#ifdef HAVE_FSTAT
            rc = fstat(tfd, &sb);
-#else
-           rc = stat(tf[i].tfile, &sb);
-#endif
        }
        if (seteuid(ROOT_UID) != 0)
            error(1, "seteuid(ROOT_UID)");
index 2c18c601188c776af6e63e978b4c9acc57895bc2..7f050aa3ffa194d3648f5259fe84ca70bd6d3596 100644 (file)
  * few programs actually do that.
  */
 
-#ifndef errno
-extern int errno;
-#endif
-
 #define DUMMY_BODY                             \
 {                                              \
     errno = EACCES;                            \
index befbaf6f2cbddac893e615779a3ae74d4f38c396..e3d711bee1cdc41b53ec05a2f6cb65bbeeaedc18 100644 (file)
@@ -96,10 +96,12 @@ utmp_setid(sudo_utmp_t *old, sudo_utmp_t *new)
     size_t idlen;
 
     /* Skip over "tty" in the id if old entry did too. */
-    if (strncmp(line, "tty", 3) == 0) {
-       idlen = MIN(sizeof(old->ut_id), 3);
-       if (strncmp(old->ut_id, "tty", idlen) != 0)
-           line += 3;
+    if (old != NULL) {
+       if (strncmp(line, "tty", 3) == 0) {
+           idlen = MIN(sizeof(old->ut_id), 3);
+           if (strncmp(old->ut_id, "tty", idlen) != 0)
+               line += 3;
+       }
     }
     
     /* Store as much as will fit, skipping parts of the beginning as needed. */