From 6ba3f54741e413f12fdc27fbc8d1ba85f94c64a2 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Sat, 22 Oct 2011 23:41:42 -0600 Subject: [PATCH] Imported Upstream version 1.8.3 --- ChangeLog | 335 +++- INSTALL | 23 +- MANIFEST | 13 + Makefile.in | 2 +- NEWS | 47 + common/setgroups.c | 1 + compat/Makefile.in | 2 +- compat/regress/glob/globtest.c | 6 +- config.h.in | 10 +- configure | 162 +- configure.in | 126 +- doc/TROUBLESHOOTING | 63 +- doc/sudo.cat | 2 +- doc/sudo.man.in | 2 +- doc/sudo_plugin.cat | 2 +- doc/sudo_plugin.man.in | 2 +- doc/sudoers.cat | 11 +- doc/sudoers.ldap.cat | 6 +- doc/sudoers.ldap.man.in | 6 +- doc/sudoers.ldap.pod | 5 + doc/sudoers.man.in | 10 +- doc/sudoers.pod | 8 +- doc/sudoreplay.cat | 2 +- doc/sudoreplay.man.in | 2 +- doc/visudo.cat | 2 +- doc/visudo.man.in | 2 +- include/missing.h | 7 + mkdep.pl | 2 +- mkpkg | 5 +- plugins/sudoers/Makefile.in | 55 +- plugins/sudoers/alias.c | 2 +- plugins/sudoers/auth/API | 7 +- plugins/sudoers/auth/bsdauth.c | 2 +- plugins/sudoers/auth/fwtk.c | 2 +- plugins/sudoers/auth/kerb4.c | 2 +- plugins/sudoers/auth/kerb5.c | 58 +- plugins/sudoers/auth/pam.c | 20 +- plugins/sudoers/auth/passwd.c | 2 +- plugins/sudoers/auth/secureware.c | 2 +- plugins/sudoers/auth/securid.c | 2 +- plugins/sudoers/auth/securid5.c | 3 +- plugins/sudoers/auth/sudo_auth.c | 138 +- plugins/sudoers/auth/sudo_auth.h | 23 +- plugins/sudoers/check.c | 27 +- plugins/sudoers/defaults.c | 36 - plugins/sudoers/defaults.h | 1 - plugins/sudoers/env.c | 9 +- plugins/sudoers/gram.c | 4 +- plugins/sudoers/gram.y | 4 +- plugins/sudoers/iolog_path.c | 116 +- plugins/sudoers/ldap.c | 20 + plugins/sudoers/match.c | 143 -- plugins/sudoers/match_addr.c | 195 ++ plugins/sudoers/parse.c | 2 + plugins/sudoers/po/da.mo | Bin 34539 -> 34340 bytes plugins/sudoers/po/da.po | 317 ++- plugins/sudoers/po/eo.mo | Bin 0 -> 34417 bytes plugins/sudoers/po/eo.po | 1711 ++++++++++++++++ plugins/sudoers/po/fi.mo | Bin 37072 -> 36858 bytes plugins/sudoers/po/fi.po | 317 ++- plugins/sudoers/po/ja.mo | Bin 0 -> 41672 bytes plugins/sudoers/po/ja.po | 1713 +++++++++++++++++ plugins/sudoers/po/pl.mo | Bin 36717 -> 36528 bytes plugins/sudoers/po/pl.po | 304 ++- plugins/sudoers/po/sudoers.pot | 386 ++-- plugins/sudoers/po/uk.mo | Bin 48004 -> 47795 bytes plugins/sudoers/po/uk.po | 317 ++- plugins/sudoers/po/zh_CN.mo | Bin 31289 -> 31509 bytes plugins/sudoers/po/zh_CN.po | 350 ++-- plugins/sudoers/pwutil.c | 51 +- .../regress/iolog_path/check_iolog_path.c | 4 + plugins/sudoers/regress/iolog_path/data | 24 + plugins/sudoers/regress/logging/check_wrap.c | 4 + plugins/sudoers/regress/parser/check_addr.c | 182 ++ plugins/sudoers/regress/parser/check_addr.in | 13 + plugins/sudoers/set_perms.c | 42 +- plugins/sudoers/sudoers.c | 31 +- plugins/sudoers/sudoers.h | 12 +- plugins/sudoers/visudo.c | 77 +- src/exec.c | 8 +- src/exec_pty.c | 2 +- src/get_pty.c | 4 +- src/po/eo.mo | Bin 0 -> 14256 bytes src/po/eo.po | 740 +++++++ src/po/it.mo | Bin 0 -> 15269 bytes src/po/it.po | 742 +++++++ src/po/ja.mo | Bin 0 -> 17515 bytes src/po/ja.po | 740 +++++++ src/po/sudo.pot | 44 +- src/sudo.c | 10 +- src/sudo.h | 4 - src/sudo_edit.c | 12 - src/sudo_noexec.c | 4 - src/utmp.c | 10 +- 94 files changed, 8221 insertions(+), 1695 deletions(-) create mode 100644 plugins/sudoers/match_addr.c create mode 100644 plugins/sudoers/po/eo.mo create mode 100644 plugins/sudoers/po/eo.po create mode 100644 plugins/sudoers/po/ja.mo create mode 100644 plugins/sudoers/po/ja.po create mode 100644 plugins/sudoers/regress/parser/check_addr.c create mode 100644 plugins/sudoers/regress/parser/check_addr.in create mode 100644 src/po/eo.mo create mode 100644 src/po/eo.po create mode 100644 src/po/it.mo create mode 100644 src/po/it.po create mode 100644 src/po/ja.mo create mode 100644 src/po/ja.po diff --git a/ChangeLog b/ChangeLog index 3383f48..98e4a39 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,341 @@ +2011-10-21 Todd C. Miller + + * .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 + + * 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 + + * 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 + + * sudoreplay depends on timestr.lo too; from Mike Frysinger + [ad9ae493205f] <1.8> + +2011-10-04 Todd C. Miller + + * 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 + + * NEWS: + Combine new translations in NEWS item + [0aa07471a5e6] <1.8> + +2011-09-27 Todd C. Miller + + * 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 + + * 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 + + * Don't error out if the group plugin cannot be loaded, just warn. + [e91d9912c9a0] <1.8> + +2011-09-23 Todd C. Miller + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * configure, configure.in: + Assume all modern systems support fstat(2). + [0422b19dced3] <1.8> + +2011-08-30 Todd C. Miller + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * Add new Esperanto translation from translationproject.org + [109ed683b885] <1.8> + +2011-08-19 Todd C. Miller + + * Quiet an innocuous valgrind warning. + [fc453e49f9dd] <1.8> + +2011-08-18 Todd C. Miller + + * 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 * 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 6597087..a2c9cb4 100644 --- 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. diff --git a/MANIFEST b/MANIFEST index b670813..f7c1f90 100644 --- 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 diff --git a/Makefile.in b/Makefile.in index 1f5f713..d367fd2 100644 --- a/Makefile.in +++ b/Makefile.in @@ -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 abcbcc9..dcbbd03 100644 --- 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 diff --git a/common/setgroups.c b/common/setgroups.c index c469d20..2c42816 100644 --- a/common/setgroups.c +++ b/common/setgroups.c @@ -32,6 +32,7 @@ # include #endif /* HAVE_UNISTD_H */ #include +#include #include #include "missing.h" diff --git a/compat/Makefile.in b/compat/Makefile.in index 5d971c6..09a02b2 100644 --- a/compat/Makefile.in +++ b/compat/Makefile.in @@ -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 diff --git a/compat/regress/glob/globtest.c b/compat/regress/glob/globtest.c index 0c966fe..70de67c 100644 --- a/compat/regress/glob/globtest.c +++ b/compat/regress/glob/globtest.c @@ -21,11 +21,9 @@ #endif #include -#define MAX_RESULTS 256 +#include "missing.h" -#ifndef errno -extern int errno; -#endif +#define MAX_RESULTS 256 struct gl_entry { int flags; diff --git a/config.h.in b/config.h.in index a0c7045..7a9c248 100644 --- a/config.h.in +++ b/config.h.in @@ -79,6 +79,10 @@ /* 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 @@ -125,9 +129,6 @@ /* 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 @@ -313,6 +314,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_LIBINTL_H +/* Define to 1 if you have the header file. */ +#undef HAVE_LIBUTIL_H + /* Define to 1 to enable Linux audit support. */ #undef HAVE_LINUX_AUDIT diff --git a/configure b/configure index aa7b4c8..3f89ae3 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for sudo 1.8.2. +# Generated by GNU Autoconf 2.68 for sudo 1.8.3. # # Report bugs to . # @@ -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 @@ -13793,10 +13809,10 @@ fi 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 ;; @@ -14178,17 +14194,7 @@ fi ;; *-*-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 + +" +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" @@ -19432,6 +19453,32 @@ fi 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 + #include + #include +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\\" diff --git a/configure.in b/configure.in index 7212ba8..9de75a6 100644 --- a/configure.in +++ b/configure.in @@ -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 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 +]) + dnl dnl Check for strsignal() or sys_siglist dnl @@ -2848,6 +2857,17 @@ if test ${with_ldap-'no'} != "no"; then #include #include ]], [[(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 + #include + #include ]], [[(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 diff --git a/doc/TROUBLESHOOTING b/doc/TROUBLESHOOTING index 9ed1817..d1cd728 100644 --- a/doc/TROUBLESHOOTING +++ b/doc/TROUBLESHOOTING @@ -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 diff --git a/doc/sudo.cat b/doc/sudo.cat index 30a6aca..ed8a69e 100644 --- a/doc/sudo.cat +++ b/doc/sudo.cat @@ -547,4 +547,4 @@ DDIISSCCLLAAIIMMEERR -1.8.2 August 17, 2011 SUDO(1m) +1.8.3 September 16, 2011 SUDO(1m) diff --git a/doc/sudo.man.in b/doc/sudo.man.in index 435e305..c36d63b 100644 --- a/doc/sudo.man.in +++ b/doc/sudo.man.in @@ -149,7 +149,7 @@ .\" ======================================================================== .\" .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 diff --git a/doc/sudo_plugin.cat b/doc/sudo_plugin.cat index 2638092..20cba64 100644 --- a/doc/sudo_plugin.cat +++ b/doc/sudo_plugin.cat @@ -1030,4 +1030,4 @@ DDIISSCCLLAAIIMMEERR -1.8.2 May 22, 2011 SUDO_PLUGIN(1m) +1.8.3 September 16, 2011 SUDO_PLUGIN(1m) diff --git a/doc/sudo_plugin.man.in b/doc/sudo_plugin.man.in index 2fe44c6..7a161ab 100644 --- a/doc/sudo_plugin.man.in +++ b/doc/sudo_plugin.man.in @@ -139,7 +139,7 @@ .\" ======================================================================== .\" .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 diff --git a/doc/sudoers.cat b/doc/sudoers.cat index 8026596..2459758 100644 --- a/doc/sudoers.cat +++ b/doc/sudoers.cat @@ -1068,10 +1068,6 @@ SSUUDDOOEERRSS OOPPTTIIOONNSS 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 _m_k_t_e_m_p_(_) function. - iolog_file The path name, relative to _i_o_l_o_g___d_i_r, in which to store input/output logs when the _l_o_g___i_n_p_u_t or _l_o_g___o_u_t_p_u_t options are enabled or when the LOG_INPUT or LOG_OUTPUT @@ -1082,6 +1078,11 @@ SSUUDDOOEERRSS OOPPTTIIOONNSS See the _i_o_l_o_g___d_i_r 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 _m_k_t_e_m_p_(_) function. + mailsub Subject of the mail sent to the _m_a_i_l_t_o user. The escape %h will expand to the host name of the machine. Default is *** SECURITY information for %h ***. @@ -1682,4 +1683,4 @@ DDIISSCCLLAAIIMMEERR -1.8.2 August 17, 2011 SUDOERS(4) +1.8.3 September 16, 2011 SUDOERS(4) diff --git a/doc/sudoers.ldap.cat b/doc/sudoers.ldap.cat index 89e122a..2b5e854 100644 --- a/doc/sudoers.ldap.cat +++ b/doc/sudoers.ldap.cat @@ -458,6 +458,10 @@ DDEESSCCRRIIPPTTIIOONN The path to the Kerberos 5 credential cache to use when authenticating with the remote server. + DDEERREEFF never/searching/finding/always + How alias dereferencing is to be performed when searching. See the + _l_d_a_p_._c_o_n_f(4) manual for a full description of this option. + See the ldap.conf entry in the EXAMPLES section. CCoonnffiigguurriinngg nnsssswwiittcchh..ccoonnff @@ -742,4 +746,4 @@ DDIISSCCLLAAIIMMEERR -1.8.2 August 17, 2011 SUDOERS.LDAP(4) +1.8.3 September 16, 2011 SUDOERS.LDAP(4) diff --git a/doc/sudoers.ldap.man.in b/doc/sudoers.ldap.man.in index 215713d..7732d38 100644 --- a/doc/sudoers.ldap.man.in +++ b/doc/sudoers.ldap.man.in @@ -140,7 +140,7 @@ .\" ======================================================================== .\" .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" diff --git a/doc/sudoers.ldap.pod b/doc/sudoers.ldap.pod index b12c6e6..88c6015 100644 --- a/doc/sudoers.ldap.pod +++ b/doc/sudoers.ldap.pod @@ -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 never/searching/finding/always + +How alias dereferencing is to be performed when searching. See the +L manual for a full description of this option. + =back See the C entry in the L section. diff --git a/doc/sudoers.man.in b/doc/sudoers.man.in index faea227..59e9a31 100644 --- a/doc/sudoers.man.in +++ b/doc/sudoers.man.in @@ -148,7 +148,7 @@ .\" ======================================================================== .\" .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 diff --git a/doc/sudoers.pod b/doc/sudoers.pod index b2257ca..0ecb74c 100644 --- a/doc/sudoers.pod +++ b/doc/sudoers.pod @@ -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 Cs will have the Cs replaced -with a unique combination of digits and letters, similar to the -mktemp() function. - =item iolog_file The path name, relative to I, in which to store input/output @@ -1248,6 +1244,10 @@ The default is C<"%{seq}">. See the I 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 Cs will have the Cs replaced with a unique combination +of digits and letters, similar to the mktemp() function. + =item mailsub Subject of the mail sent to the I user. The escape C<%h> diff --git a/doc/sudoreplay.cat b/doc/sudoreplay.cat index f04f5fa..f8751eb 100644 --- a/doc/sudoreplay.cat +++ b/doc/sudoreplay.cat @@ -260,4 +260,4 @@ DDIISSCCLLAAIIMMEERR -1.8.2 May 22, 2011 SUDOREPLAY(1m) +1.8.3 September 16, 2011 SUDOREPLAY(1m) diff --git a/doc/sudoreplay.man.in b/doc/sudoreplay.man.in index f821d76..fcce5ef 100644 --- a/doc/sudoreplay.man.in +++ b/doc/sudoreplay.man.in @@ -139,7 +139,7 @@ .\" ======================================================================== .\" .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 diff --git a/doc/visudo.cat b/doc/visudo.cat index ad117f3..e66435d 100644 --- a/doc/visudo.cat +++ b/doc/visudo.cat @@ -149,4 +149,4 @@ DDIISSCCLLAAIIMMEERR -1.8.2 August 17, 2011 VISUDO(1m) +1.8.3 September 16, 2011 VISUDO(1m) diff --git a/doc/visudo.man.in b/doc/visudo.man.in index a711ea7..0aaa96c 100644 --- a/doc/visudo.man.in +++ b/doc/visudo.man.in @@ -144,7 +144,7 @@ .\" ======================================================================== .\" .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 diff --git a/include/missing.h b/include/missing.h index e7eae3e..7ac9588 100644 --- a/include/missing.h +++ b/include/missing.h @@ -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 diff --git a/mkdep.pl b/mkdep.pl index cc228c2..67acbd4 100755 --- 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 d2aec97..ad4eca3 100755 --- 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" ;; diff --git a/plugins/sudoers/Makefile.in b/plugins/sudoers/Makefile.in index e22abfa..3a0cddc 100644 --- a/plugins/sudoers/Makefile.in +++ b/plugins/sudoers/Makefile.in @@ -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 \ diff --git a/plugins/sudoers/alias.c b/plugins/sudoers/alias.c index 0b2ad0e..20f2645 100644 --- a/plugins/sudoers/alias.c +++ b/plugins/sudoers/alias.c @@ -39,12 +39,12 @@ #ifdef HAVE_UNISTD_H # include #endif /* HAVE_UNISTD_H */ +#include #include "sudoers.h" #include "parse.h" #include "redblack.h" #include -#include /* * Globals diff --git a/plugins/sudoers/auth/API b/plugins/sudoers/auth/API index 24bd510..62c21d0 100644 --- a/plugins/sudoers/auth/API +++ b/plugins/sudoers/auth/API @@ -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" diff --git a/plugins/sudoers/auth/bsdauth.c b/plugins/sudoers/auth/bsdauth.c index ac32a1e..60616e2 100644 --- a/plugins/sudoers/auth/bsdauth.c +++ b/plugins/sudoers/auth/bsdauth.c @@ -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 */ diff --git a/plugins/sudoers/auth/fwtk.c b/plugins/sudoers/auth/fwtk.c index a6e45b2..ebab915 100644 --- a/plugins/sudoers/auth/fwtk.c +++ b/plugins/sudoers/auth/fwtk.c @@ -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 */ diff --git a/plugins/sudoers/auth/kerb4.c b/plugins/sudoers/auth/kerb4.c index 176d6a7..c16739a 100644 --- a/plugins/sudoers/auth/kerb4.c +++ b/plugins/sudoers/auth/kerb4.c @@ -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]; diff --git a/plugins/sudoers/auth/kerb5.c b/plugins/sudoers/auth/kerb5.c index d12e11f..f94865d 100644 --- a/plugins/sudoers/auth/kerb5.c +++ b/plugins/sudoers/auth/kerb5.c @@ -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, diff --git a/plugins/sudoers/auth/pam.c b/plugins/sudoers/auth/pam.c index d66e302..70e916e 100644 --- a/plugins/sudoers/auth/pam.c +++ b/plugins/sudoers/auth/pam.c @@ -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; } diff --git a/plugins/sudoers/auth/passwd.c b/plugins/sudoers/auth/passwd.c index ee0e4d3..1316acd 100644 --- a/plugins/sudoers/auth/passwd.c +++ b/plugins/sudoers/auth/passwd.c @@ -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) diff --git a/plugins/sudoers/auth/secureware.c b/plugins/sudoers/auth/secureware.c index 221889d..8a08da7 100644 --- a/plugins/sudoers/auth/secureware.c +++ b/plugins/sudoers/auth/secureware.c @@ -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; diff --git a/plugins/sudoers/auth/securid.c b/plugins/sudoers/auth/securid.c index 0f53511..2c3796c 100644 --- a/plugins/sudoers/auth/securid.c +++ b/plugins/sudoers/auth/securid.c @@ -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 */ diff --git a/plugins/sudoers/auth/securid5.c b/plugins/sudoers/auth/securid5.c index 45513c9..cf022d2 100644 --- a/plugins/sudoers/auth/securid5.c +++ b/plugins/sudoers/auth/securid5.c @@ -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 */ diff --git a/plugins/sudoers/auth/sudo_auth.c b/plugins/sudoers/auth/sudo_auth.c index f82b5cb..cd04083 100644 --- a/plugins/sudoers/auth/sudo_auth.c +++ b/plugins/sudoers/auth/sudo_auth.c @@ -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 */ } } diff --git a/plugins/sudoers/auth/sudo_auth.h b/plugins/sudoers/auth/sudo_auth.h index 91124bf..995edb7 100644 --- a/plugins/sudoers/auth/sudo_auth.h +++ b/plugins/sudoers/auth/sudo_auth.h @@ -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); diff --git a/plugins/sudoers/check.c b/plugins/sudoers/check.c index 6a36105..4be3b0b 100644 --- a/plugins/sudoers/check.c +++ b/plugins/sudoers/check.c @@ -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(×tampdir, ×tampfile) == -1) - return -1; + if (build_timestamp(×tampdir, ×tampfile) == -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; } diff --git a/plugins/sudoers/defaults.c b/plugins/sudoers/defaults.c index e449b1c..dd404f5 100644 --- a/plugins/sudoers/defaults.c +++ b/plugins/sudoers/defaults.c @@ -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 diff --git a/plugins/sudoers/defaults.h b/plugins/sudoers/defaults.h index 711a7ad..05e2b6f 100644 --- a/plugins/sudoers/defaults.h +++ b/plugins/sudoers/defaults.h @@ -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); diff --git a/plugins/sudoers/env.c b/plugins/sudoers/env.c index 6d65718..d7c1582 100644 --- a/plugins/sudoers/env.c +++ b/plugins/sudoers/env.c @@ -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)) diff --git a/plugins/sudoers/gram.c b/plugins/sudoers/gram.c index 51cf588..8c0a73d 100644 --- a/plugins/sudoers/gram.c +++ b/plugins/sudoers/gram.c @@ -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; diff --git a/plugins/sudoers/gram.y b/plugins/sudoers/gram.y index 0ec084e..f3f0aac 100644 --- a/plugins/sudoers/gram.y +++ b/plugins/sudoers/gram.y @@ -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; diff --git a/plugins/sudoers/iolog_path.c b/plugins/sudoers/iolog_path.c index 7a4ee7e..0f1044f 100644 --- a/plugins/sudoers/iolog_path.c +++ b/plugins/sudoers/iolog_path.c @@ -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; } diff --git a/plugins/sudoers/ldap.c b/plugins/sudoers/ldap.c index a788543..e8e6311 100644 --- a/plugins/sudoers/ldap.c +++ b/plugins/sudoers/ldap.c @@ -117,6 +117,7 @@ #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) { diff --git a/plugins/sudoers/match.c b/plugins/sudoers/match.c index 79176a2..9f15020 100644 --- a/plugins/sudoers/match.c +++ b/plugins/sudoers/match.c @@ -25,7 +25,6 @@ #include #include -#include #include #include #ifdef STDC_HEADERS @@ -57,8 +56,6 @@ #include #include #include -#include -#include #include #ifdef HAVE_DIRENT_H # include @@ -78,7 +75,6 @@ #endif #include "sudoers.h" -#include "interfaces.h" #include "parse.h" #include @@ -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 index 0000000..f4bc731 --- /dev/null +++ b/plugins/sudoers/match_addr.c @@ -0,0 +1,195 @@ +/* + * Copyright (c) 1996, 1998-2005, 2007-2011 + * Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * 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 + +#include +#include +#include +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif /* STDC_HEADERS */ +#ifdef HAVE_STRING_H +# include +#endif /* HAVE_STRING_H */ +#ifdef HAVE_STRINGS_H +# include +#endif /* HAVE_STRINGS_H */ +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#include +#include +#include + +#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; +} diff --git a/plugins/sudoers/parse.c b/plugins/sudoers/parse.c index 303d135..8ce6858 100644 --- a/plugins/sudoers/parse.c +++ b/plugins/sudoers/parse.c @@ -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; diff --git a/plugins/sudoers/po/da.mo b/plugins/sudoers/po/da.mo index a8124adda2b6f7c14dd9499e985cd5df532d5dd9..fd670457cc561589f11dcd602994c2e8ec16a642 100644 GIT binary patch delta 7258 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 delta 7486 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 L+-$>^MFjm1_F$DJ diff --git a/plugins/sudoers/po/da.po b/plugins/sudoers/po/da.po index 024b731..da6368a 100644 --- a/plugins/sudoers/po/da.po +++ b/plugins/sudoers/po/da.po @@ -15,10 +15,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 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 \n" "Language-Team: Danish \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 index 0000000000000000000000000000000000000000..fc6748a9f3a88a46af105ff8fc8820b19a4f3f7e GIT binary patch literal 34417 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 literal 0 HcmV?d00001 diff --git a/plugins/sudoers/po/eo.po b/plugins/sudoers/po/eo.po new file mode 100644 index 0000000..d73936b --- /dev/null +++ b/plugins/sudoers/po/eo.po @@ -0,0 +1,1711 @@ +# Esperanto translations for sudo package. +# This file is put in the public domain. +# Keith Bowes , 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 \n" +"Language-Team: Esperanto \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:" diff --git a/plugins/sudoers/po/fi.mo b/plugins/sudoers/po/fi.mo index 5033c19697c01a9b20ddef3cf6d0b9d428b4b4a6..c4840e9a6e32fee6bcff2985ef090438e7e040ff 100644 GIT binary patch delta 7264 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 delta 7512 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 diff --git a/plugins/sudoers/po/fi.po b/plugins/sudoers/po/fi.po index c4f36f1..6815ff5 100644 --- a/plugins/sudoers/po/fi.po +++ b/plugins/sudoers/po/fi.po @@ -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 \n" "Language-Team: Finnish \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 index 0000000000000000000000000000000000000000..af993f31286d389707e5f8c414316a73667f17cd GIT binary patch literal 41672 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, 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 \n" +"Language-Team: Japanese \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 "認証方法:" diff --git a/plugins/sudoers/po/pl.mo b/plugins/sudoers/po/pl.mo index a804700d21810a39719a7c6055bf1b18ed83d36f..e2fa75839e72773e6f52de7eff2f02ea8b49df2e 100644 GIT binary patch delta 7264 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 GRsI9gsb^XM delta 7487 zcmZwLd0f{;9>?)PQIS#vRFp%1ipcqsTNIH)$Xn6UH1h(%L=jQI$fKY4m8OPnx^`@4 zWv+RowUusa2W{DJ~Q7h)UHPxeE(Pj z&&eR)^@cLk$Cz;3;&03$>ItpXYfKWIEil=!7Y5M21A}ma)1HYfX)nPRT)zp|;`Ru8 zeRg|$ejzsJykg`&9y8tPn2&)RSc7`tX3WAp$UpNVKO(V(%b4z%hHbC{JL6J}#U0oh zk0H-CKcLQQ*1?$G*co$iDn{~rv%_04<|u}8;4<>h1a>s06Q*Jaj>KEB5;cRln2IYM z527FKpODF$-%t|?WzC46hAw;xm63YK?@<|P8D&ftjK>Bz3O!*|#!xB2`!EkrqEhVQE=u7j)Ooe2 z46Va#+=;n(0aGwB+774~HP9uPhFdWQPoOdx!E7~<^ceE56qeAT8Ein!=mpdRk2~$3 z(M`K83#>iS2jg%NDlDU9O;&kMh<`iaPQ%0)?79f*0Wyn9X)@dI=oqxtdg=d>U z@}ZGuVE~q+E}Vl(?G{uDKgCrT!pU4}oTQ_k z^m{f^;hyF-)S6vHZNA`So1#MONqaVS#h0-U{)oy%H%6xnjzDE(2I_%ZQ3E@If!K%! z$uS|Q{sODV)KbyfZ%5tWZPd(vciPeHAoiCTgG%ip)PN7526h4SF@cM9T_tKyY(N+8 zLrv^+%)lF{Om<~9d3yh6Qn{0km#_{4I7>Hr5=n+Rj05pHYN`6MQMiYxMy=sC)L!`* zbzK;*4#_e3jy2ex_A{s@c?-FfIf~tRzVT;TOx6@&TdYOxfrl^zH)Csj1zX_}48k+0 z8(%}EJd|})Ci5{E$D{67jV^o;b^cD&`5&N1sl7@i6x*})TVST+0BlZsG-^Ooun=cs zOFWDk&=;s1UPkTu_Nq-8V!nS-(!Z05-;&G@M+=qJ5 zD%6cOqc&4Lw!>qnfnUKk7?fjY7?0t!2cQN%33Yuf>b{Sl2EHrDV@F<3hc?X*jzPK3 zw;DCGEYtu?QK_Gg8t6LI=GuW8=!d8QeuFyi3TmMKd3Ip2r~&jtoj=AyMK_v(5x5dH z;%%tS^a`>s&6n5@+xD`loPe6q3LK3)P?@|X-+su_Q3J2Q6nq%<`n}_{uV6>op11-# zvq7i}%AEE?sI}UGn#pn0K)*v>*!VVkT`cl(G`FGFcslAn8=U?_PXG6)3AN-^(e+u# zggs`Qt(dvko&%el_CC}Aj$h1Orhwnv5=7h)UfS)BulQ2fXMU4`y9-!!*>|_d)HIyHMxXpa#4i z)9^Xed0%2E&o@6&NydQw_JTZAs*6ys<80J!UWsw|Eb92j7>yUug{=qJ31px)-Eh={ zs!?yr64VFn3DoXCik?&|XPu64K64s*3hKhasF9CHWuz9hIoF~F_5|wu=N;ciW$-+v zqu(I=_e3`8ym{z-{ZJX(HHiF2QF)yXc@A&EfWdaeVW=5*#YikdH!jArKKyNnTKh+a zSa+iaT#w4oNz{O^qGs$jl(&fM+TrUs>2~t36B35m2WFw#Bd`VDgBoeA(|!Q;fJd+f z_o6mu+;F@53z5|{Gcgtqq9$-2ld#pDHj}+kOE=C#MQghh@4zj{n_{kFB4&@UR-j&+ z$1oWWp_c9vDy7jQ?SOk=Gui{O5Jx#~LqFQrP6L4mUQ&3~Ykgn1;PE z9%rKl`V3~_8yJEdVF%h9kX13SAm1tzFxD7e5Hk#w(Z`Von-9?Y z`~Ldz>$dt ziIZ$b%2BC*9<{f=L_a(~iS<{iFVUeJyUT29`(ZZiNvPw`U}rpydZ6EAJK#Jlpk0lc z$jjIle??8CV2a&am8bzcfV$s4$DgN=|2R4l%k2$EVLt6u*b9%KHfPJJb`vFHSK71i zHr$QM%oWt@8&hHT%pBD9yHJ_Agj%Zp)9e>=F?OW=q=!l*m3q_(=TSF~s?hRqi8Jl>g&3>%ert8fz|nW1?eD&jk?24b9X)U>y76mNMuHYud!RB^g4&!bF%$Qr zHq{jj$IgrGgY!`{oQ&#Uhc4Xhcoe(RzT}~z8^en_hLJ|fqgMz zrG4Kgq6T(92H_^By#qVaK8!8!0=B{5Q3GtV%GwnpX%EAmSc`r1{=Y~ifsPxfOvFEE zA2b9z)1Hd)xDK1)LDY@kM=i;B=)$1Yc2lLI5A8wxcn{|jDs5={5fg0F`w?rv^S$Mt z{Cu5gM0`b@Cq5v4B!+O&92`juA~d@|`lg|Z{@1NaE^fkq5gO*afJO0r37WHq5 zcZh979@puui}X?cDSssz6Zu5Cb5pJHC&b-E9DR|fqSxkWq9J_;u|J`*o~ZTK?2kub zEpg82i$iVTPl+*vp6t@k-Bf&urG%TT=v%NkFhY37(lS;%|nDrB9X;l{E@BT z-K5|xUFnY}RC0*D#FNCW1iz=unOuI{EM2I4?ljimB|=}pU~Zr{;uYe3BAT|of?pCF z>xx2xJ-et?5GvD&r-(g7E^$AhqR*8|TcVH{M!2|>-nst}e-62EImf!uXhQTQW)X*pR`jpJ zZwURWxJJ0?OGXtwDIV`%WVUI4u7+4nQu&&gK|Dj05}oOf$18-&B4Qy?Lu7NTGpgvn zLsOl5^v5u#9)ulmoyMvNl%6D^4nVgYfp zBysLO8cne^{!NP;G4LdC({UfNiqy7j6@cY}0r=n7BF-PzsQABj/xa zP`QnEFKmlXczf(`h(PKu6O)O@h{c4;pDiYl^TYnP+h3&j9%3fp%aMQMn}kXx?W1^y zx5aLz-HT9pm>5Vrpax|gk;bt%)c8XgKwl;8G9sM%6rAfEFYw_r7C>hM;=Vnl3rZ&z)s$CPMMt~J%PLAU{r&fJi0RtVxyR`KKE91o+%qP0uPYkd zH>I09DczNvnwgsBPD)Ek@*h&@zP)s2Srs>S7Zg>OX1Y?6l9Sy@oY&ozoROK9wCA(I zUo`!{Bi%pp<(ng&b@w+7Qwu96OfGemOslGXV`F7Ssq0>ir>xA?@#Y9Sx+=@drqtXV ayGA;8Twz>e?`&i1<}DB1^WO5WeE$o~kfN{v diff --git a/plugins/sudoers/po/pl.po b/plugins/sudoers/po/pl.po index 9f94c9e..574b887 100644 --- a/plugins/sudoers/po/pl.po +++ b/plugins/sudoers/po/pl.po @@ -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 \n" "Language-Team: Polish \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" diff --git a/plugins/sudoers/po/sudoers.pot b/plugins/sudoers/po/sudoers.pot index 21f6196..abd875b 100644 --- a/plugins/sudoers/po/sudoers.pot +++ b/plugins/sudoers/po/sudoers.pot @@ -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 \n" "Language-Team: LANGUAGE \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 "" diff --git a/plugins/sudoers/po/uk.mo b/plugins/sudoers/po/uk.mo index 131c776c6ec06b30dfb89c7d02d651c48284ca76..f27723501fd6ec5b8ef43d001b03c7fd5d432653 100644 GIT binary patch delta 7268 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 delta 7506 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, 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 \n" "Language-Team: Ukrainian \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 "не вдалося отримати вектор групи виконання" diff --git a/plugins/sudoers/po/zh_CN.mo b/plugins/sudoers/po/zh_CN.mo index a569b804f07e7be55affc5d7030c52335614c987..daa4ad47205e19a9252cb3b0affe457ba95afc7f 100644 GIT binary patch delta 7112 zcmZwL30PKD9>?*6C~j!7Zz>l7mjq;0K?U3u%iPK}6%mp`C_&TAd8JHqOPyDYZ-?tOiH>ldF5 zmwi0n1UB7ZIQsh-(;nkm8MB*mLaM#lW;yoCRJ1`bM#!S3`;ngKMx%m3&yNKCTDhG41R)fcpk&B9gY6j6*YqlOv6Fe z`PhQ`PV~dqusiO>u6PbZFrbq$eXt9*<@u(70)NaL{^A<50X5S%P)l+G9lVN~X#^)V z!(2?l@z?~HB3U=faV9>8{jn9ZP{wXSWn?Mpx^3vujNhe@jVCY{Bjb%p#mUG$%wwp5 zy@KiZ1?FH&Mx)FOM-3z&HQ=?VelMaPbi~%b$3*G@UEHP3=|cW*rr|*vn4GCb2M?e| zdLEU!mi)!oOe*H$cvNbiKuzES?2X@|_Dnb%VF=!iTB1!DgolxBW6mIdjPK3lKZ`;l zqtF9pA8Rbm7S(SHDsvyBGISkRW1j@~exINQbOlMG z>F(hvEh&t~RyY}%gegM3PHRxRcbjdmMWwnPwIm@_w3&J#&obrM51+=KcoK(VFr(GX zr=T*n5Hry8I0ZfMGt|f~p?#7NLWSQ609TI_yKG^gGnr1u&X+ zn1F4uA8H`C;B7bswRd)+2C@%zpD$6HT?{p13AJ~Ip$2$2YG5AJb?Z(O^;xJ1KINgH znfx8q;VWDBWvgo`qEREyLk;v!RLA>K{i;y!{p+ZKokHEGo$y7} zggu9C;RlSS!GEB8A^|mkJk+L{i(0BG48vX4{isxbgIepKt^R}D{_&{xQK-#YjGEAV zWRG~vN(y>ywxdQ=i|TL!9sC9LAqpAn4sZa*P@jQ1zXWx|=TK|?CMq)rP!p<04cKpp z`{UISb=_Eu)capZA%%v;s1C27QhgNlnq9#5_!}xCkwe|{gHb7+h7K-6O<)Ih#QmrT z)uG;oE2s}t;4pWy55zQ{ZzkG?)u@p_i|Y6eYUD>y8EL@A*N2^`fd!(jkG1BY1~3`< zxS0jmA9vgH7g0;tCeO`S40_^eNT(ntVQXBB8u2Q;8LKfCk0QT2<}z;eVPA}J2eO~< zZ5!IZwAP^p_%mv0n%?RzaTxwVJqb(cpET0G|C?`fQ}QxulYE4l=`qxe>aAB$GiWi& z%}9IHl4YPKa64+o3+?$@bf_Q0&UgjYzvF1PJ#{qs*N0~;4Sb$WF{a~I)EXYc7`%i^ zb=VlUJq?waF{ptqLVsM1%0w0FK0B-@u_g7uvBosV_NeE@c_`@poq~Fe9!0I)W(>s7 zQJb&c>O0OIxq}*Df7F^!N6qjrw*DNZQ-2?Q@hU1)zv6Ukf4lo*=2=7`hlZC?Yktw{ ze}}vIx?m>lIhcqGunShBGII#y@FMC*C3L(oYzs3Om6>&@y|WcH&<|0Y`80;<{r{DM zLqqTc_sf-mO6^qCjhCZRzsq_6HGq25joVJNYl%InkHxOI0(pR`LB4I~Q{+=%+D>wR z|Homf-v6g4Xyyk|9U4$G^_lFxuRTzyosJ2(4Abyc)DoP-WNgk4fd<|iyI}!p30I?o zTWtG2vPqrR4)!j6GtwT@)8HF0?{nj<8e$}YA;3#Tou3`p8 zPICu13Nxu!+WH>!C}kHYD3!6(-5U=@wNJxvd>pkDyD=2MK&ALR>H)#|u6Yen$Hvu3)l zQyGq=UX2UzGHM|A7P{AM!yM|zQA-q2dQPy@b`cZQuXm3n_`1?qe?PQZ^)_jT@d--037h5EzTi|3mcC}<|9 zt^W799WqcenT%SqdA9CFE!8gc$HS=1okY#>C)D0(F~_}69P0W!)RL5-p0^S`O6jZi zg5#)ET}M4Iy4;;fUsT5_sEjPM_4U>oyovUss0W`yW$bs`9$evm7vij$n8f*!735#3 zUqnLyZbYs5-%t;F7d4~fsOv6b5VoG{W+oa_sAr)zX$dOzYplC5g!&=W0P9fqy@a~H z?L6|Y2c*n%Z!{cr;X>4fD^Yu48!96QQP-bGUFUnhdtDHAr=EbJI04hJ4At*h)Dpal zfp`kr;w29S&8+Es_XZtNH_o&5Nf=IjDK>ryQ5|bhd*d_fSq!7zWPzK>NK_^gthb;B zP=cxW7!E?uJ__0ceh;`0>W5ZJ{HyYpyogVOfI2~qvK{SIEkaY`N3fksnq&3w!1$iDtd`=-gUu2G2J+uL1;!g zG^47b)u?$;lC6FSBdd?<U&l>UD%Hx-)5Ub8 z!()_}+Ikb}H;w_e5b8Y=5*EV`jwvRZa>Zc0PMjfn5jyVkwhWDqXWyHjiOEC|(V55~ zy3IGti_twzZfHX=v^rh0#%Uc;5-J#U2n0T(AN%>zy6y+W`$y*y5=1HNZ;{tK2 zvBby5wrOM3**1M=-Xr?cw#>FI!aIm;;t$*QBYsVk6M8Xp+(e(X*qZPqHWLnQIX` z@)gR%i3Z}~#(kxe-s54>8NX9Fq?$dlxO@&}ed-b@>wU_y=Q>f>dp6RW7@p?gm!R>; zq&0}p@eILl*nbZn+Fz&E5A}8S#dCO;NGEhGBpxBI65R+L(}`8Y210M_0pc5C7SWIR zNc(yxg;v}!f>=+vhKMAdCioYDd5UPwIUO-XG!aW(pN>vMq&-K`d`^T>e+Azs_=uZp z#EqkjLJ^TbtR$W_)7-D|5h~k>+lXVttArmnivH8hX)>3HPl<5b-bRfaTZtIkcA0WI z<%jTAZ*4@_@BnJr_AHI&7b1k{W803Zkt5&5w4ptT@?v7BZTk{?csoSKdU|r!&$i~^ zOT;`Pj`kh+7vjd@Pg`GNGz}%hZsKu!a-y{Z=eODNzj3cE@4=sJIhSkFh&S{}PNeV} zCw?W46TNGWL>~7`EI0AxSoKa=v<;62f3Z49liu{6m zVzQk0@|xP1jXurhCOGkPYbM6F@vW)qyxb>z=G@t{7dVCU3k#g0xupda#bu@3lB)x| zw(!d=EGf&M=~T=rbpGFUPC;2|MSgK<;Y_Ev)ag=MrrS&_DlRGPQWKU`6&O%bIIpmz z+$k&Kd_l?FnT0jmb7TDM7(N@~)3j;YoPreZ(Y#?PnTaVqos^zg8L5fM>B-5hM%|V; zrf^sCEdxAq0P{m+eR9-BHSFw!Q&se5fz-E$l3UVey2oO@?k-L|Tl QBlm7=X7lsFymx&616B6V4gdfE delta 6896 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 diff --git a/plugins/sudoers/po/zh_CN.po b/plugins/sudoers/po/zh_CN.po index 55b7206..69be1fe 100644 --- a/plugins/sudoers/po/zh_CN.po +++ b/plugins/sudoers/po/zh_CN.po @@ -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 \n" "Language-Team: Chinese (simplified) \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 组向量" diff --git a/plugins/sudoers/pwutil.c b/plugins/sudoers/pwutil.c index b511472..aac3232 100644 --- a/plugins/sudoers/pwutil.c +++ b/plugins/sudoers/pwutil.c @@ -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; diff --git a/plugins/sudoers/regress/iolog_path/check_iolog_path.c b/plugins/sudoers/regress/iolog_path/check_iolog_path.c index cef22ff..036d86a 100644 --- a/plugins/sudoers/regress/iolog_path/check_iolog_path.c +++ b/plugins/sudoers/regress/iolog_path/check_iolog_path.c @@ -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(); diff --git a/plugins/sudoers/regress/iolog_path/data b/plugins/sudoers/regress/iolog_path/data index e2877b2..dcc3942 100644 --- a/plugins/sudoers/regress/iolog_path/data +++ b/plugins/sudoers/regress/iolog_path/data @@ -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 + diff --git a/plugins/sudoers/regress/logging/check_wrap.c b/plugins/sudoers/regress/logging/check_wrap.c index 2b904d9..33d7b9d 100644 --- a/plugins/sudoers/regress/logging/check_wrap.c +++ b/plugins/sudoers/regress/logging/check_wrap.c @@ -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 index 0000000..184b99f --- /dev/null +++ b/plugins/sudoers/regress/parser/check_addr.c @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2011 Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include + +#include +#include +#include +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif /* STDC_HEADERS */ +#include +#ifdef HAVE_STRING_H +# include +#endif /* HAVE_STRING_H */ +#ifdef HAVE_STRINGS_H +# include +#endif /* HAVE_STRINGS_H */ +#include +#include +#include +#include + +#include +#include +#include + +#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 index 0000000..a3c8612 --- /dev/null +++ b/plugins/sudoers/regress/parser/check_addr.in @@ -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 diff --git a/plugins/sudoers/set_perms.c b/plugins/sudoers/set_perms.c index 84215fb..655ed29 100644 --- a/plugins/sudoers/set_perms.c +++ b/plugins/sudoers/set_perms.c @@ -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; diff --git a/plugins/sudoers/sudoers.c b/plugins/sudoers/sudoers.c index a3816e2..8f3c548 100644 --- a/plugins/sudoers/sudoers.c +++ b/plugins/sudoers/sudoers.c @@ -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 */ } diff --git a/plugins/sudoers/sudoers.h b/plugins/sudoers/sudoers.h index 3c8c6a1..8b51e1d 100644 --- a/plugins/sudoers/sudoers.h +++ b/plugins/sudoers/sudoers.h @@ -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 */ diff --git a/plugins/sudoers/visudo.c b/plugins/sudoers/visudo.c index 43119e2..e37f6d5 100644 --- a/plugins/sudoers/visudo.c +++ b/plugins/sudoers/visudo.c @@ -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); } } diff --git a/src/exec.c b/src/exec.c index 52dbdbb..fab1980 100644 --- a/src/exec.c +++ b/src/exec.c @@ -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); } } } diff --git a/src/exec_pty.c b/src/exec_pty.c index b24d691..60ed7ef 100644 --- a/src/exec_pty.c +++ b/src/exec_pty.c @@ -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(); diff --git a/src/get_pty.c b/src/get_pty.c index 4bac6b9..f303721 100644 --- a/src/get_pty.c +++ b/src/get_pty.c @@ -46,7 +46,9 @@ #include #include -#ifdef HAVE_UTIL_H +#if defined(HAVE_LIBUTIL_H) +# include +#elif defined(HAVE_UTIL_H) # include #endif #ifdef HAVE_PTY_H diff --git a/src/po/eo.mo b/src/po/eo.mo new file mode 100644 index 0000000000000000000000000000000000000000..8ed69061e3bce5c1d97d9304c511e53801b4f9aa GIT binary patch literal 14256 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, 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 \n" +"Language-Team: Esperanto \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 index 0000000000000000000000000000000000000000..9b34a4045f28da64232889bb7cb081659d95637f GIT binary patch literal 15269 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 literal 0 HcmV?d00001 diff --git a/src/po/it.po b/src/po/it.po new file mode 100644 index 0000000..06c6898 --- /dev/null +++ b/src/po/it.po @@ -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 , 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 \n" +"Language-Team: Italian \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 index 0000000000000000000000000000000000000000..72339ae09df3ef54a396bb7c61afefa3518cb1c1 GIT binary patch literal 17515 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 literal 0 HcmV?d00001 diff --git a/src/po/ja.po b/src/po/ja.po new file mode 100644 index 0000000..15b5c5d --- /dev/null +++ b/src/po/ja.po @@ -0,0 +1,740 @@ +# Japanese messages for sudo +# This file is put in the public domain. +# Yasuaki Taniguchi , 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 \n" +"Language-Team: Japanese \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 "不明なシグナルです" diff --git a/src/po/sudo.pot b/src/po/sudo.pot index b2ef767..f0c1c76 100644 --- a/src/po/sudo.pot +++ b/src/po/sudo.pot @@ -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 \n" "Language-Team: LANGUAGE \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 "" diff --git a/src/sudo.c b/src/sudo.c index 658d23e..40cfc2f 100644 --- a/src/sudo.c +++ b/src/sudo.c @@ -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 diff --git a/src/sudo.h b/src/sudo.h index cbf4860..f315505 100644 --- a/src/sudo.h +++ b/src/sudo.h @@ -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 */ diff --git a/src/sudo_edit.c b/src/sudo_edit.c index 0a4d511..af7f071 100644 --- a/src/sudo_edit.c +++ b/src/sudo_edit.c @@ -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)"); diff --git a/src/sudo_noexec.c b/src/sudo_noexec.c index 2c18c60..7f050aa 100644 --- a/src/sudo_noexec.c +++ b/src/sudo_noexec.c @@ -34,10 +34,6 @@ * few programs actually do that. */ -#ifndef errno -extern int errno; -#endif - #define DUMMY_BODY \ { \ errno = EACCES; \ diff --git a/src/utmp.c b/src/utmp.c index befbaf6..e3d711b 100644 --- a/src/utmp.c +++ b/src/utmp.c @@ -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. */ -- 2.47.2