+2021-01-09 Todd C. Miller <Todd.Miller@sudo.ws>
+
+ * .hgtags:
+ Added tag SUDO_1_9_5 for changeset 4059f5520d9d
+ [ee76c8a938de] [tip] <1.9>
+
+ * Merge sudo 1.9.5 from tip
+ [4059f5520d9d] [SUDO_1_9_5] <1.9>
+
+ * plugins/sudoers/po/sudoers.pot, po/sudo.pot:
+ Update .pot files for 1.9.5.
+ [49dae07bda23]
+
+2021-01-08 Todd C. Miller <Todd.Miller@sudo.ws>
+
+ * NEWS, configure, configure.ac, doc/LICENSE, etc/sudo-logsrvd.pp,
+ etc/sudo-python.pp, etc/sudo.pp:
+ Sudo 1.9.5
+ [3a0e500981a8]
+
+ * doc/sudoers.man.in, doc/sudoers.man.in.sed, doc/sudoers.mdoc.in,
+ plugins/sudoers/def_data.c, plugins/sudoers/def_data.h,
+ plugins/sudoers/def_data.in, plugins/sudoers/defaults.c,
+ plugins/sudoers/policy.c:
+ Allow SELinux support to be disabled via the sudoers file. Defaults
+ to true if sudo is built with SELinux support and SELinux is not
+ disabled on the system.
+ [c457eaae8692]
+
+2021-01-06 Todd C. Miller <Todd.Miller@sudo.ws>
+
+ * plugins/python/python_importblocker.c:
+ Add a comment to verify_import() to clarify its purpose.
+ [30ef680f4104]
+
+ * lib/eventlog/eventlog.c, lib/util/arc4random.c,
+ lib/util/sudo_debug.c, plugins/audit_json/audit_json.c,
+ plugins/python/python_convmessage.c, plugins/sudoers/auth/pam.c,
+ plugins/sudoers/getdate.c, plugins/sudoers/getdate.y,
+ plugins/sudoers/goodpath.c, plugins/sudoers/gram.c,
+ plugins/sudoers/gram.h, plugins/sudoers/gram.y,
+ plugins/sudoers/rcstr.c, plugins/sudoers/redblack.c,
+ plugins/sudoers/toke.c, plugins/sudoers/toke.l,
+ plugins/sudoers/toke_util.c, plugins/sudoers/visudo.c,
+ src/exec_common.c, src/sesh.c, src/sudo.c, src/sudo_edit.c:
+ Suppress PVS Studio false positives.
+ [077f46549351]
+
+ * plugins/sudoers/gram.c, plugins/sudoers/gram.y:
+ Plug a memory leak in sudoerserrorf().
+ [a3c14cf0283e]
+
+ * plugins/sudoers/editor.c, plugins/sudoers/fmtsudoers.c,
+ plugins/sudoers/gram.c, plugins/sudoers/gram.y,
+ plugins/sudoers/ldap_util.c, plugins/sudoers/parse.h,
+ plugins/sudoers/starttime.c, plugins/sudoers/tsgetgrpw.c,
+ src/ttyname.c:
+ Quiet a few harmless cppcheck warnings.
+ [ab123790b3fd]
+
+ * src/copy_file.c, src/sudo_edit.c:
+ In sudoedit, use sudo_check_temp_file() for non-SELinux too.
+ [b5d5bd506487]
+
+ * MANIFEST, src/Makefile.in, src/edit_open.c, src/sesh.c,
+ src/sudo_edit.c, src/sudo_edit.h, src/sudo_exec.h:
+ Move safe open code out of sudo_edit.c and into edit_open.c.
+ [108fcca05798]
+
+ * src/Makefile.in, src/edit_open.c, src/sesh.c, src/sudo_edit.c,
+ src/sudo_edit.h:
+ Add directory writability checks for SELinux RBAC sudoedit. These
+ were never added to the SELinux RBAC path.
+ [0d4f28b5a8e2]
+
+ * src/edit_open.c, src/exec.c, src/exec_pty.c, src/sesh.c, src/sudo.c,
+ src/sudo.h, src/sudo_edit.c, src/sudo_edit.h, src/tgetpass.c:
+ Add struct sudo_cred to hold the invoking or runas user credentials.
+ We can use this when we need to pass around credential info instead
+ of the user_details and command_details structs.
+ [20594f3f00c1]
+
+ * src/edit_open.c, src/sesh.c, src/sudo_edit.c, src/sudo_edit.h:
+ Rename run_cred -> cur_cred and stash existing creds in
+ set_tmpdir(). For sudo_edit_open() et al what we need is a copy of
+ the current cred to restore after dir_is_writable() changes to the
+ user cred.
+ [dcfce8a11282]
+
+ * configure, configure.ac, include/sudo_compat.h, lib/util/progname.c:
+ Add setprogname(3) for those without it.
+ [e2f1d1ecedb0]
+
+ * src/sesh.c, src/sudo_edit.c:
+ Split up sesh_sudoedit() so it is organized more like sudo_edit.c.
+ The new sesh_edit_create_tfiles() and sesh_edit_copy_tfiles()
+ functions are analogous to sudo_edit_create_tfiles() and
+ sudo_edit_copy_tfiles(). Also use "sudoedit" in the warning/error
+ messages from sesh_sudoedit(). Otherwise, the user gets a mix of
+ messages from sudoedit and sesh.
+ [5510be4b2129]
+
+ * Makefile.in, lib/eventlog/Makefile.in, lib/iolog/Makefile.in,
+ lib/logsrv/Makefile.in, lib/util/Makefile.in, logsrvd/Makefile.in,
+ plugins/audit_json/Makefile.in, plugins/group_file/Makefile.in,
+ plugins/python/Makefile.in, plugins/sample/Makefile.in,
+ plugins/sample_approval/Makefile.in, plugins/sudoers/Makefile.in,
+ plugins/system_group/Makefile.in, src/Makefile.in:
+ Remove the --force option from the cppcheck args, it causes errors.
+ [57f2ad72e874]
+
+ * include/sudo_util.h, lib/util/progname.c, lib/util/util.exp.in,
+ src/sudo.c:
+ For sudo, only allow "sudo" or "sudoedit" as the program name. The
+ program name is also used when matching Debug lines in sudo.conf. We
+ don't want the user to be able to influence sudo.conf Debug
+ matching. The string "sudoedit" is treated the same as "sudo" in
+ sudo.conf. Problem reported by Matthias Gerstner of SUSE.
+ [1d32c53859f9]
+
+ * lib/iolog/iolog_fileio.c, lib/util/sudo_debug.c,
+ plugins/group_file/getgrent.c, plugins/sudoers/linux_audit.c,
+ plugins/sudoers/tsgetgrpw.c:
+ Check the return value of fcntl() when setting FD_CLOEXEC. This
+ should never fail unless the fd is invalid. Problem reported by
+ Matthias Gerstner of SUSE.
+ [f1ca39a0d870]
+
+ * src/sudo_edit.c:
+ Fix potential directory existing info leak in sudoedit. When
+ creating a new file, sudoedit checks to make sure the parent
+ directory exists so it can provide the user with a sensible error
+ message. However, this could be used to test for the existence of
+ directories not normally accessible to the user by pointing to them
+ with a symbolic link when the parent directory is controlled by the
+ user. Problem reported by Matthias Gerstner of SUSE.
+ [ea19d0073c02]
+
+ * src/copy_file.c, src/sesh.c, src/sudo_edit.c, src/sudo_exec.h:
+ Add security checks before using temp files for SELinux RBAC
+ sudoedit. Otherwise, it may be possible for the user running
+ sudoedit to replace the newly-created temporary files with a
+ symbolic link and have sudoedit set the owner of an arbitrary file.
+ Problem reported by Matthias Gerstner of SUSE.
+ [8fcb36ef422a]
+
+ * plugins/sudoers/po/hr.mo, plugins/sudoers/po/hr.po,
+ plugins/sudoers/po/it.mo, plugins/sudoers/po/it.po,
+ plugins/sudoers/po/ko.mo, plugins/sudoers/po/ko.po,
+ plugins/sudoers/po/sr.mo, plugins/sudoers/po/sr.po,
+ plugins/sudoers/po/sv.mo, plugins/sudoers/po/sv.po, po/ko.mo,
+ po/ko.po, po/sr.mo, po/sr.po, po/sv.mo, po/sv.po:
+ Updated translations from translationproject.org
+ [e68c92c767f1]
+
+2021-01-04 Todd C. Miller <Todd.Miller@sudo.ws>
+
+ * plugins/sudoers/sudoers.c:
+ Use debug_return_int() not debug_return_bool() to return -1. Found
+ by PVS Studio.
+ [f1f67ca51aeb]
+
+ * plugins/sudoers/logging.c:
+ Fix a crash introduced in 1.9.4 when running "sudo -i" as an unknown
+ user.
+ [d1a3f0f4d0f9]
+
+2021-01-03 Todd C. Miller <Todd.Miller@sudo.ws>
+
+ * plugins/sudoers/check.c:
+ Make sure lecture file is a regular file before reading it.
+ [c9c68eff1e45]
+
+2021-01-02 Todd C. Miller <Todd.Miller@sudo.ws>
+
+ * Makefile.in, lib/eventlog/Makefile.in, lib/iolog/Makefile.in,
+ lib/logsrv/Makefile.in, lib/util/Makefile.in, logsrvd/Makefile.in,
+ plugins/audit_json/Makefile.in, plugins/group_file/Makefile.in,
+ plugins/group_file/plugin_test.c, plugins/python/Makefile.in,
+ plugins/sample/Makefile.in, plugins/sample_approval/Makefile.in,
+ plugins/sudoers/Makefile.in, plugins/sudoers/parse.h,
+ plugins/system_group/Makefile.in, src/Makefile.in:
+ Minor fixes pointed out by cppcheck. Also add
+ compareBoolExpressionWithInt to suppression list.
+ [52316819700e]
+
+ * logsrvd/logsrvd.c:
+ Avoid potential use after free with eventlog-only connections.
+ Coverity CID 215884.
+ [cca5cffabe42]
+
+ * src/exec.c:
+ Cannot do direct exec of a command when SELinux RBAC is enabled.
+ [2706b0fc1451]
+
+ * MANIFEST, configure, configure.ac, include/sudo_compat.h,
+ lib/util/Makefile.in, lib/util/pread.c, lib/util/pwrite.c,
+ scripts/mkdep.pl:
+ Add emulation of pread(3) and pwrite(3) for systems without them.
+ This makes it possible to remove some ugly #ifdefs and only affects
+ very old systems.
+ [1c2a31bda598]
+
+ * lib/iolog/iolog_fileio.c, plugins/sudoers/match_command.c,
+ plugins/sudoers/timestamp.c:
+ Remove #ifdefs around code using pread(3) and pwrite(3).
+ [3830fdf650df]
+
+ * plugins/sudoers/Makefile.in:
+ Regen now that ldap.c and sssd.c no longer need gram.h
+ [5cc4e107f301]
+
+2020-12-30 Todd C. Miller <Todd.Miller@sudo.ws>
+
+ * lib/util/fatal.c:
+ Fix deregistration of a callback that is not at the head of the
+ list. The SLIST_FOREACH_PREVPTR macro doesn't work the way I thought
+ it did. Just store our own prev pointer and use that instead.
+ [04c290fe1fcb]
+
+2020-12-21 Todd C. Miller <Todd.Miller@sudo.ws>
+
+ * src/net_ifs.c:
+ Fix the buffer size parameter when serializing the interface list.
+ Problem reported by Matthias Gerstner of SUSE.
+ [b0cae3ac8e46]
+
2020-12-20 Todd C. Miller <Todd.Miller@sudo.ws>
* .hgtags:
Added tag SUDO_1_9_4p2 for changeset 8aed5221ede9
- [a74faf363dbb] [tip] <1.9>
+ [a74faf363dbb] <1.9>
* merge sudo 1.9.4p2 from tip
[8aed5221ede9] [SUDO_1_9_4p2] <1.9>
lib/util/openat.c
lib/util/parseln.c
lib/util/pipe2.c
+lib/util/pread.c
lib/util/progname.c
lib/util/pw_dup.c
+lib/util/pwrite.c
lib/util/reallocarray.c
lib/util/regress/fnmatch/fnm_test.c
lib/util/regress/fnmatch/fnm_test.in
src/Makefile.in
src/conversation.c
src/copy_file.c
+src/edit_open.c
src/env_hooks.c
src/exec.c
src/exec_common.c
src/sudo.c
src/sudo.h
src/sudo_edit.c
+src/sudo_edit.h
src/sudo_exec.h
src/sudo_noexec.c
src/sudo_plugin_int.h
--flag sudo_lbuf_append_quoted:3:c-format --foreign-user
# Default cppcheck options when run from the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# Default splint options when run from the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
+What's new in Sudo 1.9.5
+
+ * Fixed a crash introduced in 1.9.4 when running "sudo -i" as an
+ unknown user. This is related to but distinct from Bug #948.
+
+ * If the "lecture_file" setting is enabled in sudoers, it must now
+ refer to a regular file or a symbolic link to a regular file.
+
+ * Fixed a potential use-after-free bug in sudo_logsrvd when the
+ server shuts down if there are existing connections from clients
+ that are only logging events and not session I/O data.
+
+ * Fixed a buffer size mismatch when serializing the list of IP
+ addresses for configured network interfaces. This bug is not
+ actually exploitable since the allocated buffer is large enough
+ to hold the list of addresses.
+
+ * If sudo is executed with a name other that "sudo" or "sudoedit",
+ it will now fall back to "sudo" as the program name. This affects
+ warning, help and usage messages as well as the matching of Debug
+ lines in the /etc/sudo.conf file. Previously, it was possible
+ for the invoking user to manipulate the program name by setting
+ argv[0] to an arbitrary value when executing sudo.
+
+ * Sudo now checks for failure when setting the close-on-exec flag
+ on open file descriptors. This should never fail but, if it
+ were to, there is the possibility of a file descriptor leak to
+ a child process (such as the command sudo runs).
+
+ * Fixed CVE-2021-23239, a potential information leak in sudoedit
+ that could be used to test for the existence of directories not
+ normally accessible to the user in certain circumstances. When
+ creating a new file, sudoedit checks to make sure the parent
+ directory of the new file exists before running the editor.
+ However, a race condition exists if the invoking user can replace
+ (or create) the parent directory. If a symbolic link is created
+ in place of the parent directory, sudoedit will run the editor
+ as long as the target of the link exists. If the target of the
+ link does not exist, an error message will be displayed. The
+ race condition can be used to test for the existence of an
+ arbitrary directory. However, it _cannot_ be used to write to
+ an arbitrary location.
+
+ * Fixed CVE-2021-23240, a flaw in the temporary file handling of
+ sudoedit's SELinux RBAC support. On systems where SELinux is
+ enabled, a user with sudoedit permissions may be able to set the
+ owner of an arbitrary file to the user-ID of the target user.
+ On Linux kernels that support "protected symlinks", setting
+ /proc/sys/fs/protected_symlinks to 1 will prevent the bug from
+ being exploited. For more information see
+ https://www.sudo.ws/alerts/sudoedit_selinux.html.
+
+ * Added writability checks for sudoedit when SELinux RBAC is in use.
+ This makes sudoedit behavior consistent regardless of whether
+ or not SELinux RBAC is in use. Previously, the "sudoedit_checkdir"
+ setting had no effect for RBAC entries.
+
+ * A new sudoers option "selinux" can be used to disable sudo's
+ SELinux RBAC support.
+
+ * Quieted warnings from PVS Studio, clang analyzer, and cppcheck.
+ Added suppression annotations for PVS Studio false positives.
+
What's new in Sudo 1.9.4p2
* Fixed a bug introduced in sudo 1.9.4p1 which could lead to a crash
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for sudo 1.9.4p2.
+# Generated by GNU Autoconf 2.69 for sudo 1.9.5.
#
# Report bugs to <https://bugzilla.sudo.ws/>.
#
# Identity of this package.
PACKAGE_NAME='sudo'
PACKAGE_TARNAME='sudo'
-PACKAGE_VERSION='1.9.4p2'
-PACKAGE_STRING='sudo 1.9.4p2'
+PACKAGE_VERSION='1.9.5'
+PACKAGE_STRING='sudo 1.9.5'
PACKAGE_BUGREPORT='https://bugzilla.sudo.ws/'
PACKAGE_URL=''
# 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.9.4p2 to adapt to many kinds of systems.
+\`configure' configures sudo 1.9.5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of sudo 1.9.4p2:";;
+ short | recursive ) echo "Configuration of sudo 1.9.5:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-sudo configure 1.9.4p2
+sudo configure 1.9.5
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
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.9.4p2, which was
+It was created by sudo $as_me 1.9.5, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
as_fn_append ac_func_list " fexecve"
as_fn_append ac_func_list " killpg"
as_fn_append ac_func_list " nl_langinfo"
-as_fn_append ac_func_list " pread"
-as_fn_append ac_func_list " pwrite"
as_fn_append ac_func_list " faccessat"
as_fn_append ac_func_list " wordexp"
as_fn_append ac_func_list " getauxval"
-
-
-
-
case "$host_os" in
hpux*)
if test X"$ac_cv_func_pread" = X"yes"; then
fi
;;
esac
+for ac_func in pread
+do :
+ ac_fn_c_check_func "$LINENO" "pread" "ac_cv_func_pread"
+if test "x$ac_cv_func_pread" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_PREAD 1
+_ACEOF
+
+else
+
+ case " $LIBOBJS " in
+ *" pread.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS pread.$ac_objext"
+ ;;
+esac
+
+
+ for _sym in sudo_pread; do
+ COMPAT_EXP="${COMPAT_EXP}${_sym}
+"
+ done
+
+
+fi
+done
+
+for ac_func in pwrite
+do :
+ ac_fn_c_check_func "$LINENO" "pwrite" "ac_cv_func_pwrite"
+if test "x$ac_cv_func_pwrite" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_PWRITE 1
+_ACEOF
+
+else
+
+ case " $LIBOBJS " in
+ *" pwrite.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS pwrite.$ac_objext"
+ ;;
+esac
+
+
+ for _sym in sudo_pwrite; do
+ COMPAT_EXP="${COMPAT_EXP}${_sym}
+"
+ done
+
+
+fi
+done
+
for ac_func in cfmakeraw
do :
ac_fn_c_check_func "$LINENO" "cfmakeraw" "ac_cv_func_cfmakeraw"
cat >>confdefs.h <<_ACEOF
#define HAVE_GETPROGNAME 1
_ACEOF
- for ac_func in setprogname
+
+ for ac_func in setprogname
do :
ac_fn_c_check_func "$LINENO" "setprogname" "ac_cv_func_setprogname"
if test "x$ac_cv_func_setprogname" = xyes; then :
#define HAVE_SETPROGNAME 1
_ACEOF
+else
+
+ for _sym in sudo_setprogname; do
+ COMPAT_EXP="${COMPAT_EXP}${_sym}
+"
+ done
+
fi
done
+
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __progname" >&5
done
+ for _sym in sudo_setprogname; do
+ COMPAT_EXP="${COMPAT_EXP}${_sym}
+"
+ done
+
+
fi
done
# 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.9.4p2, which was
+This file was extended by sudo $as_me 1.9.5, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
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.9.4p2
+sudo config.status 1.9.5
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
dnl
dnl SPDX-License-Identifier: ISC
dnl
-dnl Copyright (c) 1994-1996, 1998-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+dnl Copyright (c) 1994-1996, 1998-2021 Todd C. Miller <Todd.Miller@sudo.ws>
dnl
dnl Permission to use, copy, modify, and distribute this software for any
dnl purpose with or without fee is hereby granted, provided that the above
dnl OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
dnl
AC_PREREQ([2.59])
-AC_INIT([sudo], [1.9.4p2], [https://bugzilla.sudo.ws/], [sudo])
+AC_INIT([sudo], [1.9.5], [https://bugzilla.sudo.ws/], [sudo])
AC_CONFIG_HEADERS([config.h pathnames.h])
AC_CONFIG_SRCDIR([src/sudo.c])
dnl
dnl Function checks
dnl
AC_FUNC_GETGROUPS
-AC_CHECK_FUNCS_ONCE([fexecve killpg nl_langinfo pread pwrite faccessat wordexp getauxval fseeko])
+AC_CHECK_FUNCS_ONCE([fexecve killpg nl_langinfo faccessat wordexp getauxval fseeko])
case "$host_os" in
hpux*)
if test X"$ac_cv_func_pread" = X"yes"; then
fi
;;
esac
+AC_CHECK_FUNCS([pread], [], [
+ AC_LIBOBJ(pread)
+ SUDO_APPEND_COMPAT_EXP(sudo_pread)
+])
+AC_CHECK_FUNCS([pwrite], [], [
+ AC_LIBOBJ(pwrite)
+ SUDO_APPEND_COMPAT_EXP(sudo_pwrite)
+])
AC_CHECK_FUNCS([cfmakeraw], [], [
AC_LIBOBJ(cfmakeraw)
SUDO_APPEND_COMPAT_EXP(sudo_cfmakeraw)
LIBS="$OLIBS"
dnl
-dnl Check for getprogname() or __progname
+dnl Check for getprogname()/setprogname() or __progname
dnl
-AC_CHECK_FUNCS([getprogname], [AC_CHECK_FUNCS([setprogname])], [
+AC_CHECK_FUNCS([getprogname], [
+ AC_CHECK_FUNCS([setprogname], [], [SUDO_APPEND_COMPAT_EXP(sudo_setprogname)])
+], [
AC_MSG_CHECKING([for __progname])
AC_CACHE_VAL(sudo_cv___progname, [
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[extern char *__progname; if (__progname[0] == '\0') return 1;]])], [sudo_cv___progname=yes], [sudo_cv___progname=no])])
fi
AC_MSG_RESULT($sudo_cv___progname)
SUDO_APPEND_COMPAT_EXP(sudo_getprogname)
+ SUDO_APPEND_COMPAT_EXP(sudo_setprogname)
])
dnl
dnl Check for __func__ or __FUNCTION__
Sudo is distributed under the following license:
- Copyright (c) 1994-1996, 1998-2020
+ Copyright (c) 1994-1996, 1998-2021
Todd C. Miller <Todd.Miller@sudo.ws>
Permission to use, copy, modify, and distribute this software for any
.\"
.\" SPDX-License-Identifier: ISC
.\"
-.\" Copyright (c) 1994-1996, 1998-2005, 2007-2020
+.\" Copyright (c) 1994-1996, 1998-2005, 2007-2021
.\" Todd C. Miller <Todd.Miller@sudo.ws>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.nr BA @BAMAN@
.nr LC @LCMAN@
.nr PS @PSMAN@
-.TH "SUDOERS" "@mansectform@" "December 11, 2020" "Sudo @PACKAGE_VERSION@" "File Formats Manual"
+.TH "SUDOERS" "@mansectform@" "January 8, 2020" "Sudo @PACKAGE_VERSION@" "File Formats Manual"
.nh
.if n .ad l
.SH "NAME"
This flag is
\fIoff\fR
by default.
+.if \n(SL \{\
+.TP 18n
+selinux
+If enabled, the user may specify an SELinux role and/or type to use
+when running the command, as permitted by the SELinux policy.
+If SELinux is disabled on the system, this flag has no effect.
+This flag is
+\fIon\fR
+by default.
+.\}
.TP 18n
set_home
If enabled and
.\\}
}
}
+ /^\.TP 18n\nselinux$/,/^\.TP 18n/ {
+ /^\.TP 18n/ {
+ /^\.TP 18n\nselinux$/i\
+.if \\n(SL \\{\\
+ /^\.TP 18n\nselinux$/!i\
+.\\}
+ }
+ }
/^\.TP 18n\nrole$/,/^\.TP 18n/ {
/^\.TP 18n/ {
/^\.TP 18n\nrole$/i\
.\"
.\" SPDX-License-Identifier: ISC
.\"
-.\" Copyright (c) 1994-1996, 1998-2005, 2007-2020
+.\" Copyright (c) 1994-1996, 1998-2005, 2007-2021
.\" Todd C. Miller <Todd.Miller@sudo.ws>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.nr BA @BAMAN@
.nr LC @LCMAN@
.nr PS @PSMAN@
-.Dd December 11, 2020
+.Dd January 8, 2020
.Dt SUDOERS @mansectform@
.Os Sudo @PACKAGE_VERSION@
.Sh NAME
This flag is
.Em off
by default.
+.if \n(SL \{\
+.It selinux
+If enabled, the user may specify an SELinux role and/or type to use
+when running the command, as permitted by the SELinux policy.
+If SELinux is disabled on the system, this flag has no effect.
+This flag is
+.Em on
+by default.
+.\}
.It set_home
If enabled and
.Nm sudo
from sudo clients.
This makes it possible to have all sudo I/O logs on a central server."
vendor="Todd C. Miller"
- copyright="(c) 2019-2020 Todd C. Miller"
+ copyright="(c) 2019-2021 Todd C. Miller"
%if [aix]
# Convert to 4 part version for AIX, including patch level
summary="Sudo Python plugin framework"
description="The sudo Python plugin allows you to extend sudo using Python."
vendor="Todd C. Miller"
- copyright="(c) 2019-2020 Todd C. Miller"
+ copyright="(c) 2019-2021 Todd C. Miller"
%if [aix]
# Convert to 4 part version for AIX, including patch level
The basic philosophy is to give as few privileges as possible but \
still allow people to get their work done."
vendor="Todd C. Miller"
- copyright="(c) 1993-1996,1998-2020 Todd C. Miller"
+ copyright="(c) 1993-1996,1998-2021 Todd C. Miller"
sudoedit_man=`echo ${pp_destdir}$mandir/*/sudoedit.*|sed "s:^${pp_destdir}::"`
sudoedit_man_target=`basename $sudoedit_man | sed 's/edit//'`
# undef getprogname
# define getprogname() sudo_getprogname()
#endif /* HAVE_GETPROGNAME */
+#ifndef HAVE_SETPROGNAME
+sudo_dso_public void sudo_setprogname(const char *name);
+# undef setprogname
+# define setprogname(_a) sudo_setprogname(_a)
+#endif /* HAVE_SETPROGNAME */
#ifndef HAVE_REALLOCARRAY
sudo_dso_public void *sudo_reallocarray(void *ptr, size_t nmemb, size_t size);
# undef reallocarray
# undef pipe2
# define pipe2(_a, _b) sudo_pipe2((_a), (_b))
#endif /* HAVE_PIPE2 */
+#ifndef HAVE_PREAD
+sudo_dso_public int sudo_pread(int fd, void *buf, size_t nbytes, off_t offset);
+# undef pread
+# define pread(_a, _b, _c, _d) sudo_pread((_a), (_b), (_c), (_d))
+#endif /* HAVE_PREAD */
+#ifndef HAVE_PWRITE
+sudo_dso_public int sudo_pwrite(int fd, const void *buf, size_t nbytes, off_t offset);
+# undef pwrite
+# define pwrite(_a, _b, _c, _d) sudo_pwrite((_a), (_b), (_c), (_d))
+#endif /* HAVE_PWRITE */
#ifndef HAVE_UNLINKAT
sudo_dso_public int sudo_unlinkat(int dfd, const char *path, int flag);
# undef unlinkat
/* progname.c */
sudo_dso_public void initprogname(const char *);
+sudo_dso_public void initprogname2(const char *, const char * const *);
/* roundup.c */
sudo_dso_public unsigned int sudo_pow2_roundup_v1(unsigned int len);
SSP_LDFLAGS = @SSP_LDFLAGS@
# cppcheck options, usually set in the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# splint options, usually set in the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
/* Set stdin to read side of the pipe. */
if (dup3(pipein, STDIN_FILENO, 0) == -1) {
- syslog(LOG_ERR, _("unable to dup stdin: %m"));
+ syslog(LOG_ERR, _("unable to dup stdin: %m")); // -V618
sudo_debug_printf(SUDO_DEBUG_ERROR,
"unable to dup stdin: %s", strerror(errno));
sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys);
/* Build up an argv based on the mailer path and flags */
if ((mflags = strdup(evl_conf.mailerflags)) == NULL) {
- syslog(LOG_ERR, _("unable to allocate memory"));
+ syslog(LOG_ERR, _("unable to allocate memory")); // -V618
sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys);
_exit(127);
}
execve(mpath, argv, root_envp);
else
execv(mpath, argv);
- syslog(LOG_ERR, _("unable to execute %s: %m"), mpath);
+ syslog(LOG_ERR, _("unable to execute %s: %m"), mpath); // -V618
sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to execute %s: %s",
mpath, strerror(errno));
_exit(127);
switch (fork()) {
case -1:
/* Error. */
- syslog(LOG_ERR, _("unable to fork: %m"));
+ syslog(LOG_ERR, _("unable to fork: %m")); // -V618
sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to fork: %s",
strerror(errno));
sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys);
closefrom_nodebug(STDERR_FILENO + 1);
if (pipe2(pfd, O_CLOEXEC) == -1) {
- syslog(LOG_ERR, _("unable to open pipe: %m"));
+ syslog(LOG_ERR, _("unable to open pipe: %m")); // -V618
sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to open pipe: %s",
strerror(errno));
sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys);
switch (pid = sudo_debug_fork()) {
case -1:
/* Error. */
- syslog(LOG_ERR, _("unable to fork: %m"));
+ syslog(LOG_ERR, _("unable to fork: %m")); // -V618
sudo_debug_printf(
SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
"unable to fork");
SSP_LDFLAGS = @SSP_LDFLAGS@
# cppcheck options, usually set in the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# splint options, usually set in the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
iol->compressed = iolog_compress;
} else {
/* check for gzip magic number */
- if (read(fd, magic, sizeof(magic)) == ssizeof(magic)) {
+ if (pread(fd, magic, sizeof(magic), 0) == ssizeof(magic)) {
if (magic[0] == gzip_magic[0] && magic[1] == gzip_magic[1])
iol->compressed = true;
}
- (void)lseek(fd, 0, SEEK_SET);
}
- (void)fcntl(fd, F_SETFD, FD_CLOEXEC);
+ if (fcntl(fd, F_SETFD, FD_CLOEXEC) != -1) {
#ifdef HAVE_ZLIB_H
- if (iol->compressed)
- iol->fd.g = gzdopen(fd, mode);
- else
+ if (iol->compressed)
+ iol->fd.g = gzdopen(fd, mode);
+ else
#endif
- iol->fd.f = fdopen(fd, mode);
+ iol->fd.f = fdopen(fd, mode);
+ }
if (iol->fd.v != NULL) {
switch ((flags & O_ACCMODE)) {
case O_WRONLY:
SSP_LDFLAGS = @SSP_LDFLAGS@
# cppcheck options, usually set in the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# splint options, usually set in the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
SHLIB_VERSION = 0:0:0
# cppcheck options, usually set in the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# splint options, usually set in the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
$(CC) -E -o $@ $(CPPFLAGS) $<
pipe2.plog: pipe2.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/pipe2.c --i-file $< --output-file $@
+pread.lo: $(srcdir)/pread.c $(incdir)/sudo_compat.h $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/pread.c
+pread.i: $(srcdir)/pread.c $(incdir)/sudo_compat.h $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+pread.plog: pread.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/pread.c --i-file $< --output-file $@
progname.lo: $(srcdir)/progname.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_util.h \
$(top_builddir)/config.h
$(CC) -E -o $@ $(CPPFLAGS) $<
pw_dup.plog: pw_dup.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/pw_dup.c --i-file $< --output-file $@
+pwrite.lo: $(srcdir)/pwrite.c $(incdir)/sudo_compat.h $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/pwrite.c
+pwrite.i: $(srcdir)/pwrite.c $(incdir)/sudo_compat.h $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+pwrite.plog: pwrite.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/pwrite.c --i-file $< --output-file $@
reallocarray.lo: $(srcdir)/reallocarray.c $(incdir)/sudo_compat.h \
$(top_builddir)/config.h
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/reallocarray.c
}
/* immediately reinit for backtracking resistance */
_rs_init(rs_buf, KEYSZ + IVSZ);
- memset(rs_buf, 0, KEYSZ + IVSZ);
+ memset(rs_buf, 0, KEYSZ + IVSZ); // -V512
rs_have = sizeof(rs_buf) - KEYSZ - IVSZ;
}
int
sudo_fatal_callback_deregister_v1(sudo_fatal_callback_t func)
{
- struct sudo_fatal_callback *cb, **prev;
+ struct sudo_fatal_callback *cb, *prev = NULL;
/* Search for callback and remove if found, dupes are not allowed. */
- SLIST_FOREACH_PREVPTR(cb, prev, &callbacks, entries) {
+ SLIST_FOREACH(cb, &callbacks, entries) {
if (cb->func == func) {
- if (cb == SLIST_FIRST(&callbacks))
+ if (prev == NULL)
SLIST_REMOVE_HEAD(&callbacks, entries);
else
- SLIST_REMOVE_AFTER(*prev, entries);
+ SLIST_REMOVE_AFTER(prev, entries);
free(cb);
return 0;
}
+ prev = cb;
}
return -1;
--- /dev/null
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <errno.h>
+#include <unistd.h>
+
+#include "sudo_compat.h"
+
+#if !defined(HAVE_PREAD) && !defined(HAVE_PREAD64)
+ssize_t
+sudo_pread(int fd, void *buf, size_t nbytes, off_t offset)
+{
+ ssize_t nread;
+ off_t old_offset;
+
+ old_offset = lseek(fd, (off_t)0, SEEK_CUR);
+ if (old_offset == -1 || lseek(fd, offset, SEEK_SET) == -1)
+ return -1;
+
+ nread = read(fd, buf, nbytes);
+ if (lseek(fd, old_offset, SEEK_SET) == -1)
+ return -1;
+
+ return nread;
+}
+#endif /* !HAVE_PREAD && !HAVE_PREAD64 */
#ifdef HAVE_GETPROGNAME
+# ifndef HAVE_SETPROGNAME
+/* Assume __progname if have getprogname(3) but not setprogname(3). */
+extern const char *__progname;
+
void
-initprogname(const char *name)
+sudo_setprogname(const char *name)
+{
+ const char *base = strrchr(name, '/');
+ __progname = base ? base : name;
+}
+# endif
+
+void
+initprogname2(const char *name, const char * const * allowed)
{
-# ifdef HAVE_SETPROGNAME
const char *progname;
+ int i;
/* Fall back on "name" if getprogname() returns an empty string. */
if ((progname = getprogname()) != NULL && *progname != '\0')
if (name[0] == 'l' && name[1] == 't' && name[2] == '-' && name[3] != '\0')
name += 3;
+ /* Check allow list if present (first element is the default). */
+ if (allowed != NULL) {
+ for (i = 0; ; i++) {
+ if (allowed[i] == NULL) {
+ name = allowed[0];
+ break;
+ }
+ if (strcmp(allowed[i], name) == 0)
+ break;
+ }
+ }
+
/* Update internal progname if needed. */
if (name != progname)
setprogname(name);
-# endif
return;
}
static const char *progname = "";
void
-initprogname(const char *name)
+initprogname2(const char *name, const char * const * allowed)
{
+ int i;
# ifdef HAVE___PROGNAME
extern const char *__progname;
if (progname[0] == 'l' && progname[1] == 't' && progname[2] == '-' &&
progname[3] != '\0')
progname += 3;
+
+ /* Check allow list if present (first element is the default). */
+ if (allowed != NULL) {
+ for (i = 0; ; i++) {
+ if (allowed[i] == NULL) {
+ progname = allowed[0];
+ break;
+ }
+ if (strcmp(allowed[i], progname) == 0)
+ break;
+ }
+ }
}
const char *
{
return progname;
}
+
+void
+sudo_setprogname(const char *name)
+{
+ const char *base = strrchr(name, '/');
+ progname = base ? base : name;
+}
#endif /* !HAVE_GETPROGNAME */
+
+void
+initprogname(const char *name)
+{
+ initprogname2(name, NULL);
+}
--- /dev/null
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <errno.h>
+#include <unistd.h>
+
+#include "sudo_compat.h"
+
+#if !defined(HAVE_PWRITE) && !defined(HAVE_PWRITE64)
+ssize_t
+sudo_pwrite(int fd, const void *buf, size_t nbytes, off_t offset)
+{
+ ssize_t nwritten;
+ off_t old_offset;
+
+ old_offset = lseek(fd, (off_t)0, SEEK_CUR);
+ if (old_offset == -1 || lseek(fd, offset, SEEK_SET) == -1)
+ return -1;
+
+ nwritten = write(fd, buf, nbytes);
+ if (lseek(fd, old_offset, SEEK_SET) == -1)
+ return -1;
+
+ return nwritten;
+}
+#endif /* HAVE_PWRITE && !HAVE_PWRITE64 */
}
ignore_result(fchown(output->fd, (uid_t)-1, 0));
}
- (void)fcntl(output->fd, F_SETFD, FD_CLOEXEC);
+ if (fcntl(output->fd, F_SETFD, FD_CLOEXEC) == -1) {
+ sudo_warn_nodebug("%s", output->filename);
+ goto bad;
+ }
if (sudo_debug_fds_size < output->fd) {
/* Bump fds size to the next multiple of 4 * NBBY. */
const int old_size = sudo_debug_fds_size / NBBY;
return output;
oom:
+ // -V:sudo_warn_nodebug:575, 618
sudo_warn_nodebug(NULL);
bad:
if (output != NULL)
@COMPAT_EXP@initprogname
+initprogname2
sudo_conf_askpass_path_v1
sudo_conf_clear_paths_v1
sudo_conf_debug_files_v1
SSP_LDFLAGS = @SSP_LDFLAGS@
# cppcheck options, usually set in the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# splint options, usually set in the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
static void
server_shutdown(struct sudo_event_base *base)
{
- struct connection_closure *closure;
+ struct connection_closure *closure, *next;
struct sudo_event *ev;
struct timespec tv = { 0, 0 };
debug_decl(server_shutdown, SUDO_DEBUG_UTIL);
debug_return;
}
- TAILQ_FOREACH(closure, &connections, entries) {
+ TAILQ_FOREACH_SAFE(closure, &connections, entries, next) {
closure->state = SHUTDOWN;
sudo_ev_del(base, closure->read_ev);
if (closure->log_io) {
}
}
- /* We need a timed event to exit even if clients time out. */
- ev = sudo_ev_alloc(-1, SUDO_EV_TIMEOUT, shutdown_cb, base);
- if (ev != NULL) {
- tv.tv_sec = SHUTDOWN_TIMEO;
- if (sudo_ev_add(base, ev, &tv, false) == -1) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
- "unable to add shutdown event");
+ if (!TAILQ_EMPTY(&connections)) {
+ /* We need a timed event to exit even if clients time out. */
+ ev = sudo_ev_alloc(-1, SUDO_EV_TIMEOUT, shutdown_cb, base);
+ if (ev != NULL) {
+ tv.tv_sec = SHUTDOWN_TIMEO;
+ if (sudo_ev_add(base, ev, &tv, false) == -1) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "unable to add shutdown event");
+ }
}
}
SSP_LDFLAGS = @SSP_LDFLAGS@
# cppcheck options, usually set in the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# splint options, usually set in the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
goto oom;
} else {
json_value.type = JSON_STRING;
- json_value.u.string = signame;
+ json_value.u.string = signame; // -V507
if (!sudo_json_add_value(&json, "signal", &json_value))
goto oom;
}
SSP_LDFLAGS = @SSP_LDFLAGS@
# cppcheck options, usually set in the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# splint options, usually set in the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
{
if (grf == NULL) {
grf = fopen(grfile, "r");
- if (grf != NULL)
- (void)fcntl(fileno(grf), F_SETFD, FD_CLOEXEC);
+ if (grf != NULL) {
+ if (fcntl(fileno(grf), F_SETFD, FD_CLOEXEC) == -1) {
+ fclose(grf);
+ grf = NULL;
+ }
+ }
} else {
rewind(grf);
}
if (grf == NULL) {
if ((grf = fopen(grfile, "r")) == NULL)
return NULL;
- (void)fcntl(fileno(grf), F_SETFD, FD_CLOEXEC);
+ if (fcntl(fileno(grf), F_SETFD, FD_CLOEXEC) == -1) {
+ fclose(grf);
+ return NULL;
+ }
} else {
rewind(grf);
}
if (grf == NULL) {
if ((grf = fopen(grfile, "r")) == NULL)
return NULL;
- (void)fcntl(fileno(grf), F_SETFD, FD_CLOEXEC);
+ if (fcntl(fileno(grf), F_SETFD, FD_CLOEXEC) == -1) {
+ fclose(grf);
+ return NULL;
+ }
} else {
rewind(grf);
}
if (SUDO_API_VERSION_GET_MAJOR(group_plugin->version) != GROUP_API_VERSION_MAJOR) {
fprintf(stderr,
- "%s: incompatible group plugin major version %d, expected %d\n",
+ "%s: incompatible group plugin major version %u, expected %d\n",
path, SUDO_API_VERSION_GET_MAJOR(group_plugin->version),
GROUP_API_VERSION_MAJOR);
return -1;
SSP_LDFLAGS = @SSP_LDFLAGS@
# cppcheck options, usually set in the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# splint options, usually set in the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
goto cleanup;
py_object_set_attr_number(py_self, "timeout", conv_message.timeout);
- if (PyErr_Occurred())
+ if (PyErr_Occurred()) // -V547
goto cleanup;
py_object_set_attr_string(py_self, "msg", conv_message.msg);
- if (PyErr_Occurred())
+ if (PyErr_Occurred()) // -V547
goto cleanup;
cleanup:
debug_return_int(SUDO_RC_ERROR);
conv_message->timeout = (int)py_object_get_optional_attr_number(py_conv_message, "timeout");
- if (PyErr_Occurred())
+ if (PyErr_Occurred()) // -V547
debug_return_int(SUDO_RC_ERROR);
conv_message->msg = py_object_get_optional_attr_string(py_conv_message, "msg");
- if (PyErr_Occurred())
+ if (PyErr_Occurred()) // -V547
debug_return_int(SUDO_RC_ERROR);
debug_return_int(SUDO_RC_OK);
{
debug_decl(_verify_import, PYTHON_DEBUG_INTERNAL);
+ // Check mode and owner similar to what we do in open_sudoers().
+ // This is to help avoid loading a potentially insecure module.
struct stat sb;
if (stat(file_path, &sb) != 0) {
PyErr_Format(PyExc_ImportError, "Failed to stat file '%s'", file_path);
SSP_LDFLAGS = @SSP_LDFLAGS@
# cppcheck options, usually set in the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# splint options, usually set in the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
SSP_LDFLAGS = @SSP_LDFLAGS@
# cppcheck options, usually set in the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# splint options, usually set in the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
SSP_LDFLAGS = @SSP_LDFLAGS@
# cppcheck options, usually set in the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# splint options, usually set in the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
$(CC) -E -o $@ $(CPPFLAGS) $<
kerb5.plog: kerb5.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(authdir)/kerb5.c --i-file $< --output-file $@
-ldap.lo: $(srcdir)/ldap.c $(devdir)/def_data.h $(devdir)/gram.h \
- $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
- $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_dso.h \
- $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ldap.lo: $(srcdir)/ldap.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_dso.h $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
$(incdir)/sudo_gettext.h $(incdir)/sudo_lbuf.h \
$(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
$(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
$(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \
$(top_builddir)/config.h $(top_builddir)/pathnames.h
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/ldap.c
-ldap.i: $(srcdir)/ldap.c $(devdir)/def_data.h $(devdir)/gram.h \
- $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
- $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_dso.h \
- $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ldap.i: $(srcdir)/ldap.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_dso.h $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
$(incdir)/sudo_gettext.h $(incdir)/sudo_lbuf.h \
$(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
$(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
$(CC) -E -o $@ $(CPPFLAGS) $<
solaris_audit.plog: solaris_audit.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/solaris_audit.c --i-file $< --output-file $@
-sssd.lo: $(srcdir)/sssd.c $(devdir)/def_data.h $(devdir)/gram.h \
- $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
- $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_dso.h \
- $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+sssd.lo: $(srcdir)/sssd.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_dso.h $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
$(incdir)/sudo_gettext.h $(incdir)/sudo_lbuf.h \
$(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
$(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
$(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
$(top_builddir)/pathnames.h
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/sssd.c
-sssd.i: $(srcdir)/sssd.c $(devdir)/def_data.h $(devdir)/gram.h \
- $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
- $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_dso.h \
- $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+sssd.i: $(srcdir)/sssd.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_dso.h $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
$(incdir)/sudo_gettext.h $(incdir)/sudo_lbuf.h \
$(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
$(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
if (ttypath == NULL)
ttypath = "";
#endif
- if (ttypath != NULL) {
+ if (ttypath != NULL) { // -V547
rc = pam_set_item(pamh, PAM_TTY, ttypath);
if (rc != PAM_SUCCESS) {
errstr = sudo_pam_strerror(pamh, rc);
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <fcntl.h>
#include <time.h>
#include <errno.h>
#include <pwd.h>
static bool
display_lecture(int status)
{
- FILE *fp;
- char buf[BUFSIZ];
- ssize_t nread;
struct sudo_conv_message msg;
struct sudo_conv_reply repl;
+ char buf[BUFSIZ];
+ struct stat sb;
+ ssize_t nread;
+ int fd;
debug_decl(lecture, SUDOERS_DEBUG_AUTH);
if (def_lecture == never ||
memset(&msg, 0, sizeof(msg));
memset(&repl, 0, sizeof(repl));
- if (def_lecture_file && (fp = fopen(def_lecture_file, "r")) != NULL) {
- while ((nread = fread(buf, sizeof(char), sizeof(buf) - 1, fp)) != 0) {
- buf[nread] = '\0';
- msg.msg_type = SUDO_CONV_ERROR_MSG|SUDO_CONV_PREFER_TTY;
- msg.msg = buf;
- sudo_conv(1, &msg, &repl, NULL);
+ if (def_lecture_file) {
+ fd = open(def_lecture_file, O_RDONLY|O_NONBLOCK);
+ if (fd != -1 && fstat(fd, &sb) == 0) {
+ if (S_ISREG(sb.st_mode)) {
+ (void) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK);
+ while ((nread = read(fd, buf, sizeof(buf) - 1)) > 0) {
+ buf[nread] = '\0';
+ msg.msg_type = SUDO_CONV_ERROR_MSG|SUDO_CONV_PREFER_TTY;
+ msg.msg = buf;
+ sudo_conv(1, &msg, &repl, NULL);
+ }
+ close(fd);
+ if (nread == -1) {
+ log_warning(SLOG_RAW_MSG,
+ N_("error reading lecture file %s"), def_lecture_file);
+ debug_return_bool(false);
+ }
+ debug_return_bool(true);
+ } else {
+ log_warningx(SLOG_RAW_MSG,
+ N_("ignoring lecture file %s: not a regular file"),
+ def_lecture_file);
+ }
+ } else {
+ log_warning(SLOG_RAW_MSG|SLOG_NO_STDERR, N_("unable to open %s"),
+ def_lecture_file);
}
- fclose(fp);
- } else {
- msg.msg_type = SUDO_CONV_ERROR_MSG|SUDO_CONV_PREFER_TTY;
- msg.msg = _("\n"
- "We trust you have received the usual lecture from the local System\n"
- "Administrator. It usually boils down to these three things:\n\n"
- " #1) Respect the privacy of others.\n"
- " #2) Think before you type.\n"
- " #3) With great power comes great responsibility.\n\n");
- sudo_conv(1, &msg, &repl, NULL);
+ if (fd != -1)
+ close(fd);
}
+
+ /* Default sudo lecture. */
+ msg.msg_type = SUDO_CONV_ERROR_MSG|SUDO_CONV_PREFER_TTY;
+ msg.msg = _("\n"
+ "We trust you have received the usual lecture from the local System\n"
+ "Administrator. It usually boils down to these three things:\n\n"
+ " #1) Respect the privacy of others.\n"
+ " #2) Think before you type.\n"
+ " #3) With great power comes great responsibility.\n\n");
+ sudo_conv(1, &msg, &repl, NULL);
debug_return_bool(true);
}
N_("The format of logs to produce: %s"),
def_data_log_format,
}, {
+ "selinux", T_FLAG,
+ N_("Enable SELinux RBAC support"),
+ NULL,
+ }, {
NULL, 0, NULL
}
};
#define def_runchroot (sudo_defs_table[I_RUNCHROOT].sd_un.str)
#define I_LOG_FORMAT 130
#define def_log_format (sudo_defs_table[I_LOG_FORMAT].sd_un.tuple)
+#define I_SELINUX 131
+#define def_selinux (sudo_defs_table[I_SELINUX].sd_un.flag)
enum def_tuple {
never,
T_TUPLE
"The format of logs to produce: %s"
sudo json
+selinux
+ T_FLAG
+ "Enable SELinux RBAC support"
#else
def_pam_session = true;
#endif
+#ifdef HAVE_SELINUX
+ def_selinux = true;
+#endif
#ifdef HAVE_INNETGR
def_use_netgroups = true;
#endif
int *argc_out, char ***argv_out, char * const *allowlist)
{
char **nargv = NULL, *editor = NULL, *editor_path = NULL;
- const char *cp, *ep, *tmp;
+ const char *tmp, *cp, *ep = NULL;
const char *edend = ed + edlen;
struct stat user_editor_sb;
int nargc;
struct defaults *d;
debug_decl(sudoers_defaults_list_to_tags, SUDOERS_DEBUG_UTIL);
- TAGS_INIT(*tags);
+ TAGS_INIT(tags);
if (defs != NULL) {
TAILQ_FOREACH(d, defs, entries) {
if (!sudoers_defaults_to_tags(d->var, d->val, d->op, tags)) {
/* SUPPRESS 287 on yaccpar_sccsid *//* Unused static variable */
/* SUPPRESS 288 on yyerrlab *//* Label unused */
+/* PVS Studio suppression*/
+/* -V::1037, 1042*/
+
#include <config.h>
#include <stdio.h>
static int yylex(void);
int yyparse(void);
-#line 94 "getdate.y"
+#line 97 "getdate.y"
#ifndef YYSTYPE_DEFINED
#define YYSTYPE_DEFINED
typedef union {
enum _MERIDIAN Meridian;
} YYSTYPE;
#endif /* YYSTYPE_DEFINED */
-#line 112 "getdate.c"
+#line 115 "getdate.c"
#define tAGO 257
#define tDAY 258
#define tDAYZONE 259
#define tZONE 268
#define tDST 269
#define YYERRCODE 256
-#if defined(__cplusplus) || defined(__STDC__)
const short yylhs[] =
-#else
-short yylhs[] =
-#endif
{ -1,
0, 0, 2, 2, 2, 2, 2, 2, 3, 3,
3, 3, 3, 4, 4, 4, 6, 6, 6, 5,
9, 9, 9, 9, 9, 9, 9, 9, 8, 1,
1,
};
-#if defined(__cplusplus) || defined(__STDC__)
const short yylen[] =
-#else
-short yylen[] =
-#endif
{ 2,
0, 2, 1, 1, 1, 1, 1, 1, 2, 4,
4, 6, 6, 1, 1, 2, 1, 2, 2, 3,
2, 1, 2, 2, 1, 2, 2, 1, 1, 0,
1,
};
-#if defined(__cplusplus) || defined(__STDC__)
const short yydefred[] =
-#else
-short yydefred[] =
-#endif
{ 1,
0, 0, 15, 32, 0, 38, 35, 0, 0, 0,
2, 3, 4, 5, 6, 7, 8, 0, 18, 0,
0, 0, 16, 28, 0, 23, 27, 22, 0, 0,
25, 41, 11, 0, 10, 0, 0, 21, 13, 12,
};
-#if defined(__cplusplus) || defined(__STDC__)
const short yydgoto[] =
-#else
-short yydgoto[] =
-#endif
{ 1,
45, 11, 12, 13, 14, 15, 16, 17, 18,
};
-#if defined(__cplusplus) || defined(__STDC__)
const short yysindex[] =
-#else
-short yysindex[] =
-#endif
{ 0,
-249, -38, 0, 0, -260, 0, 0, -240, -47, -248,
0, 0, 0, 0, 0, 0, 0, -237, 0, -18,
0, 0, 0, 0, 0, 0, -262, 0, 0, -239,
-238, -236, 0, 0, -235, 0, 0, 0, -56, -19,
0, 0, 0, -234, 0, -232, -258, 0, 0, 0,};
-#if defined(__cplusplus) || defined(__STDC__)
const short yyrindex[] =
-#else
-short yyrindex[] =
-#endif
{ 0,
0, 1, 0, 0, 0, 0, 0, 0, 69, 12,
0, 0, 0, 0, 0, 0, 0, 23, 0, 34,
0, 0, 0, 0, 0, 0, 67, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 56, 45,
0, 0, 0, 0, 0, 0, 56, 0, 0, 0,};
-#if defined(__cplusplus) || defined(__STDC__)
const short yygindex[] =
-#else
-short yygindex[] =
-#endif
{ 0,
-17, 0, 0, 0, 0, 0, 0, 0, 0,
};
#define YYTABLESIZE 337
-#if defined(__cplusplus) || defined(__STDC__)
const short yytable[] =
-#else
-short yytable[] =
-#endif
{ 32,
17, 44, 42, 36, 37, 19, 20, 49, 2, 3,
31, 14, 4, 5, 6, 7, 8, 9, 10, 34,
40, 0, 40, 40, 26, 26, 0, 39, 26, 26,
26, 26, 0, 0, 26, 39, 39,
};
-#if defined(__cplusplus) || defined(__STDC__)
const short yycheck[] =
-#else
-short yycheck[] =
-#endif
{ 47,
0, 58, 261, 266, 267, 44, 267, 266, 258, 259,
58, 0, 262, 263, 264, 265, 266, 267, 268, 257,
#endif
#define YYMAXTOKEN 269
#if YYDEBUG
-#if defined(__cplusplus) || defined(__STDC__)
const char * const yyname[] =
-#else
-char *yyname[] =
-#endif
{
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"','",0,0,"'/'",0,0,0,0,0,0,0,0,0,0,"':'",0,0,0,0,0,0,0,0,0,
"tDAYZONE","tID","tMERIDIAN","tMINUTE_UNIT","tMONTH","tMONTH_UNIT","tSEC_UNIT",
"tSNUMBER","tUNUMBER","tZONE","tDST",
};
-#if defined(__cplusplus) || defined(__STDC__)
const char * const yyrule[] =
-#else
-char *yyrule[] =
-#endif
{"$accept : spec",
"spec :",
"spec : spec item",
YYSTYPE *yyvs;
unsigned int yystacksize;
int yyparse(void);
-#line 313 "getdate.y"
+#line 316 "getdate.y"
/* Month and day table. */
static TABLE const MonthDayTable[] = {
/* NOTREACHED */
}
#endif /* TEST */
-#line 951 "getdate.c"
+#line 954 "getdate.c"
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
-#if defined(__cplusplus) || defined(__STDC__)
static int yygrowstack(void)
-#else
-static int yygrowstack()
-#endif
{
unsigned int newsize;
long sslen;
#ifdef SIZE_MAX
#define YY_SIZE_MAX SIZE_MAX
#else
-#ifdef __STDC__
#define YY_SIZE_MAX 0xffffffffU
-#else
-#define YY_SIZE_MAX (unsigned int)0xffffffff
-#endif
#endif
if (YY_SIZE_MAX / newsize < sizeof *newss)
goto bail;
sslen = yyssp - yyss;
- newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) :
- (short *)malloc(newsize * sizeof *newss); /* overflow check above */
+ newss = yyss ? realloc(yyss, newsize * sizeof *newss) :
+ malloc(newsize * sizeof *newss); /* overflow check above */
if (newss == NULL)
goto bail;
yyss = newss;
yyssp = newss + sslen;
- newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) :
- (YYSTYPE *)malloc(newsize * sizeof *newvs); /* overflow check above */
+ newvs = yyvs ? realloc(yyvs, newsize * sizeof *newvs) :
+ malloc(newsize * sizeof *newvs); /* overflow check above */
if (newvs == NULL)
goto bail;
yyvs = newvs;
yysslim = yyss + newsize - 1;
return 0;
bail:
- if (yyss)
- free(yyss);
- if (yyvs)
- free(yyvs);
+ free(yyss);
+ free(yyvs);
yyss = yyssp = NULL;
yyvs = yyvsp = NULL;
yystacksize = 0;
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
int
-#if defined(__cplusplus) || defined(__STDC__)
yyparse(void)
-#else
-yyparse()
-#endif
{
int yym, yyn, yystate;
#if YYDEBUG
-#if defined(__cplusplus) || defined(__STDC__)
const char *yys;
-#else /* !(defined(__cplusplus) || defined(__STDC__)) */
- char *yys;
-#endif /* !(defined(__cplusplus) || defined(__STDC__)) */
if ((yys = getenv("YYDEBUG")))
{
switch (yyn)
{
case 3:
-#line 112 "getdate.y"
+#line 115 "getdate.y"
{
yyHaveTime++;
}
break;
case 4:
-#line 115 "getdate.y"
+#line 118 "getdate.y"
{
yyHaveZone++;
}
break;
case 5:
-#line 118 "getdate.y"
+#line 121 "getdate.y"
{
yyHaveDate++;
}
break;
case 6:
-#line 121 "getdate.y"
+#line 124 "getdate.y"
{
yyHaveDay++;
}
break;
case 7:
-#line 124 "getdate.y"
+#line 127 "getdate.y"
{
yyHaveRel++;
}
break;
case 9:
-#line 130 "getdate.y"
+#line 133 "getdate.y"
{
yyHour = yyvsp[-1].Number;
yyMinutes = 0;
}
break;
case 10:
-#line 136 "getdate.y"
+#line 139 "getdate.y"
{
yyHour = yyvsp[-3].Number;
yyMinutes = yyvsp[-1].Number;
}
break;
case 11:
-#line 142 "getdate.y"
+#line 145 "getdate.y"
{
yyHour = yyvsp[-3].Number;
yyMinutes = yyvsp[-1].Number;
}
break;
case 12:
-#line 149 "getdate.y"
+#line 152 "getdate.y"
{
yyHour = yyvsp[-5].Number;
yyMinutes = yyvsp[-3].Number;
}
break;
case 13:
-#line 155 "getdate.y"
+#line 158 "getdate.y"
{
yyHour = yyvsp[-5].Number;
yyMinutes = yyvsp[-3].Number;
}
break;
case 14:
-#line 165 "getdate.y"
+#line 168 "getdate.y"
{
yyTimezone = yyvsp[0].Number;
yyDSTmode = DSToff;
}
break;
case 15:
-#line 169 "getdate.y"
+#line 172 "getdate.y"
{
yyTimezone = yyvsp[0].Number;
yyDSTmode = DSTon;
}
break;
case 16:
-#line 174 "getdate.y"
+#line 177 "getdate.y"
{
yyTimezone = yyvsp[-1].Number;
yyDSTmode = DSTon;
}
break;
case 17:
-#line 180 "getdate.y"
+#line 183 "getdate.y"
{
yyDayOrdinal = 1;
yyDayNumber = yyvsp[0].Number;
}
break;
case 18:
-#line 184 "getdate.y"
+#line 187 "getdate.y"
{
yyDayOrdinal = 1;
yyDayNumber = yyvsp[-1].Number;
}
break;
case 19:
-#line 188 "getdate.y"
+#line 191 "getdate.y"
{
yyDayOrdinal = yyvsp[-1].Number;
yyDayNumber = yyvsp[0].Number;
}
break;
case 20:
-#line 194 "getdate.y"
+#line 197 "getdate.y"
{
yyMonth = yyvsp[-2].Number;
yyDay = yyvsp[0].Number;
}
break;
case 21:
-#line 198 "getdate.y"
+#line 201 "getdate.y"
{
if (yyvsp[-4].Number >= 100) {
yyYear = yyvsp[-4].Number;
}
break;
case 22:
-#line 209 "getdate.y"
+#line 212 "getdate.y"
{
/* ISO 8601 format. yyyy-mm-dd. */
yyYear = yyvsp[-2].Number;
}
break;
case 23:
-#line 215 "getdate.y"
+#line 218 "getdate.y"
{
/* e.g. 17-JUN-1992. */
yyDay = yyvsp[-2].Number;
}
break;
case 24:
-#line 221 "getdate.y"
+#line 224 "getdate.y"
{
yyMonth = yyvsp[-1].Number;
yyDay = yyvsp[0].Number;
}
break;
case 25:
-#line 225 "getdate.y"
+#line 228 "getdate.y"
{
yyMonth = yyvsp[-3].Number;
yyDay = yyvsp[-2].Number;
}
break;
case 26:
-#line 230 "getdate.y"
+#line 233 "getdate.y"
{
yyMonth = yyvsp[0].Number;
yyDay = yyvsp[-1].Number;
}
break;
case 27:
-#line 234 "getdate.y"
+#line 237 "getdate.y"
{
yyMonth = yyvsp[-1].Number;
yyDay = yyvsp[-2].Number;
}
break;
case 28:
-#line 241 "getdate.y"
+#line 244 "getdate.y"
{
yyRelSeconds = -yyRelSeconds;
yyRelMonth = -yyRelMonth;
}
break;
case 30:
-#line 248 "getdate.y"
+#line 251 "getdate.y"
{
yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number * 60L;
}
break;
case 31:
-#line 251 "getdate.y"
+#line 254 "getdate.y"
{
yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number * 60L;
}
break;
case 32:
-#line 254 "getdate.y"
+#line 257 "getdate.y"
{
yyRelSeconds += yyvsp[0].Number * 60L;
}
break;
case 33:
-#line 257 "getdate.y"
+#line 260 "getdate.y"
{
yyRelSeconds += yyvsp[-1].Number;
}
break;
case 34:
-#line 260 "getdate.y"
+#line 263 "getdate.y"
{
yyRelSeconds += yyvsp[-1].Number;
}
break;
case 35:
-#line 263 "getdate.y"
+#line 266 "getdate.y"
{
yyRelSeconds++;
}
break;
case 36:
-#line 266 "getdate.y"
+#line 269 "getdate.y"
{
yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number;
}
break;
case 37:
-#line 269 "getdate.y"
+#line 272 "getdate.y"
{
yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number;
}
break;
case 38:
-#line 272 "getdate.y"
+#line 275 "getdate.y"
{
yyRelMonth += yyvsp[0].Number;
}
break;
case 39:
-#line 277 "getdate.y"
+#line 280 "getdate.y"
{
if (yyHaveTime && yyHaveDate && !yyHaveRel)
yyYear = yyvsp[0].Number;
}
break;
case 40:
-#line 304 "getdate.y"
+#line 307 "getdate.y"
{
yyval.Meridian = MER24;
}
break;
case 41:
-#line 307 "getdate.y"
+#line 310 "getdate.y"
{
yyval.Meridian = yyvsp[0].Meridian;
}
break;
-#line 1449 "getdate.c"
+#line 1434 "getdate.c"
}
yyssp -= yym;
yystate = *yyssp;
yyoverflow:
yyerror("yacc stack overflow");
yyabort:
- if (yyss)
- free(yyss);
- if (yyvs)
- free(yyvs);
+ free(yyss);
+ free(yyvs);
yyss = yyssp = NULL;
yyvs = yyvsp = NULL;
yystacksize = 0;
return (1);
yyaccept:
- if (yyss)
- free(yyss);
- if (yyvs)
- free(yyvs);
+ free(yyss);
+ free(yyvs);
yyss = yyssp = NULL;
yyvs = yyvsp = NULL;
yystacksize = 0;
/* SUPPRESS 287 on yaccpar_sccsid *//* Unused static variable */
/* SUPPRESS 288 on yyerrlab *//* Label unused */
+// PVS Studio suppression
+// -V::1037, 1042
+
#include <config.h>
#include <stdio.h>
errno = ENAMETOOLONG;
goto done;
}
- path = pathbuf;
+ path = pathbuf; // -V507
}
if (sbp == NULL)
sbp = &sb;
/* If we last saw a newline the entry is on the preceding line. */
#define this_lineno (sudoerschar == '\n' ? sudolineno - 1 : sudolineno)
+// PVS Studio suppression
+// -V::1037, 1042
+
/*
* Globals
*/
static struct command_digest *new_digest(int, char *);
static void alias_error(const char *name, int errnum);
-#line 157 "gram.c"
+#line 160 "gram.c"
# ifndef YY_CAST
# ifdef __cplusplus
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
-#line 80 "gram.y"
+#line 83 "gram.y"
struct cmndspec *cmndspec;
struct defaults *defaults;
char *string;
int tok;
-#line 328 "gram.c"
+#line 331 "gram.c"
};
typedef union YYSTYPE YYSTYPE;
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
- 0, 189, 189, 192, 195, 196, 199, 202, 205, 212,
- 219, 225, 228, 231, 234, 237, 241, 245, 249, 253,
- 259, 262, 268, 271, 277, 278, 284, 291, 298, 305,
- 312, 321, 322, 326, 332, 346, 350, 356, 363, 370,
- 377, 384, 393, 394, 453, 508, 515, 522, 529, 538,
- 539, 545, 548, 569, 573, 579, 591, 603, 608, 612,
- 617, 622, 627, 631, 636, 639, 644, 659, 668, 677,
- 686, 703, 704, 705, 706, 707, 708, 709, 710, 711,
- 712, 715, 721, 724, 728, 732, 740, 748, 759, 765,
- 771, 777, 785, 788, 791, 794, 797, 800, 803, 806,
- 809, 812, 815, 818, 821, 824, 827, 832, 839, 846,
- 862, 863, 866, 866, 876, 879, 880, 886, 887, 890,
- 890, 900, 903, 904, 910, 911, 914, 914, 924, 927,
- 928, 931, 931, 941, 944, 945, 951, 955, 961, 968,
- 975, 982, 989, 998, 999, 1005, 1009, 1015, 1022, 1029
+ 0, 192, 192, 195, 198, 199, 202, 205, 208, 215,
+ 222, 228, 231, 234, 237, 240, 244, 248, 252, 256,
+ 262, 265, 271, 274, 280, 281, 287, 294, 301, 308,
+ 315, 324, 325, 329, 335, 349, 353, 359, 366, 373,
+ 380, 387, 396, 397, 456, 511, 518, 525, 532, 541,
+ 542, 548, 551, 572, 576, 582, 594, 606, 611, 615,
+ 620, 625, 630, 634, 639, 642, 647, 662, 671, 680,
+ 689, 706, 707, 708, 709, 710, 711, 712, 713, 714,
+ 715, 718, 724, 727, 731, 735, 743, 751, 762, 768,
+ 774, 780, 788, 791, 794, 797, 800, 803, 806, 809,
+ 812, 815, 818, 821, 824, 827, 830, 835, 842, 849,
+ 865, 866, 869, 869, 879, 882, 883, 889, 890, 893,
+ 893, 903, 906, 907, 913, 914, 917, 917, 927, 930,
+ 931, 934, 934, 944, 947, 948, 954, 958, 964, 971,
+ 978, 985, 992, 1001, 1002, 1008, 1012, 1018, 1025, 1032
};
#endif
switch (yyn)
{
case 2: /* file: %empty */
-#line 189 "gram.y"
+#line 192 "gram.y"
{
; /* empty file */
}
-#line 1621 "gram.c"
+#line 1624 "gram.c"
break;
case 6: /* entry: '\n' */
-#line 199 "gram.y"
+#line 202 "gram.y"
{
; /* blank line */
}
-#line 1629 "gram.c"
+#line 1632 "gram.c"
break;
case 7: /* entry: error '\n' */
-#line 202 "gram.y"
+#line 205 "gram.y"
{
yyerrok;
}
-#line 1637 "gram.c"
+#line 1640 "gram.c"
break;
case 8: /* entry: include */
-#line 205 "gram.y"
+#line 208 "gram.y"
{
if (!push_include((yyvsp[0].string), false)) {
free((yyvsp[0].string));
}
free((yyvsp[0].string));
}
-#line 1649 "gram.c"
+#line 1652 "gram.c"
break;
case 9: /* entry: includedir */
-#line 212 "gram.y"
+#line 215 "gram.y"
{
if (!push_include((yyvsp[0].string), true)) {
free((yyvsp[0].string));
}
free((yyvsp[0].string));
}
-#line 1661 "gram.c"
+#line 1664 "gram.c"
break;
case 10: /* entry: userlist privileges '\n' */
-#line 219 "gram.y"
+#line 222 "gram.y"
{
if (!add_userspec((yyvsp[-2].member), (yyvsp[-1].privilege))) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
}
-#line 1672 "gram.c"
+#line 1675 "gram.c"
break;
case 11: /* entry: USERALIAS useraliases '\n' */
-#line 225 "gram.y"
+#line 228 "gram.y"
{
;
}
-#line 1680 "gram.c"
+#line 1683 "gram.c"
break;
case 12: /* entry: HOSTALIAS hostaliases '\n' */
-#line 228 "gram.y"
+#line 231 "gram.y"
{
;
}
-#line 1688 "gram.c"
+#line 1691 "gram.c"
break;
case 13: /* entry: CMNDALIAS cmndaliases '\n' */
-#line 231 "gram.y"
+#line 234 "gram.y"
{
;
}
-#line 1696 "gram.c"
+#line 1699 "gram.c"
break;
case 14: /* entry: RUNASALIAS runasaliases '\n' */
-#line 234 "gram.y"
+#line 237 "gram.y"
{
;
}
-#line 1704 "gram.c"
+#line 1707 "gram.c"
break;
case 15: /* entry: DEFAULTS defaults_list '\n' */
-#line 237 "gram.y"
+#line 240 "gram.y"
{
if (!add_defaults(DEFAULTS, NULL, (yyvsp[-1].defaults)))
YYERROR;
}
-#line 1713 "gram.c"
+#line 1716 "gram.c"
break;
case 16: /* entry: DEFAULTS_USER userlist defaults_list '\n' */
-#line 241 "gram.y"
+#line 244 "gram.y"
{
if (!add_defaults(DEFAULTS_USER, (yyvsp[-2].member), (yyvsp[-1].defaults)))
YYERROR;
}
-#line 1722 "gram.c"
+#line 1725 "gram.c"
break;
case 17: /* entry: DEFAULTS_RUNAS userlist defaults_list '\n' */
-#line 245 "gram.y"
+#line 248 "gram.y"
{
if (!add_defaults(DEFAULTS_RUNAS, (yyvsp[-2].member), (yyvsp[-1].defaults)))
YYERROR;
}
-#line 1731 "gram.c"
+#line 1734 "gram.c"
break;
case 18: /* entry: DEFAULTS_HOST hostlist defaults_list '\n' */
-#line 249 "gram.y"
+#line 252 "gram.y"
{
if (!add_defaults(DEFAULTS_HOST, (yyvsp[-2].member), (yyvsp[-1].defaults)))
YYERROR;
}
-#line 1740 "gram.c"
+#line 1743 "gram.c"
break;
case 19: /* entry: DEFAULTS_CMND cmndlist defaults_list '\n' */
-#line 253 "gram.y"
+#line 256 "gram.y"
{
if (!add_defaults(DEFAULTS_CMND, (yyvsp[-2].member), (yyvsp[-1].defaults)))
YYERROR;
}
-#line 1749 "gram.c"
+#line 1752 "gram.c"
break;
case 20: /* include: INCLUDE WORD '\n' */
-#line 259 "gram.y"
+#line 262 "gram.y"
{
(yyval.string) = (yyvsp[-1].string);
}
-#line 1757 "gram.c"
+#line 1760 "gram.c"
break;
case 21: /* include: INCLUDE WORD error '\n' */
-#line 262 "gram.y"
+#line 265 "gram.y"
{
yyerrok;
(yyval.string) = (yyvsp[-2].string);
}
-#line 1766 "gram.c"
+#line 1769 "gram.c"
break;
case 22: /* includedir: INCLUDEDIR WORD '\n' */
-#line 268 "gram.y"
+#line 271 "gram.y"
{
(yyval.string) = (yyvsp[-1].string);
}
-#line 1774 "gram.c"
+#line 1777 "gram.c"
break;
case 23: /* includedir: INCLUDEDIR WORD error '\n' */
-#line 271 "gram.y"
+#line 274 "gram.y"
{
yyerrok;
(yyval.string) = (yyvsp[-2].string);
}
-#line 1783 "gram.c"
+#line 1786 "gram.c"
break;
case 25: /* defaults_list: defaults_list ',' defaults_entry */
-#line 278 "gram.y"
+#line 281 "gram.y"
{
HLTQ_CONCAT((yyvsp[-2].defaults), (yyvsp[0].defaults), entries);
(yyval.defaults) = (yyvsp[-2].defaults);
}
-#line 1792 "gram.c"
+#line 1795 "gram.c"
break;
case 26: /* defaults_entry: DEFVAR */
-#line 284 "gram.y"
+#line 287 "gram.y"
{
(yyval.defaults) = new_default((yyvsp[0].string), NULL, true);
if ((yyval.defaults) == NULL) {
YYERROR;
}
}
-#line 1804 "gram.c"
+#line 1807 "gram.c"
break;
case 27: /* defaults_entry: '!' DEFVAR */
-#line 291 "gram.y"
+#line 294 "gram.y"
{
(yyval.defaults) = new_default((yyvsp[0].string), NULL, false);
if ((yyval.defaults) == NULL) {
YYERROR;
}
}
-#line 1816 "gram.c"
+#line 1819 "gram.c"
break;
case 28: /* defaults_entry: DEFVAR '=' WORD */
-#line 298 "gram.y"
+#line 301 "gram.y"
{
(yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), true);
if ((yyval.defaults) == NULL) {
YYERROR;
}
}
-#line 1828 "gram.c"
+#line 1831 "gram.c"
break;
case 29: /* defaults_entry: DEFVAR '+' WORD */
-#line 305 "gram.y"
+#line 308 "gram.y"
{
(yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), '+');
if ((yyval.defaults) == NULL) {
YYERROR;
}
}
-#line 1840 "gram.c"
+#line 1843 "gram.c"
break;
case 30: /* defaults_entry: DEFVAR '-' WORD */
-#line 312 "gram.y"
+#line 315 "gram.y"
{
(yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), '-');
if ((yyval.defaults) == NULL) {
YYERROR;
}
}
-#line 1852 "gram.c"
+#line 1855 "gram.c"
break;
case 32: /* privileges: privileges ':' privilege */
-#line 322 "gram.y"
+#line 325 "gram.y"
{
HLTQ_CONCAT((yyvsp[-2].privilege), (yyvsp[0].privilege), entries);
(yyval.privilege) = (yyvsp[-2].privilege);
}
-#line 1861 "gram.c"
+#line 1864 "gram.c"
break;
case 33: /* privileges: privileges ':' error */
-#line 326 "gram.y"
+#line 329 "gram.y"
{
yyerrok;
(yyval.privilege) = (yyvsp[-2].privilege);
}
-#line 1870 "gram.c"
+#line 1873 "gram.c"
break;
case 34: /* privilege: hostlist '=' cmndspeclist */
-#line 332 "gram.y"
+#line 335 "gram.y"
{
struct privilege *p = calloc(1, sizeof(*p));
if (p == NULL) {
HLTQ_INIT(p, entries);
(yyval.privilege) = p;
}
-#line 1887 "gram.c"
+#line 1890 "gram.c"
break;
case 35: /* ophost: host */
-#line 346 "gram.y"
+#line 349 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = false;
}
-#line 1896 "gram.c"
+#line 1899 "gram.c"
break;
case 36: /* ophost: '!' host */
-#line 350 "gram.y"
+#line 353 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = true;
}
-#line 1905 "gram.c"
+#line 1908 "gram.c"
break;
case 37: /* host: ALIAS */
-#line 356 "gram.y"
+#line 359 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), ALIAS);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 1917 "gram.c"
+#line 1920 "gram.c"
break;
case 38: /* host: ALL */
-#line 363 "gram.y"
+#line 366 "gram.y"
{
(yyval.member) = new_member(NULL, ALL);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 1929 "gram.c"
+#line 1932 "gram.c"
break;
case 39: /* host: NETGROUP */
-#line 370 "gram.y"
+#line 373 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), NETGROUP);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 1941 "gram.c"
+#line 1944 "gram.c"
break;
case 40: /* host: NTWKADDR */
-#line 377 "gram.y"
+#line 380 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), NTWKADDR);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 1953 "gram.c"
+#line 1956 "gram.c"
break;
case 41: /* host: WORD */
-#line 384 "gram.y"
+#line 387 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), WORD);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 1965 "gram.c"
+#line 1968 "gram.c"
break;
case 43: /* cmndspeclist: cmndspeclist ',' cmndspec */
-#line 394 "gram.y"
+#line 397 "gram.y"
{
struct cmndspec *prev;
prev = HLTQ_LAST((yyvsp[-2].cmndspec), cmndspec, entries);
}
(yyval.cmndspec) = (yyvsp[-2].cmndspec);
}
-#line 2027 "gram.c"
+#line 2030 "gram.c"
break;
case 44: /* cmndspec: runasspec options cmndtag digcmnd */
-#line 453 "gram.y"
+#line 456 "gram.y"
{
struct cmndspec *cs = calloc(1, sizeof(*cs));
if (cs == NULL) {
cs->tags.setenv = IMPLIED;
(yyval.cmndspec) = cs;
}
-#line 2085 "gram.c"
+#line 2088 "gram.c"
break;
case 45: /* digestspec: SHA224_TOK ':' DIGEST */
-#line 508 "gram.y"
+#line 511 "gram.y"
{
(yyval.digest) = new_digest(SUDO_DIGEST_SHA224, (yyvsp[0].string));
if ((yyval.digest) == NULL) {
YYERROR;
}
}
-#line 2097 "gram.c"
+#line 2100 "gram.c"
break;
case 46: /* digestspec: SHA256_TOK ':' DIGEST */
-#line 515 "gram.y"
+#line 518 "gram.y"
{
(yyval.digest) = new_digest(SUDO_DIGEST_SHA256, (yyvsp[0].string));
if ((yyval.digest) == NULL) {
YYERROR;
}
}
-#line 2109 "gram.c"
+#line 2112 "gram.c"
break;
case 47: /* digestspec: SHA384_TOK ':' DIGEST */
-#line 522 "gram.y"
+#line 525 "gram.y"
{
(yyval.digest) = new_digest(SUDO_DIGEST_SHA384, (yyvsp[0].string));
if ((yyval.digest) == NULL) {
YYERROR;
}
}
-#line 2121 "gram.c"
+#line 2124 "gram.c"
break;
case 48: /* digestspec: SHA512_TOK ':' DIGEST */
-#line 529 "gram.y"
+#line 532 "gram.y"
{
(yyval.digest) = new_digest(SUDO_DIGEST_SHA512, (yyvsp[0].string));
if ((yyval.digest) == NULL) {
YYERROR;
}
}
-#line 2133 "gram.c"
+#line 2136 "gram.c"
break;
case 50: /* digestlist: digestlist ',' digestspec */
-#line 539 "gram.y"
+#line 542 "gram.y"
{
HLTQ_CONCAT((yyvsp[-2].digest), (yyvsp[0].digest), entries);
(yyval.digest) = (yyvsp[-2].digest);
}
-#line 2142 "gram.c"
+#line 2145 "gram.c"
break;
case 51: /* digcmnd: opcmnd */
-#line 545 "gram.y"
+#line 548 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
}
-#line 2150 "gram.c"
+#line 2153 "gram.c"
break;
case 52: /* digcmnd: digestlist opcmnd */
-#line 548 "gram.y"
+#line 551 "gram.y"
{
struct sudo_command *c =
(struct sudo_command *) (yyvsp[0].member)->name;
HLTQ_TO_TAILQ(&c->digests, (yyvsp[-1].digest), entries);
(yyval.member) = (yyvsp[0].member);
}
-#line 2174 "gram.c"
+#line 2177 "gram.c"
break;
case 53: /* opcmnd: cmnd */
-#line 569 "gram.y"
+#line 572 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = false;
}
-#line 2183 "gram.c"
+#line 2186 "gram.c"
break;
case 54: /* opcmnd: '!' cmnd */
-#line 573 "gram.y"
+#line 576 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = true;
}
-#line 2192 "gram.c"
+#line 2195 "gram.c"
break;
case 55: /* chdirspec: CWD '=' WORD */
-#line 579 "gram.y"
+#line 582 "gram.y"
{
if ((yyvsp[0].string)[0] != '/' && (yyvsp[0].string)[0] != '~') {
if (strcmp((yyvsp[0].string), "*") != 0) {
}
(yyval.string) = (yyvsp[0].string);
}
-#line 2207 "gram.c"
+#line 2210 "gram.c"
break;
case 56: /* chrootspec: CHROOT '=' WORD */
-#line 591 "gram.y"
+#line 594 "gram.y"
{
if ((yyvsp[0].string)[0] != '/' && (yyvsp[0].string)[0] != '~') {
if (strcmp((yyvsp[0].string), "*") != 0) {
}
(yyval.string) = (yyvsp[0].string);
}
-#line 2222 "gram.c"
+#line 2225 "gram.c"
break;
case 57: /* timeoutspec: CMND_TIMEOUT '=' WORD */
-#line 603 "gram.y"
+#line 606 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2230 "gram.c"
+#line 2233 "gram.c"
break;
case 58: /* notbeforespec: NOTBEFORE '=' WORD */
-#line 608 "gram.y"
+#line 611 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2238 "gram.c"
+#line 2241 "gram.c"
break;
case 59: /* notafterspec: NOTAFTER '=' WORD */
-#line 612 "gram.y"
+#line 615 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2246 "gram.c"
+#line 2249 "gram.c"
break;
case 60: /* rolespec: ROLE '=' WORD */
-#line 617 "gram.y"
+#line 620 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2254 "gram.c"
+#line 2257 "gram.c"
break;
case 61: /* typespec: TYPE '=' WORD */
-#line 622 "gram.y"
+#line 625 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2262 "gram.c"
+#line 2265 "gram.c"
break;
case 62: /* privsspec: PRIVS '=' WORD */
-#line 627 "gram.y"
+#line 630 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2270 "gram.c"
+#line 2273 "gram.c"
break;
case 63: /* limitprivsspec: LIMITPRIVS '=' WORD */
-#line 631 "gram.y"
+#line 634 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2278 "gram.c"
+#line 2281 "gram.c"
break;
case 64: /* runasspec: %empty */
-#line 636 "gram.y"
+#line 639 "gram.y"
{
(yyval.runas) = NULL;
}
-#line 2286 "gram.c"
+#line 2289 "gram.c"
break;
case 65: /* runasspec: '(' runaslist ')' */
-#line 639 "gram.y"
+#line 642 "gram.y"
{
(yyval.runas) = (yyvsp[-1].runas);
}
-#line 2294 "gram.c"
+#line 2297 "gram.c"
break;
case 66: /* runaslist: %empty */
-#line 644 "gram.y"
+#line 647 "gram.y"
{
(yyval.runas) = calloc(1, sizeof(struct runascontainer));
if ((yyval.runas) != NULL) {
YYERROR;
}
}
-#line 2314 "gram.c"
+#line 2317 "gram.c"
break;
case 67: /* runaslist: userlist */
-#line 659 "gram.y"
+#line 662 "gram.y"
{
(yyval.runas) = calloc(1, sizeof(struct runascontainer));
if ((yyval.runas) == NULL) {
(yyval.runas)->runasusers = (yyvsp[0].member);
/* $$->runasgroups = NULL; */
}
-#line 2328 "gram.c"
+#line 2331 "gram.c"
break;
case 68: /* runaslist: userlist ':' grouplist */
-#line 668 "gram.y"
+#line 671 "gram.y"
{
(yyval.runas) = calloc(1, sizeof(struct runascontainer));
if ((yyval.runas) == NULL) {
(yyval.runas)->runasusers = (yyvsp[-2].member);
(yyval.runas)->runasgroups = (yyvsp[0].member);
}
-#line 2342 "gram.c"
+#line 2345 "gram.c"
break;
case 69: /* runaslist: ':' grouplist */
-#line 677 "gram.y"
+#line 680 "gram.y"
{
(yyval.runas) = calloc(1, sizeof(struct runascontainer));
if ((yyval.runas) == NULL) {
/* $$->runasusers = NULL; */
(yyval.runas)->runasgroups = (yyvsp[0].member);
}
-#line 2356 "gram.c"
+#line 2359 "gram.c"
break;
case 70: /* runaslist: ':' */
-#line 686 "gram.y"
+#line 689 "gram.y"
{
(yyval.runas) = calloc(1, sizeof(struct runascontainer));
if ((yyval.runas) != NULL) {
YYERROR;
}
}
-#line 2376 "gram.c"
+#line 2379 "gram.c"
break;
case 71: /* reserved_word: ALL */
-#line 703 "gram.y"
+#line 706 "gram.y"
{ (yyval.string) = "ALL"; }
-#line 2382 "gram.c"
+#line 2385 "gram.c"
break;
case 72: /* reserved_word: CHROOT */
-#line 704 "gram.y"
+#line 707 "gram.y"
{ (yyval.string) = "CHROOT"; }
-#line 2388 "gram.c"
+#line 2391 "gram.c"
break;
case 73: /* reserved_word: CWD */
-#line 705 "gram.y"
+#line 708 "gram.y"
{ (yyval.string) = "CWD"; }
-#line 2394 "gram.c"
+#line 2397 "gram.c"
break;
case 74: /* reserved_word: CMND_TIMEOUT */
-#line 706 "gram.y"
+#line 709 "gram.y"
{ (yyval.string) = "CMND_TIMEOUT"; }
-#line 2400 "gram.c"
+#line 2403 "gram.c"
break;
case 75: /* reserved_word: NOTBEFORE */
-#line 707 "gram.y"
+#line 710 "gram.y"
{ (yyval.string) = "NOTBEFORE"; }
-#line 2406 "gram.c"
+#line 2409 "gram.c"
break;
case 76: /* reserved_word: NOTAFTER */
-#line 708 "gram.y"
+#line 711 "gram.y"
{ (yyval.string) = "NOTAFTER"; }
-#line 2412 "gram.c"
+#line 2415 "gram.c"
break;
case 77: /* reserved_word: ROLE */
-#line 709 "gram.y"
+#line 712 "gram.y"
{ (yyval.string) = "ROLE"; }
-#line 2418 "gram.c"
+#line 2421 "gram.c"
break;
case 78: /* reserved_word: TYPE */
-#line 710 "gram.y"
+#line 713 "gram.y"
{ (yyval.string) = "TYPE"; }
-#line 2424 "gram.c"
+#line 2427 "gram.c"
break;
case 79: /* reserved_word: PRIVS */
-#line 711 "gram.y"
+#line 714 "gram.y"
{ (yyval.string) = "PRIVS"; }
-#line 2430 "gram.c"
+#line 2433 "gram.c"
break;
case 80: /* reserved_word: LIMITPRIVS */
-#line 712 "gram.y"
+#line 715 "gram.y"
{ (yyval.string) = "LIMITPRIVS"; }
-#line 2436 "gram.c"
+#line 2439 "gram.c"
break;
case 81: /* reserved_alias: reserved_word */
-#line 715 "gram.y"
+#line 718 "gram.y"
{
sudoerserrorf(U_("syntax error, reserved word %s used as an alias name"), (yyvsp[0].string));
YYERROR;
}
-#line 2445 "gram.c"
+#line 2448 "gram.c"
break;
case 82: /* options: %empty */
-#line 721 "gram.y"
+#line 724 "gram.y"
{
init_options(&(yyval.options));
}
-#line 2453 "gram.c"
+#line 2456 "gram.c"
break;
case 83: /* options: options chdirspec */
-#line 724 "gram.y"
+#line 727 "gram.y"
{
free((yyval.options).runcwd);
(yyval.options).runcwd = (yyvsp[0].string);
}
-#line 2462 "gram.c"
+#line 2465 "gram.c"
break;
case 84: /* options: options chrootspec */
-#line 728 "gram.y"
+#line 731 "gram.y"
{
free((yyval.options).runchroot);
(yyval.options).runchroot = (yyvsp[0].string);
}
-#line 2471 "gram.c"
+#line 2474 "gram.c"
break;
case 85: /* options: options notbeforespec */
-#line 732 "gram.y"
+#line 735 "gram.y"
{
(yyval.options).notbefore = parse_gentime((yyvsp[0].string));
free((yyvsp[0].string));
YYERROR;
}
}
-#line 2484 "gram.c"
+#line 2487 "gram.c"
break;
case 86: /* options: options notafterspec */
-#line 740 "gram.y"
+#line 743 "gram.y"
{
(yyval.options).notafter = parse_gentime((yyvsp[0].string));
free((yyvsp[0].string));
YYERROR;
}
}
-#line 2497 "gram.c"
+#line 2500 "gram.c"
break;
case 87: /* options: options timeoutspec */
-#line 748 "gram.y"
+#line 751 "gram.y"
{
(yyval.options).timeout = parse_timeout((yyvsp[0].string));
free((yyvsp[0].string));
YYERROR;
}
}
-#line 2513 "gram.c"
+#line 2516 "gram.c"
break;
case 88: /* options: options rolespec */
-#line 759 "gram.y"
+#line 762 "gram.y"
{
#ifdef HAVE_SELINUX
free((yyval.options).role);
(yyval.options).role = (yyvsp[0].string);
#endif
}
-#line 2524 "gram.c"
+#line 2527 "gram.c"
break;
case 89: /* options: options typespec */
-#line 765 "gram.y"
+#line 768 "gram.y"
{
#ifdef HAVE_SELINUX
free((yyval.options).type);
(yyval.options).type = (yyvsp[0].string);
#endif
}
-#line 2535 "gram.c"
+#line 2538 "gram.c"
break;
case 90: /* options: options privsspec */
-#line 771 "gram.y"
+#line 774 "gram.y"
{
#ifdef HAVE_PRIV_SET
free((yyval.options).privs);
(yyval.options).privs = (yyvsp[0].string);
#endif
}
-#line 2546 "gram.c"
+#line 2549 "gram.c"
break;
case 91: /* options: options limitprivsspec */
-#line 777 "gram.y"
+#line 780 "gram.y"
{
#ifdef HAVE_PRIV_SET
free((yyval.options).limitprivs);
(yyval.options).limitprivs = (yyvsp[0].string);
#endif
}
-#line 2557 "gram.c"
+#line 2560 "gram.c"
break;
case 92: /* cmndtag: %empty */
-#line 785 "gram.y"
+#line 788 "gram.y"
{
- TAGS_INIT((yyval.tag));
+ TAGS_INIT(&(yyval.tag));
}
-#line 2565 "gram.c"
+#line 2568 "gram.c"
break;
case 93: /* cmndtag: cmndtag NOPASSWD */
-#line 788 "gram.y"
+#line 791 "gram.y"
{
(yyval.tag).nopasswd = true;
}
-#line 2573 "gram.c"
+#line 2576 "gram.c"
break;
case 94: /* cmndtag: cmndtag PASSWD */
-#line 791 "gram.y"
+#line 794 "gram.y"
{
(yyval.tag).nopasswd = false;
}
-#line 2581 "gram.c"
+#line 2584 "gram.c"
break;
case 95: /* cmndtag: cmndtag NOEXEC */
-#line 794 "gram.y"
+#line 797 "gram.y"
{
(yyval.tag).noexec = true;
}
-#line 2589 "gram.c"
+#line 2592 "gram.c"
break;
case 96: /* cmndtag: cmndtag EXEC */
-#line 797 "gram.y"
+#line 800 "gram.y"
{
(yyval.tag).noexec = false;
}
-#line 2597 "gram.c"
+#line 2600 "gram.c"
break;
case 97: /* cmndtag: cmndtag SETENV */
-#line 800 "gram.y"
+#line 803 "gram.y"
{
(yyval.tag).setenv = true;
}
-#line 2605 "gram.c"
+#line 2608 "gram.c"
break;
case 98: /* cmndtag: cmndtag NOSETENV */
-#line 803 "gram.y"
+#line 806 "gram.y"
{
(yyval.tag).setenv = false;
}
-#line 2613 "gram.c"
+#line 2616 "gram.c"
break;
case 99: /* cmndtag: cmndtag LOG_INPUT */
-#line 806 "gram.y"
+#line 809 "gram.y"
{
(yyval.tag).log_input = true;
}
-#line 2621 "gram.c"
+#line 2624 "gram.c"
break;
case 100: /* cmndtag: cmndtag NOLOG_INPUT */
-#line 809 "gram.y"
+#line 812 "gram.y"
{
(yyval.tag).log_input = false;
}
-#line 2629 "gram.c"
+#line 2632 "gram.c"
break;
case 101: /* cmndtag: cmndtag LOG_OUTPUT */
-#line 812 "gram.y"
+#line 815 "gram.y"
{
(yyval.tag).log_output = true;
}
-#line 2637 "gram.c"
+#line 2640 "gram.c"
break;
case 102: /* cmndtag: cmndtag NOLOG_OUTPUT */
-#line 815 "gram.y"
+#line 818 "gram.y"
{
(yyval.tag).log_output = false;
}
-#line 2645 "gram.c"
+#line 2648 "gram.c"
break;
case 103: /* cmndtag: cmndtag FOLLOWLNK */
-#line 818 "gram.y"
+#line 821 "gram.y"
{
(yyval.tag).follow = true;
}
-#line 2653 "gram.c"
+#line 2656 "gram.c"
break;
case 104: /* cmndtag: cmndtag NOFOLLOWLNK */
-#line 821 "gram.y"
+#line 824 "gram.y"
{
(yyval.tag).follow = false;
}
-#line 2661 "gram.c"
+#line 2664 "gram.c"
break;
case 105: /* cmndtag: cmndtag MAIL */
-#line 824 "gram.y"
+#line 827 "gram.y"
{
(yyval.tag).send_mail = true;
}
-#line 2669 "gram.c"
+#line 2672 "gram.c"
break;
case 106: /* cmndtag: cmndtag NOMAIL */
-#line 827 "gram.y"
+#line 830 "gram.y"
{
(yyval.tag).send_mail = false;
}
-#line 2677 "gram.c"
+#line 2680 "gram.c"
break;
case 107: /* cmnd: ALL */
-#line 832 "gram.y"
+#line 835 "gram.y"
{
(yyval.member) = new_member(NULL, ALL);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 2689 "gram.c"
+#line 2692 "gram.c"
break;
case 108: /* cmnd: ALIAS */
-#line 839 "gram.y"
+#line 842 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), ALIAS);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 2701 "gram.c"
+#line 2704 "gram.c"
break;
case 109: /* cmnd: COMMAND */
-#line 846 "gram.y"
+#line 849 "gram.y"
{
struct sudo_command *c;
YYERROR;
}
}
-#line 2720 "gram.c"
+#line 2723 "gram.c"
break;
case 112: /* $@1: %empty */
-#line 866 "gram.y"
+#line 869 "gram.y"
{
alias_line = this_lineno;
alias_column = sudolinebuf.toke_start + 1;
}
-#line 2729 "gram.c"
+#line 2732 "gram.c"
break;
case 113: /* hostalias: ALIAS $@1 '=' hostlist */
-#line 869 "gram.y"
+#line 872 "gram.y"
{
if (!alias_add(&parsed_policy, (yyvsp[-3].string), HOSTALIAS,
sudoers, alias_line, alias_column, (yyvsp[0].member))) {
YYERROR;
}
}
-#line 2741 "gram.c"
+#line 2744 "gram.c"
break;
case 116: /* hostlist: hostlist ',' ophost */
-#line 880 "gram.y"
+#line 883 "gram.y"
{
HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries);
(yyval.member) = (yyvsp[-2].member);
}
-#line 2750 "gram.c"
+#line 2753 "gram.c"
break;
case 119: /* $@2: %empty */
-#line 890 "gram.y"
+#line 893 "gram.y"
{
alias_line = this_lineno;
alias_column = sudolinebuf.toke_start + 1;
}
-#line 2759 "gram.c"
+#line 2762 "gram.c"
break;
case 120: /* cmndalias: ALIAS $@2 '=' cmndlist */
-#line 893 "gram.y"
+#line 896 "gram.y"
{
if (!alias_add(&parsed_policy, (yyvsp[-3].string), CMNDALIAS,
sudoers, alias_line, alias_column, (yyvsp[0].member))) {
YYERROR;
}
}
-#line 2771 "gram.c"
+#line 2774 "gram.c"
break;
case 123: /* cmndlist: cmndlist ',' digcmnd */
-#line 904 "gram.y"
+#line 907 "gram.y"
{
HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries);
(yyval.member) = (yyvsp[-2].member);
}
-#line 2780 "gram.c"
+#line 2783 "gram.c"
break;
case 126: /* $@3: %empty */
-#line 914 "gram.y"
+#line 917 "gram.y"
{
alias_line = this_lineno;
alias_column = sudolinebuf.toke_start + 1;
}
-#line 2789 "gram.c"
+#line 2792 "gram.c"
break;
case 127: /* runasalias: ALIAS $@3 '=' userlist */
-#line 917 "gram.y"
+#line 920 "gram.y"
{
if (!alias_add(&parsed_policy, (yyvsp[-3].string), RUNASALIAS,
sudoers, alias_line, alias_column, (yyvsp[0].member))) {
YYERROR;
}
}
-#line 2801 "gram.c"
+#line 2804 "gram.c"
break;
case 131: /* $@4: %empty */
-#line 931 "gram.y"
+#line 934 "gram.y"
{
alias_line = this_lineno;
alias_column = sudolinebuf.toke_start + 1;
}
-#line 2810 "gram.c"
+#line 2813 "gram.c"
break;
case 132: /* useralias: ALIAS $@4 '=' userlist */
-#line 934 "gram.y"
+#line 937 "gram.y"
{
if (!alias_add(&parsed_policy, (yyvsp[-3].string), USERALIAS,
sudoers, alias_line, alias_column, (yyvsp[0].member))) {
YYERROR;
}
}
-#line 2822 "gram.c"
+#line 2825 "gram.c"
break;
case 135: /* userlist: userlist ',' opuser */
-#line 945 "gram.y"
+#line 948 "gram.y"
{
HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries);
(yyval.member) = (yyvsp[-2].member);
}
-#line 2831 "gram.c"
+#line 2834 "gram.c"
break;
case 136: /* opuser: user */
-#line 951 "gram.y"
+#line 954 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = false;
}
-#line 2840 "gram.c"
+#line 2843 "gram.c"
break;
case 137: /* opuser: '!' user */
-#line 955 "gram.y"
+#line 958 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = true;
}
-#line 2849 "gram.c"
+#line 2852 "gram.c"
break;
case 138: /* user: ALIAS */
-#line 961 "gram.y"
+#line 964 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), ALIAS);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 2861 "gram.c"
+#line 2864 "gram.c"
break;
case 139: /* user: ALL */
-#line 968 "gram.y"
+#line 971 "gram.y"
{
(yyval.member) = new_member(NULL, ALL);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 2873 "gram.c"
+#line 2876 "gram.c"
break;
case 140: /* user: NETGROUP */
-#line 975 "gram.y"
+#line 978 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), NETGROUP);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 2885 "gram.c"
+#line 2888 "gram.c"
break;
case 141: /* user: USERGROUP */
-#line 982 "gram.y"
+#line 985 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), USERGROUP);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 2897 "gram.c"
+#line 2900 "gram.c"
break;
case 142: /* user: WORD */
-#line 989 "gram.y"
+#line 992 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), WORD);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 2909 "gram.c"
+#line 2912 "gram.c"
break;
case 144: /* grouplist: grouplist ',' opgroup */
-#line 999 "gram.y"
+#line 1002 "gram.y"
{
HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries);
(yyval.member) = (yyvsp[-2].member);
}
-#line 2918 "gram.c"
+#line 2921 "gram.c"
break;
case 145: /* opgroup: group */
-#line 1005 "gram.y"
+#line 1008 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = false;
}
-#line 2927 "gram.c"
+#line 2930 "gram.c"
break;
case 146: /* opgroup: '!' group */
-#line 1009 "gram.y"
+#line 1012 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = true;
}
-#line 2936 "gram.c"
+#line 2939 "gram.c"
break;
case 147: /* group: ALIAS */
-#line 1015 "gram.y"
+#line 1018 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), ALIAS);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 2948 "gram.c"
+#line 2951 "gram.c"
break;
case 148: /* group: ALL */
-#line 1022 "gram.y"
+#line 1025 "gram.y"
{
(yyval.member) = new_member(NULL, ALL);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 2960 "gram.c"
+#line 2963 "gram.c"
break;
case 149: /* group: WORD */
-#line 1029 "gram.y"
+#line 1032 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), WORD);
if ((yyval.member) == NULL) {
YYERROR;
}
}
-#line 2972 "gram.c"
+#line 2975 "gram.c"
break;
-#line 2976 "gram.c"
+#line 2979 "gram.c"
default: break;
}
return yyresult;
}
-#line 1037 "gram.y"
+#line 1040 "gram.y"
/* Like yyerror() but takes a printf-style format string. */
void
/* Optimize common case, a single string. */
s = _(va_arg(ap, char *));
} else {
- if (vasprintf(&s, fmt, ap) == -1)
+ if (vasprintf(&s, fmt, ap) != -1)
+ tofree = s;
+ else
s = _("syntax error");
}
sudo_printf(SUDO_CONV_ERROR_MSG, _("%s:%d:%d: %s\n"), sudoers,
void
sudoerserror(const char *s)
{
+ // -V:sudoerserror:575, 618
if (s == NULL)
sudoerserrorf(NULL);
else
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
-#line 80 "gram.y"
+#line 83 "gram.y"
struct cmndspec *cmndspec;
struct defaults *defaults;
/* If we last saw a newline the entry is on the preceding line. */
#define this_lineno (sudoerschar == '\n' ? sudolineno - 1 : sudolineno)
+// PVS Studio suppression
+// -V::1037, 1042
+
/*
* Globals
*/
;
cmndtag : /* empty */ {
- TAGS_INIT($$);
+ TAGS_INIT(&$$);
}
| cmndtag NOPASSWD {
$$.nopasswd = true;
/* Optimize common case, a single string. */
s = _(va_arg(ap, char *));
} else {
- if (vasprintf(&s, fmt, ap) == -1)
+ if (vasprintf(&s, fmt, ap) != -1)
+ tofree = s;
+ else
s = _("syntax error");
}
sudo_printf(SUDO_CONV_ERROR_MSG, _("%s:%d:%d: %s\n"), sudoers,
void
sudoerserror(const char *s)
{
+ // -V:sudoerserror:575, 618
if (s == NULL)
sudoerserrorf(NULL);
else
TAILQ_INSERT_TAIL(&priv->cmndlist, cmndspec, entries);
/* Initialize cmndspec */
- TAGS_INIT(cmndspec->tags);
+ TAGS_INIT(&cmndspec->tags);
cmndspec->notbefore = UNSPEC;
cmndspec->notafter = UNSPEC;
cmndspec->timeout = UNSPEC;
au_fd = AUDIT_NOT_CONFIGURED;
else
sudo_warn("%s", U_("unable to open audit system"));
- } else {
- (void)fcntl(au_fd, F_SETFD, FD_CLOEXEC);
+ } else if (fcntl(au_fd, F_SETFD, FD_CLOEXEC) == -1) {
+ sudo_warn("%s", U_("unable to open audit system"));
+ audit_close(au_fd);
+ au_fd = -1;
}
debug_return_int(au_fd);
}
}
if (def_runcwd && strcmp(def_runcwd, "*") != 0) {
evlog->runcwd = def_runcwd;
- } else if (ISSET(sudo_mode, MODE_LOGIN_SHELL)) {
+ } else if (ISSET(sudo_mode, MODE_LOGIN_SHELL) && runas_pw != NULL) {
evlog->runcwd = runas_pw->pw_dir;
} else {
evlog->runcwd = user_cwd;
char magic[2];
debug_decl(is_script, SUDOERS_DEBUG_MATCH);
- if (read(fd, magic, 2) == 2) {
+ if (pread(fd, magic, 2, 0) == 2) {
if (magic[0] == '#' && magic[1] == '!')
ret = true;
}
- if (lseek(fd, (off_t)0, SEEK_SET) == -1) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO|SUDO_DEBUG_LINENO,
- "unable to rewind script fd");
- }
debug_return_int(ret);
}
* Initialize all tags to UNSPEC.
*/
#define TAGS_INIT(t) do { \
- (t).follow = UNSPEC; \
- (t).log_input = UNSPEC; \
- (t).log_output = UNSPEC; \
- (t).noexec = UNSPEC; \
- (t).nopasswd = UNSPEC; \
- (t).send_mail = UNSPEC; \
- (t).setenv = UNSPEC; \
+ (t)->follow = UNSPEC; \
+ (t)->log_input = UNSPEC; \
+ (t)->log_output = UNSPEC; \
+ (t)->noexec = UNSPEC; \
+ (t)->nopasswd = UNSPEC; \
+ (t)->send_mail = UNSPEC; \
+ (t)->setenv = UNSPEC; \
} while (0)
/*
void free_userspecs(struct userspec_list *usl);
void free_default(struct defaults *def, struct member_list **binding);
void free_defaults(struct defaults_list *defs);
-void init_parse_tree(struct sudoers_parse_tree *parse_tree, const char *shost, const char *lhost);
+void init_parse_tree(struct sudoers_parse_tree *parse_tree, const char *lhost, const char *shost);
void free_parse_tree(struct sudoers_parse_tree *parse_tree);
void reparent_parse_tree(struct sudoers_parse_tree *new_tree);
#: plugins/sudoers/cvtsudoers.c:220
#, c-format
msgid "order padding: %s: %s"
-msgstr "popuna redoslijeda (order): %s: %s"
+msgstr "ispuna redoslijeda (order): %s: %s"
#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
#, c-format
" -b, --base=dn osnovni DN za sudo LDAP upite\n"
" -c, --config=conf_file staza do konfiguracijske datoteke\n"
" -d, --defaults=deftypes pretvori samo Defaults od specificiranih deftypes\n"
-" -e, --expand-aliases proširuje aliase kada pretvara\n"
-" -f, --output-format=format izlazni format jedan od: JSON, LDIF ili sudoers\n"
+" -e, --expand-aliases proširuje aliase prilikom pretvaranja\n"
+" -f, --output-format=format izlazni format je jedan od: JSON, LDIF ili sudoers\n"
" -i, --input-format=format ulazni format jedan od: LDIF ili sudoers\n"
" -I, --increment=num inkrement za num svaki sudoOrder\n"
" -h, --help pokaže ovu pomoć i završi\n"
" -o, --output=output_file pretvoreni sudoers zapiše u output_file\n"
" -O, --order-start=num prvi sudoOrder započinje od num\n"
" -p, --prune-matches izreže nepodudarne korisnike, grupe i računala\n"
-" -P, --padding=num osnovna popuna za sudoOrder inkrement\n"
+" -P, --padding=num osnovna ispuna za sudoOrder inkrement\n"
" -s, --suppress=sections izostavi izlaz od sections sekcija\n"
" -V, --version informira o inačici ovog programa i završi"
#
msgid ""
msgstr ""
-"Project-Id-Version: sudoers-1.9.3b2\n"
+"Project-Id-Version: sudoers-1.9.4b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-14 06:53-0600\n"
-"PO-Revision-Date: 2020-09-28 09:10+0200\n"
+"POT-Creation-Date: 2020-11-14 06:24-0700\n"
+"PO-Revision-Date: 2020-12-03 09:48+0100\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
"Language: it\n"
"X-Generator: Poedit 2.4.1\n"
"X-Poedit-SourceCharset: UTF-8\n"
-#: confstr.sh:1
+#: confstr.sh:1 gram.y:1077
msgid "syntax error"
msgstr "errore di sintassi"
msgid "Sorry, try again."
msgstr "Riprovare."
-#: gram.y:218 gram.y:284 gram.y:291 gram.y:298 gram.y:305 gram.y:312
-#: gram.y:332 gram.y:356 gram.y:363 gram.y:370 gram.y:377 gram.y:384
-#: gram.y:453 gram.y:462 gram.y:473 gram.y:508 gram.y:515 gram.y:522
-#: gram.y:529 gram.y:556 gram.y:652 gram.y:659 gram.y:668 gram.y:677
-#: gram.y:694 gram.y:814 gram.y:821 gram.y:829 gram.y:835 gram.y:935
-#: gram.y:942 gram.y:949 gram.y:956 gram.y:963 gram.y:989 gram.y:996
-#: gram.y:1003 gram.y:1176 gram.y:1465 lib/iolog/iolog_fileio.c:1111
-#: lib/iolog/iolog_json.c:119 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:334 lib/iolog/iolog_json.c:456
-#: lib/iolog/iolog_util.c:105 lib/iolog/iolog_util.c:114
-#: lib/iolog/iolog_util.c:124 lib/iolog/iolog_util.c:132
-#: lib/iolog/iolog_util.c:136 lib/iolog/iolog_util.c:195
-#: logsrvd/eventlog.c:233 logsrvd/sendlog.c:464 plugins/sudoers/alias.c:125
-#: plugins/sudoers/alias.c:132 plugins/sudoers/alias.c:148
-#: plugins/sudoers/audit.c:108 plugins/sudoers/audit.c:217
-#: plugins/sudoers/auth/bsdauth.c:143 plugins/sudoers/auth/kerb5.c:118
-#: plugins/sudoers/auth/kerb5.c:144 plugins/sudoers/auth/pam.c:669
-#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
-#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
-#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
-#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:764 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
-#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
-#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
-#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
-#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
-#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
-#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:626
-#: plugins/sudoers/defaults.c:918 plugins/sudoers/defaults.c:1093
-#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:85
-#: plugins/sudoers/editor.c:96 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:491 plugins/sudoers/iolog_client.c:104
-#: plugins/sudoers/iolog_client.c:381 plugins/sudoers/iolog_client.c:547
-#: plugins/sudoers/iolog_client.c:561 plugins/sudoers/iolog_client.c:680
-#: plugins/sudoers/iolog_client.c:698 plugins/sudoers/iolog_client.c:1192
-#: plugins/sudoers/iolog_client.c:1421 plugins/sudoers/iolog_client.c:1739
-#: plugins/sudoers/iolog_client.c:1767 plugins/sudoers/ldap.c:183
-#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431
-#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440
-#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743
-#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279
-#: plugins/sudoers/ldap.c:1707 plugins/sudoers/ldap.c:1744
-#: plugins/sudoers/ldap.c:1825 plugins/sudoers/ldap.c:1960
-#: plugins/sudoers/ldap.c:2061 plugins/sudoers/ldap.c:2077
+#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
+#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
+#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
+#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
+#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
+#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
+#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
+#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
+#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
+#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
+#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
+#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
+#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
+#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
+#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
+#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
+#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
+#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
+#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
+#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
+#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
+#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
+#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
+#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
+#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
+#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
+#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
+#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
+#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
+#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
+#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
+#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
+#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:604 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/logging.c:102 plugins/sudoers/logging.c:191
-#: plugins/sudoers/logging.c:518 plugins/sudoers/logging.c:544
-#: plugins/sudoers/logging.c:585 plugins/sudoers/logging.c:722
-#: plugins/sudoers/logging.c:1091 plugins/sudoers/match_command.c:280
-#: plugins/sudoers/match_command.c:448 plugins/sudoers/match_command.c:498
-#: plugins/sudoers/match_command.c:572 plugins/sudoers/match_digest.c:80
+#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
+#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
+#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
+#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
+#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
+#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
+#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:521
-#: plugins/sudoers/policy.c:869 plugins/sudoers/prompt.c:93
+#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
+#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:146 plugins/sudoers/sssd.c:409
-#: plugins/sudoers/sssd.c:472 plugins/sudoers/sssd.c:516
-#: plugins/sudoers/sssd.c:563 plugins/sudoers/sssd.c:756
-#: plugins/sudoers/stubs.c:103 plugins/sudoers/stubs.c:111
-#: plugins/sudoers/sudoers.c:303 plugins/sudoers/sudoers.c:328
-#: plugins/sudoers/sudoers.c:372 plugins/sudoers/sudoers.c:383
-#: plugins/sudoers/sudoers.c:393 plugins/sudoers/sudoers.c:435
-#: plugins/sudoers/sudoers.c:797 plugins/sudoers/sudoers.c:960
-#: plugins/sudoers/sudoers.c:994 plugins/sudoers/sudoers.c:1298
-#: plugins/sudoers/sudoreplay.c:551 plugins/sudoers/sudoreplay.c:554
-#: plugins/sudoers/sudoreplay.c:1258 plugins/sudoers/sudoreplay.c:1468
-#: plugins/sudoers/sudoreplay.c:1472 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
+#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
+#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
+#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
+#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
+#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:432
+#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1127 toke.l:922 toke.l:1042 toke.l:1100
+#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
msgid "unable to allocate memory"
msgstr "impossibile allocare memoria"
-#: gram.y:550
+#: gram.y:552
msgid "a digest requires a path name"
msgstr "un digest richiede il nome di percorso"
-#: gram.y:579
+#: gram.y:581
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "i valori per \"CWD\" devono iniziare con un carattere \"/\", \"~\" o \"*\""
-#: gram.y:591
+#: gram.y:593
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "i valori per \"CHROOT\" devono iniziare con un carattere \"/\", \"~\" o \"*\""
#: gram.y:715
+#, c-format
+msgid "syntax error, reserved word %s used as an alias name"
+msgstr "errore di sintassi, parola riservata %s utilizzata come alias"
+
+#: gram.y:735
msgid "invalid notbefore value"
msgstr "valore notbefore non valido"
-#: gram.y:723
+#: gram.y:743
msgid "invalid notafter value"
msgstr "valore notafter non valido"
-#: gram.y:732 plugins/sudoers/policy.c:330
+#: gram.y:752 plugins/sudoers/policy.c:335
msgid "timeout value too large"
msgstr "valore timeout troppo grande"
-#: gram.y:734 plugins/sudoers/policy.c:332
+#: gram.y:754 plugins/sudoers/policy.c:337
msgid "invalid timeout value"
msgstr "valore timeout non valido"
-#: gram.y:1041
-#, c-format
-msgid "%s:%d: %s\n"
-msgstr "%s:%d: %s\n"
-
-#: gram.y:1465 lib/iolog/iolog_fileio.c:1111 lib/iolog/iolog_json.c:119
-#: lib/iolog/iolog_json.c:303 lib/iolog/iolog_json.c:334
-#: lib/iolog/iolog_json.c:456 lib/iolog/iolog_json.c:734
-#: lib/iolog/iolog_util.c:105 lib/iolog/iolog_util.c:114
-#: lib/iolog/iolog_util.c:124 lib/iolog/iolog_util.c:132
-#: lib/iolog/iolog_util.c:136 lib/iolog/iolog_util.c:195
-#: logsrvd/eventlog.c:233 logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1221
-#: logsrvd/logsrvd.c:1266 logsrvd/sendlog.c:464 logsrvd/sendlog.c:1305
-#: logsrvd/sendlog.c:1312 logsrvd/sendlog.c:1730 plugins/sudoers/audit.c:108
-#: plugins/sudoers/audit.c:217 plugins/sudoers/auth/pam.c:482
+#: gram.y:1079
+#, c-format
+msgid "%s:%d:%d: %s\n"
+msgstr "%s:%d:%d: %s\n"
+
+#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
+#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
+#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
+#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
+#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
+#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
+#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
+#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
+#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
+#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
+#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:626
-#: plugins/sudoers/defaults.c:918 plugins/sudoers/defaults.c:1093
-#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:85
-#: plugins/sudoers/editor.c:96 plugins/sudoers/env.c:261
+#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
+#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:491 plugins/sudoers/iolog_client.c:104
-#: plugins/sudoers/iolog_client.c:214 plugins/sudoers/iolog_client.c:235
-#: plugins/sudoers/iolog_client.c:248 plugins/sudoers/iolog_client.c:381
-#: plugins/sudoers/iolog_client.c:680 plugins/sudoers/iolog_client.c:698
-#: plugins/sudoers/iolog_client.c:1192 plugins/sudoers/iolog_client.c:1421
-#: plugins/sudoers/iolog_client.c:1739 plugins/sudoers/iolog_client.c:1767
-#: plugins/sudoers/ldap.c:183 plugins/sudoers/ldap.c:421
-#: plugins/sudoers/ldap.c:431 plugins/sudoers/ldap.c:436
-#: plugins/sudoers/ldap.c:440 plugins/sudoers/ldap.c:452
-#: plugins/sudoers/ldap.c:743 plugins/sudoers/ldap.c:907
-#: plugins/sudoers/ldap.c:1279 plugins/sudoers/ldap.c:1707
-#: plugins/sudoers/ldap.c:1744 plugins/sudoers/ldap.c:1825
-#: plugins/sudoers/ldap.c:1960 plugins/sudoers/ldap.c:2061
-#: plugins/sudoers/ldap.c:2077 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:604
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/logging.c:102
-#: plugins/sudoers/logging.c:191 plugins/sudoers/logging.c:518
-#: plugins/sudoers/logging.c:544 plugins/sudoers/logging.c:584
-#: plugins/sudoers/logging.c:1091 plugins/sudoers/match_command.c:279
-#: plugins/sudoers/match_command.c:447 plugins/sudoers/match_command.c:497
-#: plugins/sudoers/match_command.c:572 plugins/sudoers/match_digest.c:80
-#: plugins/sudoers/parse.c:198 plugins/sudoers/parse.c:212
-#: plugins/sudoers/parse.c:229 plugins/sudoers/parse.c:243
-#: plugins/sudoers/parse.c:263 plugins/sudoers/parse.c:274
-#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183
-#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259
-#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340
-#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378
-#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407
-#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:623
-#: plugins/sudoers/parse_ldif.c:648 plugins/sudoers/parse_ldif.c:706
-#: plugins/sudoers/parse_ldif.c:723 plugins/sudoers/parse_ldif.c:751
-#: plugins/sudoers/parse_ldif.c:758 plugins/sudoers/policy.c:134
-#: plugins/sudoers/policy.c:143 plugins/sudoers/policy.c:152
-#: plugins/sudoers/policy.c:178 plugins/sudoers/policy.c:315
-#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:332
-#: plugins/sudoers/policy.c:361 plugins/sudoers/policy.c:370
-#: plugins/sudoers/policy.c:413 plugins/sudoers/policy.c:423
-#: plugins/sudoers/policy.c:432 plugins/sudoers/policy.c:441
-#: plugins/sudoers/policy.c:521 plugins/sudoers/policy.c:869
-#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:194
-#: plugins/sudoers/pwutil.c:265 plugins/sudoers/pwutil.c:343
-#: plugins/sudoers/pwutil.c:517 plugins/sudoers/pwutil.c:581
-#: plugins/sudoers/pwutil.c:652 plugins/sudoers/pwutil.c:811
-#: plugins/sudoers/pwutil.c:867 plugins/sudoers/pwutil.c:911
-#: plugins/sudoers/pwutil.c:968 plugins/sudoers/set_perms.c:359
-#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
-#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:409
-#: plugins/sudoers/sssd.c:472 plugins/sudoers/sssd.c:516
-#: plugins/sudoers/sssd.c:563 plugins/sudoers/sssd.c:756
-#: plugins/sudoers/stubs.c:103 plugins/sudoers/stubs.c:111
-#: plugins/sudoers/sudoers.c:303 plugins/sudoers/sudoers.c:328
-#: plugins/sudoers/sudoers.c:372 plugins/sudoers/sudoers.c:383
-#: plugins/sudoers/sudoers.c:393 plugins/sudoers/sudoers.c:435
-#: plugins/sudoers/sudoers.c:797 plugins/sudoers/sudoers.c:960
-#: plugins/sudoers/sudoers.c:994 plugins/sudoers/sudoers.c:1298
-#: plugins/sudoers/sudoreplay.c:551 plugins/sudoers/sudoreplay.c:554
-#: plugins/sudoers/sudoreplay.c:1258 plugins/sudoers/sudoreplay.c:1468
-#: plugins/sudoers/sudoreplay.c:1472 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:128 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1127 toke.l:922 toke.l:1042 toke.l:1100
+#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
+#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
+#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
+#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
+#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
+#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
+#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
+#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
+#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
+#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
+#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
+#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
+#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
+#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
+#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
+#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
+#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
+#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
+#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
+#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
+#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
+#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
+#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
+#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
+#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
+#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
+#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
+#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
+#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
+#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
+#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
+#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
+#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
+#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
+#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
+#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
+#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
+#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
+#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
+#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
+#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
+#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
+#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
+#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
+#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
+#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
+#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
+#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
+#: toke.l:1033 toke.l:1091
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
+#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
+#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
+#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
+#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
+#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
+#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
+#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
+#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
+#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
+#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
+#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
+#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
+#: plugins/sudoers/toke_util.c:169
+#, c-format
+msgid "internal error, %s overflow"
+msgstr "errore interno, overflow di %s"
+
+#: lib/eventlog/eventlog.c:343
+#, c-format
+msgid "unable to dup stdin: %m"
+msgstr "impossibile eseguire dup sullo stdin: %m"
+
+#: lib/eventlog/eventlog.c:388
+#, c-format
+msgid "unable to execute %s: %m"
+msgstr "impossibile eseguire %s: %m"
+
+#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+msgid "unable to fork"
+msgstr "impossibile eseguire fork"
+
+#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#, c-format
+msgid "unable to fork: %m"
+msgstr "impossibile eseguire fork: %m"
+
+#: lib/eventlog/eventlog.c:480
+#, c-format
+msgid "unable to open pipe: %m"
+msgstr "impossibile aprire una pipe: %m"
+
+#: lib/eventlog/eventlog.c:894
+#, c-format
+msgid "%8s : %s"
+msgstr "%8s : %s"
+
+#: lib/eventlog/eventlog.c:923
+#, c-format
+msgid "%8s : (command continued) %s"
+msgstr "%8s : (comando continuato) %s"
+
#: lib/iolog/iolog_fileio.c:155
#, c-format
msgid "%s exists but is not a directory (0%o)"
msgid "unable to change mode of %s to 0%o"
msgstr "impossibile modificare la modalità di %s a 0%o"
-#: lib/iolog/iolog_json.c:113
+#: lib/iolog/iolog_json.c:114
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "atteso JSON_STRING, ottenuto %d"
-#: lib/iolog/iolog_json.c:326
+#: lib/iolog/iolog_json.c:327
msgid "missing double quote in name"
msgstr "virgolette doppie mancanti nel nome"
-#: lib/iolog/iolog_json.c:413
+#: lib/iolog/iolog_json.c:414
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "atteso JSON_OBJECT, ottenuto %d"
-#: lib/iolog/iolog_json.c:462 lib/iolog/iolog_json.c:465
-#: lib/iolog/iolog_json.c:467 lib/iolog/iolog_json.c:559
-#: logsrvd/eventlog.c:238 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:571
-#: plugins/sudoers/iolog.c:587 plugins/sudoers/ldap.c:516
-#: plugins/sudoers/ldap.c:747 plugins/sudoers/ldap.c:1080
-#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
-#: plugins/sudoers/linux_audit.c:90 plugins/sudoers/logging.c:1096
-#: plugins/sudoers/policy.c:551 plugins/sudoers/policy.c:706
-#: plugins/sudoers/policy.c:716 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:1016 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
-#, c-format
-msgid "internal error, %s overflow"
-msgstr "errore interno, overflow di %s"
-
-#: lib/iolog/iolog_json.c:628 lib/iolog/iolog_json.c:752
+#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
msgid "unmatched close brace"
msgstr "parentesi graffa di chiusura senza corrispondenza"
-#: lib/iolog/iolog_json.c:637
+#: lib/iolog/iolog_json.c:638
msgid "unexpected array"
msgstr "array non atteso"
-#: lib/iolog/iolog_json.c:650 lib/iolog/iolog_json.c:754
+#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
msgid "unmatched close bracket"
msgstr "parentesi quadra di chiusura senza corrispondenza"
-#: lib/iolog/iolog_json.c:658
+#: lib/iolog/iolog_json.c:659
msgid "unexpected string"
msgstr "stringa non attesa"
-#: lib/iolog/iolog_json.c:668
+#: lib/iolog/iolog_json.c:669
msgid "missing colon after name"
msgstr "due punti mancanti dopo il nome"
-#: lib/iolog/iolog_json.c:679 lib/iolog/iolog_json.c:694
-#: lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
+#: lib/iolog/iolog_json.c:710
msgid "unexpected boolean"
msgstr "booleano non atteso"
-#: lib/iolog/iolog_json.c:725
+#: lib/iolog/iolog_json.c:726
msgid "unexpected number"
msgstr "numero non atteso"
-#: lib/iolog/iolog_json.c:762
+#: lib/iolog/iolog_json.c:763
#, c-format
msgid "%s:%u unable to parse \"%s\""
msgstr "%s:%u impossibile analizzare \"%s\""
-#: lib/iolog/iolog_util.c:70
+#: lib/iolog/iolog_util.c:71
#, c-format
msgid "%s: invalid log file"
msgstr "%s: file di registro non valido"
-#: lib/iolog/iolog_util.c:88
+#: lib/iolog/iolog_util.c:89
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s: manca il campo della marcatura temporale"
-#: lib/iolog/iolog_util.c:94
+#: lib/iolog/iolog_util.c:95
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s: marcatura temporale %s: %s"
-#: lib/iolog/iolog_util.c:101
+#: lib/iolog/iolog_util.c:102
#, c-format
msgid "%s: user field is missing"
msgstr "%s: manca il campo utente"
-#: lib/iolog/iolog_util.c:110
+#: lib/iolog/iolog_util.c:111
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s: manca il campo utente di runas"
-#: lib/iolog/iolog_util.c:119
+#: lib/iolog/iolog_util.c:120
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s: manca il campo gruppo di runas"
-#: lib/iolog/iolog_util.c:418
+#: lib/iolog/iolog_util.c:419
#, c-format
msgid "error reading timing file: %s"
msgstr "errore nel leggere il file di timing: %s"
-#: lib/iolog/iolog_util.c:425
+#: lib/iolog/iolog_util.c:426
#, c-format
msgid "invalid timing file line: %s"
msgstr "riga di timing del file non valida: %s"
-#: logsrvd/eventlog.c:440 plugins/sudoers/logging.c:111
-#, c-format
-msgid "%8s : %s"
-msgstr "%8s : %s"
-
-#: logsrvd/eventlog.c:469 plugins/sudoers/logging.c:135
-#, c-format
-msgid "%8s : (command continued) %s"
-msgstr "%8s : (comando continuato) %s"
-
-#: logsrvd/iolog_writer.c:977
+#: logsrvd/iolog_writer.c:919
msgid "log is already complete, cannot be restarted"
msgstr "il registro è già completo, non può essere riavviato"
-#: logsrvd/iolog_writer.c:1008
+#: logsrvd/iolog_writer.c:950
msgid "unable to restart log"
msgstr "impossibile riavviare il registro"
#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106
-#: plugins/sudoers/sudoreplay.c:351 plugins/sudoers/sudoreplay.c:357
+#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358
#, c-format
msgid "unable to open %s/%s"
msgstr "impossibile aprire %s/%s"
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "impossibile trovare il punto di ripristino [%lld, %ld] in %s/%s"
-#: logsrvd/logsrvd.c:230 logsrvd/logsrvd.c:299 logsrvd/logsrvd.c:343
-#: logsrvd/logsrvd.c:398 logsrvd/logsrvd.c:445 logsrvd/logsrvd.c:496
-#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:560
+#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
+#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
+#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
msgid "state machine error"
msgstr "errore della macchina di stato"
-#: logsrvd/logsrvd.c:239
+#: logsrvd/logsrvd.c:299
msgid "invalid AcceptMessage"
-msgstr "AcceoptMessage non valido"
+msgstr "AcceptMessage non valido"
-#: logsrvd/logsrvd.c:250
+#: logsrvd/logsrvd.c:307
msgid "error parsing AcceptMessage"
msgstr "errore nell'analizzare AcceptMessage"
-#: logsrvd/logsrvd.c:257
+#: logsrvd/logsrvd.c:314
msgid "error creating I/O log"
msgstr "errore nel creare il registro I/O"
-#: logsrvd/logsrvd.c:265
+#: logsrvd/logsrvd.c:321
msgid "error logging accept event"
msgstr "errore nel registrare l'evento accept"
-#: logsrvd/logsrvd.c:308
+#: logsrvd/logsrvd.c:362
msgid "invalid RejectMessage"
msgstr "RejectMessage non valido"
-#: logsrvd/logsrvd.c:319
+#: logsrvd/logsrvd.c:370
msgid "error parsing RejectMessage"
msgstr "errore nell'analizzare RejectMessage"
-#: logsrvd/logsrvd.c:325
+#: logsrvd/logsrvd.c:376
msgid "error logging reject event"
msgstr "errore nel registrare l'evento reject"
-#: logsrvd/logsrvd.c:430
+#: logsrvd/logsrvd.c:486
+msgid "invalid AlertMessage"
+msgstr "AlertMessage non valido"
+
+#: logsrvd/logsrvd.c:494
+msgid "error parsing AlertMessage"
+msgstr "errore nell'analizzare AlertMessage"
+
+#: logsrvd/logsrvd.c:502
msgid "error logging alert event"
msgstr "errore nel registrare l'evento alert"
-#: logsrvd/logsrvd.c:451 logsrvd/logsrvd.c:502 logsrvd/logsrvd.c:534
+#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
msgid "protocol error"
msgstr "errore di protocollo"
-#: logsrvd/logsrvd.c:461
+#: logsrvd/logsrvd.c:533
msgid "error writing IoBuffer"
msgstr "errore nello scrivere IoBuffer"
-#: logsrvd/logsrvd.c:513
+#: logsrvd/logsrvd.c:585
msgid "error writing ChangeWindowSize"
msgstr "errore nello scrivere ChangeWindowSize"
-#: logsrvd/logsrvd.c:545
+#: logsrvd/logsrvd.c:617
msgid "error writing CommandSuspend"
msgstr "errore nello scrivere CommandSuspend"
-#: logsrvd/logsrvd.c:630
+#: logsrvd/logsrvd.c:702
msgid "unrecognized ClientMessage type"
msgstr "tipo di ClientMessage non riconosciuto"
-#: logsrvd/logsrvd.c:895
+#: logsrvd/logsrvd.c:967
msgid "client message too large"
msgstr "messaggio client troppo grande"
-#: logsrvd/logsrvd.c:1125 logsrvd/logsrvd.c:1133
+#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "impossibile impostare il cifrario per TLS 1.2 a %s: %s"
-#: logsrvd/logsrvd.c:1153 logsrvd/logsrvd.c:1161
+#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "impossibile impostare il cifrario per TLS 1.3 a %s: %s"
-#: logsrvd/logsrvd.c:1197
+#: logsrvd/logsrvd.c:1269
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "impossibile ottenere il metodo TLS del server: %s"
-#: logsrvd/logsrvd.c:1202
+#: logsrvd/logsrvd.c:1274
#, c-format
msgid "unable to create TLS context: %s"
msgstr "impossibile creare il contesyo TLS: %s"
-#: logsrvd/logsrvd.c:1209 plugins/sudoers/iolog_client.c:236
+#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "impossibile caricare il certificato %s"
-#: logsrvd/logsrvd.c:1222 plugins/sudoers/iolog_client.c:216
+#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "impossibile caricare il bundle CA %s"
-#: logsrvd/logsrvd.c:1267 plugins/sudoers/iolog_client.c:249
+#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "impossibile caricare la chiave privata %s"
-#: logsrvd/logsrvd.c:1284 logsrvd/logsrvd.c:1293
+#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "impossibile impostare i parametri diffie-hellman: %s"
-#: logsrvd/logsrvd.c:1306
+#: logsrvd/logsrvd.c:1378
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "impossibile impostare la versione minima del protocollo a TLS 1.2: %s"
-#: logsrvd/logsrvd.c:1491
+#: logsrvd/logsrvd.c:1563
msgid "unable to get remote IP addr"
msgstr "impossibile ottenere indirizzo IP remoto"
-#: logsrvd/logsrvd.c:1519 plugins/sudoers/iolog_client.c:263
+#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "Impossibile allegare dati utenti all'oggetto ssl: %s"
-#: logsrvd/logsrvd.c:1527 logsrvd/logsrvd.c:1649 logsrvd/logsrvd.c:1749
-#: logsrvd/sendlog.c:1109 logsrvd/sendlog.c:1465 logsrvd/sendlog.c:1480
-#: logsrvd/sendlog.c:1538 plugins/sudoers/iolog.c:931
-#: plugins/sudoers/iolog.c:1064 plugins/sudoers/iolog.c:1162
-#: plugins/sudoers/iolog_client.c:108 plugins/sudoers/iolog_client.c:324
-#: plugins/sudoers/iolog_client.c:340 plugins/sudoers/iolog_client.c:386
-#: plugins/sudoers/iolog_client.c:569 plugins/sudoers/iolog_client.c:576
-#: plugins/sudoers/iolog_client.c:1166 plugins/sudoers/iolog_client.c:1202
-#: plugins/sudoers/iolog_client.c:1210 plugins/sudoers/iolog_client.c:1270
-#: plugins/sudoers/iolog_client.c:1377 plugins/sudoers/iolog_client.c:1493
-#: plugins/sudoers/iolog_client.c:1775 plugins/sudoers/iolog_client.c:1783
-#: plugins/sudoers/sudoreplay.c:511 plugins/sudoers/sudoreplay.c:558
-#: plugins/sudoers/sudoreplay.c:790 plugins/sudoers/sudoreplay.c:902
-#: plugins/sudoers/sudoreplay.c:992 plugins/sudoers/sudoreplay.c:1007
-#: plugins/sudoers/sudoreplay.c:1014 plugins/sudoers/sudoreplay.c:1021
-#: plugins/sudoers/sudoreplay.c:1028 plugins/sudoers/sudoreplay.c:1035
-#: plugins/sudoers/sudoreplay.c:1162
+#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
+#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
+#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
+#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
+#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
+#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
+#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
+#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
+#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
+#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
+#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
+#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022
+#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036
+#: plugins/sudoers/sudoreplay.c:1163
msgid "unable to add event to queue"
msgstr "impossibile aggiungere l'evento alla coda"
-#: logsrvd/logsrvd.c:1703 logsrvd/logsrvd.c:1937
+#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
msgid "unable setup listen socket"
msgstr "impossibile impostare il socket di ascolto"
-#: logsrvd/logsrvd.c:1843 logsrvd/sendlog.c:123
+#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
#, c-format
msgid ""
"%s - send sudo I/O log to remote server\n"
"%s - Invia registro I/O di sudo a un server remoto\n"
"\n"
-#: logsrvd/logsrvd.c:1846
+#: logsrvd/logsrvd.c:1920
msgid ""
"\n"
"Options:\n"
" -R, --random-drop Percentuale di connessioni chiuse\n"
" -V, --version Visualizza la versione ed esce\n"
-#: logsrvd/logsrvd.c:1898 logsrvd/sendlog.c:1703
+#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
msgid "Protobuf-C version 1.3 or higher required"
msgstr "È richiesto Protobuf-C 1.3 o successivo"
-#: logsrvd/logsrvd.c:1916
+#: logsrvd/logsrvd.c:1990
#, c-format
msgid "invalid random drop value: %s"
msgstr "valore drop casuale non valido: %s"
-#: logsrvd/logsrvd.c:1920 logsrvd/sendlog.c:1753
-#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:298
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
#: plugins/sudoers/visudo.c:177
#, c-format
msgid "%s version %s\n"
msgstr "%s versione %s\n"
-#: logsrvd/logsrvd_conf.c:393
+#: logsrvd/logsrvd_conf.c:331
msgid "TLS not supported"
msgstr "TLS non supportato"
-#: logsrvd/logsrvd_conf.c:405
+#: logsrvd/logsrvd_conf.c:343
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:471 logsrvd/logsrvd_conf.c:715
+#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: non è un percorso completo"
-#: logsrvd/logsrvd_conf.c:829
+#: logsrvd/logsrvd_conf.c:767
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d \"[\" non corrispondente: %s"
-#: logsrvd/logsrvd_conf.c:840
+#: logsrvd/logsrvd_conf.c:778
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s:%d sezione configurazione non valida: %s"
-#: logsrvd/logsrvd_conf.c:848
+#: logsrvd/logsrvd_conf.c:786
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d riga di configurazione non valida: %s"
-#: logsrvd/logsrvd_conf.c:854
+#: logsrvd/logsrvd_conf.c:792
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d atteso nome di sezione: %s"
-#: logsrvd/logsrvd_conf.c:868
+#: logsrvd/logsrvd_conf.c:806
#, c-format
msgid "invalid value for %s: %s"
msgstr "valore non valido per \"%s\": %s"
-#: logsrvd/logsrvd_conf.c:876
+#: logsrvd/logsrvd_conf.c:814
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d chiave sconosciuta: %s"
-#: logsrvd/logsrvd_conf.c:1032
+#: logsrvd/logsrvd_conf.c:1003
#, c-format
msgid "unknown syslog facility %s"
msgstr "strumento syslog %s sconosciuto"
-#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1040
-#: logsrvd/logsrvd_conf.c:1044
+#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
+#: logsrvd/logsrvd_conf.c:1015
#, c-format
msgid "unknown syslog priority %s"
msgstr "priorità syslog %s sconosciuta"
-#: logsrvd/sendlog.c:126
+#: logsrvd/sendlog.c:127
msgid ""
"\n"
"Options:\n"
" selezionato N volte in parallelo\n"
" -V, --version Visualizza la versione ed esce\n"
-#: logsrvd/sendlog.c:163 plugins/sudoers/iolog_client.c:432
+#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "impossibile cercare %s:%s: %s"
-#: logsrvd/sendlog.c:186
+#: logsrvd/sendlog.c:202
msgid "unable to get server IP addr"
msgstr "impossibile ottenere indirizzo IP del server"
-#: logsrvd/sendlog.c:240 plugins/sudoers/sudoreplay.c:850
+#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "impossibile leggere %s/%s: %s"
-#: logsrvd/sendlog.c:261 plugins/sudoers/iolog_client.c:686
+#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
#, c-format
msgid "client message too large: %zu"
msgstr "messaggio client troppo grande: %zu"
-#: logsrvd/sendlog.c:794
+#: logsrvd/sendlog.c:810
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: buffer di scrittura già in uso"
-#: logsrvd/sendlog.c:846 plugins/sudoers/iolog.c:855
-#: plugins/sudoers/iolog.c:924
+#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
+#: plugins/sudoers/iolog.c:949
#, c-format
msgid "unexpected I/O event %d"
msgstr "evento I/O %d non atteso"
-#: logsrvd/sendlog.c:892 logsrvd/sendlog.c:909 logsrvd/sendlog.c:943
-#: plugins/sudoers/iolog_client.c:1171 plugins/sudoers/iolog_client.c:1241
-#: plugins/sudoers/iolog_client.c:1289
+#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
+#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
+#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: stato %d non atteso"
-#: logsrvd/sendlog.c:915 plugins/sudoers/iolog_client.c:1247
+#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
msgid "invalid ServerHello"
msgstr "ServerHello non valido"
-#: logsrvd/sendlog.c:979 plugins/sudoers/iolog_client.c:1333
+#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
#, c-format
msgid "error message received from server: %s"
msgstr "messaggio di errore ricevuto dal server: %s"
-#: logsrvd/sendlog.c:992 plugins/sudoers/iolog_client.c:1346
+#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
#, c-format
msgid "abort message received from server: %s"
msgstr "messaggio di abort ricevuto dal server: %s"
-#: logsrvd/sendlog.c:1011 plugins/sudoers/iolog_client.c:1365
+#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
msgid "unable to unpack ServerMessage"
msgstr "impossibile aprire ServerMessage"
-#: logsrvd/sendlog.c:1051 plugins/sudoers/iolog_client.c:1398
+#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: valore type_case %d non atteso"
-#: logsrvd/sendlog.c:1080
+#: logsrvd/sendlog.c:1096
msgid "timeout reading from server"
msgstr "timeout nel leggere dal server"
-#: logsrvd/sendlog.c:1158
+#: logsrvd/sendlog.c:1174
msgid "premature EOF"
msgstr "EOF prematuro"
-#: logsrvd/sendlog.c:1171 plugins/sudoers/iolog_client.c:1552
+#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
#, c-format
msgid "server message too large: %u"
msgstr "messaggio server troppo grande: %u"
-#: logsrvd/sendlog.c:1222
+#: logsrvd/sendlog.c:1238
msgid "timeout writing to server"
msgstr "timeout nello scrivere sul server"
-#: logsrvd/sendlog.c:1441 plugins/sudoers/iolog_client.c:296
+#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "timeout handshake TLS"
-#: logsrvd/sendlog.c:1460 logsrvd/sendlog.c:1475
-#: plugins/sudoers/iolog_client.c:318 plugins/sudoers/iolog_client.c:334
+#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "impossibile impostare evento"
-#: logsrvd/sendlog.c:1485 logsrvd/sendlog.c:1489
+#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
#, c-format
msgid "TLS connection failed: %s"
msgstr "Connessione TLS non riuscita: %s"
-#: logsrvd/sendlog.c:1522
+#: logsrvd/sendlog.c:1538
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "Impossibile inizializzare il conteso ssl: %s"
-#: logsrvd/sendlog.c:1527 plugins/sudoers/iolog_client.c:258
+#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "Impossibile allocare l'oggetto ssl: %s"
-#: logsrvd/sendlog.c:1532
+#: logsrvd/sendlog.c:1548
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "Impossibile collegare il socket all'oggetto ssl: %s"
-#: logsrvd/sendlog.c:1776
+#: logsrvd/sendlog.c:1792
msgid "both restart point and iolog ID must be specified"
msgstr "devono essere specificati sia il punto di inizio che l'ID di iolog"
-#: logsrvd/sendlog.c:1780
+#: logsrvd/sendlog.c:1796
msgid "a restart point may not be set when no I/O is sent"
msgstr "un punto di partenza non può essere impostato quando non è inviato alcun I/O"
-#: logsrvd/sendlog.c:1855
+#: logsrvd/sendlog.c:1871
#, c-format
msgid "exited prematurely with state %d"
msgstr "uscito inaspettatamente con stato %d"
-#: logsrvd/sendlog.c:1856
+#: logsrvd/sendlog.c:1872
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "tempo trascorso inviato al server [%lld, %ld]"
-#: logsrvd/sendlog.c:1858
+#: logsrvd/sendlog.c:1874
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "punto di commit ricevuto dal server [%lld, %ld]"
-#: plugins/sudoers/alias.c:144
+#: plugins/sudoers/alias.c:148
#, c-format
msgid "Alias \"%s\" already defined"
msgstr "Alias \"%s\" già definito"
-#: plugins/sudoers/auth/aix_auth.c:198 plugins/sudoers/logging.c:783
-msgid "unable to fork"
-msgstr "impossibile eseguire fork"
+#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
+#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
+#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+msgid "unable to get time of day"
+msgstr "impossibile ottenere l'ora"
#: plugins/sudoers/auth/aix_auth.c:277
#, c-format
"\n"
#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:840 plugins/sudoers/sudoers.c:891
+#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "uid sconosciuto: %u"
#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:117 plugins/sudoers/policy.c:1083
-#: plugins/sudoers/sudoers.c:442 plugins/sudoers/sudoers.c:443
-#: plugins/sudoers/sudoers.c:1340 plugins/sudoers/testsudoers.c:219
-#: plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
+#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
+#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
#, c-format
msgid "unknown user: %s"
msgstr "utente sconosciuto: %s"
msgid "%s: input and output files must be different"
msgstr "%s: i file di input e output devono essere diversi"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:182
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
msgid "unable to initialize sudoers default values"
#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1086
-#: plugins/sudoers/sudoreplay.c:1434 plugins/sudoers/timestamp.c:441
+#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
+#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
#, c-format
msgid "unable to open %s"
msgid "parse error in %s\n"
msgstr "errore di analisi in %s\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1123
+#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
#, c-format
msgid "unable to write to %s"
#: plugins/sudoers/cvtsudoers_json.c:651 plugins/sudoers/cvtsudoers_json.c:664
#: plugins/sudoers/cvtsudoers_ldif.c:346 plugins/sudoers/cvtsudoers_ldif.c:357
-#: plugins/sudoers/ldap.c:502
+#: plugins/sudoers/ldap.c:503
msgid "unable to get GMT time"
msgstr "impossibile ottenere l'ora GMT"
#: plugins/sudoers/cvtsudoers_json.c:654 plugins/sudoers/cvtsudoers_json.c:667
#: plugins/sudoers/cvtsudoers_ldif.c:349 plugins/sudoers/cvtsudoers_ldif.c:360
-#: plugins/sudoers/ldap.c:508
+#: plugins/sudoers/ldap.c:509
msgid "unable to format timestamp"
msgstr "impossibile formattare la marcatura temporale"
msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified."
msgstr "la variabile d'ambiente SUDOERS_BASE non è impostata e non è stata specificata l'opzione -b."
-#: plugins/sudoers/def_data.c:44
+#: plugins/sudoers/def_data.c:50
#, c-format
msgid "Syslog facility if syslog is being used for logging: %s"
msgstr "Infrastruttura syslog se syslog viene utilizzato per le registrazioni: %s"
-#: plugins/sudoers/def_data.c:48
+#: plugins/sudoers/def_data.c:54
#, c-format
msgid "Syslog priority to use when user authenticates successfully: %s"
msgstr "Priorità di syslog se l'utente si identifica con successo: %s"
-#: plugins/sudoers/def_data.c:52
+#: plugins/sudoers/def_data.c:58
#, c-format
msgid "Syslog priority to use when user authenticates unsuccessfully: %s"
msgstr "Priorità di syslog se l'utente non si identifica con successo: %s"
-#: plugins/sudoers/def_data.c:56
+#: plugins/sudoers/def_data.c:62
msgid "Put OTP prompt on its own line"
msgstr "Mette il prompt OTP su una riga a parte"
-#: plugins/sudoers/def_data.c:60
+#: plugins/sudoers/def_data.c:66
msgid "Ignore '.' in $PATH"
msgstr "Ignora \".\" in $PATH"
-#: plugins/sudoers/def_data.c:64
+#: plugins/sudoers/def_data.c:70
msgid "Always send mail when sudo is run"
msgstr "Invia sempre una email quando viene eseguito sudo"
-#: plugins/sudoers/def_data.c:68
+#: plugins/sudoers/def_data.c:74
msgid "Send mail if user authentication fails"
msgstr "Invia una email se l'autenticazione utente non riesce"
-#: plugins/sudoers/def_data.c:72
+#: plugins/sudoers/def_data.c:78
msgid "Send mail if the user is not in sudoers"
msgstr "Invia una email se l'utente non è tra i sudoers"
-#: plugins/sudoers/def_data.c:76
+#: plugins/sudoers/def_data.c:82
msgid "Send mail if the user is not in sudoers for this host"
msgstr "Invia una email se l'utente non è tra i sudoers per questo host"
-#: plugins/sudoers/def_data.c:80
+#: plugins/sudoers/def_data.c:86
msgid "Send mail if the user is not allowed to run a command"
msgstr "Invia una email se l'utente non è abilitato a eseguire un comando"
-#: plugins/sudoers/def_data.c:84
+#: plugins/sudoers/def_data.c:90
msgid "Send mail if the user tries to run a command"
msgstr "Invia una email se l'utente tenta di eseguire un comando"
-#: plugins/sudoers/def_data.c:88
+#: plugins/sudoers/def_data.c:94
msgid "Use a separate timestamp for each user/tty combo"
msgstr "Usa una marcatura temporale diversa per ogni combinazione utente/tty"
-#: plugins/sudoers/def_data.c:92
+#: plugins/sudoers/def_data.c:98
msgid "Lecture user the first time they run sudo"
msgstr "Aiuta gli utenti alla prima esecuzione di sudo"
-#: plugins/sudoers/def_data.c:96
+#: plugins/sudoers/def_data.c:102
#, c-format
msgid "File containing the sudo lecture: %s"
msgstr "File contenente la lezione su sudo: %s"
-#: plugins/sudoers/def_data.c:100
+#: plugins/sudoers/def_data.c:106
msgid "Require users to authenticate by default"
msgstr "Richiede in modo predefinito l'autenticazione degli utenti"
-#: plugins/sudoers/def_data.c:104
+#: plugins/sudoers/def_data.c:110
msgid "Root may run sudo"
msgstr "Root può eseguire sudo"
-#: plugins/sudoers/def_data.c:108
+#: plugins/sudoers/def_data.c:114
msgid "Log the hostname in the (non-syslog) log file"
msgstr "Registra il nome host nel file di registro (non-syslog)"
-#: plugins/sudoers/def_data.c:112
+#: plugins/sudoers/def_data.c:118
msgid "Log the year in the (non-syslog) log file"
msgstr "Registra l'anno nel file di registro (non-syslog)"
-#: plugins/sudoers/def_data.c:116
+#: plugins/sudoers/def_data.c:122
msgid "If sudo is invoked with no arguments, start a shell"
msgstr "Se sudo viene lanciato senza alcun argomento, avvia una shell"
-#: plugins/sudoers/def_data.c:120
+#: plugins/sudoers/def_data.c:126
msgid "Set $HOME to the target user when starting a shell with -s"
msgstr "Imposta $HOME all'utente definito quando viene avviata una shell con -s"
-#: plugins/sudoers/def_data.c:124
+#: plugins/sudoers/def_data.c:130
msgid "Always set $HOME to the target user's home directory"
msgstr "Imposta sempre $HOME alla directory home dell'utente definito"
-#: plugins/sudoers/def_data.c:128
+#: plugins/sudoers/def_data.c:134
msgid "Allow some information gathering to give useful error messages"
msgstr "Consente la raccolta di alcune informazioni per dare messaggi di errore utili"
-#: plugins/sudoers/def_data.c:132
+#: plugins/sudoers/def_data.c:138
msgid "Require fully-qualified hostnames in the sudoers file"
msgstr "Richiede nomi host completi nel file sudoers"
-#: plugins/sudoers/def_data.c:136
+#: plugins/sudoers/def_data.c:142
msgid "Insult the user when they enter an incorrect password"
msgstr "Apostrofa l'utente quando inserisce una password errata"
-#: plugins/sudoers/def_data.c:140
+#: plugins/sudoers/def_data.c:146
msgid "Only allow the user to run sudo if they have a tty"
msgstr "Consente all'utente di seguire sudo solo se dispone di un tty"
-#: plugins/sudoers/def_data.c:144
+#: plugins/sudoers/def_data.c:150
msgid "Visudo will honor the EDITOR environment variable"
msgstr "visudo utilizzerà il valore definito nella variabile EDITOR"
-#: plugins/sudoers/def_data.c:148
+#: plugins/sudoers/def_data.c:154
msgid "Prompt for root's password, not the users's"
msgstr "Chiede la password di root, non quella dell'utente"
-#: plugins/sudoers/def_data.c:152
+#: plugins/sudoers/def_data.c:158
msgid "Prompt for the runas_default user's password, not the users's"
msgstr "Chiede la password dell'utente runas_default, non quella dell'utente"
-#: plugins/sudoers/def_data.c:156
+#: plugins/sudoers/def_data.c:162
msgid "Prompt for the target user's password, not the users's"
msgstr "Chiede la password dell'utente definito, non quella dell'invocante"
-#: plugins/sudoers/def_data.c:160
+#: plugins/sudoers/def_data.c:166
msgid "Apply defaults in the target user's login class if there is one"
msgstr "Applica i Defaults nella classe di login dell'utente definito, se presente"
-#: plugins/sudoers/def_data.c:164
+#: plugins/sudoers/def_data.c:170
msgid "Set the LOGNAME and USER environment variables"
msgstr "Imposta le variabili d'ambiente LOGNAME e USER"
-#: plugins/sudoers/def_data.c:168
+#: plugins/sudoers/def_data.c:174
msgid "Only set the effective uid to the target user, not the real uid"
msgstr "Imposta lo uid effettivo all'utente definito, non lo uid reale"
-#: plugins/sudoers/def_data.c:172
+#: plugins/sudoers/def_data.c:178
msgid "Don't initialize the group vector to that of the target user"
msgstr "Non inizializza il vettore di gruppo con quello dell'utente definito"
-#: plugins/sudoers/def_data.c:176
+#: plugins/sudoers/def_data.c:182
#, c-format
msgid "Length at which to wrap log file lines (0 for no wrap): %u"
msgstr "Lunghezza a cui andare a capo nei file di registro (0 per non andare a capo): %u"
-#: plugins/sudoers/def_data.c:180
+#: plugins/sudoers/def_data.c:186
#, c-format
msgid "Authentication timestamp timeout: %.1f minutes"
msgstr "Timeout marcatura temporale di autenticazione: %.1f minuti"
-#: plugins/sudoers/def_data.c:184
+#: plugins/sudoers/def_data.c:190
#, c-format
msgid "Password prompt timeout: %.1f minutes"
msgstr "Timeout per inserimento password: %.1f minuti"
-#: plugins/sudoers/def_data.c:188
+#: plugins/sudoers/def_data.c:194
#, c-format
msgid "Number of tries to enter a password: %u"
msgstr "Numero di tentativi per l'inserimento della password: %u"
-#: plugins/sudoers/def_data.c:192
+#: plugins/sudoers/def_data.c:198
#, c-format
msgid "Umask to use or 0777 to use user's: 0%o"
msgstr "umask da utilizzare o 0777 per utilizzare quella dell'utente: 0%o"
-#: plugins/sudoers/def_data.c:196
+#: plugins/sudoers/def_data.c:202
#, c-format
msgid "Path to log file: %s"
msgstr "Percorso al file di registro: %s"
-#: plugins/sudoers/def_data.c:200
+#: plugins/sudoers/def_data.c:206
#, c-format
msgid "Path to mail program: %s"
msgstr "Percorso al programma email: %s"
-#: plugins/sudoers/def_data.c:204
+#: plugins/sudoers/def_data.c:210
#, c-format
msgid "Flags for mail program: %s"
msgstr "Flag per il programma email: %s"
-#: plugins/sudoers/def_data.c:208
+#: plugins/sudoers/def_data.c:214
#, c-format
msgid "Address to send mail to: %s"
msgstr "Indirizzo a cui mandare l'email: %s"
-#: plugins/sudoers/def_data.c:212
+#: plugins/sudoers/def_data.c:218
#, c-format
msgid "Address to send mail from: %s"
msgstr "Indirizzo da cui mandare l'email: %s"
-#: plugins/sudoers/def_data.c:216
+#: plugins/sudoers/def_data.c:222
#, c-format
msgid "Subject line for mail messages: %s"
msgstr "Oggetto dell'email: %s"
-#: plugins/sudoers/def_data.c:220
+#: plugins/sudoers/def_data.c:226
#, c-format
msgid "Incorrect password message: %s"
msgstr "Messaggio password errata: %s"
-#: plugins/sudoers/def_data.c:224
+#: plugins/sudoers/def_data.c:230
#, c-format
msgid "Path to lecture status dir: %s"
msgstr "Percorso directory di stato della lezione: %s"
-#: plugins/sudoers/def_data.c:228
+#: plugins/sudoers/def_data.c:234
#, c-format
msgid "Path to authentication timestamp dir: %s"
msgstr "Percorso directory con la marcatura temporale di autenticazione: %s"
-#: plugins/sudoers/def_data.c:232
+#: plugins/sudoers/def_data.c:238
#, c-format
msgid "Owner of the authentication timestamp dir: %s"
msgstr "Proprietario directory con la marcatura temporale di autenticazione: %s"
-#: plugins/sudoers/def_data.c:236
+#: plugins/sudoers/def_data.c:242
#, c-format
msgid "Users in this group are exempt from password and PATH requirements: %s"
msgstr "Agli utenti di questo gruppo non sono richiesti password e PATH: %s"
-#: plugins/sudoers/def_data.c:240
+#: plugins/sudoers/def_data.c:246
#, c-format
msgid "Default password prompt: %s"
msgstr "Prompt predefinito per la password: %s"
-#: plugins/sudoers/def_data.c:244
+#: plugins/sudoers/def_data.c:250
msgid "If set, passprompt will override system prompt in all cases."
msgstr "Se impostato, passprompt scavalcherà sempre il prompt di sistema."
-#: plugins/sudoers/def_data.c:248
+#: plugins/sudoers/def_data.c:254
#, c-format
msgid "Default user to run commands as: %s"
msgstr "Utente predefinito con cui eseguire i comandi: %s"
-#: plugins/sudoers/def_data.c:252
+#: plugins/sudoers/def_data.c:258
#, c-format
msgid "Value to override user's $PATH with: %s"
msgstr "Valore con cui sovrascrivere la variabile $PATH dell'utente: %s"
-#: plugins/sudoers/def_data.c:256
+#: plugins/sudoers/def_data.c:262
#, c-format
msgid "Path to the editor for use by visudo: %s"
msgstr "Percorso all'editor per visudo: %s"
-#: plugins/sudoers/def_data.c:260
+#: plugins/sudoers/def_data.c:266
#, c-format
msgid "When to require a password for 'list' pseudocommand: %s"
msgstr "Quando richiedere una password per il pseudo-comando \"list\": %s"
-#: plugins/sudoers/def_data.c:264
+#: plugins/sudoers/def_data.c:270
#, c-format
msgid "When to require a password for 'verify' pseudocommand: %s"
msgstr "Quando richiedere una password per il pseudo-comando \"verify\": %s"
-#: plugins/sudoers/def_data.c:268
-msgid "Preload the dummy exec functions contained in the sudo_noexec library"
-msgstr "Pre-carica le funzioni exec dummy contenute nella libreria sudo_noexec"
+#: plugins/sudoers/def_data.c:274
+msgid "Preload the sudo_noexec library which replaces the exec functions"
+msgstr "Carica la libreria sudo_noexec che sostituisce le funzioni exec"
-#: plugins/sudoers/def_data.c:272
+#: plugins/sudoers/def_data.c:278
msgid "If LDAP directory is up, do we ignore local sudoers file"
msgstr "Se LDAP è funzionante, viene ignorato il file sudoers locale"
-#: plugins/sudoers/def_data.c:276
+#: plugins/sudoers/def_data.c:282
#, c-format
msgid "File descriptors >= %d will be closed before executing a command"
msgstr "I descrittori di file >= %d verranno chiusi prima dell'esecuzione di un comando"
-#: plugins/sudoers/def_data.c:280
+#: plugins/sudoers/def_data.c:286
msgid "If set, users may override the value of \"closefrom\" with the -C option"
msgstr "Se impostata, gli utenti possono sovrascrivere il valore di \"closefrom\" con l'opzione -C"
-#: plugins/sudoers/def_data.c:284
+#: plugins/sudoers/def_data.c:290
msgid "Allow users to set arbitrary environment variables"
msgstr "Consente agli utenti di impostare variabili d'ambiente"
-#: plugins/sudoers/def_data.c:288
+#: plugins/sudoers/def_data.c:294
msgid "Reset the environment to a default set of variables"
msgstr "Reimposta l'ambiente con le variabili predefinite"
-#: plugins/sudoers/def_data.c:292
-msgid "Environment variables to check for sanity:"
-msgstr "Variabile d'ambienti da validare:"
+#: plugins/sudoers/def_data.c:298
+msgid "Environment variables to check for safety:"
+msgstr "Variabile d'ambienti da verificare per la sicurezza:"
-#: plugins/sudoers/def_data.c:296
+#: plugins/sudoers/def_data.c:302
msgid "Environment variables to remove:"
msgstr "Variabili d'ambiente da rimuovere:"
-#: plugins/sudoers/def_data.c:300
+#: plugins/sudoers/def_data.c:306
msgid "Environment variables to preserve:"
msgstr "Variabili d'ambiente da preservare:"
-#: plugins/sudoers/def_data.c:304
+#: plugins/sudoers/def_data.c:310
#, c-format
msgid "SELinux role to use in the new security context: %s"
msgstr "Ruolo SELinux da usare nel nuovo contesto di sicurezza: %s"
-#: plugins/sudoers/def_data.c:308
+#: plugins/sudoers/def_data.c:314
#, c-format
msgid "SELinux type to use in the new security context: %s"
msgstr "Tipologia di SELinux da usare nel nuovo contesto di sicurezza: %s"
-#: plugins/sudoers/def_data.c:312
+#: plugins/sudoers/def_data.c:318
#, c-format
msgid "Path to the sudo-specific environment file: %s"
msgstr "Percorso al file d'ambiente specifico di sudo: %s"
-#: plugins/sudoers/def_data.c:316
+#: plugins/sudoers/def_data.c:322
#, c-format
msgid "Path to the restricted sudo-specific environment file: %s"
msgstr "Percorso al file d'ambiente riservato specifico di sudo: %s"
-#: plugins/sudoers/def_data.c:320
+#: plugins/sudoers/def_data.c:326
#, c-format
msgid "Locale to use while parsing sudoers: %s"
msgstr "Localizzazione da usare durante l'analisi del file sudoers: %s"
-#: plugins/sudoers/def_data.c:324
+#: plugins/sudoers/def_data.c:330
msgid "Allow sudo to prompt for a password even if it would be visible"
msgstr "Abilita sudo a chiedere una password anche se sarebbe visibile"
-#: plugins/sudoers/def_data.c:328
+#: plugins/sudoers/def_data.c:334
msgid "Provide visual feedback at the password prompt when there is user input"
msgstr "Fornisce riscontro visibile al prompt della password nel caso di input utente"
-#: plugins/sudoers/def_data.c:332
+#: plugins/sudoers/def_data.c:338
msgid "Use faster globbing that is less accurate but does not access the filesystem"
msgstr "Usa glob più veloce e meno preciso, ma non accede al file system"
-#: plugins/sudoers/def_data.c:336
+#: plugins/sudoers/def_data.c:342
msgid "The umask specified in sudoers will override the user's, even if it is more permissive"
msgstr "La umask definita in sudoers scavalca quella dell'utente, anche se è più permissiva"
-#: plugins/sudoers/def_data.c:340
+#: plugins/sudoers/def_data.c:346
msgid "Log user's input for the command being run"
msgstr "Registra l'input dell'utente per il comando in esecuzione"
-#: plugins/sudoers/def_data.c:344
+#: plugins/sudoers/def_data.c:350
msgid "Log the output of the command being run"
msgstr "Registra l'output del comando in esecuzione"
-#: plugins/sudoers/def_data.c:348
+#: plugins/sudoers/def_data.c:354
msgid "Compress I/O logs using zlib"
msgstr "Comprime i registri utilizzando zlib"
-#: plugins/sudoers/def_data.c:352
+#: plugins/sudoers/def_data.c:358
msgid "Always run commands in a pseudo-tty"
msgstr "Esegue sempre i comandi in uno pseudo-tty"
-#: plugins/sudoers/def_data.c:356
+#: plugins/sudoers/def_data.c:362
#, c-format
msgid "Plugin for non-Unix group support: %s"
msgstr "Plugin per supporto ai gruppi non-Unix: %s"
-#: plugins/sudoers/def_data.c:360
+#: plugins/sudoers/def_data.c:366
#, c-format
msgid "Directory in which to store input/output logs: %s"
msgstr "Directory in cui salvare i registri di I/O: %s"
-#: plugins/sudoers/def_data.c:364
+#: plugins/sudoers/def_data.c:370
#, c-format
msgid "File in which to store the input/output log: %s"
msgstr "File in cui salvare il registro I/O: %s"
-#: plugins/sudoers/def_data.c:368
+#: plugins/sudoers/def_data.c:374
msgid "Add an entry to the utmp/utmpx file when allocating a pty"
msgstr "Aggiunge una voce al file utmp/utmpx quando viene allocato un pty"
-#: plugins/sudoers/def_data.c:372
+#: plugins/sudoers/def_data.c:378
msgid "Set the user in utmp to the runas user, not the invoking user"
msgstr "Imposta l'utente in utmp all'utente runas, non l'utente invocante"
-#: plugins/sudoers/def_data.c:376
+#: plugins/sudoers/def_data.c:382
#, c-format
msgid "Set of permitted privileges: %s"
msgstr "Insieme di privilegi concessi: %s"
-#: plugins/sudoers/def_data.c:380
+#: plugins/sudoers/def_data.c:386
#, c-format
msgid "Set of limit privileges: %s"
msgstr "Insieme di privilegi non concessi: %s"
-#: plugins/sudoers/def_data.c:384
+#: plugins/sudoers/def_data.c:390
msgid "Run commands on a pty in the background"
msgstr "Esegue i comandi in un pty in background"
-#: plugins/sudoers/def_data.c:388
+#: plugins/sudoers/def_data.c:394
#, c-format
msgid "PAM service name to use: %s"
msgstr "Nome del servizio PAM da usare: %s"
-#: plugins/sudoers/def_data.c:392
+#: plugins/sudoers/def_data.c:398
#, c-format
msgid "PAM service name to use for login shells: %s"
msgstr "Nome del servizio PAM da usare per le shell di login: %s"
-#: plugins/sudoers/def_data.c:396
+#: plugins/sudoers/def_data.c:402
msgid "Attempt to establish PAM credentials for the target user"
msgstr "Tentativo di stabilire le credenziali PAM per l'utente finale"
-#: plugins/sudoers/def_data.c:400
+#: plugins/sudoers/def_data.c:406
msgid "Create a new PAM session for the command to run in"
msgstr "Crea una nuova sessione PAM in cui eseguire il comando"
-#: plugins/sudoers/def_data.c:404
+#: plugins/sudoers/def_data.c:410
msgid "Perform PAM account validation management"
msgstr "Esegue la gestione della convalida dell'account PAM"
-#: plugins/sudoers/def_data.c:408
+#: plugins/sudoers/def_data.c:414
#, c-format
msgid "Maximum I/O log sequence number: %s"
msgstr "Numero massimo di sequenze I/O di registro: %s"
-#: plugins/sudoers/def_data.c:412
+#: plugins/sudoers/def_data.c:418
msgid "Enable sudoers netgroup support"
msgstr "Abilita support netgroup in sudoers"
-#: plugins/sudoers/def_data.c:416
+#: plugins/sudoers/def_data.c:422
msgid "Check parent directories for writability when editing files with sudoedit"
msgstr "Controlla le directory superiori per accesso in scrittura durante le modifiche con sudoedit"
-#: plugins/sudoers/def_data.c:420
+#: plugins/sudoers/def_data.c:426
msgid "Follow symbolic links when editing files with sudoedit"
msgstr "Segue i collegamenti simbolici durante le modifiche con sudoedit"
-#: plugins/sudoers/def_data.c:424
+#: plugins/sudoers/def_data.c:430
msgid "Query the group plugin for unknown system groups"
msgstr "Interroga il plugin dei gruppi per gruppi di sistema sconosciuti"
-#: plugins/sudoers/def_data.c:428
+#: plugins/sudoers/def_data.c:434
msgid "Match netgroups based on the entire tuple: user, host and domain"
msgstr "Corrispondenza gruppi di rete con tutti i valori: utente, host e dominio"
-#: plugins/sudoers/def_data.c:432
+#: plugins/sudoers/def_data.c:438
msgid "Allow commands to be run even if sudo cannot write to the audit log"
msgstr "Consente di eseguire i comandi anche se sudo non può scrivere sul registro di controllo"
-#: plugins/sudoers/def_data.c:436
+#: plugins/sudoers/def_data.c:442
msgid "Allow commands to be run even if sudo cannot write to the I/O log"
msgstr "Consente di eseguire i comandi anche se sudo non può scrivere sul registro di I/O"
-#: plugins/sudoers/def_data.c:440
+#: plugins/sudoers/def_data.c:446
msgid "Allow commands to be run even if sudo cannot write to the log file"
msgstr "Consente di eseguire i comandi anche se sudo non può scrivere sul file di registro"
-#: plugins/sudoers/def_data.c:444
+#: plugins/sudoers/def_data.c:450
msgid "Resolve groups in sudoers and match on the group ID, not the name"
msgstr "Gestisce i gruppi attraverso sudoers ed esegue la corrispondenza sull'ID del gruppo, non sul nome"
-#: plugins/sudoers/def_data.c:448
+#: plugins/sudoers/def_data.c:454
#, c-format
msgid "Log entries larger than this value will be split into multiple syslog messages: %u"
msgstr "Voci di registro più grandi di questo valore vengono divise su più messaggi: %u"
-#: plugins/sudoers/def_data.c:452
+#: plugins/sudoers/def_data.c:458
#, c-format
msgid "User that will own the I/O log files: %s"
msgstr "Utente proprietario dei file di registro di I/O: %s"
-#: plugins/sudoers/def_data.c:456
+#: plugins/sudoers/def_data.c:462
#, c-format
msgid "Group that will own the I/O log files: %s"
msgstr "Gruppo proprietario dei file di registro di I/O: %s"
-#: plugins/sudoers/def_data.c:460
+#: plugins/sudoers/def_data.c:466
#, c-format
msgid "File mode to use for the I/O log files: 0%o"
msgstr "Modalità dei file di registro di I/O: 0%o"
-#: plugins/sudoers/def_data.c:464
+#: plugins/sudoers/def_data.c:470
#, c-format
msgid "Execute commands by file descriptor instead of by path: %s"
msgstr "Esegue comandi in base al descrittore del file e non sul percorso: %s"
-#: plugins/sudoers/def_data.c:468
+#: plugins/sudoers/def_data.c:474
msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning"
msgstr "Ignora le voci Defaults sconosciute nel file sudoers invece di inviare un avviso"
-#: plugins/sudoers/def_data.c:472
+#: plugins/sudoers/def_data.c:478
#, c-format
msgid "Time in seconds after which the command will be terminated: %u"
msgstr "Tempo in secondi dopo il quale il comando viene terminato: %u"
-#: plugins/sudoers/def_data.c:476
+#: plugins/sudoers/def_data.c:482
msgid "Allow the user to specify a timeout on the command line"
msgstr "Consente all'utente di specificare un timeout attraverso la riga di comando"
-#: plugins/sudoers/def_data.c:480
+#: plugins/sudoers/def_data.c:486
msgid "Flush I/O log data to disk immediately instead of buffering it"
msgstr "Scrive immediatamente i dati I/O del registro sul disco invece di tenerli in memoria"
-#: plugins/sudoers/def_data.c:484
+#: plugins/sudoers/def_data.c:490
msgid "Include the process ID when logging via syslog"
msgstr "Include l'ID del processo quando viene usato syslog"
-#: plugins/sudoers/def_data.c:488
+#: plugins/sudoers/def_data.c:494
#, c-format
msgid "Type of authentication timestamp record: %s"
msgstr "Tipo di marcatura temporale di autenticazione: %s"
-#: plugins/sudoers/def_data.c:492
+#: plugins/sudoers/def_data.c:498
#, c-format
msgid "Authentication failure message: %s"
msgstr "Messaggio di autenticazione non riuscita: %s"
-#: plugins/sudoers/def_data.c:496
+#: plugins/sudoers/def_data.c:502
msgid "Ignore case when matching user names"
msgstr "Ignora maiuscole/minuscole nella corrispondenza coi nomi utente"
-#: plugins/sudoers/def_data.c:500
+#: plugins/sudoers/def_data.c:506
msgid "Ignore case when matching group names"
msgstr "Ignora maiuscole/minuscole nella corrispondenza coi gruppi"
-#: plugins/sudoers/def_data.c:504
+#: plugins/sudoers/def_data.c:510
msgid "Log when a command is allowed by sudoers"
msgstr "Registra quando un comando è consentito da sudoers"
-#: plugins/sudoers/def_data.c:508
+#: plugins/sudoers/def_data.c:514
msgid "Log when a command is denied by sudoers"
msgstr "Registra quando un comando viene negato da sudoers"
-#: plugins/sudoers/def_data.c:512
+#: plugins/sudoers/def_data.c:518
msgid "Sudo log server(s) to connect to with optional port"
msgstr "Server di registro per sudo a cui connettersi, con la porta opzionale"
-#: plugins/sudoers/def_data.c:516
+#: plugins/sudoers/def_data.c:522
#, c-format
msgid "Sudo log server timeout in seconds: %u"
msgstr "Timeout server di registro per sudo, in secondi: %u"
-#: plugins/sudoers/def_data.c:520
+#: plugins/sudoers/def_data.c:526
msgid "Enable SO_KEEPALIVE socket option on the socket connected to the logserver"
msgstr "Abilita l'opzione SO_KEEPALIVE sul socket connesso al server di registro"
-#: plugins/sudoers/def_data.c:524
+#: plugins/sudoers/def_data.c:530
#, c-format
msgid "Path to the audit server's CA bundle file: %s"
msgstr "Percorso al file bundle CA del server di audit: %s"
-#: plugins/sudoers/def_data.c:528
+#: plugins/sudoers/def_data.c:534
#, c-format
msgid "Path to the sudoers certificate file: %s"
msgstr "Percorso al file certificato di sudoers: %s"
-#: plugins/sudoers/def_data.c:532
+#: plugins/sudoers/def_data.c:538
#, c-format
msgid "Path to the sudoers private key file: %s"
msgstr "Percorso al file chiave privata di sudoers: %s"
-#: plugins/sudoers/def_data.c:536
+#: plugins/sudoers/def_data.c:542
msgid "Verify that the log server's certificate is valid"
msgstr "Verifica che il certificato del server di registro è valido"
-#: plugins/sudoers/def_data.c:540
+#: plugins/sudoers/def_data.c:546
msgid "Allow the use of unknown runas user and/or group ID"
msgstr "Consente l'uso di ID utente o gruppo sconosciuto per runas"
-#: plugins/sudoers/def_data.c:544
+#: plugins/sudoers/def_data.c:550
msgid "Only permit running commands as a user with a valid shell"
msgstr "Consente di eseguire i comandi a un utente con una shell valida"
-#: plugins/sudoers/def_data.c:548
+#: plugins/sudoers/def_data.c:554
msgid "Set the pam remote user to the user running sudo"
msgstr "Imposta l'utente remoto pam all'utente che esegue sudo"
-#: plugins/sudoers/def_data.c:552
+#: plugins/sudoers/def_data.c:558
msgid "Set the pam remote host to the local host name"
msgstr "Imposta l'host remoto pam al nome host locale"
-#: plugins/sudoers/def_data.c:556
+#: plugins/sudoers/def_data.c:562
#, c-format
msgid "Working directory to change to before executing the command: %s"
msgstr "Directory di lavoro a cui passare prima dell'esecuzione del comando: %s"
-#: plugins/sudoers/def_data.c:560
+#: plugins/sudoers/def_data.c:566
#, c-format
msgid "Root directory to change to before executing the command: %s"
msgstr "Directory root a cui passare prima dell'esecuzione del comando: %s"
-#: plugins/sudoers/defaults.c:184
+#: plugins/sudoers/def_data.c:570
+#, c-format
+msgid "The format of logs to produce: %s"
+msgstr "Il formato dei registri da creare: %s"
+
+#: plugins/sudoers/defaults.c:185
#, c-format
-msgid "%s:%d: unknown defaults entry \"%s\""
-msgstr "%s:%d: voce Defaults \"%s\" sconosciuta"
+msgid "%s:%d:%d: unknown defaults entry \"%s\""
+msgstr "%s:%d:%d: voce Defaults \"%s\" sconosciuta"
-#: plugins/sudoers/defaults.c:187
+#: plugins/sudoers/defaults.c:188
#, c-format
msgid "%s: unknown defaults entry \"%s\""
msgstr "%s: voce Defaults \"%s\" sconosciuta"
-#: plugins/sudoers/defaults.c:233
+#: plugins/sudoers/defaults.c:234
#, c-format
-msgid "%s:%d: no value specified for \"%s\""
-msgstr "%s:%d: nessun valore specificato per \"%s\""
+msgid "%s:%d:%d: no value specified for \"%s\""
+msgstr "%s:%d:%d: nessun valore specificato per \"%s\""
-#: plugins/sudoers/defaults.c:236
+#: plugins/sudoers/defaults.c:237
#, c-format
msgid "%s: no value specified for \"%s\""
msgstr "%s: nessun valore specificato per \"%s\""
-#: plugins/sudoers/defaults.c:274
+#: plugins/sudoers/defaults.c:275
#, c-format
-msgid "%s:%d: option \"%s\" does not take a value"
-msgstr "%s:%d: l'opzione \"%s\" non accetta un valore"
+msgid "%s:%d:%d: option \"%s\" does not take a value"
+msgstr "%s:%d:%d: l'opzione \"%s\" non accetta un valore"
-#: plugins/sudoers/defaults.c:277
+#: plugins/sudoers/defaults.c:278
#, c-format
msgid "%s: option \"%s\" does not take a value"
msgstr "%s: l'opzione \"%s\" non accetta un valore"
-#: plugins/sudoers/defaults.c:302
+#: plugins/sudoers/defaults.c:303
#, c-format
-msgid "%s:%d: invalid Defaults type 0x%x for option \"%s\""
-msgstr "%s:%d: tipo Defaults 0x%x non valido per l'opzione \"%s\""
+msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\""
+msgstr "%s:%d:%d: tipo Defaults 0x%x non valido per l'opzione \"%s\""
-#: plugins/sudoers/defaults.c:305
+#: plugins/sudoers/defaults.c:306
#, c-format
msgid "%s: invalid Defaults type 0x%x for option \"%s\""
msgstr "%s: tipo Defaults 0x%x non valido per l'opzione \"%s\""
-#: plugins/sudoers/defaults.c:315
+#: plugins/sudoers/defaults.c:316
#, c-format
-msgid "%s:%d: value \"%s\" is invalid for option \"%s\""
-msgstr "%s:%d: il valore \"%s\" non è valido per l'opzione \"%s\""
+msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\""
+msgstr "%s:%d:%d: il valore \"%s\" non è valido per l'opzione \"%s\""
-#: plugins/sudoers/defaults.c:318
+#: plugins/sudoers/defaults.c:319
#, c-format
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: il valore \"%s\" non è valido per l'opzione \"%s\""
-#: plugins/sudoers/defaults.c:1025
+#: plugins/sudoers/defaults.c:1030
#, c-format
-msgid "%s:%d: values for \"%s\" must start with a '/', '~', or '*'"
-msgstr "%s:%d: i valori per \"%s\" devono iniziare con un carattere \"/\", \"~\" o \"*\""
+msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
+msgstr "%s:%d:%d: i valori per \"%s\" devono iniziare con un carattere \"/\", \"~\" o \"*\""
-#: plugins/sudoers/defaults.c:1029
+#: plugins/sudoers/defaults.c:1034
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s: i valori per \"%s\" devono iniziare con un carattere \"/\", \"~\" o \"*\""
-#: plugins/sudoers/defaults.c:1040
+#: plugins/sudoers/defaults.c:1045
#, c-format
-msgid "%s:%d: values for \"%s\" must start with a '/'"
-msgstr "%s:%d: i valori per \"%s\" devono iniziare con un carattere \"/\""
+msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
+msgstr "%s:%d:%d: i valori per \"%s\" devono iniziare con un carattere \"/\""
-#: plugins/sudoers/defaults.c:1044
+#: plugins/sudoers/defaults.c:1049
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s: i valori per \"%s\" devono iniziare con un carattere \"/\""
msgid "%s must only be writable by owner"
msgstr "%s deve essere scrivibile solo dal proprietario"
-#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:571
+#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:569
#, c-format
msgid "unable to load %s: %s"
msgstr "impossibile caricare %s: %s"
msgid "Local IP address and netmask pairs:\n"
msgstr "Coppia indirizzo IP locale e maschera di rete:\n"
-#: plugins/sudoers/iolog.c:142 plugins/sudoers/sudoers.c:448
-#: plugins/sudoers/sudoers.c:449 plugins/sudoers/sudoers.c:1374
-#: plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
+#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
#, c-format
msgid "unknown group: %s"
msgstr "gruppo sconosciuto: %s"
-#: plugins/sudoers/iolog.c:527 plugins/sudoers/iolog.c:817
-#: plugins/sudoers/iolog.c:969 plugins/sudoers/iolog.c:976
-#: plugins/sudoers/iolog.c:1097 plugins/sudoers/iolog.c:1104
-#: plugins/sudoers/iolog.c:1203 plugins/sudoers/iolog.c:1210
+#: plugins/sudoers/iolog.c:622
+msgid "unable to update sequence file"
+msgstr "impossibile aggiornare il file sequenza"
+
+#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
+#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
+#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
+#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "impossibile scrivere sul file di registro di I/O: %s"
-#: plugins/sudoers/iolog.c:576
-msgid "unable to update sequence file"
-msgstr "impossibile aggiornare il file sequenza"
-
-#: plugins/sudoers/iolog.c:615
+#: plugins/sudoers/iolog.c:661
#, c-format
msgid "unable to create %s/%s"
msgstr "impossibile creare %s/%s"
-#: plugins/sudoers/iolog.c:641
-msgid "unable to connect to log server"
-msgstr "impossibile connettersi al server del registro"
-
-#: plugins/sudoers/iolog.c:861
+#: plugins/sudoers/iolog.c:886
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: errore interno, file registro IO per l'evento %d non aperto"
-#: plugins/sudoers/iolog.c:954 plugins/sudoers/iolog.c:1082
-#: plugins/sudoers/iolog.c:1187 plugins/sudoers/timestamp.c:855
+#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
+#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
#: plugins/sudoers/visudo.c:499
msgid "unable to read the clock"
msgstr "impossibile leggere l'orologio"
-#: plugins/sudoers/iolog.c:1179 plugins/sudoers/iolog_client.c:993
+#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: errore interno, segnale %d non valido"
-#: plugins/sudoers/iolog_client.c:112 plugins/sudoers/iolog_client.c:391
-#: plugins/sudoers/iolog_client.c:1216 plugins/sudoers/iolog_client.c:1791
-msgid "error in event loop"
-msgstr "errore nel ciclo dell'evento"
-
-#: plugins/sudoers/iolog_client.c:193
-#, c-format
-msgid "Creation of new SSL_CTX object failed: %s"
-msgstr "Creazione di un nuovo oggetto SSL_CTX non riuscita: %s"
-
-#: plugins/sudoers/iolog_client.c:345 plugins/sudoers/iolog_client.c:350
-#, c-format
-msgid "TLS connection to %s:%s failed: %s"
-msgstr "Connessione TLS a %s:%s non riuscita: %s"
-
-#: plugins/sudoers/iolog_client.c:495
-msgid "TLS initialization was unsuccessful"
-msgstr "inizializzazione TLS non riuscita"
-
-#: plugins/sudoers/iolog_client.c:504
-msgid "TLS handshake was unsuccessful"
-msgstr "handshake TLS non riuscito"
-
-#: plugins/sudoers/iolog_client.c:769 plugins/sudoers/iolog_client.c:975
-msgid "unable to get time of day"
-msgstr "impossibile ottenere l'ora"
-
-#: plugins/sudoers/iolog_client.c:1002
-#, c-format
-msgid "%s: internal error, invalid exit status %d"
-msgstr "%s: errore interno, stato di uscita %d non valido"
-
-#: plugins/sudoers/iolog_client.c:1539
-msgid "lost connection to log server"
-msgstr "connessione al server del registro persa"
-
-#: plugins/sudoers/iolog_client.c:1616
-msgid "missing write buffer"
-msgstr "manca il buffer in scrittura"
-
-#: plugins/sudoers/ldap.c:176 plugins/sudoers/ldap_conf.c:291
+#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:291
msgid "starttls not supported when using ldaps"
msgstr "starttls non supportato quando viene utilizzato ldaps"
-#: plugins/sudoers/ldap.c:247
+#: plugins/sudoers/ldap.c:248
#, c-format
msgid "unable to initialize SSL cert and key db: %s"
msgstr "impossibile inizializzare il certificato SSL e il database delle chiavi: %s"
-#: plugins/sudoers/ldap.c:250
+#: plugins/sudoers/ldap.c:251
#, c-format
msgid "you must set TLS_CERT in %s to use SSL"
msgstr "è necessario impostare TLS_CERT in %s per usare SSL"
-#: plugins/sudoers/ldap.c:1658
+#: plugins/sudoers/ldap.c:1660
#, c-format
msgid "unable to initialize LDAP: %s"
msgstr "impossibile inizializzare LDAP: %s"
-#: plugins/sudoers/ldap.c:1695
+#: plugins/sudoers/ldap.c:1697
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "specificato start_tls ma le librerie LDAP non supportano ldap_start_tls_s() o ldap_start_tls_s_np()"
-#: plugins/sudoers/ldap.c:1832 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "attributo sudoOrder non valido: %s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "impossibile utilizzare URI ldap e ldaps assieme"
-#: plugins/sudoers/ldap_util.c:554 plugins/sudoers/ldap_util.c:556
+#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "impossibile convertire sudoOption: %s%s%s"
msgid "unable to send audit message"
msgstr "impossibile inviare il messaggio di audit"
-#: plugins/sudoers/logging.c:166
+#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
+#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+msgid "error in event loop"
+msgstr "errore nel ciclo dell'evento"
+
+#: plugins/sudoers/log_client.c:193
#, c-format
-msgid "unable to open log file: %s"
-msgstr "impossibile aprire il file di registro: %s"
+msgid "Creation of new SSL_CTX object failed: %s"
+msgstr "Creazione di un nuovo oggetto SSL_CTX non riuscita: %s"
-#: plugins/sudoers/logging.c:174
+#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350
#, c-format
-msgid "unable to lock log file: %s"
-msgstr "impossibile impostare il blocco sul file di registro: %s"
+msgid "TLS connection to %s:%s failed: %s"
+msgstr "Connessione TLS a %s:%s non riuscita: %s"
-#: plugins/sudoers/logging.c:207
+#: plugins/sudoers/log_client.c:519
+msgid "TLS initialization was unsuccessful"
+msgstr "inizializzazione TLS non riuscita"
+
+#: plugins/sudoers/log_client.c:528
+msgid "TLS handshake was unsuccessful"
+msgstr "handshake TLS non riuscito"
+
+#: plugins/sudoers/log_client.c:1202
#, c-format
-msgid "unable to write log file: %s"
-msgstr "impossibile scrivere sul file di registro: %s"
+msgid "%s: internal error, invalid exit status %d"
+msgstr "%s: errore interno, stato di uscita %d non valido"
-#: plugins/sudoers/logging.c:240
+#: plugins/sudoers/log_client.c:1738
+msgid "lost connection to log server"
+msgstr "connessione al server del registro persa"
+
+#: plugins/sudoers/log_client.c:1815
+msgid "missing write buffer"
+msgstr "manca il buffer in scrittura"
+
+#: plugins/sudoers/log_client.c:1964
+msgid "unable to connect to log server"
+msgstr "impossibile connettersi al server del registro"
+
+#: plugins/sudoers/logging.c:244
msgid "user NOT in sudoers"
msgstr "utente non tra i sudoers"
-#: plugins/sudoers/logging.c:242
+#: plugins/sudoers/logging.c:246
msgid "user NOT authorized on host"
msgstr "utente non autorizzato sull'host"
-#: plugins/sudoers/logging.c:244
+#: plugins/sudoers/logging.c:248
msgid "command not allowed"
msgstr "comando non consentito"
-#: plugins/sudoers/logging.c:287
+#: plugins/sudoers/logging.c:269
#, c-format
msgid "%s is not in the sudoers file. This incident will be reported.\n"
msgstr "%s non è nel file sudoers. Questo evento verrà segnalato.\n"
-#: plugins/sudoers/logging.c:290
+#: plugins/sudoers/logging.c:272
#, c-format
msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n"
msgstr "A %s non è consentito eseguire sudo su %s. Questo evento verrà segnalato.\n"
-#: plugins/sudoers/logging.c:294
+#: plugins/sudoers/logging.c:276
#, c-format
msgid "Sorry, user %s may not run sudo on %s.\n"
msgstr "L'utente %s non può eseguire sudo su %s.\n"
-#: plugins/sudoers/logging.c:297
+#: plugins/sudoers/logging.c:279
#, c-format
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "All'utente %s non è consentito eseguire \"%s%s%s\" come %s%s%s su %s.\n"
-#: plugins/sudoers/logging.c:334 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:591
-#: plugins/sudoers/sudoers.c:593 plugins/sudoers/sudoers.c:742
-#: plugins/sudoers/sudoers.c:744
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
+#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
+#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
+#: plugins/sudoers/sudoers.c:741
#, c-format
msgid "%s: command not found"
msgstr "%s: comando non trovato"
-#: plugins/sudoers/logging.c:336 plugins/sudoers/sudoers.c:583
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
"viene ignorato \"%s\" trovato in \".\"\n"
"Usare \"sudo ./%s\" per eseguire \"%s\"."
-#: plugins/sudoers/logging.c:353
-msgid "authentication failure"
-msgstr "autenticazione non riuscita"
-
-#: plugins/sudoers/logging.c:379
-msgid "a password is required"
-msgstr "è necessaria una password"
-
-#: plugins/sudoers/logging.c:449
+#: plugins/sudoers/logging.c:337
#, c-format
msgid "%u incorrect password attempt"
msgid_plural "%u incorrect password attempts"
msgstr[0] "%u tentativo di immissione password non corretto"
msgstr[1] "%u tentativi di immissione password non corretti"
-#: plugins/sudoers/logging.c:713
-#, c-format
-msgid "unable to dup stdin: %m"
-msgstr "impossibile eseguire dup sullo stdin: %m"
+#: plugins/sudoers/logging.c:393
+msgid "authentication failure"
+msgstr "autenticazione non riuscita"
-#: plugins/sudoers/logging.c:750
-#, c-format
-msgid "unable to execute %s: %m"
-msgstr "impossibile eseguire %s: %m"
+#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453
+msgid "a password is required"
+msgstr "è necessaria una password"
-#: plugins/sudoers/logging.c:791 plugins/sudoers/logging.c:847
+#: plugins/sudoers/logging.c:729
#, c-format
-msgid "unable to fork: %m"
-msgstr "impossibile eseguire fork: %m"
+msgid "unable to open log file: %s"
+msgstr "impossibile aprire il file di registro: %s"
-#: plugins/sudoers/logging.c:837
+#: plugins/sudoers/logging.c:762
#, c-format
-msgid "unable to open pipe: %m"
-msgstr "impossibile aprire una pipe: %m"
+msgid "unable to write log file: %s"
+msgstr "impossibile scrivere sul file di registro: %s"
-#: plugins/sudoers/match_digest.c:116
+#: plugins/sudoers/match_digest.c:129
#, c-format
msgid "digest for %s (%s) is not in %s form"
msgstr "il digest per %s (%s) non è nella forma %s"
msgid "invalid %.*s set by sudo front-end"
msgstr "%.*s non valido impostato dal front-end sudo"
-#: plugins/sudoers/policy.c:305 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
msgid "unable to parse network address list"
msgstr "impossibile analizzare l'elenco degli indirizzi di rete"
-#: plugins/sudoers/policy.c:450
+#: plugins/sudoers/policy.c:455
msgid "user name not set by sudo front-end"
msgstr "nome utente non impostato dal front-end sudo"
-#: plugins/sudoers/policy.c:454
+#: plugins/sudoers/policy.c:459
msgid "user-ID not set by sudo front-end"
msgstr "ID utente non impostato dal front-end sudo"
-#: plugins/sudoers/policy.c:458
+#: plugins/sudoers/policy.c:463
msgid "group-ID not set by sudo front-end"
msgstr "ID gruppo non impostato dal front-end sudo"
-#: plugins/sudoers/policy.c:462
+#: plugins/sudoers/policy.c:467
msgid "host name not set by sudo front-end"
msgstr "nome dell'host non impostato dal front-end sudo"
-#: plugins/sudoers/policy.c:638
+#: plugins/sudoers/policy.c:643
#, c-format
msgid "invalid working directory: %s"
msgstr "directory di lavoro non valida: %s"
-#: plugins/sudoers/policy.c:806
+#: plugins/sudoers/policy.c:811
#, c-format
msgid "invalid chroot directory: %s"
msgstr "directory chroot non valida: %s"
-#: plugins/sudoers/policy.c:942 plugins/sudoers/visudo.c:231
+#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
#: plugins/sudoers/visudo.c:860
#, c-format
msgid "unable to execute %s"
msgstr "impossibile eseguire %s"
-#: plugins/sudoers/policy.c:1106
+#: plugins/sudoers/policy.c:1111
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Versione %s del plugin della politica sudoers\n"
-#: plugins/sudoers/policy.c:1108
+#: plugins/sudoers/policy.c:1113
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Versione %d della grammatica del file sudoers\n"
-#: plugins/sudoers/policy.c:1112
+#: plugins/sudoers/policy.c:1117
#, c-format
msgid ""
"\n"
"\n"
"Percorso sudoers: %s\n"
-#: plugins/sudoers/policy.c:1115
+#: plugins/sudoers/policy.c:1120
#, c-format
msgid "nsswitch path: %s\n"
msgstr "percorso nsswitch: %s\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1122
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "percorso ldap.conf: %s\n"
-#: plugins/sudoers/policy.c:1118
+#: plugins/sudoers/policy.c:1123
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "percorso ldap.secret: %s\n"
-#: plugins/sudoers/policy.c:1151
+#: plugins/sudoers/policy.c:1156
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "impossibile registrare un hook di tipo %d (versione %d.%d)"
msgid "truncated audit path argv[0]: %s"
msgstr "percorso audit argv[0] troncato: %s"
-#: plugins/sudoers/sssd.c:574
+#: plugins/sudoers/sssd.c:572
msgid "unable to initialize SSS source. Is SSSD installed on your machine?"
msgstr "impossibile inizializzare la sorgente SSS. È stato installato SSSD?"
-#: plugins/sudoers/sssd.c:582 plugins/sudoers/sssd.c:591
-#: plugins/sudoers/sssd.c:600 plugins/sudoers/sssd.c:609
-#: plugins/sudoers/sssd.c:618
+#: plugins/sudoers/sssd.c:580 plugins/sudoers/sssd.c:589
+#: plugins/sudoers/sssd.c:598 plugins/sudoers/sssd.c:607
+#: plugins/sudoers/sssd.c:616
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "impossibile trovare il simbolo \"%s\" in %s"
-#: plugins/sudoers/sudoers.c:218 plugins/sudoers/sudoers.c:1043
+#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
msgid "problem with defaults entries"
msgstr "problema con le voci Defaults"
-#: plugins/sudoers/sudoers.c:222
+#: plugins/sudoers/sudoers.c:218
msgid "no valid sudoers sources found, quitting"
msgstr "nessuna sorgente valida di sudoers trovata, uscita"
-#: plugins/sudoers/sudoers.c:295
+#: plugins/sudoers/sudoers.c:292
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr "l'utente non è autorizzato a cambiare la directory root a %s"
-#: plugins/sudoers/sudoers.c:297
+#: plugins/sudoers/sudoers.c:294
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr "non è consentito l'uso dell'opzione -R con %s"
-#: plugins/sudoers/sudoers.c:321
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "l'utente non è autorizzato a cambiare directory a %s"
-#: plugins/sudoers/sudoers.c:322
+#: plugins/sudoers/sudoers.c:320
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr "non è consentito l'uso dell'opzione -D con %s"
-#: plugins/sudoers/sudoers.c:353
+#: plugins/sudoers/sudoers.c:351
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers indica che a root non è consentito usare sudo"
-#: plugins/sudoers/sudoers.c:413
+#: plugins/sudoers/sudoers.c:411
msgid "user not allowed to override closefrom limit"
msgstr "l'utente non è autorizzato a scavalcare il limite closefrom"
-#: plugins/sudoers/sudoers.c:414
+#: plugins/sudoers/sudoers.c:412
msgid "you are not permitted to use the -C option"
msgstr "utente non abilitato all'uso dell'opzione -C"
-#: plugins/sudoers/sudoers.c:475
+#: plugins/sudoers/sudoers.c:472
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "proprietario marcatura temporale (%s): utente inesistente"
-#: plugins/sudoers/sudoers.c:490
+#: plugins/sudoers/sudoers.c:487
msgid "no tty"
msgstr "nessun tty"
-#: plugins/sudoers/sudoers.c:491
+#: plugins/sudoers/sudoers.c:488
msgid "sorry, you must have a tty to run sudo"
msgstr "è necessario disporre di un tty per eseguire sudo"
-#: plugins/sudoers/sudoers.c:497 plugins/sudoers/sudoers.c:499
+#: plugins/sudoers/sudoers.c:495
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "shell utente %s non valida: %s"
-#: plugins/sudoers/sudoers.c:582
+#: plugins/sudoers/sudoers.c:578
msgid "command in current directory"
msgstr "comando nella directory corrente"
-#: plugins/sudoers/sudoers.c:600
+#: plugins/sudoers/sudoers.c:597
msgid "user not allowed to set a command timeout"
msgstr "l'utente non è autorizzato a impostare un timeout per i comandi"
-#: plugins/sudoers/sudoers.c:602
+#: plugins/sudoers/sudoers.c:599
msgid "sorry, you are not allowed set a command timeout"
msgstr "non è consentito impostare un timeout per i comandi"
-#: plugins/sudoers/sudoers.c:610
+#: plugins/sudoers/sudoers.c:607
msgid "user not allowed to preserve the environment"
msgstr "l'utente non è autorizzato a preservare l'ambiente"
-#: plugins/sudoers/sudoers.c:612
+#: plugins/sudoers/sudoers.c:609
msgid "sorry, you are not allowed to preserve the environment"
msgstr "non è consentito preservare l'ambiente"
-#: plugins/sudoers/sudoers.c:978
+#: plugins/sudoers/sudoers.c:945
msgid "command too long"
msgstr "comando troppo lungo"
-#: plugins/sudoers/sudoers.c:1036
+#: plugins/sudoers/sudoers.c:1003
msgid "sudoedit doesn't need to be run via sudo"
msgstr "non è necessario eseguire sudoedit via sudo"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/sudoreplay.c:1546
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "impossibile leggere %s"
-#: plugins/sudoers/sudoers.c:1115 plugins/sudoers/visudo.c:432
+#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
#: plugins/sudoers/visudo.c:726
#, c-format
msgid "unable to stat %s"
msgstr "impossibile eseguire stat su %s"
-#: plugins/sudoers/sudoers.c:1119 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
#, c-format
msgid "%s is not a regular file"
msgstr "%s non è un file regolare"
-#: plugins/sudoers/sudoers.c:1123 plugins/sudoers/timestamp.c:252 toke.l:1121
+#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s è di proprietà dello uid %u, dovrebbe essere %u"
-#: plugins/sudoers/sudoers.c:1127 toke.l:1126
+#: plugins/sudoers/sudoers.c:1094 toke.l:1117
#, c-format
msgid "%s is world writable"
msgstr "%s è scrivibile da tutti"
-#: plugins/sudoers/sudoers.c:1131 toke.l:1129
+#: plugins/sudoers/sudoers.c:1098 toke.l:1120
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s è di proprietà del gid %u, dovrebbe essere %u"
-#: plugins/sudoers/sudoers.c:1164
+#: plugins/sudoers/sudoers.c:1131
#, c-format
msgid "only root can use \"-c %s\""
msgstr "solo root può usare \"-c %s\""
-#: plugins/sudoers/sudoers.c:1183
+#: plugins/sudoers/sudoers.c:1150
#, c-format
msgid "unknown login class: %s"
msgstr "classe di login sconosciuta: %s"
-#: plugins/sudoers/sudoers.c:1268 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
#, c-format
msgid "unable to resolve host %s"
msgstr "impossibile risolvere l'host %s"
-#: plugins/sudoers/sudoreplay.c:256
+#: plugins/sudoers/sudoreplay.c:257
#, c-format
msgid "invalid filter option: %s"
msgstr "opzione di filtro non valida: %s"
-#: plugins/sudoers/sudoreplay.c:272
+#: plugins/sudoers/sudoreplay.c:273
#, c-format
msgid "invalid max wait: %s"
msgstr "attesa massima non valida: %s"
-#: plugins/sudoers/sudoreplay.c:295
+#: plugins/sudoers/sudoreplay.c:296
#, c-format
msgid "invalid speed factor: %s"
msgstr "fattore di velocità non valido: %s"
-#: plugins/sudoers/sudoreplay.c:331
+#: plugins/sudoers/sudoreplay.c:332
#, c-format
msgid "%s/%.2s/%.2s/%.2s: %s"
msgstr "%s/%.2s/%.2s/%.2s: %s"
-#: plugins/sudoers/sudoreplay.c:336
+#: plugins/sudoers/sudoreplay.c:337
#, c-format
msgid "%s/timing: %s"
msgstr "%s/timing: %s"
-#: plugins/sudoers/sudoreplay.c:340
+#: plugins/sudoers/sudoreplay.c:341
#, c-format
msgid "%s/%s: %s"
msgstr "%s/%s: %s"
-#: plugins/sudoers/sudoreplay.c:364
+#: plugins/sudoers/sudoreplay.c:365
#, c-format
msgid "Replaying sudo session: %s"
msgstr "Riproduzione della sessione sudo: %s"
-#: plugins/sudoers/sudoreplay.c:626
+#: plugins/sudoers/sudoreplay.c:627
msgid "unable to set tty to raw mode"
msgstr "impossibile impostare il terminale in modalità raw"
-#: plugins/sudoers/sudoreplay.c:677
+#: plugins/sudoers/sudoreplay.c:678
msgid "Warning: your terminal is too small to properly replay the log.\n"
msgstr "Attenzione: il terminale è troppo piccolo per riprodurre correttamente il registro.\n"
-#: plugins/sudoers/sudoreplay.c:678
+#: plugins/sudoers/sudoreplay.c:679
#, c-format
msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d."
msgstr "La geometria del registro è %dx%d, quella del terminale è %dx%d."
-#: plugins/sudoers/sudoreplay.c:706
+#: plugins/sudoers/sudoreplay.c:707
msgid "Replay finished, press any key to restore the terminal."
msgstr "Riproduzione terminata. Premere un tasto per ripristinare il terminale."
-#: plugins/sudoers/sudoreplay.c:1196 plugins/sudoers/sudoreplay.c:1226
+#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227
#, c-format
msgid "ambiguous expression \"%s\""
msgstr "espressione \"%s\" ambigua"
-#: plugins/sudoers/sudoreplay.c:1248
+#: plugins/sudoers/sudoreplay.c:1249
msgid "unmatched ')' in expression"
msgstr "carattere \")\" nell'espressione non corrisposto"
-#: plugins/sudoers/sudoreplay.c:1252
+#: plugins/sudoers/sudoreplay.c:1253
#, c-format
msgid "unknown search term \"%s\""
msgstr "termine di ricerca \"%s\" sconosciuto"
-#: plugins/sudoers/sudoreplay.c:1267
+#: plugins/sudoers/sudoreplay.c:1268
#, c-format
msgid "%s requires an argument"
msgstr "%s richiede un argomento"
-#: plugins/sudoers/sudoreplay.c:1270 plugins/sudoers/sudoreplay.c:1522
+#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523
#, c-format
msgid "invalid regular expression: %s"
msgstr "espressione regolare non valida: %s"
-#: plugins/sudoers/sudoreplay.c:1275
+#: plugins/sudoers/sudoreplay.c:1276
#, c-format
msgid "could not parse date \"%s\""
msgstr "impossibile analizzare la data \"%s\""
-#: plugins/sudoers/sudoreplay.c:1284
+#: plugins/sudoers/sudoreplay.c:1285
msgid "unmatched '(' in expression"
msgstr "carattere \"(\" nell'espressione non corrisposto"
-#: plugins/sudoers/sudoreplay.c:1286
+#: plugins/sudoers/sudoreplay.c:1287
msgid "illegal trailing \"or\""
msgstr "\"or\" finale non consentito"
-#: plugins/sudoers/sudoreplay.c:1288
+#: plugins/sudoers/sudoreplay.c:1289
msgid "illegal trailing \"!\""
msgstr "carattere \"!\" finale non consentito"
-#: plugins/sudoers/sudoreplay.c:1346
+#: plugins/sudoers/sudoreplay.c:1347
#, c-format
msgid "unknown search type %d"
msgstr "tipo di ricerca %d sconosciuto"
-#: plugins/sudoers/sudoreplay.c:1613
+#: plugins/sudoers/sudoreplay.c:1614
#, c-format
msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n"
msgstr "uso: %s [-hnRS] [-d DIR] [-m NUM] [-s NUM] ID\n"
-#: plugins/sudoers/sudoreplay.c:1616
+#: plugins/sudoers/sudoreplay.c:1617
#, c-format
msgid "usage: %s [-h] [-d dir] -l [search expression]\n"
msgstr "uso: %s [-h] [-d DIR] -l [ESPRESSIONE DI RICERCA]\n"
-#: plugins/sudoers/sudoreplay.c:1625
+#: plugins/sudoers/sudoreplay.c:1626
#, c-format
msgid ""
"%s - replay sudo session logs\n"
"%s - Riproduce i registri di sessione di sudo\n"
"\n"
-#: plugins/sudoers/sudoreplay.c:1627
+#: plugins/sudoers/sudoreplay.c:1628
msgid ""
"\n"
"Options:\n"
msgid "Edit anyway? [y/N]"
msgstr "Modificare comunque? [y/N]"
-#: plugins/sudoers/visudo.c:1089
+#: plugins/sudoers/visudo.c:1091
#, c-format
-msgid "Error: %s:%d: cycle in %s \"%s\""
-msgstr "Errore: %s:%d: ciclo in %s \"%s\""
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Errore: %s:%d:%d: ciclo in %s \"%s\""
-#: plugins/sudoers/visudo.c:1090
+#: plugins/sudoers/visudo.c:1092
#, c-format
-msgid "Warning: %s:%d: cycle in %s \"%s\""
-msgstr "Attenzione: %s:%d: ciclo in %s \"%s\""
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Attenzione: %s:%d:%d: ciclo in %s \"%s\""
-#: plugins/sudoers/visudo.c:1094
+#: plugins/sudoers/visudo.c:1096
#, c-format
-msgid "Error: %s:%d: %s \"%s\" referenced but not defined"
-msgstr "Errore: %1$s:%2$d riferimento a \"%4$s\" %3$s, ma non definito"
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Errore: %1$s:%2$d:%3$d: riferimento a \"%5$s\" %4$s, ma non definito"
-#: plugins/sudoers/visudo.c:1095
+#: plugins/sudoers/visudo.c:1097
#, c-format
-msgid "Warning: %s:%d: %s \"%s\" referenced but not defined"
-msgstr "Attenzione: %1$s:%2$d: riferimento a \"%4$s\" %3$s, ma non definito"
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Attenzione: %1$s:%2$d:%3$d: riferimento a \"%5$s\" %4$s, ma non definito"
-#: plugins/sudoers/visudo.c:1186
+#: plugins/sudoers/visudo.c:1188
#, c-format
-msgid "Warning: %s:%d: unused %s \"%s\""
-msgstr "Attenzione: %s:%d: inutilizzato %s \"%s\""
+msgid "Warning: %s:%d:%d: unused %s \"%s\""
+msgstr "Attenzione: %s:%d:%d: inutilizzato %s \"%s\""
-#: plugins/sudoers/visudo.c:1301
+#: plugins/sudoers/visudo.c:1303
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
"\n"
msgstr "%s - Modifica in sicurezza il file sudoers\n"
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1305
msgid ""
"\n"
"Options:\n"
" -s, --strict Verifica precisa della sintassi\n"
" -V, --version Visualizza la versione ed esce\n"
-#: toke.l:1093
+#: toke.l:179
+msgid "empty string"
+msgstr "stringa vuota"
+
+#: toke.l:189 toke.l:491
+msgid "empty group"
+msgstr "gruppo vuoto"
+
+#: toke.l:197 toke.l:489
+msgid "empty netgroup"
+msgstr "netgroup vuoto"
+
+#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+msgid "invalid line continuation"
+msgstr "continuazione riga non valida"
+
+#: toke.l:528 toke.l:540
+msgid "invalid IPv6 address"
+msgstr "indirizzo IPv6 non valido"
+
+#: toke.l:764
+msgid "unexpected line break in string"
+msgstr "interruzione riga non attesa nella stringa"
+
+#: toke.l:1084
msgid "too many levels of includes"
msgstr "troppi livelli di inclusioni"
#
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.2rc1\n"
+"Project-Id-Version: sudoers 1.9.4b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-06-24 05:35-0600\n"
-"PO-Revision-Date: 2020-07-17 23:15+0900\n"
+"POT-Creation-Date: 2020-11-14 06:24-0700\n"
+"PO-Revision-Date: 2020-12-11 01:02+0900\n"
"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
"Language-Team: Korean <translation-team-ko@googlegroups.com>\n"
"Language: ko\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.3.1\n"
-#: confstr.sh:1
+#: confstr.sh:1 gram.y:1077
msgid "syntax error"
msgstr "문법 오류"
msgid "Sorry, try again."
msgstr "죄송합니다만, 다시 시도하십시오."
-#: gram.y:203 gram.y:251 gram.y:258 gram.y:265 gram.y:272 gram.y:279
-#: gram.y:295 gram.y:319 gram.y:326 gram.y:333 gram.y:340 gram.y:347
-#: gram.y:410 gram.y:419 gram.y:430 gram.y:463 gram.y:470 gram.y:477
-#: gram.y:484 gram.y:511 gram.y:583 gram.y:590 gram.y:599 gram.y:608
-#: gram.y:625 gram.y:737 gram.y:744 gram.y:752 gram.y:758 gram.y:858
-#: gram.y:865 gram.y:872 gram.y:879 gram.y:886 gram.y:912 gram.y:919
-#: gram.y:926 gram.y:1068 gram.y:1347 lib/iolog/iolog_fileio.c:1101
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:283
-#: lib/iolog/iolog_json.c:313 lib/iolog/iolog_json.c:435
-#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115
-#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133
-#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196
-#: logsrvd/eventlog.c:223 logsrvd/sendlog.c:443 plugins/sudoers/alias.c:125
-#: plugins/sudoers/alias.c:132 plugins/sudoers/alias.c:148
-#: plugins/sudoers/audit.c:108 plugins/sudoers/audit.c:212
-#: plugins/sudoers/auth/bsdauth.c:143 plugins/sudoers/auth/kerb5.c:118
-#: plugins/sudoers/auth/kerb5.c:144 plugins/sudoers/auth/pam.c:669
-#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59
-#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:161
-#: plugins/sudoers/cvtsudoers.c:178 plugins/sudoers/cvtsudoers.c:189
-#: plugins/sudoers/cvtsudoers.c:301 plugins/sudoers/cvtsudoers.c:429
-#: plugins/sudoers/cvtsudoers.c:562 plugins/sudoers/cvtsudoers.c:579
-#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757
-#: plugins/sudoers/cvtsudoers.c:765 plugins/sudoers/cvtsudoers.c:1179
-#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285
-#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
-#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
-#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
-#: plugins/sudoers/cvtsudoers_ldif.c:426 plugins/sudoers/cvtsudoers_ldif.c:434
-#: plugins/sudoers/cvtsudoers_ldif.c:451 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:607 plugins/sudoers/defaults.c:626
-#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052
-#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84
-#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261
+#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
+#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
+#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
+#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
+#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
+#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
+#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
+#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
+#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
+#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
+#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
+#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
+#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
+#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
+#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
+#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
+#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
+#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
+#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
+#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
+#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
+#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
+#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
+#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
+#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
+#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
+#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
+#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
+#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
+#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
+#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
+#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483
-#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:382
-#: plugins/sudoers/iolog_client.c:559 plugins/sudoers/iolog_client.c:678
-#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176
-#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723
-#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183
-#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431
-#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440
-#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743
-#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279
-#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743
-#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959
-#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
+#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83
-#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192
-#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545
-#: plugins/sudoers/logging.c:586 plugins/sudoers/logging.c:723
-#: plugins/sudoers/logging.c:1083 plugins/sudoers/match_command.c:243
-#: plugins/sudoers/match_command.c:391 plugins/sudoers/match_command.c:438
-#: plugins/sudoers/match_command.c:509 plugins/sudoers/match_digest.c:80
-#: plugins/sudoers/parse.c:193 plugins/sudoers/parse.c:205
-#: plugins/sudoers/parse.c:220 plugins/sudoers/parse.c:232
+#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
+#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
+#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
+#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
+#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
+#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
+#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
+#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
+#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:491
-#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262
-#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514
-#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649
-#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865
-#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967
-#: plugins/sudoers/sssd.c:146 plugins/sudoers/sssd.c:409
-#: plugins/sudoers/sssd.c:472 plugins/sudoers/sssd.c:516
-#: plugins/sudoers/sssd.c:563 plugins/sudoers/sssd.c:755
-#: plugins/sudoers/stubs.c:96 plugins/sudoers/stubs.c:104
-#: plugins/sudoers/sudoers.c:316 plugins/sudoers/sudoers.c:327
-#: plugins/sudoers/sudoers.c:337 plugins/sudoers/sudoers.c:380
-#: plugins/sudoers/sudoers.c:720 plugins/sudoers/sudoers.c:849
-#: plugins/sudoers/sudoers.c:894 plugins/sudoers/sudoers.c:1198
-#: plugins/sudoers/sudoreplay.c:553 plugins/sudoers/sudoreplay.c:556
-#: plugins/sudoers/sudoreplay.c:1260 plugins/sudoers/sudoreplay.c:1470
-#: plugins/sudoers/sudoreplay.c:1474 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
+#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
+#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
+#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
+#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
+#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
+#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
+#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
+#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
+#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
+#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
+#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
+#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:432
+#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:146
-#: plugins/sudoers/visudo.c:322 plugins/sudoers/visudo.c:328
-#: plugins/sudoers/visudo.c:438 plugins/sudoers/visudo.c:616
-#: plugins/sudoers/visudo.c:936 plugins/sudoers/visudo.c:1024
-#: plugins/sudoers/visudo.c:1121 toke.l:864 toke.l:981 toke.l:1039
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
+#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
+#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
+#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
+#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
msgid "unable to allocate memory"
msgstr "메모리를 할당할 수 없습니다"
-#: gram.y:505
+#: gram.y:552
msgid "a digest requires a path name"
msgstr "다이제스트에 경로 이름이 필요합니다"
-#: gram.y:638
+#: gram.y:581
+msgid "values for \"CWD\" must start with a '/', '~', or '*'"
+msgstr "%s: \"CWD\" 값은 '/'; '~'; '*' 문자로 시작해야합니다"
+
+#: gram.y:593
+msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
+msgstr "%s: \"CHROOT\" 값은 '/'; '~'; '*' 문자로 시작해야합니다"
+
+#: gram.y:715
+#, c-format
+msgid "syntax error, reserved word %s used as an alias name"
+msgstr "문법 오류. %s 예약어를 별칭으로 썼습니다"
+
+#: gram.y:735
msgid "invalid notbefore value"
msgstr "잘못된 notbefore 값"
-#: gram.y:646
+#: gram.y:743
msgid "invalid notafter value"
msgstr "잘못된 notafter 값"
-#: gram.y:655 plugins/sudoers/policy.c:306
+#: gram.y:752 plugins/sudoers/policy.c:335
msgid "timeout value too large"
msgstr "제한 시간 값이 너무 큽니다"
-#: gram.y:657 plugins/sudoers/policy.c:308
+#: gram.y:754 plugins/sudoers/policy.c:337
msgid "invalid timeout value"
msgstr "잘못된 제한 시간 값"
-#: gram.y:1347 lib/iolog/iolog_fileio.c:1101 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:282 lib/iolog/iolog_json.c:313
-#: lib/iolog/iolog_json.c:435 lib/iolog/iolog_json.c:713
-#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115
-#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133
-#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196
-#: logsrvd/eventlog.c:223 logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1221
-#: logsrvd/logsrvd.c:1266 logsrvd/sendlog.c:443 logsrvd/sendlog.c:1302
-#: logsrvd/sendlog.c:1309 logsrvd/sendlog.c:1727 plugins/sudoers/audit.c:108
-#: plugins/sudoers/audit.c:212 plugins/sudoers/auth/pam.c:482
+#: gram.y:1079
+#, c-format
+msgid "%s:%d:%d: %s\n"
+msgstr "%s:%d:%d: %s\n"
+
+#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
+#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
+#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
+#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
+#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
+#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
+#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
+#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
+#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
+#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
+#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:160
-#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
-#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
-#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
-#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757
-#: plugins/sudoers/cvtsudoers.c:764 plugins/sudoers/cvtsudoers.c:1179
-#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
+#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
+#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
+#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
+#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
+#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
+#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433
-#: plugins/sudoers/cvtsudoers_ldif.c:450 plugins/sudoers/cvtsudoers_ldif.c:459
-#: plugins/sudoers/cvtsudoers_ldif.c:606 plugins/sudoers/defaults.c:626
-#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052
-#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84
-#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:132
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483
-#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:215
-#: plugins/sudoers/iolog_client.c:236 plugins/sudoers/iolog_client.c:249
-#: plugins/sudoers/iolog_client.c:382 plugins/sudoers/iolog_client.c:678
-#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176
-#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723
-#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183
-#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431
-#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440
-#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743
-#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279
-#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743
-#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959
-#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
-#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83
-#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192
-#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545
-#: plugins/sudoers/logging.c:585 plugins/sudoers/logging.c:1083
-#: plugins/sudoers/match_command.c:242 plugins/sudoers/match_command.c:390
-#: plugins/sudoers/match_command.c:437 plugins/sudoers/match_command.c:509
-#: plugins/sudoers/match_digest.c:80 plugins/sudoers/parse.c:192
-#: plugins/sudoers/parse.c:204 plugins/sudoers/parse.c:219
-#: plugins/sudoers/parse.c:231 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
+#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
+#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
+#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
+#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
+#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
+#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
+#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
+#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
+#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
+#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
+#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
+#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
+#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
+#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
+#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
+#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
+#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:120 plugins/sudoers/policy.c:129
-#: plugins/sudoers/policy.c:138 plugins/sudoers/policy.c:164
-#: plugins/sudoers/policy.c:291 plugins/sudoers/policy.c:306
-#: plugins/sudoers/policy.c:308 plugins/sudoers/policy.c:337
-#: plugins/sudoers/policy.c:346 plugins/sudoers/policy.c:389
-#: plugins/sudoers/policy.c:399 plugins/sudoers/policy.c:408
-#: plugins/sudoers/policy.c:417 plugins/sudoers/policy.c:491
-#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262
-#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514
-#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649
-#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865
-#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967
+#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
+#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
+#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
+#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
+#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
+#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
+#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
+#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
+#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
+#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
+#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
+#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:145
-#: plugins/sudoers/sssd.c:409 plugins/sudoers/sssd.c:472
-#: plugins/sudoers/sssd.c:516 plugins/sudoers/sssd.c:563
-#: plugins/sudoers/sssd.c:755 plugins/sudoers/stubs.c:96
-#: plugins/sudoers/stubs.c:104 plugins/sudoers/sudoers.c:316
-#: plugins/sudoers/sudoers.c:327 plugins/sudoers/sudoers.c:337
-#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:720
-#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:894
-#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/sudoreplay.c:553
-#: plugins/sudoers/sudoreplay.c:556 plugins/sudoers/sudoreplay.c:1260
-#: plugins/sudoers/sudoreplay.c:1470 plugins/sudoers/sudoreplay.c:1474
+#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
+#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
+#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
+#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
+#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
+#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
+#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:146 plugins/sudoers/visudo.c:322
-#: plugins/sudoers/visudo.c:328 plugins/sudoers/visudo.c:438
-#: plugins/sudoers/visudo.c:616 plugins/sudoers/visudo.c:936
-#: plugins/sudoers/visudo.c:1024 plugins/sudoers/visudo.c:1121 toke.l:864
-#: toke.l:981 toke.l:1039
+#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
+#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
+#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
+#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
+#: toke.l:1033 toke.l:1091
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/iolog/iolog_fileio.c:157
+#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
+#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
+#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
+#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
+#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
+#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
+#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
+#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
+#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
+#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
+#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
+#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
+#: plugins/sudoers/toke_util.c:169
+#, c-format
+msgid "internal error, %s overflow"
+msgstr "내부 오류. %s 오버플로우"
+
+#: lib/eventlog/eventlog.c:343
+#, c-format
+msgid "unable to dup stdin: %m"
+msgstr "표준 입력을 복제할 수 없습니다: %m"
+
+#: lib/eventlog/eventlog.c:388
+#, c-format
+msgid "unable to execute %s: %m"
+msgstr "%s을(를) 실행할 수 없습니다: %m"
+
+#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+msgid "unable to fork"
+msgstr "포킹할 수 없습니다"
+
+#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#, c-format
+msgid "unable to fork: %m"
+msgstr "포킹할 수 없습니다: %m"
+
+#: lib/eventlog/eventlog.c:480
+#, c-format
+msgid "unable to open pipe: %m"
+msgstr "파이프를 열 수 없습니다: %m"
+
+#: lib/eventlog/eventlog.c:894
+#, c-format
+msgid "%8s : %s"
+msgstr "%8s : %s"
+
+#: lib/eventlog/eventlog.c:923
+#, c-format
+msgid "%8s : (command continued) %s"
+msgstr "%8s : (명령 계속 실행) %s"
+
+#: lib/iolog/iolog_fileio.c:155
#, c-format
msgid "%s exists but is not a directory (0%o)"
msgstr "%s이(가) 있지만 디렉터리가 아닙니다(0%o)"
-#: lib/iolog/iolog_fileio.c:187 lib/iolog/iolog_fileio.c:233
+#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
#: plugins/sudoers/timestamp.c:205
#, c-format
msgid "unable to mkdir %s"
msgstr "mkdir %s 명령을 실행할 수 없습니다"
-#: lib/iolog/iolog_fileio.c:237 plugins/sudoers/visudo.c:733
-#: plugins/sudoers/visudo.c:744
+#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
+#: plugins/sudoers/visudo.c:743
#, c-format
msgid "unable to change mode of %s to 0%o"
msgstr "%s 모드를 0%o 값으로 바꿀 수 없습니다"
msgid "expected JSON_STRING, got %d"
msgstr "JSON_STRING 값을 기대했지만, %d 결과가 나왔습니다"
-#: lib/iolog/iolog_json.c:305
+#: lib/iolog/iolog_json.c:327
msgid "missing double quote in name"
msgstr "이름에 이중 따옴표가 빠졌습니다"
-#: lib/iolog/iolog_json.c:392
+#: lib/iolog/iolog_json.c:414
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "JSON_OBJECT 값을 기대했지만, %d 결과가 나왔습니다"
-#: lib/iolog/iolog_json.c:441 lib/iolog/iolog_json.c:444
-#: lib/iolog/iolog_json.c:446 lib/iolog/iolog_json.c:538
-#: logsrvd/eventlog.c:228 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:563
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:435 plugins/sudoers/iolog.c:561
-#: plugins/sudoers/iolog.c:577 plugins/sudoers/ldap.c:516
-#: plugins/sudoers/ldap.c:747 plugins/sudoers/ldap.c:1080
-#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
-#: plugins/sudoers/linux_audit.c:89 plugins/sudoers/logging.c:1088
-#: plugins/sudoers/policy.c:521 plugins/sudoers/policy.c:668
-#: plugins/sudoers/policy.c:678 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:916 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
-#, c-format
-msgid "internal error, %s overflow"
-msgstr "내부 오류. %s 오버플로우"
-
-#: lib/iolog/iolog_json.c:607 lib/iolog/iolog_json.c:731
+#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
msgid "unmatched close brace"
msgstr "일치하지 않는 중괄호 닫기 표시"
-#: lib/iolog/iolog_json.c:616
+#: lib/iolog/iolog_json.c:638
msgid "unexpected array"
msgstr "예기치 않은 배열 발견"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:733
+#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
msgid "unmatched close bracket"
msgstr "일치하지 않는 각괄호 닫기 표시"
-#: lib/iolog/iolog_json.c:637
+#: lib/iolog/iolog_json.c:659
msgid "unexpected string"
msgstr "예기치 않은 문자열 값 발견"
-#: lib/iolog/iolog_json.c:647
+#: lib/iolog/iolog_json.c:669
msgid "missing colon after name"
msgstr "이름 뒤에 콜론이 빠졌습니다"
-#: lib/iolog/iolog_json.c:658 lib/iolog/iolog_json.c:673
-#: lib/iolog/iolog_json.c:688
+#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
+#: lib/iolog/iolog_json.c:710
msgid "unexpected boolean"
msgstr "예기치 않은 부울린 값 발견"
-#: lib/iolog/iolog_json.c:704
+#: lib/iolog/iolog_json.c:726
msgid "unexpected number"
msgstr "예기치 않은 숫자 값 발견"
-#: lib/iolog/iolog_json.c:741
+#: lib/iolog/iolog_json.c:763
#, c-format
msgid "%s:%u unable to parse \"%s\""
msgstr "%s:%u \"%s\"을(를) 해석할 수 없습니다"
msgid "invalid timing file line: %s"
msgstr "잘못된 타이밍 파일 행: %s"
-#: logsrvd/eventlog.c:430 plugins/sudoers/logging.c:112
-#, c-format
-msgid "%8s : %s"
-msgstr "%8s : %s"
-
-#: logsrvd/eventlog.c:459 plugins/sudoers/logging.c:136
-#, c-format
-msgid "%8s : (command continued) %s"
-msgstr "%8s : (명령 계속 실행) %s"
-
-#: logsrvd/iolog_writer.c:936
+#: logsrvd/iolog_writer.c:919
msgid "log is already complete, cannot be restarted"
msgstr "로그를 이미 끝냈으며, 다시 시작할 수 없습니다"
-#: logsrvd/iolog_writer.c:967
+#: logsrvd/iolog_writer.c:950
msgid "unable to restart log"
msgstr "로그를 다시 시작할 수 없습니다"
-#: logsrvd/logsrv_util.c:98 logsrvd/logsrv_util.c:105
-#: plugins/sudoers/sudoreplay.c:353 plugins/sudoers/sudoreplay.c:359
+#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106
+#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358
#, c-format
msgid "unable to open %s/%s"
msgstr "%s/%s을(를) 열 수 없습니다"
-#: logsrvd/logsrv_util.c:132
+#: logsrvd/logsrv_util.c:133
#, c-format
msgid "missing I/O log file %s/%s"
msgstr "입출력 로그 파일 %s/%s 빠짐"
-#: logsrvd/logsrv_util.c:139
+#: logsrvd/logsrv_util.c:140
#, c-format
msgid "%s/%s: unable to seek forward %zu"
msgstr "%s/%s: %zu회 이전 탐색을 진행할 수 없습니다"
-#: logsrvd/logsrv_util.c:149
+#: logsrvd/logsrv_util.c:150
#, c-format
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "%3$s/%4$s에서 재개 지점[%1$lld, %2$ld]을 찾을 수 없습니다"
-#: logsrvd/logsrvd.c:230 logsrvd/logsrvd.c:299 logsrvd/logsrvd.c:343
-#: logsrvd/logsrvd.c:398 logsrvd/logsrvd.c:445 logsrvd/logsrvd.c:496
-#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:560
+#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
+#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
+#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
msgid "state machine error"
msgstr "상태 머신 오류"
-#: logsrvd/logsrvd.c:239
+#: logsrvd/logsrvd.c:299
msgid "invalid AcceptMessage"
msgstr "잘못된 AcceptMessage"
-#: logsrvd/logsrvd.c:250
+#: logsrvd/logsrvd.c:307
msgid "error parsing AcceptMessage"
msgstr "AcceptMessage 해석 오류"
-#: logsrvd/logsrvd.c:257
+#: logsrvd/logsrvd.c:314
msgid "error creating I/O log"
msgstr "입출력 로그 만드는 중 오류"
-#: logsrvd/logsrvd.c:265
+#: logsrvd/logsrvd.c:321
msgid "error logging accept event"
msgstr "수락 이벤트 로깅 중 오류"
-#: logsrvd/logsrvd.c:308
+#: logsrvd/logsrvd.c:362
msgid "invalid RejectMessage"
msgstr "잘못된 RejectMessage"
-#: logsrvd/logsrvd.c:319
+#: logsrvd/logsrvd.c:370
msgid "error parsing RejectMessage"
msgstr "RejectMessage 해석 오류"
-#: logsrvd/logsrvd.c:325
+#: logsrvd/logsrvd.c:376
msgid "error logging reject event"
msgstr "거절 이벤트 로깅 중 오류"
-#: logsrvd/logsrvd.c:430
+#: logsrvd/logsrvd.c:486
+msgid "invalid AlertMessage"
+msgstr "잘못된 AlertMessage"
+
+#: logsrvd/logsrvd.c:494
+msgid "error parsing AlertMessage"
+msgstr "AlertMessage 해석 오류"
+
+#: logsrvd/logsrvd.c:502
msgid "error logging alert event"
msgstr "경고 이벤트 로깅 중 오류"
-#: logsrvd/logsrvd.c:451 logsrvd/logsrvd.c:502 logsrvd/logsrvd.c:534
+#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
msgid "protocol error"
msgstr "프로토콜 오류"
-#: logsrvd/logsrvd.c:461
+#: logsrvd/logsrvd.c:533
msgid "error writing IoBuffer"
msgstr "입출력 버퍼 기록 중 오류"
-#: logsrvd/logsrvd.c:513
+#: logsrvd/logsrvd.c:585
msgid "error writing ChangeWindowSize"
msgstr "ChangeWindowSize 기록 중 오류"
-#: logsrvd/logsrvd.c:545
+#: logsrvd/logsrvd.c:617
msgid "error writing CommandSuspend"
msgstr "CommandSuspend 기록 중 오류"
-#: logsrvd/logsrvd.c:630
+#: logsrvd/logsrvd.c:702
msgid "unrecognized ClientMessage type"
msgstr "인식할 수 없는 ClientMessage 형식"
-#: logsrvd/logsrvd.c:895
+#: logsrvd/logsrvd.c:967
msgid "client message too large"
msgstr "클라이언트 메시지가 너무 깁니다"
-#: logsrvd/logsrvd.c:1125 logsrvd/logsrvd.c:1133
+#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "%s에 TLS 1.2 암호 모음을 설정할 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1153 logsrvd/logsrvd.c:1161
+#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "%s에 TLS 1.3 암호 모음을 설정할 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1197
+#: logsrvd/logsrvd.c:1269
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "TLS 서버 처리 정보를 가져올 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1202
+#: logsrvd/logsrvd.c:1274
#, c-format
msgid "unable to create TLS context: %s"
msgstr "TLS 컨텍스트를 만들 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1209 plugins/sudoers/iolog_client.c:237
+#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "%s 인증서를 불러올 수 없습니다"
-#: logsrvd/logsrvd.c:1222 plugins/sudoers/iolog_client.c:217
+#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "%s 인증서 인증 번들을 불러올 수 없습니다"
-#: logsrvd/logsrvd.c:1267 plugins/sudoers/iolog_client.c:250
+#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "%s 개인 키를 불러올 수 없습니다"
-#: logsrvd/logsrvd.c:1284 logsrvd/logsrvd.c:1293
+#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "디피-헬먼 매개변수를 설정할 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1306
+#: logsrvd/logsrvd.c:1378
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "TLS 프로토콜 최소 버전을 1.2로 설정할 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1491
+#: logsrvd/logsrvd.c:1563
msgid "unable to get remote IP addr"
msgstr "원격 IP 주소를 가져올 수 없습니다"
-#: logsrvd/logsrvd.c:1519 plugins/sudoers/iolog_client.c:264
+#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "ssl 객체에 사용자 데이터를 붙일 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1527 logsrvd/logsrvd.c:1649 logsrvd/logsrvd.c:1749
-#: logsrvd/sendlog.c:1106 logsrvd/sendlog.c:1462 logsrvd/sendlog.c:1477
-#: logsrvd/sendlog.c:1535 plugins/sudoers/iolog.c:921
-#: plugins/sudoers/iolog.c:1054 plugins/sudoers/iolog.c:1152
-#: plugins/sudoers/iolog_client.c:109 plugins/sudoers/iolog_client.c:325
-#: plugins/sudoers/iolog_client.c:341 plugins/sudoers/iolog_client.c:387
-#: plugins/sudoers/iolog_client.c:567 plugins/sudoers/iolog_client.c:574
-#: plugins/sudoers/iolog_client.c:1150 plugins/sudoers/iolog_client.c:1186
-#: plugins/sudoers/iolog_client.c:1194 plugins/sudoers/iolog_client.c:1254
-#: plugins/sudoers/iolog_client.c:1361 plugins/sudoers/iolog_client.c:1477
-#: plugins/sudoers/iolog_client.c:1759 plugins/sudoers/iolog_client.c:1767
-#: plugins/sudoers/sudoreplay.c:513 plugins/sudoers/sudoreplay.c:560
-#: plugins/sudoers/sudoreplay.c:792 plugins/sudoers/sudoreplay.c:904
-#: plugins/sudoers/sudoreplay.c:994 plugins/sudoers/sudoreplay.c:1009
-#: plugins/sudoers/sudoreplay.c:1016 plugins/sudoers/sudoreplay.c:1023
-#: plugins/sudoers/sudoreplay.c:1030 plugins/sudoers/sudoreplay.c:1037
-#: plugins/sudoers/sudoreplay.c:1164
+#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
+#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
+#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
+#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
+#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
+#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
+#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
+#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
+#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
+#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
+#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
+#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022
+#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036
+#: plugins/sudoers/sudoreplay.c:1163
msgid "unable to add event to queue"
msgstr "큐에 이벤트를 추가할 수 없습니다"
-#: logsrvd/logsrvd.c:1703 logsrvd/logsrvd.c:1937
+#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
msgid "unable setup listen socket"
msgstr "감청 소켓을 설정할 수 없습니다"
-#: logsrvd/logsrvd.c:1843 logsrvd/sendlog.c:123
+#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
#, c-format
msgid ""
"%s - send sudo I/O log to remote server\n"
"%s - 원격 서버에 sudo 입출력 로그를 보냅니다\n"
"\n"
-#: logsrvd/logsrvd.c:1846
+#: logsrvd/logsrvd.c:1920
msgid ""
"\n"
"Options:\n"
" -R, --random-drop 연결을 쳐낼 백분율\n"
" -V, --version 버전 정보를 나타낸 후 나갑니다\n"
-#: logsrvd/logsrvd.c:1898 logsrvd/sendlog.c:1700
+#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Protobuf-C 1.3 이상의 버전이 필요합니다"
-#: logsrvd/logsrvd.c:1916
+#: logsrvd/logsrvd.c:1990
#, c-format
msgid "invalid random drop value: %s"
msgstr "잘못된 임의 드롭 값: %s"
-#: logsrvd/logsrvd.c:1920 logsrvd/sendlog.c:1750
-#: plugins/sudoers/cvtsudoers.c:229 plugins/sudoers/sudoreplay.c:300
-#: plugins/sudoers/visudo.c:178
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
+#: plugins/sudoers/visudo.c:177
#, c-format
msgid "%s version %s\n"
msgstr "%s 버전 %s\n"
-#: logsrvd/logsrvd_conf.c:393
+#: logsrvd/logsrvd_conf.c:331
msgid "TLS not supported"
msgstr "TLS를 지원하지 않습니다"
-#: logsrvd/logsrvd_conf.c:405
+#: logsrvd/logsrvd_conf.c:343
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:471 logsrvd/logsrvd_conf.c:715
+#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: 완전하지 않은 경로"
-#: logsrvd/logsrvd_conf.c:829
+#: logsrvd/logsrvd_conf.c:767
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d 일치하지 않는 '[': %s"
-#: logsrvd/logsrvd_conf.c:840
+#: logsrvd/logsrvd_conf.c:778
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s:%d 잘못된 설정 섹션: %s"
-#: logsrvd/logsrvd_conf.c:848
+#: logsrvd/logsrvd_conf.c:786
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d 잘못된 설정 행: %s"
-#: logsrvd/logsrvd_conf.c:854
+#: logsrvd/logsrvd_conf.c:792
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d(에)서 섹션 이름이 나와야 합니다: %s"
-#: logsrvd/logsrvd_conf.c:868
+#: logsrvd/logsrvd_conf.c:806
#, c-format
msgid "invalid value for %s: %s"
msgstr "잘못된 %s 값: %s"
-#: logsrvd/logsrvd_conf.c:876
+#: logsrvd/logsrvd_conf.c:814
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d 알 수 없는 키: %s"
-#: logsrvd/logsrvd_conf.c:1032
+#: logsrvd/logsrvd_conf.c:1003
#, c-format
msgid "unknown syslog facility %s"
msgstr "알 수 없는 syslog 수단 %s"
-#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1040
-#: logsrvd/logsrvd_conf.c:1044
+#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
+#: logsrvd/logsrvd_conf.c:1015
#, c-format
msgid "unknown syslog priority %s"
msgstr "알 수 없는 syslog 우선 순위 %s"
-#: logsrvd/sendlog.c:126
+#: logsrvd/sendlog.c:127
msgid ""
"\n"
"Options:\n"
" -t, --test 선택한 입출력 로그를 병렬로 n회 전송하여 감사 서버 테스트\n"
" -V, --version 버전 정보를 나타 후 나갑니다\n"
-#: logsrvd/sendlog.c:163 plugins/sudoers/iolog_client.c:433
+#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "%s:%s을(를) 찾을 수 없습니다: %s"
-#: logsrvd/sendlog.c:186
+#: logsrvd/sendlog.c:202
msgid "unable to get server IP addr"
msgstr "서버 IP 주소를 가져올 수 없습니다"
-#: logsrvd/sendlog.c:240 plugins/sudoers/sudoreplay.c:852
+#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "%s/%s을(를) 읽을 수 없습니다: %s"
-#: logsrvd/sendlog.c:261 plugins/sudoers/iolog_client.c:684
+#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
#, c-format
msgid "client message too large: %zu"
msgstr "클라이언드 메시지가 너무 깁니다: %zu"
-#: logsrvd/sendlog.c:791
+#: logsrvd/sendlog.c:810
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: 쓰기 버퍼를 이미 사용중입니다"
-#: logsrvd/sendlog.c:843 plugins/sudoers/iolog.c:845
-#: plugins/sudoers/iolog.c:914
+#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
+#: plugins/sudoers/iolog.c:949
#, c-format
msgid "unexpected I/O event %d"
msgstr "예기치 않은 입출력 이벤트 %d"
-#: logsrvd/sendlog.c:889 logsrvd/sendlog.c:906 logsrvd/sendlog.c:940
-#: plugins/sudoers/iolog_client.c:1155 plugins/sudoers/iolog_client.c:1225
-#: plugins/sudoers/iolog_client.c:1273
+#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
+#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
+#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: 예기치 않은 상태 번호 %d"
-#: logsrvd/sendlog.c:912 plugins/sudoers/iolog_client.c:1231
+#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
msgid "invalid ServerHello"
msgstr "잘못된 ServerHello"
-#: logsrvd/sendlog.c:976 plugins/sudoers/iolog_client.c:1317
+#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
#, c-format
msgid "error message received from server: %s"
msgstr "서버로부터 오류 메시지를 받았습니다: %s"
-#: logsrvd/sendlog.c:989 plugins/sudoers/iolog_client.c:1330
+#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
#, c-format
msgid "abort message received from server: %s"
msgstr "서버로부터 중단 메시지를 받았습니다: %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/iolog_client.c:1349
+#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
msgid "unable to unpack ServerMessage"
msgstr "ServerMessage를 언팩할 수 없습니다"
-#: logsrvd/sendlog.c:1048 plugins/sudoers/iolog_client.c:1382
+#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: 예기지 않은 type_case 값 %d"
-#: logsrvd/sendlog.c:1077
+#: logsrvd/sendlog.c:1096
msgid "timeout reading from server"
msgstr "서버 데이터 읽기 시간 초과"
-#: logsrvd/sendlog.c:1155
+#: logsrvd/sendlog.c:1174
msgid "premature EOF"
msgstr "갑작스러운 EOF"
-#: logsrvd/sendlog.c:1168 plugins/sudoers/iolog_client.c:1536
+#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
#, c-format
msgid "server message too large: %u"
msgstr "서버 메시지가 너무 깁니다: %u"
-#: logsrvd/sendlog.c:1219
+#: logsrvd/sendlog.c:1238
msgid "timeout writing to server"
msgstr "서버 기록 시간 초과"
-#: logsrvd/sendlog.c:1438 plugins/sudoers/iolog_client.c:297
+#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "TLS 핸드셰이크 시간을 초과했습니다"
-#: logsrvd/sendlog.c:1457 logsrvd/sendlog.c:1472
-#: plugins/sudoers/iolog_client.c:319 plugins/sudoers/iolog_client.c:335
+#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "이벤트를 설정할 수 없습니다"
-#: logsrvd/sendlog.c:1482 logsrvd/sendlog.c:1486
+#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
#, c-format
msgid "TLS connection failed: %s"
msgstr "TLS 연결 실패: %s"
-#: logsrvd/sendlog.c:1519
+#: logsrvd/sendlog.c:1538
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "SSL 컨텍스트를 초기화할 수 없습니다: %s"
-#: logsrvd/sendlog.c:1524 plugins/sudoers/iolog_client.c:259
+#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "SSL 객체를 할당할 수 없습니다: %s"
-#: logsrvd/sendlog.c:1529
+#: logsrvd/sendlog.c:1548
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "SSL 객체에 소켓을 붙일 수 없습니다: %s"
-#: logsrvd/sendlog.c:1773
+#: logsrvd/sendlog.c:1792
msgid "both restart point and iolog ID must be specified"
msgstr "다시 시작 지점과 입출력 로그 ID를 반드시 지정해야합니다"
-#: logsrvd/sendlog.c:1777
+#: logsrvd/sendlog.c:1796
msgid "a restart point may not be set when no I/O is sent"
msgstr "입출력을 보내지 않을 때 다시 시작 지점을 지정하지 않습니다"
-#: logsrvd/sendlog.c:1852
+#: logsrvd/sendlog.c:1871
#, c-format
msgid "exited prematurely with state %d"
msgstr "%d 상태로 갑자기 빠져나왔습니다"
-#: logsrvd/sendlog.c:1853
+#: logsrvd/sendlog.c:1872
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "경과 시간을 서버로 보냈습니다 [%lld, %ld]"
-#: logsrvd/sendlog.c:1855
+#: logsrvd/sendlog.c:1874
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "제출 지점 정보를 서버로부터 받았습니다 [%lld, %ld]"
-#: plugins/sudoers/alias.c:144
+#: plugins/sudoers/alias.c:148
#, c-format
msgid "Alias \"%s\" already defined"
msgstr "\"%s\" 별칭을 이미 정의했습니다"
-#: plugins/sudoers/auth/aix_auth.c:198 plugins/sudoers/logging.c:784
-msgid "unable to fork"
-msgstr "포킹할 수 없습니다"
+#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
+#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
+#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+msgid "unable to get time of day"
+msgstr "일시 정보를 가져올 수 없습니다"
-#: plugins/sudoers/auth/aix_auth.c:278
+#: plugins/sudoers/auth/aix_auth.c:277
#, c-format
msgid "unable to change password for %s"
msgstr "%s의 암호를 바꿀 수 없습니다"
msgid "unable to initialize BSD authentication"
msgstr "BSD 인증을 초기화할 수 없습니다"
-#: plugins/sudoers/auth/bsdauth.c:180
+#: plugins/sudoers/auth/bsdauth.c:179
msgid "your account has expired"
msgstr "계정 유효 기간이 지났습니다"
-#: plugins/sudoers/auth/bsdauth.c:182
+#: plugins/sudoers/auth/bsdauth.c:181
msgid "approval failed"
msgstr "승인 실패"
msgid "PAM account management error: %s"
msgstr "PAM 계정 관리 오류: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:242
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
#, c-format
msgid "you do not exist in the %s database"
msgstr "%s 데이터베이스에 없습니다"
msgid "SecurID communication failed"
msgstr "SecurID 통신에 실패했습니다"
-#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:212
+#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:210
msgid "unknown SecurID error"
msgstr "알 수 없는 SecurID 오류"
msgid "invalid passcode length for SecurID"
msgstr "SecurID용 암호 길이가 잘못되었습니다"
-#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:124
+#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:123
msgid "unable to initialize SIA session"
msgstr "SIA 세션을 초기화할 수 없습니다"
msgid "Unable to initialize authentication methods."
msgstr "인증 방식을 초기화할 수 없습니다."
-#: plugins/sudoers/auth/sudo_auth.c:473
+#: plugins/sudoers/auth/sudo_auth.c:471
msgid "Authentication methods:"
msgstr "인증 방식:"
"\n"
#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:763 plugins/sudoers/sudoers.c:811
+#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "알 수 없는 uid: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/iolog.c:117
-#: plugins/sudoers/policy.c:1037 plugins/sudoers/sudoers.c:387
-#: plugins/sudoers/sudoers.c:388 plugins/sudoers/sudoers.c:1240
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:392
+#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
+#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
+#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
#, c-format
msgid "unknown user: %s"
msgstr "알 수 없는 사용자: %s"
-#: plugins/sudoers/cvtsudoers.c:195
+#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
msgstr "순서 증가: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:211
+#: plugins/sudoers/cvtsudoers.c:210
#, c-format
msgid "starting order: %s: %s"
msgstr "순서 시작: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:221
+#: plugins/sudoers/cvtsudoers.c:220
#, c-format
msgid "order padding: %s: %s"
msgstr "순서 패딩: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:231 plugins/sudoers/visudo.c:180
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
#, c-format
msgid "%s grammar version %d\n"
msgstr "%s 문법 버전 %d\n"
-#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/testsudoers.c:167
+#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/testsudoers.c:167
#, c-format
msgid "unsupported input format %s"
msgstr "지원하지 않는 %s 입력 형식"
-#: plugins/sudoers/cvtsudoers.c:263
+#: plugins/sudoers/cvtsudoers.c:262
#, c-format
msgid "unsupported output format %s"
msgstr "지원하지 않는 %s 출력 형식"
-#: plugins/sudoers/cvtsudoers.c:315
+#: plugins/sudoers/cvtsudoers.c:314
#, c-format
msgid "%s: input and output files must be different"
msgstr "%s: 입출력 파일은 달라야합니다"
-#: plugins/sudoers/cvtsudoers.c:331 plugins/sudoers/sudoers.c:181
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:248
-#: plugins/sudoers/visudo.c:604 plugins/sudoers/visudo.c:927
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
+#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
+#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
msgid "unable to initialize sudoers default values"
msgstr "sudoers 기본 값을 초기화할 수 없습니다"
-#: plugins/sudoers/cvtsudoers.c:417 plugins/sudoers/ldap_conf.c:431
+#: plugins/sudoers/cvtsudoers.c:416 plugins/sudoers/ldap_conf.c:431
#, c-format
msgid "%s: %s: %s: %s"
msgstr "%s: %s: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:476
+#: plugins/sudoers/cvtsudoers.c:475
#, c-format
msgid "%s: unknown key word: %s"
msgstr "%s: 알 수 없는 키워드: %s"
-#: plugins/sudoers/cvtsudoers.c:522
+#: plugins/sudoers/cvtsudoers.c:521
#, c-format
msgid "invalid defaults type: %s"
msgstr "잘못된 기본 형식: %s"
-#: plugins/sudoers/cvtsudoers.c:545
+#: plugins/sudoers/cvtsudoers.c:544
#, c-format
msgid "invalid suppression type: %s"
msgstr "잘못된 생략 형식: %s"
-#: plugins/sudoers/cvtsudoers.c:585 plugins/sudoers/cvtsudoers.c:599
+#: plugins/sudoers/cvtsudoers.c:584 plugins/sudoers/cvtsudoers.c:598
#, c-format
msgid "invalid filter: %s"
msgstr "잘못된 필터: %s"
-#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:635
-#: plugins/sudoers/cvtsudoers.c:1245 plugins/sudoers/cvtsudoers_json.c:861
-#: plugins/sudoers/cvtsudoers_ldif.c:680 plugins/sudoers/sudoers.c:986
-#: plugins/sudoers/sudoreplay.c:1436 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:923
+#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
+#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
+#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
+#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
+#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
#, c-format
msgid "unable to open %s"
msgstr "%s을(를) 열 수 없습니다"
-#: plugins/sudoers/cvtsudoers.c:638 plugins/sudoers/visudo.c:932
+#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "%s 파일 해석에 실패했습니다. 알 수 없는 오류."
-#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/visudo.c:949
+#: plugins/sudoers/cvtsudoers.c:645
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "%s %d번째 줄 인근 해석 오류\n"
-#: plugins/sudoers/cvtsudoers.c:649 plugins/sudoers/visudo.c:952
+#: plugins/sudoers/cvtsudoers.c:648
#, c-format
msgid "parse error in %s\n"
msgstr "%s 해석 오류\n"
-#: plugins/sudoers/cvtsudoers.c:1292 plugins/sudoers/sudoreplay.c:1125
+#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
#, c-format
msgid "unable to write to %s"
msgstr "%s에 기록할 수 없습니다"
-#: plugins/sudoers/cvtsudoers.c:1315
+#: plugins/sudoers/cvtsudoers.c:1314
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
"%s - sudoers 파일 형식을 변환합니다\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1317
+#: plugins/sudoers/cvtsudoers.c:1316
msgid ""
"\n"
"Options:\n"
" -V, --version 버전 정보를 표시하고 빠져나갑니다"
#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514
-#: plugins/sudoers/cvtsudoers_json.c:702
+#: plugins/sudoers/cvtsudoers_json.c:713
#, c-format
msgid "unknown defaults entry \"%s\""
msgstr "알 수 없는 \"%s\" 기본 항목"
-#: plugins/sudoers/cvtsudoers_json.c:640 plugins/sudoers/cvtsudoers_json.c:653
-#: plugins/sudoers/cvtsudoers_ldif.c:345 plugins/sudoers/cvtsudoers_ldif.c:356
-#: plugins/sudoers/ldap.c:502
+#: plugins/sudoers/cvtsudoers_json.c:651 plugins/sudoers/cvtsudoers_json.c:664
+#: plugins/sudoers/cvtsudoers_ldif.c:346 plugins/sudoers/cvtsudoers_ldif.c:357
+#: plugins/sudoers/ldap.c:503
msgid "unable to get GMT time"
msgstr "GMT 시간을 가져올 수 없습니다"
-#: plugins/sudoers/cvtsudoers_json.c:643 plugins/sudoers/cvtsudoers_json.c:656
-#: plugins/sudoers/cvtsudoers_ldif.c:348 plugins/sudoers/cvtsudoers_ldif.c:359
-#: plugins/sudoers/ldap.c:508
+#: plugins/sudoers/cvtsudoers_json.c:654 plugins/sudoers/cvtsudoers_json.c:667
+#: plugins/sudoers/cvtsudoers_ldif.c:349 plugins/sudoers/cvtsudoers_ldif.c:360
+#: plugins/sudoers/ldap.c:509
msgid "unable to format timestamp"
msgstr "타임스탬프를 형식에 맞출 수 없습니다"
-#: plugins/sudoers/cvtsudoers_ldif.c:632
+#: plugins/sudoers/cvtsudoers_ldif.c:640
#, c-format
msgid "too many sudoers entries, maximum %u"
msgstr "sudoers 항목이 너무 많습니다. 최대 갯수는 %u개 입니다"
-#: plugins/sudoers/cvtsudoers_ldif.c:675
+#: plugins/sudoers/cvtsudoers_ldif.c:683
msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified."
msgstr "SUDOERS_BASE 환경 변수를 설정하지 않았으며 -b 옵션을 지정하지 않았습니다."
-#: plugins/sudoers/def_data.c:42
+#: plugins/sudoers/def_data.c:50
#, c-format
msgid "Syslog facility if syslog is being used for logging: %s"
msgstr "syslog를 기록 목적으로 활용할 때의 syslog 기능: %s"
-#: plugins/sudoers/def_data.c:46
+#: plugins/sudoers/def_data.c:54
#, c-format
msgid "Syslog priority to use when user authenticates successfully: %s"
msgstr "사용자 인증에 성공했을 때 사용할 syslog 우선 순위: %s"
-#: plugins/sudoers/def_data.c:50
+#: plugins/sudoers/def_data.c:58
#, c-format
msgid "Syslog priority to use when user authenticates unsuccessfully: %s"
msgstr "사용자 인증에 실패했을 때 사용할 syslog 우선 순위: %s"
-#: plugins/sudoers/def_data.c:54
+#: plugins/sudoers/def_data.c:62
msgid "Put OTP prompt on its own line"
msgstr "일회용 암호 입력 프롬프트를 자체 줄에 표시"
-#: plugins/sudoers/def_data.c:58
+#: plugins/sudoers/def_data.c:66
msgid "Ignore '.' in $PATH"
msgstr "$PATH의 '.'은 무시합니다"
-#: plugins/sudoers/def_data.c:62
+#: plugins/sudoers/def_data.c:70
msgid "Always send mail when sudo is run"
msgstr "sudo를 실행할 때 항상 메일을 보냄"
-#: plugins/sudoers/def_data.c:66
+#: plugins/sudoers/def_data.c:74
msgid "Send mail if user authentication fails"
msgstr "사용자가 인증에 실패했을 때 메일을 보냄"
-#: plugins/sudoers/def_data.c:70
+#: plugins/sudoers/def_data.c:78
msgid "Send mail if the user is not in sudoers"
msgstr "사용자가 sudoer가 아닐 때 메일을 보냄"
-#: plugins/sudoers/def_data.c:74
+#: plugins/sudoers/def_data.c:82
msgid "Send mail if the user is not in sudoers for this host"
msgstr "사용자가 이 호스트의 sudoer가 아닐 때 메일을 보냄"
-#: plugins/sudoers/def_data.c:78
+#: plugins/sudoers/def_data.c:86
msgid "Send mail if the user is not allowed to run a command"
msgstr "사용자가 명령을 실행하도록 허용하지 않았을 때 메일을 보냄"
-#: plugins/sudoers/def_data.c:82
+#: plugins/sudoers/def_data.c:90
msgid "Send mail if the user tries to run a command"
msgstr "사용자가 명령 실행을 시도했을 때 메일을 보냄"
-#: plugins/sudoers/def_data.c:86
+#: plugins/sudoers/def_data.c:94
msgid "Use a separate timestamp for each user/tty combo"
msgstr "각 사용자/tty에 타임스탬프를 따로 사용"
-#: plugins/sudoers/def_data.c:90
+#: plugins/sudoers/def_data.c:98
msgid "Lecture user the first time they run sudo"
msgstr "sudo를 처음 실행할 때 사용자에게 지침 안내"
-#: plugins/sudoers/def_data.c:94
+#: plugins/sudoers/def_data.c:102
#, c-format
msgid "File containing the sudo lecture: %s"
msgstr "sudo 지침 안내가 들어있는 파일: %s"
-#: plugins/sudoers/def_data.c:98
+#: plugins/sudoers/def_data.c:106
msgid "Require users to authenticate by default"
msgstr "기본적으로 사용자 인증 필요"
-#: plugins/sudoers/def_data.c:102
+#: plugins/sudoers/def_data.c:110
msgid "Root may run sudo"
msgstr "루트 사용자의 sudo 실행"
-#: plugins/sudoers/def_data.c:106
+#: plugins/sudoers/def_data.c:114
msgid "Log the hostname in the (non-syslog) log file"
msgstr "로그(비 syslog) 파일에 호스트 이름 기록"
-#: plugins/sudoers/def_data.c:110
+#: plugins/sudoers/def_data.c:118
msgid "Log the year in the (non-syslog) log file"
msgstr "로그(비 syslog) 파일에 연도 기록"
-#: plugins/sudoers/def_data.c:114
+#: plugins/sudoers/def_data.c:122
msgid "If sudo is invoked with no arguments, start a shell"
msgstr "sudo에 인자를 넣어 실행하지 않으면 셸 시작"
-#: plugins/sudoers/def_data.c:118
+#: plugins/sudoers/def_data.c:126
msgid "Set $HOME to the target user when starting a shell with -s"
msgstr "-s 옵션으로 셸을 시작할 때 $HOME을 대상 사용자로 설정"
-#: plugins/sudoers/def_data.c:122
+#: plugins/sudoers/def_data.c:130
msgid "Always set $HOME to the target user's home directory"
msgstr "항상 $HOME을 대상 사용자의 내 폴더로 설정"
-#: plugins/sudoers/def_data.c:126
+#: plugins/sudoers/def_data.c:134
msgid "Allow some information gathering to give useful error messages"
msgstr "쓸만한 오류 메시지를 제공할 목적으로 일부 정보 수집 허용"
-#: plugins/sudoers/def_data.c:130
+#: plugins/sudoers/def_data.c:138
msgid "Require fully-qualified hostnames in the sudoers file"
msgstr "sudoers 파일에 완전한 형태를 갖춘 호스트 이름 필요"
-#: plugins/sudoers/def_data.c:134
+#: plugins/sudoers/def_data.c:142
msgid "Insult the user when they enter an incorrect password"
msgstr "올바르지 않은 암호를 입력했을 때 사용자 놀리기"
-#: plugins/sudoers/def_data.c:138
+#: plugins/sudoers/def_data.c:146
msgid "Only allow the user to run sudo if they have a tty"
msgstr "tty를 보유한 사용자만 sudo 실행 허용"
-#: plugins/sudoers/def_data.c:142
+#: plugins/sudoers/def_data.c:150
msgid "Visudo will honor the EDITOR environment variable"
msgstr "EDITOR 환경 변수 대신 visudo 사용"
-#: plugins/sudoers/def_data.c:146
+#: plugins/sudoers/def_data.c:154
msgid "Prompt for root's password, not the users's"
msgstr "사용자 암호가 아닌 루트 암호 요구"
-#: plugins/sudoers/def_data.c:150
+#: plugins/sudoers/def_data.c:158
msgid "Prompt for the runas_default user's password, not the users's"
msgstr "사용자 암호가 아닌 runas_default 사용자 암호 요구"
-#: plugins/sudoers/def_data.c:154
+#: plugins/sudoers/def_data.c:162
msgid "Prompt for the target user's password, not the users's"
msgstr "사용자 암호가 아닌 대상 사용자 암호 요구"
-#: plugins/sudoers/def_data.c:158
+#: plugins/sudoers/def_data.c:166
msgid "Apply defaults in the target user's login class if there is one"
msgstr "대상 사용자 로그인 클래스가 있다면 기본값 적용"
-#: plugins/sudoers/def_data.c:162
+#: plugins/sudoers/def_data.c:170
msgid "Set the LOGNAME and USER environment variables"
msgstr "LOGNAME 및 USER 환경 변수 설정"
-#: plugins/sudoers/def_data.c:166
+#: plugins/sudoers/def_data.c:174
msgid "Only set the effective uid to the target user, not the real uid"
msgstr "실제 uid가 아닌 대상 사용자에게 유효한 uid 설정"
-#: plugins/sudoers/def_data.c:170
+#: plugins/sudoers/def_data.c:178
msgid "Don't initialize the group vector to that of the target user"
msgstr "대상 사용자의 그룹 벡터 초기화 안함"
-#: plugins/sudoers/def_data.c:174
+#: plugins/sudoers/def_data.c:182
#, c-format
msgid "Length at which to wrap log file lines (0 for no wrap): %u"
msgstr "로그 파일 줄을 바꿀 줄의 한계 길이(0 값은 줄 바꿈 안함): %u"
-#: plugins/sudoers/def_data.c:178
+#: plugins/sudoers/def_data.c:186
#, c-format
msgid "Authentication timestamp timeout: %.1f minutes"
msgstr "인증 타임스탬프 제한 시간: %.1f분"
-#: plugins/sudoers/def_data.c:182
+#: plugins/sudoers/def_data.c:190
#, c-format
msgid "Password prompt timeout: %.1f minutes"
msgstr "암호 요구 제한시간: %.1f분"
-#: plugins/sudoers/def_data.c:186
+#: plugins/sudoers/def_data.c:194
#, c-format
msgid "Number of tries to enter a password: %u"
msgstr "암호 입력 시도 횟수: %u"
-#: plugins/sudoers/def_data.c:190
+#: plugins/sudoers/def_data.c:198
#, c-format
msgid "Umask to use or 0777 to use user's: 0%o"
msgstr "사용자가 활용할 umask 또는 0777: 0%o"
-#: plugins/sudoers/def_data.c:194
+#: plugins/sudoers/def_data.c:202
#, c-format
msgid "Path to log file: %s"
msgstr "로그 파일 경로: %s"
-#: plugins/sudoers/def_data.c:198
+#: plugins/sudoers/def_data.c:206
#, c-format
msgid "Path to mail program: %s"
msgstr "메일 프로그램 경로: %s"
-#: plugins/sudoers/def_data.c:202
+#: plugins/sudoers/def_data.c:210
#, c-format
msgid "Flags for mail program: %s"
msgstr "메일 프로그램 플래그: %s"
-#: plugins/sudoers/def_data.c:206
+#: plugins/sudoers/def_data.c:214
#, c-format
msgid "Address to send mail to: %s"
msgstr "메일을 보낼 주소: %s"
-#: plugins/sudoers/def_data.c:210
+#: plugins/sudoers/def_data.c:218
#, c-format
msgid "Address to send mail from: %s"
msgstr "메일을 보내려는 주소: %s"
-#: plugins/sudoers/def_data.c:214
+#: plugins/sudoers/def_data.c:222
#, c-format
msgid "Subject line for mail messages: %s"
msgstr "메일 메시지 제목 줄: %s"
-#: plugins/sudoers/def_data.c:218
+#: plugins/sudoers/def_data.c:226
#, c-format
msgid "Incorrect password message: %s"
msgstr "올바르지 않은 암호 메시지: %s"
-#: plugins/sudoers/def_data.c:222
+#: plugins/sudoers/def_data.c:230
#, c-format
msgid "Path to lecture status dir: %s"
msgstr "지침 상태 디렉터리 경로: %s"
-#: plugins/sudoers/def_data.c:226
+#: plugins/sudoers/def_data.c:234
#, c-format
msgid "Path to authentication timestamp dir: %s"
msgstr "인증 타임스탬프 디렉터리 경로: %s"
-#: plugins/sudoers/def_data.c:230
+#: plugins/sudoers/def_data.c:238
#, c-format
msgid "Owner of the authentication timestamp dir: %s"
msgstr "인증 타임스탬프 디렉터리 소유자: %s"
-#: plugins/sudoers/def_data.c:234
+#: plugins/sudoers/def_data.c:242
#, c-format
msgid "Users in this group are exempt from password and PATH requirements: %s"
msgstr "암호와 PATH 변수 요구를 하지 않을 이 그룹의 사용자: %s"
-#: plugins/sudoers/def_data.c:238
+#: plugins/sudoers/def_data.c:246
#, c-format
msgid "Default password prompt: %s"
msgstr "기본 암호 프롬프트: %s"
-#: plugins/sudoers/def_data.c:242
+#: plugins/sudoers/def_data.c:250
msgid "If set, passprompt will override system prompt in all cases."
msgstr "설정하면 모든 경우의 시스템 프롬프트 대신 이 암호 프롬프트를 사용합니다."
-#: plugins/sudoers/def_data.c:246
+#: plugins/sudoers/def_data.c:254
#, c-format
msgid "Default user to run commands as: %s"
msgstr "명령을 실행할 기본 사용자: %s"
-#: plugins/sudoers/def_data.c:250
+#: plugins/sudoers/def_data.c:258
#, c-format
msgid "Value to override user's $PATH with: %s"
msgstr "사용자의 $PATH를 대신할 값: %s"
-#: plugins/sudoers/def_data.c:254
+#: plugins/sudoers/def_data.c:262
#, c-format
msgid "Path to the editor for use by visudo: %s"
msgstr "visudo에서 사용할 편집기 경로: %s"
-#: plugins/sudoers/def_data.c:258
+#: plugins/sudoers/def_data.c:266
#, c-format
msgid "When to require a password for 'list' pseudocommand: %s"
msgstr "'list' 유사 명령 실행시 암호가 필요할 때: %s"
-#: plugins/sudoers/def_data.c:262
+#: plugins/sudoers/def_data.c:270
#, c-format
msgid "When to require a password for 'verify' pseudocommand: %s"
msgstr "'verify' 유사 명령 실행시 암호가 필요할 때: %s"
-#: plugins/sudoers/def_data.c:266
-msgid "Preload the dummy exec functions contained in the sudo_noexec library"
-msgstr "sudo_noexec 라이브러리에 있는 모조 exec 함수 미리 불러오기"
+#: plugins/sudoers/def_data.c:274
+msgid "Preload the sudo_noexec library which replaces the exec functions"
+msgstr "exec 함수를 대체하는 sudo_noexec 라이브러리를 미리 불러옵니다"
-#: plugins/sudoers/def_data.c:270
+#: plugins/sudoers/def_data.c:278
msgid "If LDAP directory is up, do we ignore local sudoers file"
msgstr "LDAP 디렉터리가 동작 중이라면 로컬 sudoers 파일을 무시합니다"
-#: plugins/sudoers/def_data.c:274
+#: plugins/sudoers/def_data.c:282
#, c-format
msgid "File descriptors >= %d will be closed before executing a command"
msgstr "%d보다 큰 파일 서술자는 명령을 실행하기 전에 닫습니다"
-#: plugins/sudoers/def_data.c:278
+#: plugins/sudoers/def_data.c:286
msgid "If set, users may override the value of \"closefrom\" with the -C option"
msgstr "이 값을 설정하면 -C 옵션으로 \"closefrom\" 값을 대신 사용합니다"
-#: plugins/sudoers/def_data.c:282
+#: plugins/sudoers/def_data.c:290
msgid "Allow users to set arbitrary environment variables"
msgstr "사용자가 환경 변수 값을 임의대로 설정할 수 있게 합니다"
-#: plugins/sudoers/def_data.c:286
+#: plugins/sudoers/def_data.c:294
msgid "Reset the environment to a default set of variables"
msgstr "변수 기본 설정 값으로 환경 초기화"
-#: plugins/sudoers/def_data.c:290
-msgid "Environment variables to check for sanity:"
-msgstr "무결성 검사할 환경 변수:"
+#: plugins/sudoers/def_data.c:298
+msgid "Environment variables to check for safety:"
+msgstr "안전 검사 대상 환경 변수:"
-#: plugins/sudoers/def_data.c:294
+#: plugins/sudoers/def_data.c:302
msgid "Environment variables to remove:"
msgstr "제거할 환경 변수:"
-#: plugins/sudoers/def_data.c:298
+#: plugins/sudoers/def_data.c:306
msgid "Environment variables to preserve:"
msgstr "유지할 환경 변수:"
-#: plugins/sudoers/def_data.c:302
+#: plugins/sudoers/def_data.c:310
#, c-format
msgid "SELinux role to use in the new security context: %s"
msgstr "새 보안 컨텍스트에 사용할 SELinux 역할: %s"
-#: plugins/sudoers/def_data.c:306
+#: plugins/sudoers/def_data.c:314
#, c-format
msgid "SELinux type to use in the new security context: %s"
msgstr "새 보안 컨텍스트에 사용할 SELinux 형식: %s"
-#: plugins/sudoers/def_data.c:310
+#: plugins/sudoers/def_data.c:318
#, c-format
msgid "Path to the sudo-specific environment file: %s"
msgstr "sudo용 환경 파일 경로: %s"
-#: plugins/sudoers/def_data.c:314
+#: plugins/sudoers/def_data.c:322
#, c-format
msgid "Path to the restricted sudo-specific environment file: %s"
msgstr "sudo 전용 환경 파일 경로: %s"
-#: plugins/sudoers/def_data.c:318
+#: plugins/sudoers/def_data.c:326
#, c-format
msgid "Locale to use while parsing sudoers: %s"
msgstr "sudoers 파일을 해석할 때 사용할 로캘: %s"
-#: plugins/sudoers/def_data.c:322
+#: plugins/sudoers/def_data.c:330
msgid "Allow sudo to prompt for a password even if it would be visible"
msgstr "암호가 나타나더라도 sudo에서 암호 입력 요구 허용"
-#: plugins/sudoers/def_data.c:326
+#: plugins/sudoers/def_data.c:334
msgid "Provide visual feedback at the password prompt when there is user input"
msgstr "사용자 입력이 있을 때 암호 프롬프트에서 시각 반응 처리"
-#: plugins/sudoers/def_data.c:330
+#: plugins/sudoers/def_data.c:338
msgid "Use faster globbing that is less accurate but does not access the filesystem"
msgstr "덜 정확하지만 파일 시스템에 접근하지 않는 빠른 비교 검사 사용"
-#: plugins/sudoers/def_data.c:334
+#: plugins/sudoers/def_data.c:342
msgid "The umask specified in sudoers will override the user's, even if it is more permissive"
msgstr "sudoers에 지정한 umask 값이 관대한 권한이라 하더라도 사용자의 umask 값으로 적용"
-#: plugins/sudoers/def_data.c:338
+#: plugins/sudoers/def_data.c:346
msgid "Log user's input for the command being run"
msgstr "실행 명령에 대한 사용자 입력 기록"
-#: plugins/sudoers/def_data.c:342
+#: plugins/sudoers/def_data.c:350
msgid "Log the output of the command being run"
msgstr "실행 명령에 대한 출력 기록"
-#: plugins/sudoers/def_data.c:346
+#: plugins/sudoers/def_data.c:354
msgid "Compress I/O logs using zlib"
msgstr "zlib로 입출력 로그 압축"
-#: plugins/sudoers/def_data.c:350
+#: plugins/sudoers/def_data.c:358
msgid "Always run commands in a pseudo-tty"
msgstr "항상 명령을 유사 tty에서 실행"
-#: plugins/sudoers/def_data.c:354
+#: plugins/sudoers/def_data.c:362
#, c-format
msgid "Plugin for non-Unix group support: %s"
msgstr "비 유닉스 그룹을 지원하는 플러그인: %s"
-#: plugins/sudoers/def_data.c:358
+#: plugins/sudoers/def_data.c:366
#, c-format
msgid "Directory in which to store input/output logs: %s"
msgstr "입출력 로그를 저장할 디렉터리: %s"
-#: plugins/sudoers/def_data.c:362
+#: plugins/sudoers/def_data.c:370
#, c-format
msgid "File in which to store the input/output log: %s"
msgstr "입출력 로그를 저장할 파일: %s"
-#: plugins/sudoers/def_data.c:366
+#: plugins/sudoers/def_data.c:374
msgid "Add an entry to the utmp/utmpx file when allocating a pty"
msgstr "pty를 할당할 때 utmp/utmpx 파일에 항목 추가"
-#: plugins/sudoers/def_data.c:370
+#: plugins/sudoers/def_data.c:378
msgid "Set the user in utmp to the runas user, not the invoking user"
msgstr "utmp의 사용자를 실제 실행 사용자가 아닌 대리 실행 사용자로 설정"
-#: plugins/sudoers/def_data.c:374
+#: plugins/sudoers/def_data.c:382
#, c-format
msgid "Set of permitted privileges: %s"
msgstr "권한 허용 설정: %s"
-#: plugins/sudoers/def_data.c:378
+#: plugins/sudoers/def_data.c:386
#, c-format
msgid "Set of limit privileges: %s"
msgstr "권한 제한 설정: %s"
-#: plugins/sudoers/def_data.c:382
+#: plugins/sudoers/def_data.c:390
msgid "Run commands on a pty in the background"
msgstr "백그라운드의 pty에서 명령을 실행합니다"
-#: plugins/sudoers/def_data.c:386
+#: plugins/sudoers/def_data.c:394
#, c-format
msgid "PAM service name to use: %s"
msgstr "사용할 PAM 서비스 이름: %s"
-#: plugins/sudoers/def_data.c:390
+#: plugins/sudoers/def_data.c:398
#, c-format
msgid "PAM service name to use for login shells: %s"
msgstr "로그인 셸에서 사용할 PAM 서비스 이름: %s"
-#: plugins/sudoers/def_data.c:394
+#: plugins/sudoers/def_data.c:402
msgid "Attempt to establish PAM credentials for the target user"
msgstr "대상 사용자의 PAM 인증 처리 시도합니다"
-#: plugins/sudoers/def_data.c:398
+#: plugins/sudoers/def_data.c:406
msgid "Create a new PAM session for the command to run in"
msgstr "실행할 명령에 새 PAM 세션을 만듭니다"
-#: plugins/sudoers/def_data.c:402
+#: plugins/sudoers/def_data.c:410
msgid "Perform PAM account validation management"
msgstr "PAM 계정 검증 관리를 수행합니다"
-#: plugins/sudoers/def_data.c:406
+#: plugins/sudoers/def_data.c:414
#, c-format
msgid "Maximum I/O log sequence number: %s"
msgstr "최대 입출력 로그 순차 번호: %s"
-#: plugins/sudoers/def_data.c:410
+#: plugins/sudoers/def_data.c:418
msgid "Enable sudoers netgroup support"
msgstr "sudoers에 네트워크 그룹 지원 활성화"
-#: plugins/sudoers/def_data.c:414
+#: plugins/sudoers/def_data.c:422
msgid "Check parent directories for writability when editing files with sudoedit"
msgstr "sudoedit로 파일을 편집할 때 상위 디렉터리 기록 가능 여부 확인"
-#: plugins/sudoers/def_data.c:418
+#: plugins/sudoers/def_data.c:426
msgid "Follow symbolic links when editing files with sudoedit"
msgstr "sudoedit로 파일을 편집할 때 심볼릭 링크 따라감"
-#: plugins/sudoers/def_data.c:422
+#: plugins/sudoers/def_data.c:430
msgid "Query the group plugin for unknown system groups"
msgstr "알 수 없는 시스템 그룹에 그룹 플러그인 요청"
-#: plugins/sudoers/def_data.c:426
+#: plugins/sudoers/def_data.c:434
msgid "Match netgroups based on the entire tuple: user, host and domain"
msgstr "user, host, domain 전체 튜플을 기반으로 네트워크 그룹 비교"
-#: plugins/sudoers/def_data.c:430
+#: plugins/sudoers/def_data.c:438
msgid "Allow commands to be run even if sudo cannot write to the audit log"
msgstr "sudo에서 감시 로그를 기록할 수 없을 경우에도 명령 실행 허용"
-#: plugins/sudoers/def_data.c:434
+#: plugins/sudoers/def_data.c:442
msgid "Allow commands to be run even if sudo cannot write to the I/O log"
msgstr "sudo에서 입출력 로그를 기록할 수 없을 경우에도 명령 실행 허용"
-#: plugins/sudoers/def_data.c:438
+#: plugins/sudoers/def_data.c:446
msgid "Allow commands to be run even if sudo cannot write to the log file"
msgstr "sudo에서 로그 파일에 기록할 수 없을 경우에도 명령 실행 허용"
-#: plugins/sudoers/def_data.c:442
+#: plugins/sudoers/def_data.c:450
msgid "Resolve groups in sudoers and match on the group ID, not the name"
msgstr "sudoers의 그룹을 해석하고 그룹 이름이 아닌 ID와 비교"
-#: plugins/sudoers/def_data.c:446
+#: plugins/sudoers/def_data.c:454
#, c-format
msgid "Log entries larger than this value will be split into multiple syslog messages: %u"
msgstr "이 값보다 큰 로그 항목은 다수의 syslog 메시지로 나눕니다: %u"
-#: plugins/sudoers/def_data.c:450
+#: plugins/sudoers/def_data.c:458
#, c-format
msgid "User that will own the I/O log files: %s"
msgstr "입출력 로그 파일을 소유할 사용자: %s"
-#: plugins/sudoers/def_data.c:454
+#: plugins/sudoers/def_data.c:462
#, c-format
msgid "Group that will own the I/O log files: %s"
msgstr "입출력 로그 파일을 소유할 그룹: %s"
-#: plugins/sudoers/def_data.c:458
+#: plugins/sudoers/def_data.c:466
#, c-format
msgid "File mode to use for the I/O log files: 0%o"
msgstr "입출력 로그 파일에 사용할 파일 모드: 0%o"
-#: plugins/sudoers/def_data.c:462
+#: plugins/sudoers/def_data.c:470
#, c-format
msgid "Execute commands by file descriptor instead of by path: %s"
msgstr "경로가 아닌 파일 서술자로 명령어 실행: %s"
-#: plugins/sudoers/def_data.c:466
+#: plugins/sudoers/def_data.c:474
msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning"
msgstr "경고를 출력하는 대신 sudoers에서 알 수 없는 기본 항목을 무시"
-#: plugins/sudoers/def_data.c:470
+#: plugins/sudoers/def_data.c:478
#, c-format
msgid "Time in seconds after which the command will be terminated: %u"
msgstr "명령 처리가 끝난 후의 초 단위 시간: %u"
-#: plugins/sudoers/def_data.c:474
+#: plugins/sudoers/def_data.c:482
msgid "Allow the user to specify a timeout on the command line"
msgstr "사용자가 명령행에서 제한 시간을 지정하도록 허용"
-#: plugins/sudoers/def_data.c:478
+#: plugins/sudoers/def_data.c:486
msgid "Flush I/O log data to disk immediately instead of buffering it"
msgstr "입출력 로그 데이터를 버퍼링하는 대신 즉시 디스크로 플러싱"
-#: plugins/sudoers/def_data.c:482
+#: plugins/sudoers/def_data.c:490
msgid "Include the process ID when logging via syslog"
msgstr "syslog로 로깅할 때 프로세스 ID 포함"
-#: plugins/sudoers/def_data.c:486
+#: plugins/sudoers/def_data.c:494
#, c-format
msgid "Type of authentication timestamp record: %s"
msgstr "인증 타임스탬프 레코드 형식: %s"
-#: plugins/sudoers/def_data.c:490
+#: plugins/sudoers/def_data.c:498
#, c-format
msgid "Authentication failure message: %s"
msgstr "인증 실패 메시지: %s"
-#: plugins/sudoers/def_data.c:494
+#: plugins/sudoers/def_data.c:502
msgid "Ignore case when matching user names"
msgstr "사용자 이름 비교시 대소문자 무시"
-#: plugins/sudoers/def_data.c:498
+#: plugins/sudoers/def_data.c:506
msgid "Ignore case when matching group names"
msgstr "그룹 이름 비교시 대소문자 무시"
-#: plugins/sudoers/def_data.c:502
+#: plugins/sudoers/def_data.c:510
msgid "Log when a command is allowed by sudoers"
msgstr "sudoers에서 명령을 허용할 때 기록"
-#: plugins/sudoers/def_data.c:506
+#: plugins/sudoers/def_data.c:514
msgid "Log when a command is denied by sudoers"
msgstr "sudoers에서 명령을 거절할 때 기록"
-#: plugins/sudoers/def_data.c:510
+#: plugins/sudoers/def_data.c:518
msgid "Sudo log server(s) to connect to with optional port"
msgstr "개별 포트 정보를 추가하여 연결할 sudo 로그 서버"
-#: plugins/sudoers/def_data.c:514
+#: plugins/sudoers/def_data.c:522
#, c-format
msgid "Sudo log server timeout in seconds: %u"
msgstr "초 단위 sudo 로그 서버 제한 시간: %u"
-#: plugins/sudoers/def_data.c:518
+#: plugins/sudoers/def_data.c:526
msgid "Enable SO_KEEPALIVE socket option on the socket connected to the logserver"
msgstr "연결한 로그 서버 소켓에 SO_KEEPALIVE 소켓 옵션 활성화"
-#: plugins/sudoers/def_data.c:522
+#: plugins/sudoers/def_data.c:530
#, c-format
msgid "Path to the audit server's CA bundle file: %s"
msgstr "감사 서버의 CA 번들 파일 경로: %s"
-#: plugins/sudoers/def_data.c:526
+#: plugins/sudoers/def_data.c:534
#, c-format
msgid "Path to the sudoers certificate file: %s"
msgstr "sudoers 인증 파일 경로: %s"
-#: plugins/sudoers/def_data.c:530
+#: plugins/sudoers/def_data.c:538
#, c-format
msgid "Path to the sudoers private key file: %s"
msgstr "sudoers 개인 키 파일 경로: %s"
-#: plugins/sudoers/def_data.c:534
+#: plugins/sudoers/def_data.c:542
msgid "Verify that the log server's certificate is valid"
msgstr "로그 서버 인증서 유효성 검증"
-#: plugins/sudoers/def_data.c:538
+#: plugins/sudoers/def_data.c:546
msgid "Allow the use of unknown runas user and/or group ID"
msgstr "사용자/그룹 ID로의 알 수 없는 실행 허용"
-#: plugins/sudoers/def_data.c:542
+#: plugins/sudoers/def_data.c:550
msgid "Only permit running commands as a user with a valid shell"
msgstr "유효한 셸에서 사용자가 명령을 실행할 경우만 허용"
-#: plugins/sudoers/def_data.c:546
+#: plugins/sudoers/def_data.c:554
msgid "Set the pam remote user to the user running sudo"
msgstr "sudo를 실행하는 사용자를 PAM 원격 사용자로 설정"
-#: plugins/sudoers/def_data.c:550
+#: plugins/sudoers/def_data.c:558
msgid "Set the pam remote host to the local host name"
msgstr "로컬 호스트 이름에 PAM 원격 사용자 설정"
-#: plugins/sudoers/defaults.c:183
+#: plugins/sudoers/def_data.c:562
#, c-format
-msgid "%s:%d unknown defaults entry \"%s\""
-msgstr "%s:%d 알 수 없는 \"%s\" 기본 항목"
+msgid "Working directory to change to before executing the command: %s"
+msgstr "명령 실행 전 바꿀 작업 디렉터리: %s"
-#: plugins/sudoers/defaults.c:186
+#: plugins/sudoers/def_data.c:566
#, c-format
-msgid "%s: unknown defaults entry \"%s\""
-msgstr "%s: 알 수 없는 \"%s\" 기본 항목"
+msgid "Root directory to change to before executing the command: %s"
+msgstr "명령 실행 전 바꿀 루트 디렉터리: %s"
-#: plugins/sudoers/defaults.c:229
+#: plugins/sudoers/def_data.c:570
#, c-format
-msgid "%s:%d no value specified for \"%s\""
-msgstr "%s:%d \"%s\"에 지정한 값이 없습니다"
+msgid "The format of logs to produce: %s"
+msgstr "로그 기록 형식: %s"
-#: plugins/sudoers/defaults.c:232
+#: plugins/sudoers/defaults.c:185
#, c-format
-msgid "%s: no value specified for \"%s\""
-msgstr "%s: \"%s\"에 지정한 값이 없습니다"
+msgid "%s:%d:%d: unknown defaults entry \"%s\""
+msgstr "%s:%d:%d: 알 수 없는 \"%s\" 기본 항목"
-#: plugins/sudoers/defaults.c:252
+#: plugins/sudoers/defaults.c:188
#, c-format
-msgid "%s:%d values for \"%s\" must start with a '/'"
-msgstr "%s:%d \"%s\" 값은 '/' 문자로 시작해야합니다"
+msgid "%s: unknown defaults entry \"%s\""
+msgstr "%s: 알 수 없는 \"%s\" 기본 항목"
-#: plugins/sudoers/defaults.c:255
+#: plugins/sudoers/defaults.c:234
#, c-format
-msgid "%s: values for \"%s\" must start with a '/'"
-msgstr "%s: \"%s\" 값은 '/' 문자로 시작해야합니다"
+msgid "%s:%d:%d: no value specified for \"%s\""
+msgstr "%s:%d:%d \"%s\"에 지정한 값이 없습니다"
+
+#: plugins/sudoers/defaults.c:237
+#, c-format
+msgid "%s: no value specified for \"%s\""
+msgstr "%s: \"%s\"에 지정한 값이 없습니다"
-#: plugins/sudoers/defaults.c:277
+#: plugins/sudoers/defaults.c:275
#, c-format
-msgid "%s:%d option \"%s\" does not take a value"
-msgstr "%s:%d \"%s\" 옵션에 값이 없습니다"
+msgid "%s:%d:%d: option \"%s\" does not take a value"
+msgstr "%s:%d:%d: \"%s\" 옵션에 값이 없습니다"
-#: plugins/sudoers/defaults.c:280
+#: plugins/sudoers/defaults.c:278
#, c-format
msgid "%s: option \"%s\" does not take a value"
msgstr "%s: \"%s\" 옵션에 값이 없습니다"
-#: plugins/sudoers/defaults.c:305
+#: plugins/sudoers/defaults.c:303
#, c-format
-msgid "%s:%d invalid Defaults type 0x%x for option \"%s\""
-msgstr "%1$s:%2$d \"%4$s\" 옵션의 잘못된 기본 형식 0x%3$x"
+msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\""
+msgstr "%1$s:%2$d:%3$d \"%5$s\" 옵션의 잘못된 기본 형식 0x%4$x"
-#: plugins/sudoers/defaults.c:308
+#: plugins/sudoers/defaults.c:306
#, c-format
msgid "%s: invalid Defaults type 0x%x for option \"%s\""
msgstr "%1$s: \"%3$s\" 옵션의 잘못된 기본 형식 0x%2$x"
-#: plugins/sudoers/defaults.c:318
+#: plugins/sudoers/defaults.c:316
#, c-format
-msgid "%s:%d value \"%s\" is invalid for option \"%s\""
-msgstr "%s:%d \"%s\" 값은 \"%s\" 옵션에 맞지 않습니다"
+msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\""
+msgstr "%s:%d:%d: \"%s\" 값은 \"%s\" 옵션에 맞지 않습니다"
-#: plugins/sudoers/defaults.c:321
+#: plugins/sudoers/defaults.c:319
#, c-format
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: \"%s\" 값은 \"%s\" 옵션에 맞지 않습니다"
-#: plugins/sudoers/env.c:404
+#: plugins/sudoers/defaults.c:1030
+#, c-format
+msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
+msgstr "%s:%d:%d: \"%s\" 값은 '/'; '~'; '*' 문자로 시작해야합니다"
+
+#: plugins/sudoers/defaults.c:1034
+#, c-format
+msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
+msgstr "%s: \"%s\" 값은 '/'; '~'; '*' 문자로 시작해야합니다"
+
+#: plugins/sudoers/defaults.c:1045
+#, c-format
+msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
+msgstr "%s:%d:%d: \"%s\" 값은 '/' 문자로 시작해야합니다"
+
+#: plugins/sudoers/defaults.c:1049
+#, c-format
+msgid "%s: values for \"%s\" must start with a '/'"
+msgstr "%s: \"%s\" 값은 '/' 문자로 시작해야합니다"
+
+#: plugins/sudoers/env.c:405
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: envp가 깨졌습니다. 길이가 일치하지 않습니다"
-#: plugins/sudoers/env.c:1131
+#: plugins/sudoers/env.c:1133
msgid "unable to rebuild the environment"
msgstr "환경 구성을 다시 갖출 수 없습니다"
-#: plugins/sudoers/env.c:1205
+#: plugins/sudoers/env.c:1207
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "죄송하지만 다음 환경 변수를 설정하도록 허가받지 않았습니다: %s"
-#: plugins/sudoers/file.c:104
+#: plugins/sudoers/file.c:107
#, c-format
msgid "parse error in %s near line %d"
msgstr "%s %d번째 줄에서 해석 오류"
-#: plugins/sudoers/file.c:107
+#: plugins/sudoers/file.c:110
#, c-format
msgid "parse error in %s"
msgstr "%s 해석 오류"
msgid "%s must only be writable by owner"
msgstr "%s은(는) 소유자만 쓸 수 있습니다"
-#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:571
+#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:569
#, c-format
msgid "unable to load %s: %s"
msgstr "%s을(를) 불러올 수 없습니다: %s"
msgid "Local IP address and netmask pairs:\n"
msgstr "로컬 IP 주소 및 넷마스크 쌍:\n"
-#: plugins/sudoers/iolog.c:142 plugins/sudoers/sudoers.c:393
-#: plugins/sudoers/sudoers.c:394 plugins/sudoers/sudoers.c:1274
-#: plugins/sudoers/testsudoers.c:416
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
+#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
#, c-format
msgid "unknown group: %s"
msgstr "잘못된 그룹: %s"
-#: plugins/sudoers/iolog.c:517 plugins/sudoers/iolog.c:807
-#: plugins/sudoers/iolog.c:959 plugins/sudoers/iolog.c:966
-#: plugins/sudoers/iolog.c:1087 plugins/sudoers/iolog.c:1094
-#: plugins/sudoers/iolog.c:1193 plugins/sudoers/iolog.c:1200
+#: plugins/sudoers/iolog.c:622
+msgid "unable to update sequence file"
+msgstr "시퀀스 파일을 업데이트할 수 없습니다"
+
+#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
+#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
+#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
+#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "입출력 로그에 기록할 수 없습니다: %s"
-#: plugins/sudoers/iolog.c:566
-msgid "unable to update sequence file"
-msgstr "시퀀스 파일을 업데이트할 수 없습니다"
-
-#: plugins/sudoers/iolog.c:605
+#: plugins/sudoers/iolog.c:661
#, c-format
msgid "unable to create %s/%s"
msgstr "%s/%s을(를) 만들 수 없습니다"
-#: plugins/sudoers/iolog.c:631
-msgid "unable to connect to log server"
-msgstr "로그 서버에 연결할 수 없습니다"
-
-#: plugins/sudoers/iolog.c:851
+#: plugins/sudoers/iolog.c:886
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: 내부 오류. 이벤트 %d 번의 입출력 로그 파일을 열지 않았습니다"
-#: plugins/sudoers/iolog.c:944 plugins/sudoers/iolog.c:1072
-#: plugins/sudoers/iolog.c:1177 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:492
-#: plugins/sudoers/visudo.c:498
+#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
+#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
+#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
+#: plugins/sudoers/visudo.c:499
msgid "unable to read the clock"
msgstr "클록을 읽을 수 없습니다"
-#: plugins/sudoers/iolog.c:1169 plugins/sudoers/iolog_client.c:977
+#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: 내부 오류. 잘못된 시그널 %d번"
-#: plugins/sudoers/iolog_client.c:113 plugins/sudoers/iolog_client.c:392
-#: plugins/sudoers/iolog_client.c:1200 plugins/sudoers/iolog_client.c:1775
-msgid "error in event loop"
-msgstr "이벤트 루프 오류"
-
-#: plugins/sudoers/iolog_client.c:194
-#, c-format
-msgid "Creation of new SSL_CTX object failed: %s"
-msgstr "SSL_CTX 객체 만들기 실패: %s"
-
-#: plugins/sudoers/iolog_client.c:346 plugins/sudoers/iolog_client.c:351
-#, c-format
-msgid "TLS connection to %s:%s failed: %s"
-msgstr "%s:%s로의 TLS 연결 실패: %s"
-
-#: plugins/sudoers/iolog_client.c:496
-msgid "TLS initialization was unsuccessful"
-msgstr "TLS 초기화에 실패했습니다"
-
-#: plugins/sudoers/iolog_client.c:505
-msgid "TLS handshake was unsuccessful"
-msgstr "TLS 핸드셰이킹에 실패했습니다"
-
-#: plugins/sudoers/iolog_client.c:767 plugins/sudoers/iolog_client.c:959
-msgid "unable to get time of day"
-msgstr "일시 정보를 가져올 수 없습니다"
-
-#: plugins/sudoers/iolog_client.c:986
-#, c-format
-msgid "%s: internal error, invalid exit status %d"
-msgstr "%s: 내부 오류. 잘못된 시그널 %d"
-
-#: plugins/sudoers/iolog_client.c:1523
-msgid "lost connection to log server"
-msgstr "로그 서버의 연결이 끊어졌습니다"
-
-#: plugins/sudoers/iolog_client.c:1600
-msgid "missing write buffer"
-msgstr "기록 버퍼 빠짐"
-
-#: plugins/sudoers/ldap.c:176 plugins/sudoers/ldap_conf.c:291
+#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:291
msgid "starttls not supported when using ldaps"
msgstr "ldaps를 사용할 때 starttls를 지원하지 않습니다"
-#: plugins/sudoers/ldap.c:247
+#: plugins/sudoers/ldap.c:248
#, c-format
msgid "unable to initialize SSL cert and key db: %s"
msgstr "SSL 인증서 및 키 DB를 초기화할 수 없습니다: %s"
-#: plugins/sudoers/ldap.c:250
+#: plugins/sudoers/ldap.c:251
#, c-format
msgid "you must set TLS_CERT in %s to use SSL"
msgstr "SSL을 사용하려면 %s에서 TLS_CERT를 설정해야 합니다"
-#: plugins/sudoers/ldap.c:1658
+#: plugins/sudoers/ldap.c:1660
#, c-format
msgid "unable to initialize LDAP: %s"
msgstr "LDAP를 초기화할 수 없습니다: %s"
-#: plugins/sudoers/ldap.c:1694
+#: plugins/sudoers/ldap.c:1697
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:1831 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "잘못된 sudoOrder 속성: %s"
#: plugins/sudoers/ldap_conf.c:200
-msgid "sudo_ldap_conf_add_ports: port too large"
-msgstr "sudo_ldap_conf_add_ports: 포트 값이 너무 큽니다"
+#, c-format
+msgid "%s: port too large"
+msgstr "%s: 포트 번호가 너무 큽니다"
#: plugins/sudoers/ldap_conf.c:260
#, c-format
msgid "unable to mix ldap and ldaps URIs"
msgstr "ldap 및 ldaps URI를 함께 사용할 수 없습니다"
-#: plugins/sudoers/ldap_util.c:548 plugins/sudoers/ldap_util.c:550
+#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "sudoOption을 변환할 수 없습니다: %s%s%s"
msgid "unable to open audit system"
msgstr "감시 시스템을 열 수 없습니다"
-#: plugins/sudoers/linux_audit.c:100
+#: plugins/sudoers/linux_audit.c:101
msgid "unable to send audit message"
msgstr "감시 메시지를 보낼 수 없습니다"
-#: plugins/sudoers/logging.c:167
+#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
+#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+msgid "error in event loop"
+msgstr "이벤트 루프 오류"
+
+#: plugins/sudoers/log_client.c:193
#, c-format
-msgid "unable to open log file: %s"
-msgstr "로그 파일을 열 수 없습니다: %s"
+msgid "Creation of new SSL_CTX object failed: %s"
+msgstr "SSL_CTX 객체 만들기 실패: %s"
-#: plugins/sudoers/logging.c:175
+#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350
#, c-format
-msgid "unable to lock log file: %s"
-msgstr "로그 파일을 잠글 수 없습니다: %s"
+msgid "TLS connection to %s:%s failed: %s"
+msgstr "%s:%s로의 TLS 연결 실패: %s"
-#: plugins/sudoers/logging.c:208
+#: plugins/sudoers/log_client.c:519
+msgid "TLS initialization was unsuccessful"
+msgstr "TLS 초기화에 실패했습니다"
+
+#: plugins/sudoers/log_client.c:528
+msgid "TLS handshake was unsuccessful"
+msgstr "TLS 핸드셰이킹에 실패했습니다"
+
+#: plugins/sudoers/log_client.c:1202
#, c-format
-msgid "unable to write log file: %s"
-msgstr "로그 파일에 기록할 수 없습니다: %s"
+msgid "%s: internal error, invalid exit status %d"
+msgstr "%s: 내부 오류. 잘못된 시그널 %d"
+
+#: plugins/sudoers/log_client.c:1738
+msgid "lost connection to log server"
+msgstr "로그 서버의 연결이 끊어졌습니다"
+
+#: plugins/sudoers/log_client.c:1815
+msgid "missing write buffer"
+msgstr "기록 버퍼 빠짐"
+
+#: plugins/sudoers/log_client.c:1964
+msgid "unable to connect to log server"
+msgstr "로그 서버에 연결할 수 없습니다"
-#: plugins/sudoers/logging.c:241
+#: plugins/sudoers/logging.c:244
msgid "user NOT in sudoers"
msgstr "사용자가 sudoers에 없습니다"
-#: plugins/sudoers/logging.c:243
+#: plugins/sudoers/logging.c:246
msgid "user NOT authorized on host"
msgstr "사용자가 호스트에서 인증하지 않았습니다"
-#: plugins/sudoers/logging.c:245
+#: plugins/sudoers/logging.c:248
msgid "command not allowed"
msgstr "명령을 허용하지 않았습니다"
-#: plugins/sudoers/logging.c:288
+#: plugins/sudoers/logging.c:269
#, c-format
msgid "%s is not in the sudoers file. This incident will be reported.\n"
msgstr "%s은(는) sudoers 설정 파일에 없습니다. 이 시도를 보고합니다.\n"
-#: plugins/sudoers/logging.c:291
+#: plugins/sudoers/logging.c:272
#, c-format
msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n"
msgstr "%s은(는) %s에서 sudo를 실행하도록 허가받지 않았습니다. 이 시도를 보고합니다.\n"
-#: plugins/sudoers/logging.c:295
+#: plugins/sudoers/logging.c:276
#, c-format
msgid "Sorry, user %s may not run sudo on %s.\n"
msgstr "죄송하지만, %s 사용자는 %s에서 sudo를 실행하면 안됩니다.\n"
-#: plugins/sudoers/logging.c:298
+#: plugins/sudoers/logging.c:279
#, c-format
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "죄송하지만 %1$s 사용자는 '%2$s%3$s%4$s'을(를) %8$s의 %5$s%6$s%7$s(으)로 실행하도록 허가받지 않았습니다.\n"
-#: plugins/sudoers/logging.c:335 plugins/sudoers/sudoers.c:512
-#: plugins/sudoers/sudoers.c:514 plugins/sudoers/sudoers.c:516
-#: plugins/sudoers/sudoers.c:518 plugins/sudoers/sudoers.c:665
-#: plugins/sudoers/sudoers.c:667
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
+#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
+#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
+#: plugins/sudoers/sudoers.c:741
#, c-format
msgid "%s: command not found"
msgstr "%s: 명령이 없습니다"
-#: plugins/sudoers/logging.c:337 plugins/sudoers/sudoers.c:508
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
"'.'에 무시 중인 \"%1$s\" 요소가 있습니다.\n"
"\"%3$s\" 명령을 실행하려면, \"sudo ./%2$s\" 명령을 사용하십시오."
-#: plugins/sudoers/logging.c:354
-msgid "authentication failure"
-msgstr "인증 실패"
-
-#: plugins/sudoers/logging.c:380
-msgid "a password is required"
-msgstr "암호가 필요합니다"
-
-#: plugins/sudoers/logging.c:450
+#: plugins/sudoers/logging.c:337
#, c-format
msgid "%u incorrect password attempt"
msgid_plural "%u incorrect password attempts"
msgstr[0] "잘못된 암호 입력 시도 %u번"
-#: plugins/sudoers/logging.c:714
-#, c-format
-msgid "unable to dup stdin: %m"
-msgstr "표준 입력을 복제할 수 없습니다: %m"
+#: plugins/sudoers/logging.c:393
+msgid "authentication failure"
+msgstr "인증 실패"
-#: plugins/sudoers/logging.c:751
-#, c-format
-msgid "unable to execute %s: %m"
-msgstr "%s을(를) 실행할 수 없습니다: %m"
+#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453
+msgid "a password is required"
+msgstr "암호가 필요합니다"
-#: plugins/sudoers/logging.c:792 plugins/sudoers/logging.c:848
+#: plugins/sudoers/logging.c:729
#, c-format
-msgid "unable to fork: %m"
-msgstr "포킹할 수 없습니다: %m"
+msgid "unable to open log file: %s"
+msgstr "로그 파일을 열 수 없습니다: %s"
-#: plugins/sudoers/logging.c:838
+#: plugins/sudoers/logging.c:762
#, c-format
-msgid "unable to open pipe: %m"
-msgstr "파이프를 열 수 없습니다: %m"
+msgid "unable to write log file: %s"
+msgstr "로그 파일에 기록할 수 없습니다: %s"
-#: plugins/sudoers/match_digest.c:116
+#: plugins/sudoers/match_digest.c:129
#, c-format
msgid "digest for %s (%s) is not in %s form"
msgstr "%s 다이제스트(%s)는 %s 형식이 아닙니다"
-#: plugins/sudoers/parse.c:442
+#: plugins/sudoers/parse.c:518
#, c-format
msgid ""
"\n"
"\n"
"LDAP 역할: %s\n"
-#: plugins/sudoers/parse.c:445
-#, c-format
+#: plugins/sudoers/parse.c:521
msgid ""
"\n"
"Sudoers entry:\n"
"\n"
"Sudoers 항목:\n"
-#: plugins/sudoers/parse.c:447
-#, c-format
+#: plugins/sudoers/parse.c:523
msgid " RunAsUsers: "
msgstr " 실행 사용자: "
-#: plugins/sudoers/parse.c:462
-#, c-format
+#: plugins/sudoers/parse.c:538
msgid " RunAsGroups: "
msgstr " 실행 그룹: "
-#: plugins/sudoers/parse.c:472
-#, c-format
+#: plugins/sudoers/parse.c:548
msgid " Options: "
msgstr " 옵션: "
-#: plugins/sudoers/parse.c:522
-#, c-format
+#: plugins/sudoers/parse.c:602
msgid " Commands:\n"
msgstr " 명령:\n"
-#: plugins/sudoers/parse.c:713
+#: plugins/sudoers/parse.c:793
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "%2$s에서 %1$s에 일치하는 기본 항목:\n"
-#: plugins/sudoers/parse.c:731
+#: plugins/sudoers/parse.c:811
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "%s의 실행 권한 및 명령별 기본 값:\n"
-#: plugins/sudoers/parse.c:749
+#: plugins/sudoers/parse.c:829
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "%s 사용자는 %s에서 다음 명령을 실행해야 합니다:\n"
-#: plugins/sudoers/parse.c:764
+#: plugins/sudoers/parse.c:844
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "%s 사용자는 %s에서 sudo를 실행하도록 허가받지 않았습니다.\n"
msgid "invalid LDIF attribute: %s"
msgstr "잘못된 LDIF 속성: %s"
-#: plugins/sudoers/policy.c:77 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "sudo 프론트엔드의 %.*s 설정이 잘못되었습니다"
-#: plugins/sudoers/policy.c:281 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
msgid "unable to parse network address list"
msgstr "네트워크 주소 목록을 해석할 수 없습니다"
-#: plugins/sudoers/policy.c:426
+#: plugins/sudoers/policy.c:455
msgid "user name not set by sudo front-end"
msgstr "sudo 프론트엔드에서 사용자 이름을 설정하지 않았습니다"
-#: plugins/sudoers/policy.c:430
+#: plugins/sudoers/policy.c:459
msgid "user-ID not set by sudo front-end"
msgstr "sudo 프론트엔드에서 사용자 ID를 설정하지 않았습니다"
-#: plugins/sudoers/policy.c:434
+#: plugins/sudoers/policy.c:463
msgid "group-ID not set by sudo front-end"
msgstr "sudo 프론트엔드에서 그룹 ID를 지정하지 않았습니다"
-#: plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:467
msgid "host name not set by sudo front-end"
msgstr "sudo 프론트엔드에서 호스트 이름을 설정하지 않았습니다"
-#: plugins/sudoers/policy.c:896 plugins/sudoers/visudo.c:230
-#: plugins/sudoers/visudo.c:861
+#: plugins/sudoers/policy.c:643
+#, c-format
+msgid "invalid working directory: %s"
+msgstr "잘못된 작업 디렉터리: %s"
+
+#: plugins/sudoers/policy.c:811
+#, c-format
+msgid "invalid chroot directory: %s"
+msgstr "잘못된 루트 변경 디렉터리: %s"
+
+#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
+#: plugins/sudoers/visudo.c:860
#, c-format
msgid "unable to execute %s"
msgstr "%s을(를) 실행할 수 없습니다"
-#: plugins/sudoers/policy.c:1060
+#: plugins/sudoers/policy.c:1111
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Sudoers 정책 플러그인 버전 %s\n"
-#: plugins/sudoers/policy.c:1062
+#: plugins/sudoers/policy.c:1113
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Sudoers 파일 문법 버전 %d\n"
-#: plugins/sudoers/policy.c:1066
+#: plugins/sudoers/policy.c:1117
#, c-format
msgid ""
"\n"
"\n"
"Sudoers 경로: %s\n"
-#: plugins/sudoers/policy.c:1069
+#: plugins/sudoers/policy.c:1120
#, c-format
msgid "nsswitch path: %s\n"
msgstr "nsswitch 경로: %s\n"
-#: plugins/sudoers/policy.c:1071
+#: plugins/sudoers/policy.c:1122
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "ldap.conf 경로: %s\n"
-#: plugins/sudoers/policy.c:1072
+#: plugins/sudoers/policy.c:1123
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "ldap.secret 경로: %s\n"
-#: plugins/sudoers/policy.c:1105
+#: plugins/sudoers/policy.c:1156
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "%d 형식의 후크를 등록할 수 없습니다(버전 %d.%d)"
-#: plugins/sudoers/pwutil.c:214 plugins/sudoers/pwutil.c:232
+#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
#, c-format
msgid "unable to cache uid %u"
msgstr "%u uid를 캐시에 적재할 수 없습니다"
-#: plugins/sudoers/pwutil.c:226
+#: plugins/sudoers/pwutil.c:229
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "%u uid를 캐시에 적재할 수 없습니다. 이미 존재합니다."
-#: plugins/sudoers/pwutil.c:286 plugins/sudoers/pwutil.c:304
-#: plugins/sudoers/pwutil.c:367 plugins/sudoers/pwutil.c:412
+#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
+#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
#, c-format
msgid "unable to cache user %s"
msgstr "%s 사용자를 캐시에 적재할 수 없습니다"
-#: plugins/sudoers/pwutil.c:299
+#: plugins/sudoers/pwutil.c:302
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "%s 사용자를 캐시에 적재할 수 없습니다. 이미 존재합니다."
-#: plugins/sudoers/pwutil.c:531 plugins/sudoers/pwutil.c:549
+#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
#, c-format
msgid "unable to cache gid %u"
msgstr "%u GID를 캐시에 적재할 수 없습니다"
-#: plugins/sudoers/pwutil.c:543
+#: plugins/sudoers/pwutil.c:546
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "%u gid를 캐시에 적재할 수 없습니다. 이미 존재합니다."
-#: plugins/sudoers/pwutil.c:596 plugins/sudoers/pwutil.c:614
-#: plugins/sudoers/pwutil.c:662 plugins/sudoers/pwutil.c:704
+#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
+#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
#, c-format
msgid "unable to cache group %s"
msgstr "%s 그룹을 캐시에 적재할 수 없습니다"
-#: plugins/sudoers/pwutil.c:609
+#: plugins/sudoers/pwutil.c:612
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "%s 그룹을 캐시에 적재할 수 없습니다. 이미 존재합니다."
-#: plugins/sudoers/pwutil.c:831 plugins/sudoers/pwutil.c:883
-#: plugins/sudoers/pwutil.c:933 plugins/sudoers/pwutil.c:986
+#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
+#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "%s 그룹 목록을 캐시에 적재할 수 없습니다. 이미 존재합니다."
-#: plugins/sudoers/pwutil.c:837 plugins/sudoers/pwutil.c:888
-#: plugins/sudoers/pwutil.c:939 plugins/sudoers/pwutil.c:991
+#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
+#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
#, c-format
msgid "unable to cache group list for %s"
msgstr "%s 그룹 목록을 캐시에 적재할 수 없습니다"
-#: plugins/sudoers/pwutil.c:877
+#: plugins/sudoers/pwutil.c:879
#, c-format
msgid "unable to parse groups for %s"
msgstr "%s 그룹을 해석할 수 없습니다"
-#: plugins/sudoers/pwutil.c:980
+#: plugins/sudoers/pwutil.c:981
#, c-format
msgid "unable to parse gids for %s"
msgstr "%s 그룹 ID를 해석할 수 없습니다"
msgid "truncated audit path argv[0]: %s"
msgstr "argv[0] 감사 경로가 잘렸습니다: %s"
-#: plugins/sudoers/sssd.c:573
+#: plugins/sudoers/sssd.c:572
msgid "unable to initialize SSS source. Is SSSD installed on your machine?"
msgstr "SSS 소스를 초기화할 수 없습니다. 머신에 SSSD를 설치했습니까?"
-#: plugins/sudoers/sssd.c:581 plugins/sudoers/sssd.c:590
-#: plugins/sudoers/sssd.c:599 plugins/sudoers/sssd.c:608
-#: plugins/sudoers/sssd.c:617
+#: plugins/sudoers/sssd.c:580 plugins/sudoers/sssd.c:589
+#: plugins/sudoers/sssd.c:598 plugins/sudoers/sssd.c:607
+#: plugins/sudoers/sssd.c:616
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "%2$s에서 \"%1$s\" 심볼을 찾을 수 없습니다"
-#: plugins/sudoers/sudoers.c:217 plugins/sudoers/sudoers.c:943
+#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
msgid "problem with defaults entries"
msgstr "기본 항목에 문제 발생"
-#: plugins/sudoers/sudoers.c:221
+#: plugins/sudoers/sudoers.c:218
msgid "no valid sudoers sources found, quitting"
msgstr "올바른 sudoers 설정 원본이 없습니다. 나갑니다."
-#: plugins/sudoers/sudoers.c:297
+#: plugins/sudoers/sudoers.c:292
+#, c-format
+msgid "user not allowed to change root directory to %s"
+msgstr "%s 를 루트 디렉터리로 변환하도록 허용하지 않습니다"
+
+#: plugins/sudoers/sudoers.c:294
+#, c-format
+msgid "you are not permitted to use the -R option with %s"
+msgstr "-R 옵션과 %s 옵션의 병행 사용을 허가받지 않았습니다"
+
+#: plugins/sudoers/sudoers.c:319
+#, c-format
+msgid "user not allowed to change directory to %s"
+msgstr "%s 디렉터리로의 변경을 허용하지 않습니다"
+
+#: plugins/sudoers/sudoers.c:320
+#, c-format
+msgid "you are not permitted to use the -D option with %s"
+msgstr "-D 옵션과 %s 옵션의 병행 사용을 허가받지 않았습니다"
+
+#: plugins/sudoers/sudoers.c:351
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers에서 root가 sudo를 실행하지 못하게 지정했습니다"
-#: plugins/sudoers/sudoers.c:357
+#: plugins/sudoers/sudoers.c:411
msgid "user not allowed to override closefrom limit"
msgstr "사용자가 closefrom 제한 값을 따로 적용하도록 허용하지 않았습니다"
-#: plugins/sudoers/sudoers.c:358
+#: plugins/sudoers/sudoers.c:412
msgid "you are not permitted to use the -C option"
msgstr "-C 옵션 사용을 허가받지 않았습니다"
-#: plugins/sudoers/sudoers.c:420
+#: plugins/sudoers/sudoers.c:472
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "타임스탬프 소유자(%s): 사용자 없음"
-#: plugins/sudoers/sudoers.c:435
+#: plugins/sudoers/sudoers.c:487
msgid "no tty"
msgstr "tty 없음"
-#: plugins/sudoers/sudoers.c:436
+#: plugins/sudoers/sudoers.c:488
msgid "sorry, you must have a tty to run sudo"
msgstr "죄송하지만 sudo를 실행하려면 tty를 확보해야합니다"
-#: plugins/sudoers/sudoers.c:442 plugins/sudoers/sudoers.c:444
+#: plugins/sudoers/sudoers.c:495
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "%s 사용자에게 잘못된 셸 제공: %s"
-#: plugins/sudoers/sudoers.c:507
+#: plugins/sudoers/sudoers.c:578
msgid "command in current directory"
msgstr "현재 디렉터리의 명령"
-#: plugins/sudoers/sudoers.c:525
+#: plugins/sudoers/sudoers.c:597
msgid "user not allowed to set a command timeout"
msgstr "사용자가 명령 처리 제한 시간을 설정하도록 허용하지 않았습니다"
-#: plugins/sudoers/sudoers.c:526
+#: plugins/sudoers/sudoers.c:599
msgid "sorry, you are not allowed set a command timeout"
msgstr "죄송하지만, 명령 처리 제한 시간을 설정할 수 없습니다"
-#: plugins/sudoers/sudoers.c:534
+#: plugins/sudoers/sudoers.c:607
msgid "user not allowed to preserve the environment"
msgstr "사용자가 환경 설정 값을 유지하도록 허용하지 않았습니다"
-#: plugins/sudoers/sudoers.c:535
+#: plugins/sudoers/sudoers.c:609
msgid "sorry, you are not allowed to preserve the environment"
msgstr "죄송하지만 이 환경 상태를 유지하도록 허가받지 않았습니다"
-#: plugins/sudoers/sudoers.c:878
+#: plugins/sudoers/sudoers.c:945
msgid "command too long"
msgstr "명령이 너무 깁니다"
-#: plugins/sudoers/sudoers.c:936
+#: plugins/sudoers/sudoers.c:1003
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoedit는 sudo로 실행할 필요가 없습니다"
-#: plugins/sudoers/sudoers.c:990 plugins/sudoers/sudoreplay.c:1548
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "%s을(를) 읽을 수 없습니다"
-#: plugins/sudoers/sudoers.c:1015 plugins/sudoers/visudo.c:431
-#: plugins/sudoers/visudo.c:727
+#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
+#: plugins/sudoers/visudo.c:726
#, c-format
msgid "unable to stat %s"
msgstr "%s의 상태를 가져올 수 없습니다"
-#: plugins/sudoers/sudoers.c:1019 plugins/sudoers/visudo.c:1037
+#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
#, c-format
msgid "%s is not a regular file"
msgstr "%s은(는) 일반 파일이 아닙니다"
-#: plugins/sudoers/sudoers.c:1023 plugins/sudoers/timestamp.c:252 toke.l:1060
+#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s은(는) %u uid가 소유했지만, %u uid가 소유해야합니다"
-#: plugins/sudoers/sudoers.c:1027 toke.l:1065
+#: plugins/sudoers/sudoers.c:1094 toke.l:1117
#, c-format
msgid "%s is world writable"
msgstr "%s에 모두가 기록할 수 있습니다"
-#: plugins/sudoers/sudoers.c:1031 toke.l:1068
+#: plugins/sudoers/sudoers.c:1098 toke.l:1120
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s은(는) %u gid가 소유했지만, %u gid가 소유해야합니다"
-#: plugins/sudoers/sudoers.c:1064
+#: plugins/sudoers/sudoers.c:1131
#, c-format
msgid "only root can use \"-c %s\""
msgstr "루트만 \"-c %s\" 옵션을 사용할 수 있습니다"
-#: plugins/sudoers/sudoers.c:1083
+#: plugins/sudoers/sudoers.c:1150
#, c-format
msgid "unknown login class: %s"
msgstr "알 수 없는 로그인 클래스: %s"
-#: plugins/sudoers/sudoers.c:1168 plugins/sudoers/sudoers.c:1183
+#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
#, c-format
msgid "unable to resolve host %s"
msgstr "%s 호스트를 해석할 수 없습니다"
-#: plugins/sudoers/sudoreplay.c:258
+#: plugins/sudoers/sudoreplay.c:257
#, c-format
msgid "invalid filter option: %s"
msgstr "잘못된 필터 옵션: %s"
-#: plugins/sudoers/sudoreplay.c:274
+#: plugins/sudoers/sudoreplay.c:273
#, c-format
msgid "invalid max wait: %s"
msgstr "잘못된 최대 대기 시간 값: %s"
-#: plugins/sudoers/sudoreplay.c:297
+#: plugins/sudoers/sudoreplay.c:296
#, c-format
msgid "invalid speed factor: %s"
msgstr "잘못된 속도 인수: %s"
-#: plugins/sudoers/sudoreplay.c:333
+#: plugins/sudoers/sudoreplay.c:332
#, c-format
msgid "%s/%.2s/%.2s/%.2s: %s"
msgstr "%s/%.2s/%.2s/%.2s: %s"
-#: plugins/sudoers/sudoreplay.c:338
+#: plugins/sudoers/sudoreplay.c:337
#, c-format
msgid "%s/timing: %s"
msgstr "%s/timing: %s"
-#: plugins/sudoers/sudoreplay.c:342
+#: plugins/sudoers/sudoreplay.c:341
#, c-format
msgid "%s/%s: %s"
msgstr "%s/%s: %s"
-#: plugins/sudoers/sudoreplay.c:366
+#: plugins/sudoers/sudoreplay.c:365
#, c-format
msgid "Replaying sudo session: %s"
msgstr "sudo 세션 재현 중: %s"
-#: plugins/sudoers/sudoreplay.c:628
+#: plugins/sudoers/sudoreplay.c:627
msgid "unable to set tty to raw mode"
msgstr "RAW 모드로 tty를 설정할 수 없습니다"
-#: plugins/sudoers/sudoreplay.c:679
+#: plugins/sudoers/sudoreplay.c:678
msgid "Warning: your terminal is too small to properly replay the log.\n"
msgstr "경고: 터미널 화면이 로그를 올바르게 나타내기에 너무 작습니다.\n"
-#: plugins/sudoers/sudoreplay.c:680
+#: plugins/sudoers/sudoreplay.c:679
#, c-format
msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d."
msgstr "로그 화면 크기는 %d x %d 이지만, 터미널 화면 크기는 %d x %d 입니다."
-#: plugins/sudoers/sudoreplay.c:708
+#: plugins/sudoers/sudoreplay.c:707
msgid "Replay finished, press any key to restore the terminal."
msgstr "재현에 끝났습니다. 터미널을 복원하려면 아무 키나 누르십시오."
-#: plugins/sudoers/sudoreplay.c:1198 plugins/sudoers/sudoreplay.c:1228
+#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227
#, c-format
msgid "ambiguous expression \"%s\""
msgstr "모호한 식 \"%s\""
-#: plugins/sudoers/sudoreplay.c:1250
+#: plugins/sudoers/sudoreplay.c:1249
msgid "unmatched ')' in expression"
msgstr "수식에 일치하지 않는 ')'"
-#: plugins/sudoers/sudoreplay.c:1254
+#: plugins/sudoers/sudoreplay.c:1253
#, c-format
msgid "unknown search term \"%s\""
msgstr "알 수 없는 검색어 \"%s\""
-#: plugins/sudoers/sudoreplay.c:1269
+#: plugins/sudoers/sudoreplay.c:1268
#, c-format
msgid "%s requires an argument"
msgstr "%s에 인자가 필요합니다"
-#: plugins/sudoers/sudoreplay.c:1272 plugins/sudoers/sudoreplay.c:1524
+#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523
#, c-format
msgid "invalid regular expression: %s"
msgstr "잘못된 정규 표현식: %s"
-#: plugins/sudoers/sudoreplay.c:1277
+#: plugins/sudoers/sudoreplay.c:1276
#, c-format
msgid "could not parse date \"%s\""
msgstr "\"%s\" 날짜를 해석할 수 없습니다"
-#: plugins/sudoers/sudoreplay.c:1286
+#: plugins/sudoers/sudoreplay.c:1285
msgid "unmatched '(' in expression"
msgstr "수식에 일치하지 않는 '('"
-#: plugins/sudoers/sudoreplay.c:1288
+#: plugins/sudoers/sudoreplay.c:1287
msgid "illegal trailing \"or\""
msgstr "잘못된 후위 연산자 \"or\""
-#: plugins/sudoers/sudoreplay.c:1290
+#: plugins/sudoers/sudoreplay.c:1289
msgid "illegal trailing \"!\""
msgstr "잘못된 후위 문자 \"!\""
-#: plugins/sudoers/sudoreplay.c:1348
+#: plugins/sudoers/sudoreplay.c:1347
#, c-format
msgid "unknown search type %d"
msgstr "알 수 없는 검색 형식 %d"
-#: plugins/sudoers/sudoreplay.c:1615
+#: plugins/sudoers/sudoreplay.c:1614
#, c-format
msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n"
msgstr "사용법: %s [-hnRS] [-d <디렉터리>] [-m <숫자>] [-s <숫자>] <ID>\n"
-#: plugins/sudoers/sudoreplay.c:1618
+#: plugins/sudoers/sudoreplay.c:1617
#, c-format
msgid "usage: %s [-h] [-d dir] -l [search expression]\n"
msgstr "사용법: %s [-h] [-d <디렉터리>] -l [<검색식>]\n"
-#: plugins/sudoers/sudoreplay.c:1627
+#: plugins/sudoers/sudoreplay.c:1626
#, c-format
msgid ""
"%s - replay sudo session logs\n"
"%s - sudo 세션 로그를 보여줍니다\n"
"\n"
-#: plugins/sudoers/sudoreplay.c:1629
+#: plugins/sudoers/sudoreplay.c:1628
msgid ""
"\n"
"Options:\n"
" -s, --speed=<숫자> 출력 속도를 올리거나 내립니다\n"
" -V, --version 버전 정보를 나타낸 후 빠져나갑니다"
-#: plugins/sudoers/testsudoers.c:354
+#: plugins/sudoers/testsudoers.c:348
msgid "\thost unmatched"
msgstr "\t호스트가 일치하지 않습니다"
-#: plugins/sudoers/testsudoers.c:357
+#: plugins/sudoers/testsudoers.c:351
msgid ""
"\n"
"Command allowed"
"\n"
"명령 허용함"
-#: plugins/sudoers/testsudoers.c:358
+#: plugins/sudoers/testsudoers.c:352
msgid ""
"\n"
"Command denied"
"\n"
"명령 거부함"
-#: plugins/sudoers/testsudoers.c:358
+#: plugins/sudoers/testsudoers.c:352
msgid ""
"\n"
"Command unmatched"
msgid "the -x option will be removed in a future release"
msgstr "-x 옵션은 추후 릴리스에서 제거 예정입니다"
-#: plugins/sudoers/visudo.c:227
+#: plugins/sudoers/visudo.c:228
msgid "please consider using the cvtsudoers utility instead"
msgstr "cvtsudoers 유틸리티를 대신 사용해보십시오"
-#: plugins/sudoers/visudo.c:278 plugins/sudoers/visudo.c:660
+#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
#, c-format
msgid "press return to edit %s: "
msgstr "%s을(를) 편집하려면 return 키를 누르십시오:"
-#: plugins/sudoers/visudo.c:339
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "지정 편집기(%s)가 없습니다"
-#: plugins/sudoers/visudo.c:341
+#: plugins/sudoers/visudo.c:342
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "편집기가 없습니다(편집기 경로 = %s)"
-#: plugins/sudoers/visudo.c:451 plugins/sudoers/visudo.c:459
+#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
msgid "write error"
msgstr "쓰기 오류"
-#: plugins/sudoers/visudo.c:505
+#: plugins/sudoers/visudo.c:506
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "임시 파일 상태를 가져올 수 없습니다(%s). %s을(를) 바꾸지 않았습니다"
-#: plugins/sudoers/visudo.c:512
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "임시 파일 길이가 0입니다(%s). %s을(를) 바꾸지 않았습니다"
-#: plugins/sudoers/visudo.c:518
+#: plugins/sudoers/visudo.c:519
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "편집기(%s) 실패. %s을(를) 바꾸지 않았습니다"
-#: plugins/sudoers/visudo.c:540
+#: plugins/sudoers/visudo.c:541
#, c-format
msgid "%s unchanged"
msgstr "%s 바꾸지 않음"
-#: plugins/sudoers/visudo.c:599
+#: plugins/sudoers/visudo.c:598
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "임시 파일(%s)을 다시 열 수 없습니다. %s을(를) 바꾸지 않았습니다."
-#: plugins/sudoers/visudo.c:611
+#: plugins/sudoers/visudo.c:610
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "임시 파일(%s)을 해석할 수 없습니다. 알 수 없는 오류"
-#: plugins/sudoers/visudo.c:649
+#: plugins/sudoers/visudo.c:648
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "내부 오류. %s을(를) 목록에서 찾을 수 없습니다!"
-#: plugins/sudoers/visudo.c:729 plugins/sudoers/visudo.c:738
+#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "%s의 uid/gid를 %u/%u 값으로 설정할 수 없습니다"
-#: plugins/sudoers/visudo.c:761
+#: plugins/sudoers/visudo.c:760
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s 및 %s은(는) 동일한 파일 시스템에 없습니다. mv 명령으로 이름을 바꿉니다"
-#: plugins/sudoers/visudo.c:775
+#: plugins/sudoers/visudo.c:774
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "명령 실행 실패: '%s %s %s', %s을(를) 바꾸지 않았습니다"
-#: plugins/sudoers/visudo.c:785
+#: plugins/sudoers/visudo.c:784
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "%s 이름 바꾸기 오류. %s을(를) 바꾸지 않았습니다"
-#: plugins/sudoers/visudo.c:806
+#: plugins/sudoers/visudo.c:805
msgid "What now? "
msgstr "어떻게 하시겠습니까? "
-#: plugins/sudoers/visudo.c:820
+#: plugins/sudoers/visudo.c:819
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
" sudoers 파일을 바꾼 상태에서 저장하지 않고 나갑니다(X)\n"
" sudoers 파일을 바꾼 상태에서 저장하고 끝냅니다(Q)\n"
-#: plugins/sudoers/visudo.c:866
+#: plugins/sudoers/visudo.c:865
#, c-format
msgid "unable to run %s"
msgstr "%s을(를) 실행할 수 없음"
-#: plugins/sudoers/visudo.c:896
+#: plugins/sudoers/visudo.c:895
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: 잘못된 소유자 uid/gid를 %u/%u 값으로 설정해야 합니다\n"
-#: plugins/sudoers/visudo.c:903
+#: plugins/sudoers/visudo.c:902
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: 잘못된 권한입니다. 0%o 모드 값을 설정해야 합니다\n"
-#: plugins/sudoers/visudo.c:960 plugins/sudoers/visudo.c:967
+#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: 해석 성공\n"
-#: plugins/sudoers/visudo.c:986
+#: plugins/sudoers/visudo.c:977
#, c-format
msgid "%s busy, try again later"
msgstr "%s을(를) 사용중입니다. 나중에 다시 시도하십시오"
-#: plugins/sudoers/visudo.c:989
+#: plugins/sudoers/visudo.c:980
#, c-format
msgid "unable to lock %s"
msgstr "%s을(를) 잠글 수 없습니다"
-#: plugins/sudoers/visudo.c:990
+#: plugins/sudoers/visudo.c:981
msgid "Edit anyway? [y/N]"
msgstr "그래도 편집하시겠습니까? [y/N]"
-#: plugins/sudoers/visudo.c:1083
+#: plugins/sudoers/visudo.c:1091
#, c-format
-msgid "Error: %s:%d cycle in %s \"%s\""
-msgstr "오류: %3$s \"%4$s\"의 %1$s:%2$d사이클"
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "오류: %4$s \"%5$s\"의 %1$s:%2$d:%3$d: 사이클"
-#: plugins/sudoers/visudo.c:1084
+#: plugins/sudoers/visudo.c:1092
#, c-format
-msgid "Warning: %s:%d cycle in %s \"%s\""
-msgstr "경고: %3$s \"%4$s\"의 %1$s:%2$d사이클"
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "경고: %4$s \"%5$s\"의 %1$s:%2$d:%3$d: 사이클"
-#: plugins/sudoers/visudo.c:1088
+#: plugins/sudoers/visudo.c:1096
#, c-format
-msgid "Error: %s:%d %s \"%s\" referenced but not defined"
-msgstr "오류: %s: %d %s \"%s\"을(를) 참조했지만 정의하지 않았습니다"
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "오류: %s:%d:%d: %s \"%s\"을(를) 참조했지만 정의하지 않았습니다"
-#: plugins/sudoers/visudo.c:1089
+#: plugins/sudoers/visudo.c:1097
#, c-format
-msgid "Warning: %s:%d %s \"%s\" referenced but not defined"
-msgstr "경고: %s: %d %s \"%s\"을(를) 참조했지만 정의하지 않았습니다"
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "경고: %s:%d:%d: %s \"%s\"을(를) 참조했지만 정의하지 않았습니다"
-#: plugins/sudoers/visudo.c:1180
+#: plugins/sudoers/visudo.c:1188
#, c-format
-msgid "Warning: %s:%d unused %s \"%s\""
-msgstr "경고: %s:%d 사용하지 않는 %s \"%s\"이(가) 있습니다"
+msgid "Warning: %s:%d:%d: unused %s \"%s\""
+msgstr "경고: %s:%d:%d 사용하지 않는 %s \"%s\"이(가) 있습니다"
-#: plugins/sudoers/visudo.c:1295
+#: plugins/sudoers/visudo.c:1303
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
"%s - sudoers 파일을 안전하게 편집합니다\n"
"\n"
-#: plugins/sudoers/visudo.c:1297
+#: plugins/sudoers/visudo.c:1305
msgid ""
"\n"
"Options:\n"
" -s, --strict 엄격한 문법 검사 시행\n"
" -V, --version 버전 정보를 나타낸 후 빠져나갑니다\n"
-#: toke.l:1032
+#: toke.l:179
+msgid "empty string"
+msgstr "빈 문자열"
+
+#: toke.l:189 toke.l:491
+msgid "empty group"
+msgstr "빈 그룹"
+
+#: toke.l:197 toke.l:489
+msgid "empty netgroup"
+msgstr "빈 네트워크 그룹"
+
+#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+msgid "invalid line continuation"
+msgstr "잘못된 행 연속 문자"
+
+#: toke.l:528 toke.l:540
+msgid "invalid IPv6 address"
+msgstr "잘못된 IPv6 주소"
+
+#: toke.l:764
+msgid "unexpected line break in string"
+msgstr "예기치 않은 개행 문자 발견"
+
+#: toke.l:1084
msgid "too many levels of includes"
msgstr "포함 레벨이 너무 많습니다"
+#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
+#~ msgstr "sudo_noexec 라이브러리에 있는 모조 exec 함수 미리 불러오기"
+
+#~ msgid "sudo_ldap_conf_add_ports: port too large"
+#~ msgstr "sudo_ldap_conf_add_ports: 포트 값이 너무 큽니다"
+
+#~ msgid "unable to lock log file: %s"
+#~ msgstr "로그 파일을 잠글 수 없습니다: %s"
+
#~ msgid "No user or host"
#~ msgstr "사용자 또는 호스트 없음"
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2014—2020.
msgid ""
msgstr ""
-"Project-Id-Version: sudoers-1.9.2rc1\n"
+"Project-Id-Version: sudoers-1.9.4b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-06-24 05:35-0600\n"
-"PO-Revision-Date: 2020-08-04 12:24+0200\n"
+"POT-Creation-Date: 2020-11-14 06:24-0700\n"
+"PO-Revision-Date: 2020-12-11 08:03+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
"Language: sr\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Virtaal 0.7.1\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: confstr.sh:1
+#: confstr.sh:1 gram.y:1077
msgid "syntax error"
msgstr "грешка синтаксе"
msgid "Sorry, try again."
msgstr "Извините, покушајте поново."
-#: gram.y:203 gram.y:251 gram.y:258 gram.y:265 gram.y:272 gram.y:279
-#: gram.y:295 gram.y:319 gram.y:326 gram.y:333 gram.y:340 gram.y:347
-#: gram.y:410 gram.y:419 gram.y:430 gram.y:463 gram.y:470 gram.y:477
-#: gram.y:484 gram.y:511 gram.y:583 gram.y:590 gram.y:599 gram.y:608
-#: gram.y:625 gram.y:737 gram.y:744 gram.y:752 gram.y:758 gram.y:858
-#: gram.y:865 gram.y:872 gram.y:879 gram.y:886 gram.y:912 gram.y:919
-#: gram.y:926 gram.y:1068 gram.y:1347 lib/iolog/iolog_fileio.c:1101
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:283
-#: lib/iolog/iolog_json.c:313 lib/iolog/iolog_json.c:435
-#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115
-#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133
-#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196
-#: logsrvd/eventlog.c:223 logsrvd/sendlog.c:443 plugins/sudoers/alias.c:125
-#: plugins/sudoers/alias.c:132 plugins/sudoers/alias.c:148
-#: plugins/sudoers/audit.c:108 plugins/sudoers/audit.c:212
-#: plugins/sudoers/auth/bsdauth.c:143 plugins/sudoers/auth/kerb5.c:118
-#: plugins/sudoers/auth/kerb5.c:144 plugins/sudoers/auth/pam.c:669
-#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59
-#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:161
-#: plugins/sudoers/cvtsudoers.c:178 plugins/sudoers/cvtsudoers.c:189
-#: plugins/sudoers/cvtsudoers.c:301 plugins/sudoers/cvtsudoers.c:429
-#: plugins/sudoers/cvtsudoers.c:562 plugins/sudoers/cvtsudoers.c:579
-#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757
-#: plugins/sudoers/cvtsudoers.c:765 plugins/sudoers/cvtsudoers.c:1179
-#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285
-#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
-#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
-#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
-#: plugins/sudoers/cvtsudoers_ldif.c:426 plugins/sudoers/cvtsudoers_ldif.c:434
-#: plugins/sudoers/cvtsudoers_ldif.c:451 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:607 plugins/sudoers/defaults.c:626
-#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052
-#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84
-#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261
+#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
+#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
+#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
+#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
+#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
+#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
+#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
+#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
+#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
+#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
+#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
+#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
+#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
+#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
+#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
+#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
+#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
+#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
+#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
+#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
+#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
+#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
+#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
+#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
+#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
+#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
+#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
+#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
+#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
+#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
+#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
+#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483
-#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:382
-#: plugins/sudoers/iolog_client.c:559 plugins/sudoers/iolog_client.c:678
-#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176
-#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723
-#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183
-#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431
-#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440
-#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743
-#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279
-#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743
-#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959
-#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
+#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83
-#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192
-#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545
-#: plugins/sudoers/logging.c:586 plugins/sudoers/logging.c:723
-#: plugins/sudoers/logging.c:1083 plugins/sudoers/match_command.c:243
-#: plugins/sudoers/match_command.c:391 plugins/sudoers/match_command.c:438
-#: plugins/sudoers/match_command.c:509 plugins/sudoers/match_digest.c:80
-#: plugins/sudoers/parse.c:193 plugins/sudoers/parse.c:205
-#: plugins/sudoers/parse.c:220 plugins/sudoers/parse.c:232
+#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
+#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
+#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
+#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
+#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
+#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
+#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
+#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
+#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:491
-#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262
-#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514
-#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649
-#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865
-#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967
-#: plugins/sudoers/sssd.c:146 plugins/sudoers/sssd.c:409
-#: plugins/sudoers/sssd.c:472 plugins/sudoers/sssd.c:516
-#: plugins/sudoers/sssd.c:563 plugins/sudoers/sssd.c:755
-#: plugins/sudoers/stubs.c:96 plugins/sudoers/stubs.c:104
-#: plugins/sudoers/sudoers.c:316 plugins/sudoers/sudoers.c:327
-#: plugins/sudoers/sudoers.c:337 plugins/sudoers/sudoers.c:380
-#: plugins/sudoers/sudoers.c:720 plugins/sudoers/sudoers.c:849
-#: plugins/sudoers/sudoers.c:894 plugins/sudoers/sudoers.c:1198
-#: plugins/sudoers/sudoreplay.c:553 plugins/sudoers/sudoreplay.c:556
-#: plugins/sudoers/sudoreplay.c:1260 plugins/sudoers/sudoreplay.c:1470
-#: plugins/sudoers/sudoreplay.c:1474 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
+#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
+#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
+#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
+#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
+#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
+#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
+#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
+#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
+#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
+#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
+#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
+#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:432
+#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:146
-#: plugins/sudoers/visudo.c:322 plugins/sudoers/visudo.c:328
-#: plugins/sudoers/visudo.c:438 plugins/sudoers/visudo.c:616
-#: plugins/sudoers/visudo.c:936 plugins/sudoers/visudo.c:1024
-#: plugins/sudoers/visudo.c:1121 toke.l:864 toke.l:981 toke.l:1039
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
+#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
+#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
+#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
+#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
msgid "unable to allocate memory"
msgstr "не могу да доделим меморију"
-#: gram.y:505
+#: gram.y:552
msgid "a digest requires a path name"
msgstr "зборник захтева назив путање"
-#: gram.y:638
+#: gram.y:581
+msgid "values for \"CWD\" must start with a '/', '~', or '*'"
+msgstr "вредност за „CWD“ мора почети са /, ~, или *"
+
+#: gram.y:593
+msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
+msgstr "вредност за „CHROOT“ мора почети са /, ~, или *"
+
+#: gram.y:715
+#, c-format
+msgid "syntax error, reserved word %s used as an alias name"
+msgstr "грешка синтаксе, резервисана реч „%s“ је коришћена као назив алијаса"
+
+#: gram.y:735
msgid "invalid notbefore value"
msgstr "неисправна вредност не-пре"
-#: gram.y:646
+#: gram.y:743
msgid "invalid notafter value"
msgstr "неисправна вредност не-после"
-#: gram.y:655 plugins/sudoers/policy.c:306
+#: gram.y:752 plugins/sudoers/policy.c:335
msgid "timeout value too large"
msgstr "вредност временског истека је превелика"
-#: gram.y:657 plugins/sudoers/policy.c:308
+#: gram.y:754 plugins/sudoers/policy.c:337
msgid "invalid timeout value"
msgstr "неисправна вредност временског ограничења"
-#: gram.y:1347 lib/iolog/iolog_fileio.c:1101 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:282 lib/iolog/iolog_json.c:313
-#: lib/iolog/iolog_json.c:435 lib/iolog/iolog_json.c:713
-#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115
-#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133
-#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196
-#: logsrvd/eventlog.c:223 logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1221
-#: logsrvd/logsrvd.c:1266 logsrvd/sendlog.c:443 logsrvd/sendlog.c:1302
-#: logsrvd/sendlog.c:1309 logsrvd/sendlog.c:1727 plugins/sudoers/audit.c:108
-#: plugins/sudoers/audit.c:212 plugins/sudoers/auth/pam.c:482
+#: gram.y:1079
+#, c-format
+msgid "%s:%d:%d: %s\n"
+msgstr "%s:%d:%d: %s\n"
+
+#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
+#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
+#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
+#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
+#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
+#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
+#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
+#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
+#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
+#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
+#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:160
-#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
-#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
-#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
-#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757
-#: plugins/sudoers/cvtsudoers.c:764 plugins/sudoers/cvtsudoers.c:1179
-#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
+#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
+#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
+#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
+#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
+#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
+#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433
-#: plugins/sudoers/cvtsudoers_ldif.c:450 plugins/sudoers/cvtsudoers_ldif.c:459
-#: plugins/sudoers/cvtsudoers_ldif.c:606 plugins/sudoers/defaults.c:626
-#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052
-#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84
-#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:132
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483
-#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:215
-#: plugins/sudoers/iolog_client.c:236 plugins/sudoers/iolog_client.c:249
-#: plugins/sudoers/iolog_client.c:382 plugins/sudoers/iolog_client.c:678
-#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176
-#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723
-#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183
-#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431
-#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440
-#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743
-#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279
-#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743
-#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959
-#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
-#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83
-#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192
-#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545
-#: plugins/sudoers/logging.c:585 plugins/sudoers/logging.c:1083
-#: plugins/sudoers/match_command.c:242 plugins/sudoers/match_command.c:390
-#: plugins/sudoers/match_command.c:437 plugins/sudoers/match_command.c:509
-#: plugins/sudoers/match_digest.c:80 plugins/sudoers/parse.c:192
-#: plugins/sudoers/parse.c:204 plugins/sudoers/parse.c:219
-#: plugins/sudoers/parse.c:231 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
+#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
+#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
+#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
+#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
+#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
+#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
+#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
+#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
+#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
+#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
+#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
+#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
+#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
+#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
+#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
+#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
+#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:120 plugins/sudoers/policy.c:129
-#: plugins/sudoers/policy.c:138 plugins/sudoers/policy.c:164
-#: plugins/sudoers/policy.c:291 plugins/sudoers/policy.c:306
-#: plugins/sudoers/policy.c:308 plugins/sudoers/policy.c:337
-#: plugins/sudoers/policy.c:346 plugins/sudoers/policy.c:389
-#: plugins/sudoers/policy.c:399 plugins/sudoers/policy.c:408
-#: plugins/sudoers/policy.c:417 plugins/sudoers/policy.c:491
-#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262
-#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514
-#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649
-#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865
-#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967
+#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
+#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
+#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
+#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
+#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
+#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
+#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
+#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
+#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
+#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
+#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
+#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:145
-#: plugins/sudoers/sssd.c:409 plugins/sudoers/sssd.c:472
-#: plugins/sudoers/sssd.c:516 plugins/sudoers/sssd.c:563
-#: plugins/sudoers/sssd.c:755 plugins/sudoers/stubs.c:96
-#: plugins/sudoers/stubs.c:104 plugins/sudoers/sudoers.c:316
-#: plugins/sudoers/sudoers.c:327 plugins/sudoers/sudoers.c:337
-#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:720
-#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:894
-#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/sudoreplay.c:553
-#: plugins/sudoers/sudoreplay.c:556 plugins/sudoers/sudoreplay.c:1260
-#: plugins/sudoers/sudoreplay.c:1470 plugins/sudoers/sudoreplay.c:1474
+#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
+#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
+#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
+#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
+#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
+#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
+#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:146 plugins/sudoers/visudo.c:322
-#: plugins/sudoers/visudo.c:328 plugins/sudoers/visudo.c:438
-#: plugins/sudoers/visudo.c:616 plugins/sudoers/visudo.c:936
-#: plugins/sudoers/visudo.c:1024 plugins/sudoers/visudo.c:1121 toke.l:864
-#: toke.l:981 toke.l:1039
+#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
+#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
+#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
+#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
+#: toke.l:1033 toke.l:1091
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/iolog/iolog_fileio.c:157
+#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
+#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
+#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
+#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
+#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
+#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
+#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
+#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
+#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
+#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
+#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
+#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
+#: plugins/sudoers/toke_util.c:169
+#, c-format
+msgid "internal error, %s overflow"
+msgstr "унутрашња грешка, прекорачење „%s“"
+
+#: lib/eventlog/eventlog.c:343
+#, c-format
+msgid "unable to dup stdin: %m"
+msgstr "не могу да удвостручим стандардни улаз: %m"
+
+#: lib/eventlog/eventlog.c:388
+#, c-format
+msgid "unable to execute %s: %m"
+msgstr "не могу да извршим „%s“: %m"
+
+#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+msgid "unable to fork"
+msgstr "не могу да исцепим"
+
+#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#, c-format
+msgid "unable to fork: %m"
+msgstr "не могу да исцепим: %m"
+
+#: lib/eventlog/eventlog.c:480
+#, c-format
+msgid "unable to open pipe: %m"
+msgstr "не могу да отворим спојку: %m"
+
+#: lib/eventlog/eventlog.c:894
+#, c-format
+msgid "%8s : %s"
+msgstr "%8s : %s"
+
+#: lib/eventlog/eventlog.c:923
+#, c-format
+msgid "%8s : (command continued) %s"
+msgstr "%8s : (наредба је настављена) %s"
+
+#: lib/iolog/iolog_fileio.c:155
#, c-format
msgid "%s exists but is not a directory (0%o)"
msgstr "%s постоји али није директоријум (0%o)"
-#: lib/iolog/iolog_fileio.c:187 lib/iolog/iolog_fileio.c:233
+#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
#: plugins/sudoers/timestamp.c:205
#, c-format
msgid "unable to mkdir %s"
msgstr "не могу да направим директоријум „%s“"
-#: lib/iolog/iolog_fileio.c:237 plugins/sudoers/visudo.c:733
-#: plugins/sudoers/visudo.c:744
+#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
+#: plugins/sudoers/visudo.c:743
#, c-format
msgid "unable to change mode of %s to 0%o"
msgstr "не могу да променим режим „%s“ на 0%o"
msgid "expected JSON_STRING, got %d"
msgstr "очекивах „JSON_STRING“, добих „%d“"
-#: lib/iolog/iolog_json.c:305
+#: lib/iolog/iolog_json.c:327
msgid "missing double quote in name"
msgstr "недостају наводници у називу"
-#: lib/iolog/iolog_json.c:392
+#: lib/iolog/iolog_json.c:414
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "очекивах „JSON_OBJECT“, добих „%d“"
-#: lib/iolog/iolog_json.c:441 lib/iolog/iolog_json.c:444
-#: lib/iolog/iolog_json.c:446 lib/iolog/iolog_json.c:538
-#: logsrvd/eventlog.c:228 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:563
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:435 plugins/sudoers/iolog.c:561
-#: plugins/sudoers/iolog.c:577 plugins/sudoers/ldap.c:516
-#: plugins/sudoers/ldap.c:747 plugins/sudoers/ldap.c:1080
-#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
-#: plugins/sudoers/linux_audit.c:89 plugins/sudoers/logging.c:1088
-#: plugins/sudoers/policy.c:521 plugins/sudoers/policy.c:668
-#: plugins/sudoers/policy.c:678 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:916 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
-#, c-format
-msgid "internal error, %s overflow"
-msgstr "унутрашња грешка, прекорачење „%s“"
-
-#: lib/iolog/iolog_json.c:607 lib/iolog/iolog_json.c:731
+#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
msgid "unmatched close brace"
msgstr "непоклопљена затворена велика заграда"
-#: lib/iolog/iolog_json.c:616
+#: lib/iolog/iolog_json.c:638
msgid "unexpected array"
msgstr "неочекиван низ"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:733
+#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
msgid "unmatched close bracket"
msgstr "непоклопљена затворена средња заграда"
-#: lib/iolog/iolog_json.c:637
+#: lib/iolog/iolog_json.c:659
msgid "unexpected string"
msgstr "неочекивана ниска"
-#: lib/iolog/iolog_json.c:647
+#: lib/iolog/iolog_json.c:669
msgid "missing colon after name"
msgstr "недостају две тачке након имена"
-#: lib/iolog/iolog_json.c:658 lib/iolog/iolog_json.c:673
-#: lib/iolog/iolog_json.c:688
+#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
+#: lib/iolog/iolog_json.c:710
msgid "unexpected boolean"
msgstr "неочекивана логичка вредност"
-#: lib/iolog/iolog_json.c:704
+#: lib/iolog/iolog_json.c:726
msgid "unexpected number"
msgstr "неочекивани број"
-#: lib/iolog/iolog_json.c:741
+#: lib/iolog/iolog_json.c:763
#, c-format
msgid "%s:%u unable to parse \"%s\""
msgstr "„%s:%u“ не могу да обрадим „%s“"
msgid "invalid timing file line: %s"
msgstr "неисправан ред датотеке временисања: %s"
-#: logsrvd/eventlog.c:430 plugins/sudoers/logging.c:112
-#, c-format
-msgid "%8s : %s"
-msgstr "%8s : %s"
-
-#: logsrvd/eventlog.c:459 plugins/sudoers/logging.c:136
-#, c-format
-msgid "%8s : (command continued) %s"
-msgstr "%8s : (наредба је настављена) %s"
-
-#: logsrvd/iolog_writer.c:936
+#: logsrvd/iolog_writer.c:919
msgid "log is already complete, cannot be restarted"
msgstr "дневик је већ довршен, не може бити поново покренут"
-#: logsrvd/iolog_writer.c:967
+#: logsrvd/iolog_writer.c:950
msgid "unable to restart log"
msgstr "не могу поново да покренем дневник"
-#: logsrvd/logsrv_util.c:98 logsrvd/logsrv_util.c:105
-#: plugins/sudoers/sudoreplay.c:353 plugins/sudoers/sudoreplay.c:359
+#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106
+#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358
#, c-format
msgid "unable to open %s/%s"
msgstr "не могу да отворим „%s/%s“"
-#: logsrvd/logsrv_util.c:132
+#: logsrvd/logsrv_util.c:133
#, c-format
msgid "missing I/O log file %s/%s"
msgstr "недостаје У/И датотека дневника „%s/%s“"
-#: logsrvd/logsrv_util.c:139
+#: logsrvd/logsrv_util.c:140
#, c-format
msgid "%s/%s: unable to seek forward %zu"
msgstr "%s/%s: не могу да премотам унапред „%zu“"
-#: logsrvd/logsrv_util.c:149
+#: logsrvd/logsrv_util.c:150
#, c-format
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "не могу да нађем тачку наставка [%lld, %ld] у „%s/%s“"
-#: logsrvd/logsrvd.c:230 logsrvd/logsrvd.c:299 logsrvd/logsrvd.c:343
-#: logsrvd/logsrvd.c:398 logsrvd/logsrvd.c:445 logsrvd/logsrvd.c:496
-#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:560
+#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
+#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
+#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
msgid "state machine error"
msgstr "грешка машине стања"
-#: logsrvd/logsrvd.c:239
+#: logsrvd/logsrvd.c:299
msgid "invalid AcceptMessage"
msgstr "неисправна „Порука прихвата“"
-#: logsrvd/logsrvd.c:250
+#: logsrvd/logsrvd.c:307
msgid "error parsing AcceptMessage"
msgstr "грешка обраде „Поруке прихвата“"
-#: logsrvd/logsrvd.c:257
+#: logsrvd/logsrvd.c:314
msgid "error creating I/O log"
msgstr "грешка стварања У/И дневника"
-#: logsrvd/logsrvd.c:265
+#: logsrvd/logsrvd.c:321
msgid "error logging accept event"
msgstr "грешка прибележавања догађаја прихвата"
-#: logsrvd/logsrvd.c:308
+#: logsrvd/logsrvd.c:362
msgid "invalid RejectMessage"
msgstr "неисправна „Порука одбијања“"
-#: logsrvd/logsrvd.c:319
+#: logsrvd/logsrvd.c:370
msgid "error parsing RejectMessage"
msgstr "грешка обраде „Поруке одбијања“"
-#: logsrvd/logsrvd.c:325
+#: logsrvd/logsrvd.c:376
msgid "error logging reject event"
msgstr "грешка прибележавања догађаја одбијања"
-#: logsrvd/logsrvd.c:430
+#: logsrvd/logsrvd.c:486
+msgid "invalid AlertMessage"
+msgstr "неисправна „Порука узбуне“"
+
+#: logsrvd/logsrvd.c:494
+msgid "error parsing AlertMessage"
+msgstr "грешка обраде „Поруке узбуне“"
+
+#: logsrvd/logsrvd.c:502
msgid "error logging alert event"
msgstr "грешка прибележавања догађаја упозорења"
-#: logsrvd/logsrvd.c:451 logsrvd/logsrvd.c:502 logsrvd/logsrvd.c:534
+#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
msgid "protocol error"
msgstr "грешка протокола"
-#: logsrvd/logsrvd.c:461
+#: logsrvd/logsrvd.c:533
msgid "error writing IoBuffer"
msgstr "Грешка писања „Уи_Међумеморије“"
-#: logsrvd/logsrvd.c:513
+#: logsrvd/logsrvd.c:585
msgid "error writing ChangeWindowSize"
msgstr "грешка писања „Промени_величину_прозора“"
-#: logsrvd/logsrvd.c:545
+#: logsrvd/logsrvd.c:617
msgid "error writing CommandSuspend"
msgstr "грешка писања „Обуставе_наредбе“"
-#: logsrvd/logsrvd.c:630
+#: logsrvd/logsrvd.c:702
msgid "unrecognized ClientMessage type"
msgstr "непозната врста „Поруке_клијента“"
-#: logsrvd/logsrvd.c:895
+#: logsrvd/logsrvd.c:967
msgid "client message too large"
msgstr "порука клијента је превелика"
-#: logsrvd/logsrvd.c:1125 logsrvd/logsrvd.c:1133
+#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "не могу да подесим шифрарник ТЛС-а 1.2 на „%s“: %s"
-#: logsrvd/logsrvd.c:1153 logsrvd/logsrvd.c:1161
+#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "не могу да подесим шифрарник ТЛС-а 1.3 на „%s“: %s"
-#: logsrvd/logsrvd.c:1197
+#: logsrvd/logsrvd.c:1269
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "не могу да добавим метод ТЛС сервера: %s"
-#: logsrvd/logsrvd.c:1202
+#: logsrvd/logsrvd.c:1274
#, c-format
msgid "unable to create TLS context: %s"
msgstr "Не могу да створим ТЛС контекст: %s"
-#: logsrvd/logsrvd.c:1209 plugins/sudoers/iolog_client.c:237
+#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "не могу да учитам уверење „%s“"
-#: logsrvd/logsrvd.c:1222 plugins/sudoers/iolog_client.c:217
+#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "не могу да учитам комплет ауторитета уверења „%s“"
-#: logsrvd/logsrvd.c:1267 plugins/sudoers/iolog_client.c:250
+#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "не могу да учитам лични кључ „%s“"
-#: logsrvd/logsrvd.c:1284 logsrvd/logsrvd.c:1293
+#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "не могу да подесим „diffie-hellman“ параметре: %s"
-#: logsrvd/logsrvd.c:1306
+#: logsrvd/logsrvd.c:1378
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "не могу да подесим најмање издање протокола на „TLS 1.2“: %s"
-#: logsrvd/logsrvd.c:1491
+#: logsrvd/logsrvd.c:1563
msgid "unable to get remote IP addr"
msgstr "не могу да добавим удаљену ИП адресу"
-#: logsrvd/logsrvd.c:1519 plugins/sudoers/iolog_client.c:264
+#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "Не могу да прикачим податке корисника ссл објекту: %s"
-#: logsrvd/logsrvd.c:1527 logsrvd/logsrvd.c:1649 logsrvd/logsrvd.c:1749
-#: logsrvd/sendlog.c:1106 logsrvd/sendlog.c:1462 logsrvd/sendlog.c:1477
-#: logsrvd/sendlog.c:1535 plugins/sudoers/iolog.c:921
-#: plugins/sudoers/iolog.c:1054 plugins/sudoers/iolog.c:1152
-#: plugins/sudoers/iolog_client.c:109 plugins/sudoers/iolog_client.c:325
-#: plugins/sudoers/iolog_client.c:341 plugins/sudoers/iolog_client.c:387
-#: plugins/sudoers/iolog_client.c:567 plugins/sudoers/iolog_client.c:574
-#: plugins/sudoers/iolog_client.c:1150 plugins/sudoers/iolog_client.c:1186
-#: plugins/sudoers/iolog_client.c:1194 plugins/sudoers/iolog_client.c:1254
-#: plugins/sudoers/iolog_client.c:1361 plugins/sudoers/iolog_client.c:1477
-#: plugins/sudoers/iolog_client.c:1759 plugins/sudoers/iolog_client.c:1767
-#: plugins/sudoers/sudoreplay.c:513 plugins/sudoers/sudoreplay.c:560
-#: plugins/sudoers/sudoreplay.c:792 plugins/sudoers/sudoreplay.c:904
-#: plugins/sudoers/sudoreplay.c:994 plugins/sudoers/sudoreplay.c:1009
-#: plugins/sudoers/sudoreplay.c:1016 plugins/sudoers/sudoreplay.c:1023
-#: plugins/sudoers/sudoreplay.c:1030 plugins/sudoers/sudoreplay.c:1037
-#: plugins/sudoers/sudoreplay.c:1164
+#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
+#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
+#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
+#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
+#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
+#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
+#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
+#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
+#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
+#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
+#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
+#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022
+#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036
+#: plugins/sudoers/sudoreplay.c:1163
msgid "unable to add event to queue"
msgstr "не могу да додам догађај у ред"
-#: logsrvd/logsrvd.c:1703 logsrvd/logsrvd.c:1937
+#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
msgid "unable setup listen socket"
msgstr "не могу да подесим прикључницу ослушкивања"
-#: logsrvd/logsrvd.c:1843 logsrvd/sendlog.c:123
+#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
#, c-format
msgid ""
"%s - send sudo I/O log to remote server\n"
"%s – шаље У/И дневник судоа удаљеном серверу\n"
"\n"
-#: logsrvd/logsrvd.c:1846
+#: logsrvd/logsrvd.c:1920
msgid ""
"\n"
"Options:\n"
" -R, --random-drop процентуалне шансе везе ће одбацити\n"
" -V, --version приказује податке о издању и излази\n"
-#: logsrvd/logsrvd.c:1898 logsrvd/sendlog.c:1700
+#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Потребно је „Protobuf-C“ издање 1.3 или новије"
-#: logsrvd/logsrvd.c:1916
+#: logsrvd/logsrvd.c:1990
#, c-format
msgid "invalid random drop value: %s"
msgstr "неисправна вредност одбацивања насумичности: %s"
-#: logsrvd/logsrvd.c:1920 logsrvd/sendlog.c:1750
-#: plugins/sudoers/cvtsudoers.c:229 plugins/sudoers/sudoreplay.c:300
-#: plugins/sudoers/visudo.c:178
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
+#: plugins/sudoers/visudo.c:177
#, c-format
msgid "%s version %s\n"
msgstr "%s издање %s\n"
-#: logsrvd/logsrvd_conf.c:393
+#: logsrvd/logsrvd_conf.c:331
msgid "TLS not supported"
msgstr "ТЛС није подржано"
-#: logsrvd/logsrvd_conf.c:405
+#: logsrvd/logsrvd_conf.c:343
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:471 logsrvd/logsrvd_conf.c:715
+#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: није потпуно квалификована путања"
-#: logsrvd/logsrvd_conf.c:829
+#: logsrvd/logsrvd_conf.c:767
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "„%s:%d“ непоклопљена [: %s"
-#: logsrvd/logsrvd_conf.c:840
+#: logsrvd/logsrvd_conf.c:778
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "„%s:%d“ неисправан одељак подешавања: %s"
-#: logsrvd/logsrvd_conf.c:848
+#: logsrvd/logsrvd_conf.c:786
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "„%s:%d“ неисправан ред подешавања: %s"
-#: logsrvd/logsrvd_conf.c:854
+#: logsrvd/logsrvd_conf.c:792
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "„%s:%d“ очекиван је назив одељка: %s"
-#: logsrvd/logsrvd_conf.c:868
+#: logsrvd/logsrvd_conf.c:806
#, c-format
msgid "invalid value for %s: %s"
msgstr "неисправна вредност за „%s“: %s"
-#: logsrvd/logsrvd_conf.c:876
+#: logsrvd/logsrvd_conf.c:814
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "„%s:%d“ непознат кључ: %s"
-#: logsrvd/logsrvd_conf.c:1032
+#: logsrvd/logsrvd_conf.c:1003
#, c-format
msgid "unknown syslog facility %s"
msgstr "непознато постројење системског дневика „%s“"
-#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1040
-#: logsrvd/logsrvd_conf.c:1044
+#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
+#: logsrvd/logsrvd_conf.c:1015
#, c-format
msgid "unknown syslog priority %s"
msgstr "непознат приоритет системског дневика „%s“"
-#: logsrvd/sendlog.c:126
+#: logsrvd/sendlog.c:127
msgid ""
"\n"
"Options:\n"
" -t, --test проверава сервер испитивања шаљући изабрани У/И дневник n пута у паралели\n"
" -V, --version приказује податке о издању и излази\n"
-#: logsrvd/sendlog.c:163 plugins/sudoers/iolog_client.c:433
+#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "не могу да потражим „%s:%s“: %s"
-#: logsrvd/sendlog.c:186
+#: logsrvd/sendlog.c:202
msgid "unable to get server IP addr"
msgstr "не могу да добавим ИП адресу сервера"
-#: logsrvd/sendlog.c:240 plugins/sudoers/sudoreplay.c:852
+#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "не могу да прочитам „%s/%s“: %s"
-#: logsrvd/sendlog.c:261 plugins/sudoers/iolog_client.c:684
+#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
#, c-format
msgid "client message too large: %zu"
msgstr "порука клијента је превелика: %zu"
-#: logsrvd/sendlog.c:791
+#: logsrvd/sendlog.c:810
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: међумеморија писања је већ у употреби"
-#: logsrvd/sendlog.c:843 plugins/sudoers/iolog.c:845
-#: plugins/sudoers/iolog.c:914
+#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
+#: plugins/sudoers/iolog.c:949
#, c-format
msgid "unexpected I/O event %d"
msgstr "неочекивани У/И догађај „%d“"
-#: logsrvd/sendlog.c:889 logsrvd/sendlog.c:906 logsrvd/sendlog.c:940
-#: plugins/sudoers/iolog_client.c:1155 plugins/sudoers/iolog_client.c:1225
-#: plugins/sudoers/iolog_client.c:1273
+#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
+#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
+#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: неочекивано стање „%d“"
-#: logsrvd/sendlog.c:912 plugins/sudoers/iolog_client.c:1231
+#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
msgid "invalid ServerHello"
msgstr "неисправан „Поздрав_сервера“"
-#: logsrvd/sendlog.c:976 plugins/sudoers/iolog_client.c:1317
+#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
#, c-format
msgid "error message received from server: %s"
msgstr "порука грешке је примљена са сервера: %s"
-#: logsrvd/sendlog.c:989 plugins/sudoers/iolog_client.c:1330
+#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
#, c-format
msgid "abort message received from server: %s"
msgstr "порука прекида је примљена са сервера: %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/iolog_client.c:1349
+#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
msgid "unable to unpack ServerMessage"
msgstr "не могу да отпакујем „Поруку_сервера“"
-#: logsrvd/sendlog.c:1048 plugins/sudoers/iolog_client.c:1382
+#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: неочекивана вредност врсте_слова „%d“"
-#: logsrvd/sendlog.c:1077
+#: logsrvd/sendlog.c:1096
msgid "timeout reading from server"
msgstr "истекло је време читања са сервера"
-#: logsrvd/sendlog.c:1155
+#: logsrvd/sendlog.c:1174
msgid "premature EOF"
msgstr "прерани крај датотеке"
-#: logsrvd/sendlog.c:1168 plugins/sudoers/iolog_client.c:1536
+#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
#, c-format
msgid "server message too large: %u"
msgstr "порука сервера је превелика: %u"
-#: logsrvd/sendlog.c:1219
+#: logsrvd/sendlog.c:1238
msgid "timeout writing to server"
msgstr "истекло је време писања на сервер"
-#: logsrvd/sendlog.c:1438 plugins/sudoers/iolog_client.c:297
+#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "дошло је до временског истека ТЛС руковања"
-#: logsrvd/sendlog.c:1457 logsrvd/sendlog.c:1472
-#: plugins/sudoers/iolog_client.c:319 plugins/sudoers/iolog_client.c:335
+#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "не могу да подесим догађај"
-#: logsrvd/sendlog.c:1482 logsrvd/sendlog.c:1486
+#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
#, c-format
msgid "TLS connection failed: %s"
msgstr "ТЛС веза није успела: %s"
-#: logsrvd/sendlog.c:1519
+#: logsrvd/sendlog.c:1538
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "Не могу да покренем ссл контекст: %s"
-#: logsrvd/sendlog.c:1524 plugins/sudoers/iolog_client.c:259
+#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "Не могу да доделим ссл објекат: %s"
-#: logsrvd/sendlog.c:1529
+#: logsrvd/sendlog.c:1548
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "Не могу да прикачим прикључницу ссл објекту: %s"
-#: logsrvd/sendlog.c:1773
+#: logsrvd/sendlog.c:1792
msgid "both restart point and iolog ID must be specified"
msgstr "мора бити наведена и тачка поновног покретања и ИБ уи_дневника"
-#: logsrvd/sendlog.c:1777
+#: logsrvd/sendlog.c:1796
msgid "a restart point may not be set when no I/O is sent"
msgstr "тачка поновног покретања се не може подесити када није послат У/И"
-#: logsrvd/sendlog.c:1852
+#: logsrvd/sendlog.c:1871
#, c-format
msgid "exited prematurely with state %d"
msgstr "изађох прерано са стањем „%d“"
-#: logsrvd/sendlog.c:1853
+#: logsrvd/sendlog.c:1872
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "протекло време послато серверу [%lld, %ld]"
-#: logsrvd/sendlog.c:1855
+#: logsrvd/sendlog.c:1874
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "тачка слања примљена са сервера [%lld, %ld]"
-#: plugins/sudoers/alias.c:144
+#: plugins/sudoers/alias.c:148
#, c-format
msgid "Alias \"%s\" already defined"
msgstr "Псеудоним „%s“ је већ одређен"
-#: plugins/sudoers/auth/aix_auth.c:198 plugins/sudoers/logging.c:784
-msgid "unable to fork"
-msgstr "не могу да исцепим"
+#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
+#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
+#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+msgid "unable to get time of day"
+msgstr "не могу да добавим време дана"
-#: plugins/sudoers/auth/aix_auth.c:278
+#: plugins/sudoers/auth/aix_auth.c:277
#, c-format
msgid "unable to change password for %s"
msgstr "не могу да изменим лозинку за „%s“"
msgid "unable to initialize BSD authentication"
msgstr "не могу да покренем БСД потврђивање идентитета"
-#: plugins/sudoers/auth/bsdauth.c:180
+#: plugins/sudoers/auth/bsdauth.c:179
msgid "your account has expired"
msgstr "ваш налог је истекао"
-#: plugins/sudoers/auth/bsdauth.c:182
+#: plugins/sudoers/auth/bsdauth.c:181
msgid "approval failed"
msgstr "доказивање није успело"
msgid "PAM account management error: %s"
msgstr "грешка управљања ПАМ налогом: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:242
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
#, c-format
msgid "you do not exist in the %s database"
msgstr "ви не постојите у бази подтака „%s“"
msgid "SecurID communication failed"
msgstr "Није успело комуницирање безбедног ИБ-а"
-#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:212
+#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:210
msgid "unknown SecurID error"
msgstr "непозната грешка безбедног ИБ-а"
msgid "invalid passcode length for SecurID"
msgstr "неисправна дужина пропусне шифре за безбедни ИБ"
-#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:124
+#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:123
msgid "unable to initialize SIA session"
msgstr "не могу да покренем СИА сесију"
msgid "Unable to initialize authentication methods."
msgstr "Не могу да покренем методе потврђивања идентитета."
-#: plugins/sudoers/auth/sudo_auth.c:473
+#: plugins/sudoers/auth/sudo_auth.c:471
msgid "Authentication methods:"
msgstr "Начини потврђивања идентитета:"
"\n"
#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:763 plugins/sudoers/sudoers.c:811
+#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "непознат јиб: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/iolog.c:117
-#: plugins/sudoers/policy.c:1037 plugins/sudoers/sudoers.c:387
-#: plugins/sudoers/sudoers.c:388 plugins/sudoers/sudoers.c:1240
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:392
+#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
+#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
+#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
#, c-format
msgid "unknown user: %s"
msgstr "непознат корисник: %s"
-#: plugins/sudoers/cvtsudoers.c:195
+#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
msgstr "повећање поретка: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:211
+#: plugins/sudoers/cvtsudoers.c:210
#, c-format
msgid "starting order: %s: %s"
msgstr "поредак почетка: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:221
+#: plugins/sudoers/cvtsudoers.c:220
#, c-format
msgid "order padding: %s: %s"
msgstr "попуњавање поретка: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:231 plugins/sudoers/visudo.c:180
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
#, c-format
msgid "%s grammar version %d\n"
msgstr "%s граматика издање %d\n"
-#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/testsudoers.c:167
+#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/testsudoers.c:167
#, c-format
msgid "unsupported input format %s"
msgstr "неподржан запис улаза „%s“"
-#: plugins/sudoers/cvtsudoers.c:263
+#: plugins/sudoers/cvtsudoers.c:262
#, c-format
msgid "unsupported output format %s"
msgstr "неподржан запис излаза „%s“"
-#: plugins/sudoers/cvtsudoers.c:315
+#: plugins/sudoers/cvtsudoers.c:314
#, c-format
msgid "%s: input and output files must be different"
msgstr "%s: улазна датотека треба да се разликује од излазне"
-#: plugins/sudoers/cvtsudoers.c:331 plugins/sudoers/sudoers.c:181
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:248
-#: plugins/sudoers/visudo.c:604 plugins/sudoers/visudo.c:927
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
+#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
+#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
msgid "unable to initialize sudoers default values"
msgstr "не могу да покренем основне вредности судоерса"
-#: plugins/sudoers/cvtsudoers.c:417 plugins/sudoers/ldap_conf.c:431
+#: plugins/sudoers/cvtsudoers.c:416 plugins/sudoers/ldap_conf.c:431
#, c-format
msgid "%s: %s: %s: %s"
msgstr "%s: %s: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:476
+#: plugins/sudoers/cvtsudoers.c:475
#, c-format
msgid "%s: unknown key word: %s"
msgstr "%s: непозната реч кључа: %s"
-#: plugins/sudoers/cvtsudoers.c:522
+#: plugins/sudoers/cvtsudoers.c:521
#, c-format
msgid "invalid defaults type: %s"
msgstr "неисправна врста основности: %s"
-#: plugins/sudoers/cvtsudoers.c:545
+#: plugins/sudoers/cvtsudoers.c:544
#, c-format
msgid "invalid suppression type: %s"
msgstr "неисправна врста потискивања: %s"
-#: plugins/sudoers/cvtsudoers.c:585 plugins/sudoers/cvtsudoers.c:599
+#: plugins/sudoers/cvtsudoers.c:584 plugins/sudoers/cvtsudoers.c:598
#, c-format
msgid "invalid filter: %s"
msgstr "неисправан филтер: %s"
-#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:635
-#: plugins/sudoers/cvtsudoers.c:1245 plugins/sudoers/cvtsudoers_json.c:861
-#: plugins/sudoers/cvtsudoers_ldif.c:680 plugins/sudoers/sudoers.c:986
-#: plugins/sudoers/sudoreplay.c:1436 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:923
+#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
+#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
+#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
+#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
+#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
#, c-format
msgid "unable to open %s"
msgstr "не могу да отворим „%s“"
-#: plugins/sudoers/cvtsudoers.c:638 plugins/sudoers/visudo.c:932
+#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "нисам успео да обрадим %s датотеку, непозната грешка"
-#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/visudo.c:949
+#: plugins/sudoers/cvtsudoers.c:645
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "грешка обраде у %s близу реда %d\n"
-#: plugins/sudoers/cvtsudoers.c:649 plugins/sudoers/visudo.c:952
+#: plugins/sudoers/cvtsudoers.c:648
#, c-format
msgid "parse error in %s\n"
msgstr "грешка обраде у %s\n"
-#: plugins/sudoers/cvtsudoers.c:1292 plugins/sudoers/sudoreplay.c:1125
+#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
#, c-format
msgid "unable to write to %s"
msgstr "не могу да пишем у „%s“"
-#: plugins/sudoers/cvtsudoers.c:1315
+#: plugins/sudoers/cvtsudoers.c:1314
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
"%s – претвара међусобно записе датотеке судоерса\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1317
+#: plugins/sudoers/cvtsudoers.c:1316
msgid ""
"\n"
"Options:\n"
" -V, --version приказује податке о издању и излази"
#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514
-#: plugins/sudoers/cvtsudoers_json.c:702
+#: plugins/sudoers/cvtsudoers_json.c:713
#, c-format
msgid "unknown defaults entry \"%s\""
msgstr "непознат унос основности „%s“"
-#: plugins/sudoers/cvtsudoers_json.c:640 plugins/sudoers/cvtsudoers_json.c:653
-#: plugins/sudoers/cvtsudoers_ldif.c:345 plugins/sudoers/cvtsudoers_ldif.c:356
-#: plugins/sudoers/ldap.c:502
+#: plugins/sudoers/cvtsudoers_json.c:651 plugins/sudoers/cvtsudoers_json.c:664
+#: plugins/sudoers/cvtsudoers_ldif.c:346 plugins/sudoers/cvtsudoers_ldif.c:357
+#: plugins/sudoers/ldap.c:503
msgid "unable to get GMT time"
msgstr "не могу да добавим ГМТ време"
-#: plugins/sudoers/cvtsudoers_json.c:643 plugins/sudoers/cvtsudoers_json.c:656
-#: plugins/sudoers/cvtsudoers_ldif.c:348 plugins/sudoers/cvtsudoers_ldif.c:359
-#: plugins/sudoers/ldap.c:508
+#: plugins/sudoers/cvtsudoers_json.c:654 plugins/sudoers/cvtsudoers_json.c:667
+#: plugins/sudoers/cvtsudoers_ldif.c:349 plugins/sudoers/cvtsudoers_ldif.c:360
+#: plugins/sudoers/ldap.c:509
msgid "unable to format timestamp"
msgstr "не могу да обликујем временску ознаку"
-#: plugins/sudoers/cvtsudoers_ldif.c:632
+#: plugins/sudoers/cvtsudoers_ldif.c:640
#, c-format
msgid "too many sudoers entries, maximum %u"
msgstr "превише уноса судоерса, највише %u"
-#: plugins/sudoers/cvtsudoers_ldif.c:675
+#: plugins/sudoers/cvtsudoers_ldif.c:683
msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified."
msgstr "променљива „SUDOERS_BASE“ окружења није постављена и „-b“ опција није наведена."
-#: plugins/sudoers/def_data.c:42
+#: plugins/sudoers/def_data.c:50
#, c-format
msgid "Syslog facility if syslog is being used for logging: %s"
msgstr "Помоћник сисдневника ако је сисдневник коришћен за пријављивање: %s"
-#: plugins/sudoers/def_data.c:46
+#: plugins/sudoers/def_data.c:54
#, c-format
msgid "Syslog priority to use when user authenticates successfully: %s"
msgstr "Приоритет системског дневника за коришћење када корисник успешно потврди идентитет: %s"
-#: plugins/sudoers/def_data.c:50
+#: plugins/sudoers/def_data.c:58
#, c-format
msgid "Syslog priority to use when user authenticates unsuccessfully: %s"
msgstr "Приоритет системског дневника за коришћење када корисник неуспешно потврди идентитет: %s"
-#: plugins/sudoers/def_data.c:54
+#: plugins/sudoers/def_data.c:62
msgid "Put OTP prompt on its own line"
msgstr "Поставља ОТП упит на свом реду"
-#: plugins/sudoers/def_data.c:58
+#: plugins/sudoers/def_data.c:66
msgid "Ignore '.' in $PATH"
msgstr "Занемарује . у $ПУТАЊИ"
-#: plugins/sudoers/def_data.c:62
+#: plugins/sudoers/def_data.c:70
msgid "Always send mail when sudo is run"
msgstr "Увек шаље пошту када је судо покренут"
-#: plugins/sudoers/def_data.c:66
+#: plugins/sudoers/def_data.c:74
msgid "Send mail if user authentication fails"
msgstr "Пошаљи поруку ако потврђивање идентитета корисника не успе"
-#: plugins/sudoers/def_data.c:70
+#: plugins/sudoers/def_data.c:78
msgid "Send mail if the user is not in sudoers"
msgstr "Пошаљи поруку ако корисник није у судоерсу"
-#: plugins/sudoers/def_data.c:74
+#: plugins/sudoers/def_data.c:82
msgid "Send mail if the user is not in sudoers for this host"
msgstr "Пошаљи поруку ако корисник није у судоерсу за овог домаћина"
-#: plugins/sudoers/def_data.c:78
+#: plugins/sudoers/def_data.c:86
msgid "Send mail if the user is not allowed to run a command"
msgstr "Пошаљи поруку ако кориснику није дозвољено да покрене наредбу"
-#: plugins/sudoers/def_data.c:82
+#: plugins/sudoers/def_data.c:90
msgid "Send mail if the user tries to run a command"
msgstr "Пошаљи поруку ако корисник покуша да покрене наредбу"
-#: plugins/sudoers/def_data.c:86
+#: plugins/sudoers/def_data.c:94
msgid "Use a separate timestamp for each user/tty combo"
msgstr "Користи одвојене временске ознаке за сваку комбинацију корисник/конзола"
-#: plugins/sudoers/def_data.c:90
+#: plugins/sudoers/def_data.c:98
msgid "Lecture user the first time they run sudo"
msgstr "Подучава корисника када први пут покрену судо"
-#: plugins/sudoers/def_data.c:94
+#: plugins/sudoers/def_data.c:102
#, c-format
msgid "File containing the sudo lecture: %s"
msgstr "Датотека садржи судо обучавања: %s"
-#: plugins/sudoers/def_data.c:98
+#: plugins/sudoers/def_data.c:106
msgid "Require users to authenticate by default"
msgstr "Захтева да корисници потврде идентитет по основи"
-#: plugins/sudoers/def_data.c:102
+#: plugins/sudoers/def_data.c:110
msgid "Root may run sudo"
msgstr "Администратор може да покрене судо"
-#: plugins/sudoers/def_data.c:106
+#: plugins/sudoers/def_data.c:114
msgid "Log the hostname in the (non-syslog) log file"
msgstr "Бележи назив домаћина у (не-сисдневник) датотеци дневника"
-#: plugins/sudoers/def_data.c:110
+#: plugins/sudoers/def_data.c:118
msgid "Log the year in the (non-syslog) log file"
msgstr "Бележи годину у (не-сисдневник) датотеци дневника"
-#: plugins/sudoers/def_data.c:114
+#: plugins/sudoers/def_data.c:122
msgid "If sudo is invoked with no arguments, start a shell"
msgstr "Ако је судо призван без аргумената, покреће шкољку"
-#: plugins/sudoers/def_data.c:118
+#: plugins/sudoers/def_data.c:126
msgid "Set $HOME to the target user when starting a shell with -s"
msgstr "Подешава $HOME на крајњег корисника када покреће шкољку са „-s“"
-#: plugins/sudoers/def_data.c:122
+#: plugins/sudoers/def_data.c:130
msgid "Always set $HOME to the target user's home directory"
msgstr "Увек подешава $HOME на циљни лични директоријум корисника"
-#: plugins/sudoers/def_data.c:126
+#: plugins/sudoers/def_data.c:134
msgid "Allow some information gathering to give useful error messages"
msgstr "Дозвољава прикупљање неких података да би дао корисне поруке грешака"
-#: plugins/sudoers/def_data.c:130
+#: plugins/sudoers/def_data.c:138
msgid "Require fully-qualified hostnames in the sudoers file"
msgstr "Захтева потпуно одређене називе домаћина у датотеци судоерса"
-#: plugins/sudoers/def_data.c:134
+#: plugins/sudoers/def_data.c:142
msgid "Insult the user when they enter an incorrect password"
msgstr "Вређа корисника када унесе нетачну лозинку"
-#: plugins/sudoers/def_data.c:138
+#: plugins/sudoers/def_data.c:146
msgid "Only allow the user to run sudo if they have a tty"
msgstr "Дозвољава кориснику да покрене судо само ако има конзолу"
-#: plugins/sudoers/def_data.c:142
+#: plugins/sudoers/def_data.c:150
msgid "Visudo will honor the EDITOR environment variable"
msgstr "Висудо ће поштовати променљиву окружења УРЕЂИВАЧА"
-#: plugins/sudoers/def_data.c:146
+#: plugins/sudoers/def_data.c:154
msgid "Prompt for root's password, not the users's"
msgstr "Тражи администраторову лозинку, а не корисника"
-#: plugins/sudoers/def_data.c:150
+#: plugins/sudoers/def_data.c:158
msgid "Prompt for the runas_default user's password, not the users's"
msgstr "Тражи корисникову лозинку покреникао_основни, а не корисника"
-#: plugins/sudoers/def_data.c:154
+#: plugins/sudoers/def_data.c:162
msgid "Prompt for the target user's password, not the users's"
msgstr "Тражи корисникову лозинку мете, а не корисника"
-#: plugins/sudoers/def_data.c:158
+#: plugins/sudoers/def_data.c:166
msgid "Apply defaults in the target user's login class if there is one"
msgstr "Примењује основности у циљни кориснички разред пријављивања ако постоји"
-#: plugins/sudoers/def_data.c:162
+#: plugins/sudoers/def_data.c:170
msgid "Set the LOGNAME and USER environment variables"
msgstr "Подешава променљиве окружења НАЗИВДНЕВНИКА и КОРИСНИК"
-#: plugins/sudoers/def_data.c:166
+#: plugins/sudoers/def_data.c:174
msgid "Only set the effective uid to the target user, not the real uid"
msgstr "Подешава само ефективни јиб на крајњег корисника, а не стваран јиб"
-#: plugins/sudoers/def_data.c:170
+#: plugins/sudoers/def_data.c:178
msgid "Don't initialize the group vector to that of the target user"
msgstr "Не покреће вектор групе ка оном крајњег корисника"
-#: plugins/sudoers/def_data.c:174
+#: plugins/sudoers/def_data.c:182
#, c-format
msgid "Length at which to wrap log file lines (0 for no wrap): %u"
msgstr "Дужина за преламање редова у датотеци дневника (0 — без преламања): %u"
-#: plugins/sudoers/def_data.c:178
+#: plugins/sudoers/def_data.c:186
#, c-format
msgid "Authentication timestamp timeout: %.1f minutes"
msgstr "Време истека временске ознаке потврђивања идентитета: %.1f минута"
-#: plugins/sudoers/def_data.c:182
+#: plugins/sudoers/def_data.c:190
#, c-format
msgid "Password prompt timeout: %.1f minutes"
msgstr "Време истека упита лозинке: %.1f минута"
-#: plugins/sudoers/def_data.c:186
+#: plugins/sudoers/def_data.c:194
#, c-format
msgid "Number of tries to enter a password: %u"
msgstr "Број покушаја за уношење лозинке: %u"
-#: plugins/sudoers/def_data.c:190
+#: plugins/sudoers/def_data.c:198
#, c-format
msgid "Umask to use or 0777 to use user's: 0%o"
msgstr "Умаска за коришћење или 0777 за коришћење корисника: 0%o"
-#: plugins/sudoers/def_data.c:194
+#: plugins/sudoers/def_data.c:202
#, c-format
msgid "Path to log file: %s"
msgstr "Путања до датотеке дневника: %s"
-#: plugins/sudoers/def_data.c:198
+#: plugins/sudoers/def_data.c:206
#, c-format
msgid "Path to mail program: %s"
msgstr "Путања до програма поште: %s"
-#: plugins/sudoers/def_data.c:202
+#: plugins/sudoers/def_data.c:210
#, c-format
msgid "Flags for mail program: %s"
msgstr "Опције за програм поште: %s"
-#: plugins/sudoers/def_data.c:206
+#: plugins/sudoers/def_data.c:214
#, c-format
msgid "Address to send mail to: %s"
msgstr "Адреса на коју послати поруку: %s"
-#: plugins/sudoers/def_data.c:210
+#: plugins/sudoers/def_data.c:218
#, c-format
msgid "Address to send mail from: %s"
msgstr "Адреса са које послати поруку: %s"
-#: plugins/sudoers/def_data.c:214
+#: plugins/sudoers/def_data.c:222
#, c-format
msgid "Subject line for mail messages: %s"
msgstr "Ред теме за поруке поште: %s"
-#: plugins/sudoers/def_data.c:218
+#: plugins/sudoers/def_data.c:226
#, c-format
msgid "Incorrect password message: %s"
msgstr "Порука нетачне лозинке: %s"
-#: plugins/sudoers/def_data.c:222
+#: plugins/sudoers/def_data.c:230
#, c-format
msgid "Path to lecture status dir: %s"
msgstr "Путања до директоријума стања обучавања: %s"
-#: plugins/sudoers/def_data.c:226
+#: plugins/sudoers/def_data.c:234
#, c-format
msgid "Path to authentication timestamp dir: %s"
msgstr "Путања до директоријума временске ознаке потврђивања идентитета: %s"
-#: plugins/sudoers/def_data.c:230
+#: plugins/sudoers/def_data.c:238
#, c-format
msgid "Owner of the authentication timestamp dir: %s"
msgstr "Власник директоријума временске ознаке потврђивања идентитета: %s"
-#: plugins/sudoers/def_data.c:234
+#: plugins/sudoers/def_data.c:242
#, c-format
msgid "Users in this group are exempt from password and PATH requirements: %s"
msgstr "Корисницима у овој групи се не захтева лозинка и ПУТАЊА: %s"
-#: plugins/sudoers/def_data.c:238
+#: plugins/sudoers/def_data.c:246
#, c-format
msgid "Default password prompt: %s"
msgstr "Основни упит лозинке: %s"
-#: plugins/sudoers/def_data.c:242
+#: plugins/sudoers/def_data.c:250
msgid "If set, passprompt will override system prompt in all cases."
msgstr "Ако је подешено, упит лозинке ће преписати системски упит у свим случајевима."
-#: plugins/sudoers/def_data.c:246
+#: plugins/sudoers/def_data.c:254
#, c-format
msgid "Default user to run commands as: %s"
msgstr "Основни корисник за покретање наредби као: %s"
-#: plugins/sudoers/def_data.c:250
+#: plugins/sudoers/def_data.c:258
#, c-format
msgid "Value to override user's $PATH with: %s"
msgstr "Вредност за преписивање корисничке $ПУТАЊЕ са: %s"
-#: plugins/sudoers/def_data.c:254
+#: plugins/sudoers/def_data.c:262
#, c-format
msgid "Path to the editor for use by visudo: %s"
msgstr "Путања до уређивача кога ће да користи висудо: %s"
-#: plugins/sudoers/def_data.c:258
+#: plugins/sudoers/def_data.c:266
#, c-format
msgid "When to require a password for 'list' pseudocommand: %s"
msgstr "Када да затражи лозинку за псеудонаредбу „list“: %s"
-#: plugins/sudoers/def_data.c:262
+#: plugins/sudoers/def_data.c:270
#, c-format
msgid "When to require a password for 'verify' pseudocommand: %s"
msgstr "Када да затражи лозинку за псеудонаредбу „verify“: %s"
-#: plugins/sudoers/def_data.c:266
-msgid "Preload the dummy exec functions contained in the sudo_noexec library"
-msgstr "Унапред учитава лажне функције извршавања које се налазе у библиотеци „sudo_noexec“"
+#: plugins/sudoers/def_data.c:274
+msgid "Preload the sudo_noexec library which replaces the exec functions"
+msgstr "Унапред учитава „sudo_noexec“ библиотеку која мења функцију извршавања"
-#: plugins/sudoers/def_data.c:270
+#: plugins/sudoers/def_data.c:278
msgid "If LDAP directory is up, do we ignore local sudoers file"
msgstr "Ако је ЛДАП директоријум изнет, да ли занемарујемо месну датотеку судоерса"
-#: plugins/sudoers/def_data.c:274
+#: plugins/sudoers/def_data.c:282
#, c-format
msgid "File descriptors >= %d will be closed before executing a command"
msgstr "Описници датотека >= %d ће бити затворени пре извршавања наредбе"
-#: plugins/sudoers/def_data.c:278
+#: plugins/sudoers/def_data.c:286
msgid "If set, users may override the value of \"closefrom\" with the -C option"
msgstr "Ако је подешено, корисници могу да препишу вредност „closefrom“ са опцијом „-C“"
-#: plugins/sudoers/def_data.c:282
+#: plugins/sudoers/def_data.c:290
msgid "Allow users to set arbitrary environment variables"
msgstr "Дозвољава корисницима да подесе произвољне променљиве окружења"
-#: plugins/sudoers/def_data.c:286
+#: plugins/sudoers/def_data.c:294
msgid "Reset the environment to a default set of variables"
msgstr "Враћа окружење на основни скуп променљивих"
-#: plugins/sudoers/def_data.c:290
-msgid "Environment variables to check for sanity:"
+#: plugins/sudoers/def_data.c:298
+msgid "Environment variables to check for safety:"
msgstr "Променљиве окружења за проверу исправности:"
-#: plugins/sudoers/def_data.c:294
+#: plugins/sudoers/def_data.c:302
msgid "Environment variables to remove:"
msgstr "Променљиве окружења за уклањање:"
-#: plugins/sudoers/def_data.c:298
+#: plugins/sudoers/def_data.c:306
msgid "Environment variables to preserve:"
msgstr "Променљиве окружења за очување:"
-#: plugins/sudoers/def_data.c:302
+#: plugins/sudoers/def_data.c:310
#, c-format
msgid "SELinux role to use in the new security context: %s"
msgstr "СЕЛинукс улога за употребу у новом контексту безбедности: %s"
-#: plugins/sudoers/def_data.c:306
+#: plugins/sudoers/def_data.c:314
#, c-format
msgid "SELinux type to use in the new security context: %s"
msgstr "СЕЛинукс врста за употребу у новом контексту безбедности: %s"
-#: plugins/sudoers/def_data.c:310
+#: plugins/sudoers/def_data.c:318
#, c-format
msgid "Path to the sudo-specific environment file: %s"
msgstr "Путања до судо-посебне датотеке окружења: %s"
-#: plugins/sudoers/def_data.c:314
+#: plugins/sudoers/def_data.c:322
#, c-format
msgid "Path to the restricted sudo-specific environment file: %s"
msgstr "Путања до ограничене судо-посебне датотеке окружења: %s"
-#: plugins/sudoers/def_data.c:318
+#: plugins/sudoers/def_data.c:326
#, c-format
msgid "Locale to use while parsing sudoers: %s"
msgstr "Језк за коришћење при обради судоерса: %s"
-#: plugins/sudoers/def_data.c:322
+#: plugins/sudoers/def_data.c:330
msgid "Allow sudo to prompt for a password even if it would be visible"
msgstr "Дозвољава да судо тражи лозинку чак и ако би била видљива"
-#: plugins/sudoers/def_data.c:326
+#: plugins/sudoers/def_data.c:334
msgid "Provide visual feedback at the password prompt when there is user input"
msgstr "Обезбеђује видну повратну поруку при тражењу лозинке када постоји унос корисника"
-#: plugins/sudoers/def_data.c:330
+#: plugins/sudoers/def_data.c:338
msgid "Use faster globbing that is less accurate but does not access the filesystem"
msgstr "Користи брже упоређивање које је мање тачно али не приступа систему датотека"
-#: plugins/sudoers/def_data.c:334
+#: plugins/sudoers/def_data.c:342
msgid "The umask specified in sudoers will override the user's, even if it is more permissive"
msgstr "Умаска наведена у судоерсима ће преписати корисникову, чак и ако има већа овлашћења"
-#: plugins/sudoers/def_data.c:338
+#: plugins/sudoers/def_data.c:346
msgid "Log user's input for the command being run"
msgstr "Бележи корисников улаз за покренуту наредбу"
-#: plugins/sudoers/def_data.c:342
+#: plugins/sudoers/def_data.c:350
msgid "Log the output of the command being run"
msgstr "Бележи излаз покренуте наредбе"
-#: plugins/sudoers/def_data.c:346
+#: plugins/sudoers/def_data.c:354
msgid "Compress I/O logs using zlib"
msgstr "Пакује У/И дневнике користећи злиб"
-#: plugins/sudoers/def_data.c:350
+#: plugins/sudoers/def_data.c:358
msgid "Always run commands in a pseudo-tty"
msgstr "Увек покреће наредбе у привидној конзоли"
-#: plugins/sudoers/def_data.c:354
+#: plugins/sudoers/def_data.c:362
#, c-format
msgid "Plugin for non-Unix group support: %s"
msgstr "Прикључак за подршку не-Јуникс групе: %s"
-#: plugins/sudoers/def_data.c:358
+#: plugins/sudoers/def_data.c:366
#, c-format
msgid "Directory in which to store input/output logs: %s"
msgstr "Директоријум за смештај улазних/излазних дневника: %s"
-#: plugins/sudoers/def_data.c:362
+#: plugins/sudoers/def_data.c:370
#, c-format
msgid "File in which to store the input/output log: %s"
msgstr "Датотека за смештај улазно/излазног дневника: %s"
-#: plugins/sudoers/def_data.c:366
+#: plugins/sudoers/def_data.c:374
msgid "Add an entry to the utmp/utmpx file when allocating a pty"
msgstr "Додаје унос у датотеку „utmp/utmpx“ када додељује „pty“"
-#: plugins/sudoers/def_data.c:370
+#: plugins/sudoers/def_data.c:378
msgid "Set the user in utmp to the runas user, not the invoking user"
msgstr "Подешава корисника у „utmp“-у на корисника покрени-као, не призивајући корисника"
-#: plugins/sudoers/def_data.c:374
+#: plugins/sudoers/def_data.c:382
#, c-format
msgid "Set of permitted privileges: %s"
msgstr "Скуп допуштених повластица: %s"
-#: plugins/sudoers/def_data.c:378
+#: plugins/sudoers/def_data.c:386
#, c-format
msgid "Set of limit privileges: %s"
msgstr "Скуп повластица ограничења: %s"
-#: plugins/sudoers/def_data.c:382
+#: plugins/sudoers/def_data.c:390
msgid "Run commands on a pty in the background"
msgstr "Покреће наредбе у позадини на назовитерминалу"
-#: plugins/sudoers/def_data.c:386
+#: plugins/sudoers/def_data.c:394
#, c-format
msgid "PAM service name to use: %s"
msgstr "Назив ПАМ услуге за коришћење: %s"
-#: plugins/sudoers/def_data.c:390
+#: plugins/sudoers/def_data.c:398
#, c-format
msgid "PAM service name to use for login shells: %s"
msgstr "Назив ПАМ услуге за шкољке пријављивања: %s"
-#: plugins/sudoers/def_data.c:394
+#: plugins/sudoers/def_data.c:402
msgid "Attempt to establish PAM credentials for the target user"
msgstr "Покушава да успостави ПАМ пуномоћства за циљног корисника"
-#: plugins/sudoers/def_data.c:398
+#: plugins/sudoers/def_data.c:406
msgid "Create a new PAM session for the command to run in"
msgstr "Прави нову ПАМ сесију за покретање наредбе"
-#: plugins/sudoers/def_data.c:402
+#: plugins/sudoers/def_data.c:410
msgid "Perform PAM account validation management"
msgstr "Обавља управљање провером ПАМ налога"
-#: plugins/sudoers/def_data.c:406
+#: plugins/sudoers/def_data.c:414
#, c-format
msgid "Maximum I/O log sequence number: %s"
msgstr "Највећи број низа У/И дневника: %s"
-#: plugins/sudoers/def_data.c:410
+#: plugins/sudoers/def_data.c:418
msgid "Enable sudoers netgroup support"
msgstr "Укључује подршку нетгрупе судоерса"
-#: plugins/sudoers/def_data.c:414
+#: plugins/sudoers/def_data.c:422
msgid "Check parent directories for writability when editing files with sudoedit"
msgstr "Проверава родитељски директоријум за уписивошћу када уређује датотеке са „sudoedit“"
-#: plugins/sudoers/def_data.c:418
+#: plugins/sudoers/def_data.c:426
msgid "Follow symbolic links when editing files with sudoedit"
msgstr "Прати симболичке везе када уређује датотеке са „sudoedit“"
-#: plugins/sudoers/def_data.c:422
+#: plugins/sudoers/def_data.c:430
msgid "Query the group plugin for unknown system groups"
msgstr "Пропитује прикључак групе за непознатим групама система"
-#: plugins/sudoers/def_data.c:426
+#: plugins/sudoers/def_data.c:434
msgid "Match netgroups based on the entire tuple: user, host and domain"
msgstr "Упоређује мрежне групе на основу читавог слога: корисник, домаћин и домен"
-#: plugins/sudoers/def_data.c:430
+#: plugins/sudoers/def_data.c:438
msgid "Allow commands to be run even if sudo cannot write to the audit log"
msgstr "Допушта покретање наредби чак и ако судо не може да пише у дневник прегледа"
-#: plugins/sudoers/def_data.c:434
+#: plugins/sudoers/def_data.c:442
msgid "Allow commands to be run even if sudo cannot write to the I/O log"
msgstr "Допушта покретање наредби чак и ако судо не може да пише у дневник У/И"
-#: plugins/sudoers/def_data.c:438
+#: plugins/sudoers/def_data.c:446
msgid "Allow commands to be run even if sudo cannot write to the log file"
msgstr "Допушта покретање наредби чак и ако судо не може да пише у датотеку дневника"
-#: plugins/sudoers/def_data.c:442
+#: plugins/sudoers/def_data.c:450
msgid "Resolve groups in sudoers and match on the group ID, not the name"
msgstr "Решава групе у судоерсима и упоређује ИД групе, а не назив"
-#: plugins/sudoers/def_data.c:446
+#: plugins/sudoers/def_data.c:454
#, c-format
msgid "Log entries larger than this value will be split into multiple syslog messages: %u"
msgstr "Уноси дневника већи од ове вредности биће подељени на више порука системског дневника: %u"
-#: plugins/sudoers/def_data.c:450
+#: plugins/sudoers/def_data.c:458
#, c-format
msgid "User that will own the I/O log files: %s"
msgstr "Корисник који ће поседовати датотеке дневника У/И: %s"
-#: plugins/sudoers/def_data.c:454
+#: plugins/sudoers/def_data.c:462
#, c-format
msgid "Group that will own the I/O log files: %s"
msgstr "Група која ће поседовати датотеке дневника У/И: %s"
-#: plugins/sudoers/def_data.c:458
+#: plugins/sudoers/def_data.c:466
#, c-format
msgid "File mode to use for the I/O log files: 0%o"
msgstr "Режим датотеке за коришћење за датотеке дневника У/И: 0%o"
-#: plugins/sudoers/def_data.c:462
+#: plugins/sudoers/def_data.c:470
#, c-format
msgid "Execute commands by file descriptor instead of by path: %s"
msgstr "Извршава наредбе описником датотеке уместо путањом: %s"
-#: plugins/sudoers/def_data.c:466
+#: plugins/sudoers/def_data.c:474
msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning"
msgstr "Занемарује непознате уносе основности у судоерсу уместо да даје упозорење"
-#: plugins/sudoers/def_data.c:470
+#: plugins/sudoers/def_data.c:478
#, c-format
msgid "Time in seconds after which the command will be terminated: %u"
msgstr "Време у секундама након ког ће наредба бити окончана: %u"
-#: plugins/sudoers/def_data.c:474
+#: plugins/sudoers/def_data.c:482
msgid "Allow the user to specify a timeout on the command line"
msgstr "Допушта кориснику да наведе време на линији наредби"
-#: plugins/sudoers/def_data.c:478
+#: plugins/sudoers/def_data.c:486
msgid "Flush I/O log data to disk immediately instead of buffering it"
msgstr "Пребацује У/И податке дневника на диск одмах уместо да га смешта у међумеморију"
-#: plugins/sudoers/def_data.c:482
+#: plugins/sudoers/def_data.c:490
msgid "Include the process ID when logging via syslog"
msgstr "Укључује ИБ процеса приликом пријављивања путем дневника система"
-#: plugins/sudoers/def_data.c:486
+#: plugins/sudoers/def_data.c:494
#, c-format
msgid "Type of authentication timestamp record: %s"
msgstr "Врста временске ознаке потврђивања идентитета: %s"
-#: plugins/sudoers/def_data.c:490
+#: plugins/sudoers/def_data.c:498
#, c-format
msgid "Authentication failure message: %s"
msgstr "Потврђивање идентитета није успело: %s"
-#: plugins/sudoers/def_data.c:494
+#: plugins/sudoers/def_data.c:502
msgid "Ignore case when matching user names"
msgstr "Занемарује величину слова приликом поклапања назива корисника"
-#: plugins/sudoers/def_data.c:498
+#: plugins/sudoers/def_data.c:506
msgid "Ignore case when matching group names"
msgstr "Занемарује величину слова приликом поклапања назива групе"
-#: plugins/sudoers/def_data.c:502
+#: plugins/sudoers/def_data.c:510
msgid "Log when a command is allowed by sudoers"
msgstr "Пише дневник када судоерси дозвољавају наредбу"
-#: plugins/sudoers/def_data.c:506
+#: plugins/sudoers/def_data.c:514
msgid "Log when a command is denied by sudoers"
msgstr "Пише дневник када судоерси не дозвољавају наредбу"
-#: plugins/sudoers/def_data.c:510
+#: plugins/sudoers/def_data.c:518
msgid "Sudo log server(s) to connect to with optional port"
msgstr "Судо сервер(и) дневника за повезивање са изборним прикључником"
-#: plugins/sudoers/def_data.c:514
+#: plugins/sudoers/def_data.c:522
#, c-format
msgid "Sudo log server timeout in seconds: %u"
msgstr "Време истека судо сервера дневника у секундама: %u"
-#: plugins/sudoers/def_data.c:518
+#: plugins/sudoers/def_data.c:526
msgid "Enable SO_KEEPALIVE socket option on the socket connected to the logserver"
msgstr "Укључује „SO_KEEPALIVE“ опцију прикључнице са повезаном прикључницом са сервером дневника"
-#: plugins/sudoers/def_data.c:522
+#: plugins/sudoers/def_data.c:530
#, c-format
msgid "Path to the audit server's CA bundle file: %s"
msgstr "Путања до датотеке групних издавача уверења сервера испитивања: %s"
-#: plugins/sudoers/def_data.c:526
+#: plugins/sudoers/def_data.c:534
#, c-format
msgid "Path to the sudoers certificate file: %s"
msgstr "Путања до датотеке уверења судоерса: %s"
-#: plugins/sudoers/def_data.c:530
+#: plugins/sudoers/def_data.c:538
#, c-format
msgid "Path to the sudoers private key file: %s"
msgstr "Путања до датотеке датотеке личног кључа судоерса: %s"
-#: plugins/sudoers/def_data.c:534
+#: plugins/sudoers/def_data.c:542
msgid "Verify that the log server's certificate is valid"
msgstr "Потврђује да је исправно уверење дневника сервера"
-#: plugins/sudoers/def_data.c:538
+#: plugins/sudoers/def_data.c:546
msgid "Allow the use of unknown runas user and/or group ID"
msgstr "Допушта коришћење непознатог „runas“ корисника и/или ИБ-а групе"
-#: plugins/sudoers/def_data.c:542
+#: plugins/sudoers/def_data.c:550
msgid "Only permit running commands as a user with a valid shell"
msgstr "Допушта покретање наредби као корисник само са исправном шкољком"
-#: plugins/sudoers/def_data.c:546
+#: plugins/sudoers/def_data.c:554
msgid "Set the pam remote user to the user running sudo"
msgstr "Поставља пам удаљеног корисника на корисника покретача судо-а"
-#: plugins/sudoers/def_data.c:550
+#: plugins/sudoers/def_data.c:558
msgid "Set the pam remote host to the local host name"
msgstr "Поставља пам удаљеног домаћина на назив локалног домаћина"
-#: plugins/sudoers/defaults.c:183
+#: plugins/sudoers/def_data.c:562
#, c-format
-msgid "%s:%d unknown defaults entry \"%s\""
-msgstr "%s:%d непознат унос основности „%s“"
+msgid "Working directory to change to before executing the command: %s"
+msgstr "Радни директоријум за прелазак пре извршавања наредбе: %s"
-#: plugins/sudoers/defaults.c:186
+#: plugins/sudoers/def_data.c:566
#, c-format
-msgid "%s: unknown defaults entry \"%s\""
-msgstr "%s: непознат унос основности „%s“"
+msgid "Root directory to change to before executing the command: %s"
+msgstr "Корени директоријум за прелазак пре извршавања наредбе: %s"
-#: plugins/sudoers/defaults.c:229
+#: plugins/sudoers/def_data.c:570
#, c-format
-msgid "%s:%d no value specified for \"%s\""
-msgstr "%s:%d није наведена вредност за „%s“"
+msgid "The format of logs to produce: %s"
+msgstr "Формат резултирајућих дневника: %s"
-#: plugins/sudoers/defaults.c:232
+#: plugins/sudoers/defaults.c:185
#, c-format
-msgid "%s: no value specified for \"%s\""
-msgstr "%s: није наведена вредност за „%s“"
+msgid "%s:%d:%d: unknown defaults entry \"%s\""
+msgstr "%s:%d:%d: непознат унос основности „%s“"
-#: plugins/sudoers/defaults.c:252
+#: plugins/sudoers/defaults.c:188
#, c-format
-msgid "%s:%d values for \"%s\" must start with a '/'"
-msgstr "%s:%d вредност за „%s“ мора да почиње /"
+msgid "%s: unknown defaults entry \"%s\""
+msgstr "%s: непознат унос основности „%s“"
-#: plugins/sudoers/defaults.c:255
+#: plugins/sudoers/defaults.c:234
#, c-format
-msgid "%s: values for \"%s\" must start with a '/'"
-msgstr "%s: вредност за „%s“ мора да почиње /"
+msgid "%s:%d:%d: no value specified for \"%s\""
+msgstr "%s:%d:%d: није наведена вредност за „%s“"
+
+#: plugins/sudoers/defaults.c:237
+#, c-format
+msgid "%s: no value specified for \"%s\""
+msgstr "%s: није наведена вредност за „%s“"
-#: plugins/sudoers/defaults.c:277
+#: plugins/sudoers/defaults.c:275
#, c-format
-msgid "%s:%d option \"%s\" does not take a value"
-msgstr "%s:%d опција „%s“ не узима вредност"
+msgid "%s:%d:%d: option \"%s\" does not take a value"
+msgstr "%s:%d:%d: опција „%s“ не узима вредност"
-#: plugins/sudoers/defaults.c:280
+#: plugins/sudoers/defaults.c:278
#, c-format
msgid "%s: option \"%s\" does not take a value"
msgstr "%s: опција „%s“ не узима вредност"
-#: plugins/sudoers/defaults.c:305
+#: plugins/sudoers/defaults.c:303
#, c-format
-msgid "%s:%d invalid Defaults type 0x%x for option \"%s\""
-msgstr "%s:%d неисправна врста основности 0x%x за опцију „%s“"
+msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\""
+msgstr "%s:%d:%d: неисправна врста основности 0x%x за опцију „%s“"
-#: plugins/sudoers/defaults.c:308
+#: plugins/sudoers/defaults.c:306
#, c-format
msgid "%s: invalid Defaults type 0x%x for option \"%s\""
msgstr "%s: неисправна врста основности 0x%x за опцију „%s“"
-#: plugins/sudoers/defaults.c:318
+#: plugins/sudoers/defaults.c:316
#, c-format
-msgid "%s:%d value \"%s\" is invalid for option \"%s\""
-msgstr "%s:%d вредност „%s“ је неисправна за опцију „%s“"
+msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\""
+msgstr "%s:%d:%d: вредност „%s“ је неисправна за опцију „%s“"
-#: plugins/sudoers/defaults.c:321
+#: plugins/sudoers/defaults.c:319
#, c-format
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: вредност „%s“ је неисправна за опцију „%s“"
-#: plugins/sudoers/env.c:404
+#: plugins/sudoers/defaults.c:1030
+#, c-format
+msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
+msgstr "%s:%d:%d: вредност за „%s“ мора да почиње са /, ~ или *"
+
+#: plugins/sudoers/defaults.c:1034
+#, c-format
+msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
+msgstr "%s: вредност за „%s“ мора да почиње са /, ~ или *"
+
+#: plugins/sudoers/defaults.c:1045
+#, c-format
+msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
+msgstr "%s:%d:%d: вредност за „%s“ мора да почиње са /"
+
+#: plugins/sudoers/defaults.c:1049
+#, c-format
+msgid "%s: values for \"%s\" must start with a '/'"
+msgstr "%s: вредност за „%s“ мора да почиње /"
+
+#: plugins/sudoers/env.c:405
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: оштећено стави окружење, дужине не одговарају"
-#: plugins/sudoers/env.c:1131
+#: plugins/sudoers/env.c:1133
msgid "unable to rebuild the environment"
msgstr "не могу поново да изградим окружење"
-#: plugins/sudoers/env.c:1205
+#: plugins/sudoers/env.c:1207
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "извините, није вам дозвољено да подесите следеће променљиве окружења: %s"
-#: plugins/sudoers/file.c:104
+#: plugins/sudoers/file.c:107
#, c-format
msgid "parse error in %s near line %d"
msgstr "грешка обраде у %s близу реда %d"
-#: plugins/sudoers/file.c:107
+#: plugins/sudoers/file.c:110
#, c-format
msgid "parse error in %s"
msgstr "грешка обраде у %s"
msgid "%s must only be writable by owner"
msgstr "Само корисник може да пише у „%s“"
-#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:571
+#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:569
#, c-format
msgid "unable to load %s: %s"
msgstr "не могу да учитам %s: %s"
msgid "Local IP address and netmask pairs:\n"
msgstr "Месна ИП адреса и парови мрежне маске:\n"
-#: plugins/sudoers/iolog.c:142 plugins/sudoers/sudoers.c:393
-#: plugins/sudoers/sudoers.c:394 plugins/sudoers/sudoers.c:1274
-#: plugins/sudoers/testsudoers.c:416
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
+#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
#, c-format
msgid "unknown group: %s"
msgstr "непозната група: %s"
-#: plugins/sudoers/iolog.c:517 plugins/sudoers/iolog.c:807
-#: plugins/sudoers/iolog.c:959 plugins/sudoers/iolog.c:966
-#: plugins/sudoers/iolog.c:1087 plugins/sudoers/iolog.c:1094
-#: plugins/sudoers/iolog.c:1193 plugins/sudoers/iolog.c:1200
+#: plugins/sudoers/iolog.c:622
+msgid "unable to update sequence file"
+msgstr "не могу да освежим датотеку низа"
+
+#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
+#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
+#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
+#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "не могу да пишем у датотеку дневника У/И: %s"
-#: plugins/sudoers/iolog.c:566
-msgid "unable to update sequence file"
-msgstr "не могу да освежим датотеку низа"
-
-#: plugins/sudoers/iolog.c:605
+#: plugins/sudoers/iolog.c:661
#, c-format
msgid "unable to create %s/%s"
msgstr "не могу да направим „%s/%s“"
-#: plugins/sudoers/iolog.c:631
-msgid "unable to connect to log server"
-msgstr "не могу да се повежем на сервер дневника"
-
-#: plugins/sudoers/iolog.c:851
+#: plugins/sudoers/iolog.c:886
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: унутрашња грешка, датотека У/И дневника за догађај %d није отворена"
-#: plugins/sudoers/iolog.c:944 plugins/sudoers/iolog.c:1072
-#: plugins/sudoers/iolog.c:1177 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:492
-#: plugins/sudoers/visudo.c:498
+#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
+#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
+#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
+#: plugins/sudoers/visudo.c:499
msgid "unable to read the clock"
msgstr "не могу да прочитам сат"
-#: plugins/sudoers/iolog.c:1169 plugins/sudoers/iolog_client.c:977
+#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: унутрашња грешка, неисправан сигнал %d"
-#: plugins/sudoers/iolog_client.c:113 plugins/sudoers/iolog_client.c:392
-#: plugins/sudoers/iolog_client.c:1200 plugins/sudoers/iolog_client.c:1775
-msgid "error in event loop"
-msgstr "грешка у петљи догађаја"
-
-#: plugins/sudoers/iolog_client.c:194
-#, c-format
-msgid "Creation of new SSL_CTX object failed: %s"
-msgstr "Стварање новог „SSL_CTX“ објекта није успело: %s"
-
-#: plugins/sudoers/iolog_client.c:346 plugins/sudoers/iolog_client.c:351
-#, c-format
-msgid "TLS connection to %s:%s failed: %s"
-msgstr "ТЛС повезивање са „%s:%s“ није успело: %s"
-
-#: plugins/sudoers/iolog_client.c:496
-msgid "TLS initialization was unsuccessful"
-msgstr "ТЛС покретање беше безуспешно"
-
-#: plugins/sudoers/iolog_client.c:505
-msgid "TLS handshake was unsuccessful"
-msgstr "ТЛС руковање беше безуспешно"
-
-#: plugins/sudoers/iolog_client.c:767 plugins/sudoers/iolog_client.c:959
-msgid "unable to get time of day"
-msgstr "не могу да добавим време дана"
-
-#: plugins/sudoers/iolog_client.c:986
-#, c-format
-msgid "%s: internal error, invalid exit status %d"
-msgstr "%s: унутрашња грешка, неисправно излазно стање %d"
-
-#: plugins/sudoers/iolog_client.c:1523
-msgid "lost connection to log server"
-msgstr "изгубих везу са сервером дневника"
-
-#: plugins/sudoers/iolog_client.c:1600
-msgid "missing write buffer"
-msgstr "недостаје међумеморија писања"
-
-#: plugins/sudoers/ldap.c:176 plugins/sudoers/ldap_conf.c:291
+#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:291
msgid "starttls not supported when using ldaps"
msgstr "старттлс није подржано када се користи лдапс"
-#: plugins/sudoers/ldap.c:247
+#: plugins/sudoers/ldap.c:248
#, c-format
msgid "unable to initialize SSL cert and key db: %s"
msgstr "не могу да покренем ССЛ уверење и бп кључа: %s"
-#: plugins/sudoers/ldap.c:250
+#: plugins/sudoers/ldap.c:251
#, c-format
msgid "you must set TLS_CERT in %s to use SSL"
msgstr "морате да подесите „TLS_CERT“ у „%s“ да користите ССЛ"
-#: plugins/sudoers/ldap.c:1658
+#: plugins/sudoers/ldap.c:1660
#, c-format
msgid "unable to initialize LDAP: %s"
msgstr "не могу да покренем ЛДАП: %s"
-#: plugins/sudoers/ldap.c:1694
+#: plugins/sudoers/ldap.c:1697
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "„start_tls“ је наведено али ЛДАП библиотеке не подржавају „ldap_start_tls_s()“ или „ldap_start_tls_s_np()“"
-#: plugins/sudoers/ldap.c:1831 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "неисправна особина „sudoOrder“: %s"
#: plugins/sudoers/ldap_conf.c:200
-msgid "sudo_ldap_conf_add_ports: port too large"
-msgstr "sudo_ldap_conf_add_ports: прикључник је превелик"
+#, c-format
+msgid "%s: port too large"
+msgstr "%s: прикључник је превелик"
#: plugins/sudoers/ldap_conf.c:260
#, c-format
msgid "unable to mix ldap and ldaps URIs"
msgstr "не могу да помешам лдап и лдапс путање"
-#: plugins/sudoers/ldap_util.c:548 plugins/sudoers/ldap_util.c:550
+#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "не могу да претворим „sudoOption“: %s%s%s"
msgid "unable to open audit system"
msgstr "не могу да отворим систем прегледа"
-#: plugins/sudoers/linux_audit.c:100
+#: plugins/sudoers/linux_audit.c:101
msgid "unable to send audit message"
msgstr "не могу да пошаљем поруку прегледа"
-#: plugins/sudoers/logging.c:167
+#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
+#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+msgid "error in event loop"
+msgstr "грешка у петљи догађаја"
+
+#: plugins/sudoers/log_client.c:193
#, c-format
-msgid "unable to open log file: %s"
-msgstr "не могÑ\83 да оÑ\82воÑ\80им даÑ\82оÑ\82екÑ\83 дневника: %s"
+msgid "Creation of new SSL_CTX object failed: %s"
+msgstr "СÑ\82ваÑ\80аÑ\9aе новог â\80\9eSSL_CTXâ\80\9c обÑ\98екÑ\82а ниÑ\98е Ñ\83Ñ\81пело: %s"
-#: plugins/sudoers/logging.c:175
+#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350
#, c-format
-msgid "unable to lock log file: %s"
-msgstr "не могÑ\83 да закÑ\99Ñ\83Ñ\87ам даÑ\82оÑ\82екÑ\83 дневника: %s"
+msgid "TLS connection to %s:%s failed: %s"
+msgstr "ТÐ\9bС повезиваÑ\9aе Ñ\81а â\80\9e%s:%sâ\80\9c ниÑ\98е Ñ\83Ñ\81пело: %s"
-#: plugins/sudoers/logging.c:208
+#: plugins/sudoers/log_client.c:519
+msgid "TLS initialization was unsuccessful"
+msgstr "ТЛС покретање беше безуспешно"
+
+#: plugins/sudoers/log_client.c:528
+msgid "TLS handshake was unsuccessful"
+msgstr "ТЛС руковање беше безуспешно"
+
+#: plugins/sudoers/log_client.c:1202
#, c-format
-msgid "unable to write log file: %s"
-msgstr "не могу да запишем датотеку дневника: %s"
+msgid "%s: internal error, invalid exit status %d"
+msgstr "%s: унутрашња грешка, неисправно излазно стање %d"
+
+#: plugins/sudoers/log_client.c:1738
+msgid "lost connection to log server"
+msgstr "изгубих везу са сервером дневника"
+
+#: plugins/sudoers/log_client.c:1815
+msgid "missing write buffer"
+msgstr "недостаје међумеморија писања"
+
+#: plugins/sudoers/log_client.c:1964
+msgid "unable to connect to log server"
+msgstr "не могу да се повежем на сервер дневника"
-#: plugins/sudoers/logging.c:241
+#: plugins/sudoers/logging.c:244
msgid "user NOT in sudoers"
msgstr "корисник НИЈЕ у судоерсу"
-#: plugins/sudoers/logging.c:243
+#: plugins/sudoers/logging.c:246
msgid "user NOT authorized on host"
msgstr "корисник НИЈЕ овлашћен на домаћину"
-#: plugins/sudoers/logging.c:245
+#: plugins/sudoers/logging.c:248
msgid "command not allowed"
msgstr "наредба није допуштена"
-#: plugins/sudoers/logging.c:288
+#: plugins/sudoers/logging.c:269
#, c-format
msgid "%s is not in the sudoers file. This incident will be reported.\n"
msgstr "„%s“ се не налази у датотеци судоерса. О овом инциденту ће бити поднет извештај.\n"
-#: plugins/sudoers/logging.c:291
+#: plugins/sudoers/logging.c:272
#, c-format
msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n"
msgstr "„%s“ нема права да покрене судо над „%s“. О овом инциденту ће бити поднет извештај.\n"
-#: plugins/sudoers/logging.c:295
+#: plugins/sudoers/logging.c:276
#, c-format
msgid "Sorry, user %s may not run sudo on %s.\n"
msgstr "Извините, корисник %s не може покренути судо на %s.\n"
-#: plugins/sudoers/logging.c:298
+#: plugins/sudoers/logging.c:279
#, 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:335 plugins/sudoers/sudoers.c:512
-#: plugins/sudoers/sudoers.c:514 plugins/sudoers/sudoers.c:516
-#: plugins/sudoers/sudoers.c:518 plugins/sudoers/sudoers.c:665
-#: plugins/sudoers/sudoers.c:667
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
+#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
+#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
+#: plugins/sudoers/sudoers.c:741
#, c-format
msgid "%s: command not found"
msgstr "%s: нема такве наредбе"
-#: plugins/sudoers/logging.c:337 plugins/sudoers/sudoers.c:508
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
"занемарујем „%s“ пронађено у „.“\n"
"Користите „sudo ./%s“ ако је то „%s“ које желите да покренете."
-#: plugins/sudoers/logging.c:354
-msgid "authentication failure"
-msgstr "потврђивање идентитета није успело"
-
-#: plugins/sudoers/logging.c:380
-msgid "a password is required"
-msgstr "потребна је лозинка"
-
-#: plugins/sudoers/logging.c:450
+#: plugins/sudoers/logging.c:337
#, c-format
msgid "%u incorrect password attempt"
msgid_plural "%u incorrect password attempts"
msgstr[1] "%u покушаја нетачне лозинке"
msgstr[2] "%u покушаја нетачне лозинке"
-#: plugins/sudoers/logging.c:714
-#, c-format
-msgid "unable to dup stdin: %m"
-msgstr "не могу да удвостручим стандардни улаз: %m"
+#: plugins/sudoers/logging.c:393
+msgid "authentication failure"
+msgstr "потврђивање идентитета није успело"
-#: plugins/sudoers/logging.c:751
-#, c-format
-msgid "unable to execute %s: %m"
-msgstr "не могу да извршим „%s“: %m"
+#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453
+msgid "a password is required"
+msgstr "потребна је лозинка"
-#: plugins/sudoers/logging.c:792 plugins/sudoers/logging.c:848
+#: plugins/sudoers/logging.c:729
#, c-format
-msgid "unable to fork: %m"
-msgstr "не могÑ\83 да иÑ\81Ñ\86епим: %m"
+msgid "unable to open log file: %s"
+msgstr "не могÑ\83 да оÑ\82воÑ\80им даÑ\82оÑ\82екÑ\83 дневника: %s"
-#: plugins/sudoers/logging.c:838
+#: plugins/sudoers/logging.c:762
#, c-format
-msgid "unable to open pipe: %m"
-msgstr "не могÑ\83 да оÑ\82воÑ\80им Ñ\81поÑ\98кÑ\83: %m"
+msgid "unable to write log file: %s"
+msgstr "не могÑ\83 да запиÑ\88ем даÑ\82оÑ\82екÑ\83 дневника: %s"
-#: plugins/sudoers/match_digest.c:116
+#: plugins/sudoers/match_digest.c:129
#, c-format
msgid "digest for %s (%s) is not in %s form"
msgstr "приказ за %s (%s) није у %s облику"
-#: plugins/sudoers/parse.c:442
+#: plugins/sudoers/parse.c:518
#, c-format
msgid ""
"\n"
"\n"
"ЛДАП улога: %s\n"
-#: plugins/sudoers/parse.c:445
-#, c-format
+#: plugins/sudoers/parse.c:521
msgid ""
"\n"
"Sudoers entry:\n"
"\n"
"Унос судоерса:\n"
-#: plugins/sudoers/parse.c:447
-#, c-format
+#: plugins/sudoers/parse.c:523
msgid " RunAsUsers: "
msgstr " „Покрени-као“ корисници: "
-#: plugins/sudoers/parse.c:462
-#, c-format
+#: plugins/sudoers/parse.c:538
msgid " RunAsGroups: "
msgstr " „Покрени-као“ групе: "
-#: plugins/sudoers/parse.c:472
-#, c-format
+#: plugins/sudoers/parse.c:548
msgid " Options: "
msgstr " Опције: "
-#: plugins/sudoers/parse.c:522
-#, c-format
+#: plugins/sudoers/parse.c:602
msgid " Commands:\n"
msgstr " Наредбе:\n"
-#: plugins/sudoers/parse.c:713
+#: plugins/sudoers/parse.c:793
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "Упоређује уносе основности за „%s“ на %s:\n"
-#: plugins/sudoers/parse.c:731
+#: plugins/sudoers/parse.c:811
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "Покрени-као и Наредбено-посебне основности за „%s“:\n"
-#: plugins/sudoers/parse.c:749
+#: plugins/sudoers/parse.c:829
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "Корисник „%s“ може да покреће следеће наредбе на %s:\n"
-#: plugins/sudoers/parse.c:764
+#: plugins/sudoers/parse.c:844
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "Корисник „%s“ нема права да покрене судо над „%s“.\n"
msgid "invalid LDIF attribute: %s"
msgstr "неисправна особина „LDIF“: %s"
-#: plugins/sudoers/policy.c:77 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "судо челник је поставио неисправну „%.*s“"
-#: plugins/sudoers/policy.c:281 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
msgid "unable to parse network address list"
msgstr "не могу да обрадим списак адреса мреже"
-#: plugins/sudoers/policy.c:426
+#: plugins/sudoers/policy.c:455
msgid "user name not set by sudo front-end"
msgstr "судо челник није поставио име корисника"
-#: plugins/sudoers/policy.c:430
+#: plugins/sudoers/policy.c:459
msgid "user-ID not set by sudo front-end"
msgstr "судо челник није поставио ИБ корисника"
-#: plugins/sudoers/policy.c:434
+#: plugins/sudoers/policy.c:463
msgid "group-ID not set by sudo front-end"
msgstr "судо челник није поставио ИБ групе"
-#: plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:467
msgid "host name not set by sudo front-end"
msgstr "судо челник није поставио назив домаћина"
-#: plugins/sudoers/policy.c:896 plugins/sudoers/visudo.c:230
-#: plugins/sudoers/visudo.c:861
+#: plugins/sudoers/policy.c:643
+#, c-format
+msgid "invalid working directory: %s"
+msgstr "неисправан радни директоријум: %s"
+
+#: plugins/sudoers/policy.c:811
+#, c-format
+msgid "invalid chroot directory: %s"
+msgstr "неисправан „chroot“ директоријум: %s"
+
+#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
+#: plugins/sudoers/visudo.c:860
#, c-format
msgid "unable to execute %s"
msgstr "не могу да извршим „%s“"
-#: plugins/sudoers/policy.c:1060
+#: plugins/sudoers/policy.c:1111
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Издање %s прикључка политике судоерса\n"
-#: plugins/sudoers/policy.c:1062
+#: plugins/sudoers/policy.c:1113
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Граматика датотеке судоерса издање %d\n"
-#: plugins/sudoers/policy.c:1066
+#: plugins/sudoers/policy.c:1117
#, c-format
msgid ""
"\n"
"\n"
"Путања судоерса: %s\n"
-#: plugins/sudoers/policy.c:1069
+#: plugins/sudoers/policy.c:1120
#, c-format
msgid "nsswitch path: %s\n"
msgstr "путања нс-прекидача: %s\n"
-#: plugins/sudoers/policy.c:1071
+#: plugins/sudoers/policy.c:1122
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "путања лдап.подешавања: %s\n"
-#: plugins/sudoers/policy.c:1072
+#: plugins/sudoers/policy.c:1123
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "путања лдап.тајне: %s\n"
-#: plugins/sudoers/policy.c:1105
+#: plugins/sudoers/policy.c:1156
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "немогу да региструјем прикачку врсте „%d“ (издање %d.%d)"
-#: plugins/sudoers/pwutil.c:214 plugins/sudoers/pwutil.c:232
+#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
#, c-format
msgid "unable to cache uid %u"
msgstr "не могу да сместим у оставу јиб „%u“"
-#: plugins/sudoers/pwutil.c:226
+#: plugins/sudoers/pwutil.c:229
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "не могу да сместим у оставу јиб „%u“, већ постоји"
-#: plugins/sudoers/pwutil.c:286 plugins/sudoers/pwutil.c:304
-#: plugins/sudoers/pwutil.c:367 plugins/sudoers/pwutil.c:412
+#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
+#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
#, c-format
msgid "unable to cache user %s"
msgstr "не могу да сместим у оставу корисника „%s“"
-#: plugins/sudoers/pwutil.c:299
+#: plugins/sudoers/pwutil.c:302
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "не могу да сместим у оставу корисника „%s“, већ постоји"
-#: plugins/sudoers/pwutil.c:531 plugins/sudoers/pwutil.c:549
+#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
#, c-format
msgid "unable to cache gid %u"
msgstr "не могу да сместим у оставу гиб „%u“"
-#: plugins/sudoers/pwutil.c:543
+#: plugins/sudoers/pwutil.c:546
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "не могу да сместим у оставу гиб „%u“, већ постоји"
-#: plugins/sudoers/pwutil.c:596 plugins/sudoers/pwutil.c:614
-#: plugins/sudoers/pwutil.c:662 plugins/sudoers/pwutil.c:704
+#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
+#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
#, c-format
msgid "unable to cache group %s"
msgstr "не могу да сместим у оставу групу „%s“"
-#: plugins/sudoers/pwutil.c:609
+#: plugins/sudoers/pwutil.c:612
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "не могу да сместим у оставу групу „%s“, већ постоји"
-#: plugins/sudoers/pwutil.c:831 plugins/sudoers/pwutil.c:883
-#: plugins/sudoers/pwutil.c:933 plugins/sudoers/pwutil.c:986
+#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
+#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "не могу да сместим у оставу списак групе за „%s“, већ постоји"
-#: plugins/sudoers/pwutil.c:837 plugins/sudoers/pwutil.c:888
-#: plugins/sudoers/pwutil.c:939 plugins/sudoers/pwutil.c:991
+#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
+#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
#, c-format
msgid "unable to cache group list for %s"
msgstr "не могу да сместим у оставу списак групе за „%s“"
-#: plugins/sudoers/pwutil.c:877
+#: plugins/sudoers/pwutil.c:879
#, c-format
msgid "unable to parse groups for %s"
msgstr "не могу да обрадим групе за „%s“"
-#: plugins/sudoers/pwutil.c:980
+#: plugins/sudoers/pwutil.c:981
#, c-format
msgid "unable to parse gids for %s"
msgstr "не могу да обрадим гид-ове за „%s“"
msgid "truncated audit path argv[0]: %s"
msgstr "„argv[0]“ скраћене путање прегледа: %s"
-#: plugins/sudoers/sssd.c:573
+#: plugins/sudoers/sssd.c:572
msgid "unable to initialize SSS source. Is SSSD installed on your machine?"
msgstr "не могу да покренем ССС извор. Да ли је СССД инсталиран на вашем рачунару?"
-#: plugins/sudoers/sssd.c:581 plugins/sudoers/sssd.c:590
-#: plugins/sudoers/sssd.c:599 plugins/sudoers/sssd.c:608
-#: plugins/sudoers/sssd.c:617
+#: plugins/sudoers/sssd.c:580 plugins/sudoers/sssd.c:589
+#: plugins/sudoers/sssd.c:598 plugins/sudoers/sssd.c:607
+#: plugins/sudoers/sssd.c:616
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "не могу да нађем симбол „%s“ у „%s“"
-#: plugins/sudoers/sudoers.c:217 plugins/sudoers/sudoers.c:943
+#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
msgid "problem with defaults entries"
msgstr "неприлике са основним уносима"
-#: plugins/sudoers/sudoers.c:221
+#: plugins/sudoers/sudoers.c:218
msgid "no valid sudoers sources found, quitting"
msgstr "нисам пронашао исправне изворе судоерса, прекидам"
-#: plugins/sudoers/sudoers.c:297
+#: plugins/sudoers/sudoers.c:292
+#, c-format
+msgid "user not allowed to change root directory to %s"
+msgstr "кориснику није дозвољено да промени корени директоријум у „%s“"
+
+#: plugins/sudoers/sudoers.c:294
+#, c-format
+msgid "you are not permitted to use the -R option with %s"
+msgstr "није вам допуштено да користите опцију „-R“ са „%s“"
+
+#: plugins/sudoers/sudoers.c:319
+#, c-format
+msgid "user not allowed to change directory to %s"
+msgstr "кориснику није дозвољено да промени директоријум у „%s“"
+
+#: plugins/sudoers/sudoers.c:320
+#, c-format
+msgid "you are not permitted to use the -D option with %s"
+msgstr "није вам допуштено да користите опцију „-D“ са „%s“"
+
+#: plugins/sudoers/sudoers.c:351
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "судоерси наводе да администратор није дозвољен у судоу"
-#: plugins/sudoers/sudoers.c:357
+#: plugins/sudoers/sudoers.c:411
msgid "user not allowed to override closefrom limit"
msgstr "кориснику није дозвољено да препише „closefrom“ ограничење"
-#: plugins/sudoers/sudoers.c:358
+#: plugins/sudoers/sudoers.c:412
msgid "you are not permitted to use the -C option"
msgstr "није вам допуштено да користите опцију „-C“"
-#: plugins/sudoers/sudoers.c:420
+#: plugins/sudoers/sudoers.c:472
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "власник временске ознаке (%s): нема таквог корисника"
-#: plugins/sudoers/sudoers.c:435
+#: plugins/sudoers/sudoers.c:487
msgid "no tty"
msgstr "нема конзоле"
-#: plugins/sudoers/sudoers.c:436
+#: plugins/sudoers/sudoers.c:488
msgid "sorry, you must have a tty to run sudo"
msgstr "извините, морате имати конзолу да покренете судо"
-#: plugins/sudoers/sudoers.c:442 plugins/sudoers/sudoers.c:444
+#: plugins/sudoers/sudoers.c:495
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "неисправна шкољка за корисника „%s“: %s"
-#: plugins/sudoers/sudoers.c:507
+#: plugins/sudoers/sudoers.c:578
msgid "command in current directory"
msgstr "наредба у текућем директоријуму"
-#: plugins/sudoers/sudoers.c:525
+#: plugins/sudoers/sudoers.c:597
msgid "user not allowed to set a command timeout"
msgstr "кориснику није дозвољено да подеси време истека наредбе"
-#: plugins/sudoers/sudoers.c:526
+#: plugins/sudoers/sudoers.c:599
msgid "sorry, you are not allowed set a command timeout"
msgstr "извините, није вам дозвољено да подесите време истека наредбе"
-#: plugins/sudoers/sudoers.c:534
+#: plugins/sudoers/sudoers.c:607
msgid "user not allowed to preserve the environment"
msgstr "кориснику није дозвољено да сачува окружење"
-#: plugins/sudoers/sudoers.c:535
+#: plugins/sudoers/sudoers.c:609
msgid "sorry, you are not allowed to preserve the environment"
msgstr "извините, није вам дозвољено да сачувате окружење"
-#: plugins/sudoers/sudoers.c:878
+#: plugins/sudoers/sudoers.c:945
msgid "command too long"
msgstr "наредба је предуга"
-#: plugins/sudoers/sudoers.c:936
+#: plugins/sudoers/sudoers.c:1003
msgid "sudoedit doesn't need to be run via sudo"
msgstr "„sudoedit“ не треба да се покреће путем „sudo“-а"
-#: plugins/sudoers/sudoers.c:990 plugins/sudoers/sudoreplay.c:1548
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "не могу да прочитам „%s“"
-#: plugins/sudoers/sudoers.c:1015 plugins/sudoers/visudo.c:431
-#: plugins/sudoers/visudo.c:727
+#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
+#: plugins/sudoers/visudo.c:726
#, c-format
msgid "unable to stat %s"
msgstr "не могу да добијем податке о „%s“"
-#: plugins/sudoers/sudoers.c:1019 plugins/sudoers/visudo.c:1037
+#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
#, c-format
msgid "%s is not a regular file"
msgstr "„%s“ није обична датотека"
-#: plugins/sudoers/sudoers.c:1023 plugins/sudoers/timestamp.c:252 toke.l:1060
+#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s је у власништву уиб-а %u, а треба бити %u"
-#: plugins/sudoers/sudoers.c:1027 toke.l:1065
+#: plugins/sudoers/sudoers.c:1094 toke.l:1117
#, c-format
msgid "%s is world writable"
msgstr "Сви могу да пишу у „%s“"
-#: plugins/sudoers/sudoers.c:1031 toke.l:1068
+#: plugins/sudoers/sudoers.c:1098 toke.l:1120
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s је у власништву уиб-а %u, а треба бити %u"
-#: plugins/sudoers/sudoers.c:1064
+#: plugins/sudoers/sudoers.c:1131
#, c-format
msgid "only root can use \"-c %s\""
msgstr "само администратор може да користи „-c %s“"
-#: plugins/sudoers/sudoers.c:1083
+#: plugins/sudoers/sudoers.c:1150
#, c-format
msgid "unknown login class: %s"
msgstr "непознат разред пријављивања: %s"
-#: plugins/sudoers/sudoers.c:1168 plugins/sudoers/sudoers.c:1183
+#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
#, c-format
msgid "unable to resolve host %s"
msgstr "не могу да решим домаћина „%s“"
-#: plugins/sudoers/sudoreplay.c:258
+#: plugins/sudoers/sudoreplay.c:257
#, c-format
msgid "invalid filter option: %s"
msgstr "неисправна опција пропусника: %s"
-#: plugins/sudoers/sudoreplay.c:274
+#: plugins/sudoers/sudoreplay.c:273
#, c-format
msgid "invalid max wait: %s"
msgstr "неисправно најдуже чекање: %s"
-#: plugins/sudoers/sudoreplay.c:297
+#: plugins/sudoers/sudoreplay.c:296
#, c-format
msgid "invalid speed factor: %s"
msgstr "неисправан чинилац брзине: %s"
-#: plugins/sudoers/sudoreplay.c:333
+#: plugins/sudoers/sudoreplay.c:332
#, c-format
msgid "%s/%.2s/%.2s/%.2s: %s"
msgstr "%s/%.2s/%.2s/%.2s: %s"
-#: plugins/sudoers/sudoreplay.c:338
+#: plugins/sudoers/sudoreplay.c:337
#, c-format
msgid "%s/timing: %s"
msgstr "%s/временисање: %s"
-#: plugins/sudoers/sudoreplay.c:342
+#: plugins/sudoers/sudoreplay.c:341
#, c-format
msgid "%s/%s: %s"
msgstr "%s/%s: %s"
-#: plugins/sudoers/sudoreplay.c:366
+#: plugins/sudoers/sudoreplay.c:365
#, c-format
msgid "Replaying sudo session: %s"
msgstr "Понављам сесију судоа: %s"
-#: plugins/sudoers/sudoreplay.c:628
+#: plugins/sudoers/sudoreplay.c:627
msgid "unable to set tty to raw mode"
msgstr "не могу да подесим конзолу на сирови режим"
-#: plugins/sudoers/sudoreplay.c:679
+#: plugins/sudoers/sudoreplay.c:678
msgid "Warning: your terminal is too small to properly replay the log.\n"
msgstr "Упозорење: ваш терминал је премали да би исправно приказао дневник.\n"
-#: plugins/sudoers/sudoreplay.c:680
+#: plugins/sudoers/sudoreplay.c:679
#, c-format
msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d."
msgstr "Геометрија дневника је %d x %d, а геометрија терминала је %d x %d."
-#: plugins/sudoers/sudoreplay.c:708
+#: plugins/sudoers/sudoreplay.c:707
msgid "Replay finished, press any key to restore the terminal."
msgstr "Одговор је завршен, притисните неки тастер да повратите терминал."
-#: plugins/sudoers/sudoreplay.c:1198 plugins/sudoers/sudoreplay.c:1228
+#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227
#, c-format
msgid "ambiguous expression \"%s\""
msgstr "нејасан израз „%s“"
-#: plugins/sudoers/sudoreplay.c:1250
+#: plugins/sudoers/sudoreplay.c:1249
msgid "unmatched ')' in expression"
msgstr "непоклопљена ) у изразу"
-#: plugins/sudoers/sudoreplay.c:1254
+#: plugins/sudoers/sudoreplay.c:1253
#, c-format
msgid "unknown search term \"%s\""
msgstr "непознат појам претраге „%s“"
-#: plugins/sudoers/sudoreplay.c:1269
+#: plugins/sudoers/sudoreplay.c:1268
#, c-format
msgid "%s requires an argument"
msgstr "„%s“ захтева аргумент"
-#: plugins/sudoers/sudoreplay.c:1272 plugins/sudoers/sudoreplay.c:1524
+#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523
#, c-format
msgid "invalid regular expression: %s"
msgstr "неисправан регуларан израз: %s"
-#: plugins/sudoers/sudoreplay.c:1277
+#: plugins/sudoers/sudoreplay.c:1276
#, c-format
msgid "could not parse date \"%s\""
msgstr "не могу да обрадим датум „%s“"
-#: plugins/sudoers/sudoreplay.c:1286
+#: plugins/sudoers/sudoreplay.c:1285
msgid "unmatched '(' in expression"
msgstr "непоклопљена ( у изразу"
-#: plugins/sudoers/sudoreplay.c:1288
+#: plugins/sudoers/sudoreplay.c:1287
msgid "illegal trailing \"or\""
msgstr "недозвољено пратеће „или“"
-#: plugins/sudoers/sudoreplay.c:1290
+#: plugins/sudoers/sudoreplay.c:1289
msgid "illegal trailing \"!\""
msgstr "недозвољени пратећи „!“"
-#: plugins/sudoers/sudoreplay.c:1348
+#: plugins/sudoers/sudoreplay.c:1347
#, c-format
msgid "unknown search type %d"
msgstr "непозната врста претраге „%d“"
-#: plugins/sudoers/sudoreplay.c:1615
+#: plugins/sudoers/sudoreplay.c:1614
#, c-format
msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n"
msgstr "употреба: %s [-hnRS] [-d дир] [-m број] [-s број] ИБ\n"
-#: plugins/sudoers/sudoreplay.c:1618
+#: plugins/sudoers/sudoreplay.c:1617
#, c-format
msgid "usage: %s [-h] [-d dir] -l [search expression]\n"
msgstr "употреба: %s [-h] [-d дир] -l [израз претраге]\n"
-#: plugins/sudoers/sudoreplay.c:1627
+#: plugins/sudoers/sudoreplay.c:1626
#, c-format
msgid ""
"%s - replay sudo session logs\n"
"%s — понавља дневнике сесије судоа\n"
"\n"
-#: plugins/sudoers/sudoreplay.c:1629
+#: plugins/sudoers/sudoreplay.c:1628
msgid ""
"\n"
"Options:\n"
" -s, --speed=број убрзава или успорава излаз\n"
" -V, --version приказује податке о издању и излази"
-#: plugins/sudoers/testsudoers.c:354
+#: plugins/sudoers/testsudoers.c:348
msgid "\thost unmatched"
msgstr "\tдомаћин није поклопљен"
-#: plugins/sudoers/testsudoers.c:357
+#: plugins/sudoers/testsudoers.c:351
msgid ""
"\n"
"Command allowed"
"\n"
"Наредба је допуштена"
-#: plugins/sudoers/testsudoers.c:358
+#: plugins/sudoers/testsudoers.c:352
msgid ""
"\n"
"Command denied"
"\n"
"Наредба је одбијена"
-#: plugins/sudoers/testsudoers.c:358
+#: plugins/sudoers/testsudoers.c:352
msgid ""
"\n"
"Command unmatched"
msgid "the -x option will be removed in a future release"
msgstr "опција „-x“ биће уклоњена у наредном издању"
-#: plugins/sudoers/visudo.c:227
+#: plugins/sudoers/visudo.c:228
msgid "please consider using the cvtsudoers utility instead"
msgstr "размотрите коришћење помагала „cvtsudoers“"
-#: plugins/sudoers/visudo.c:278 plugins/sudoers/visudo.c:660
+#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
#, c-format
msgid "press return to edit %s: "
msgstr "притисните „унеси“ да уредите „%s“: "
-#: plugins/sudoers/visudo.c:339
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "наведени уређивач (%s) не постоји"
-#: plugins/sudoers/visudo.c:341
+#: plugins/sudoers/visudo.c:342
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "нисам пронашао уређивача (путања уређивача = %s)"
-#: plugins/sudoers/visudo.c:451 plugins/sudoers/visudo.c:459
+#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
msgid "write error"
msgstr "грешка писања"
-#: plugins/sudoers/visudo.c:505
+#: plugins/sudoers/visudo.c:506
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "не могу да добавим податке привремене датотеке (%s), %s је неизмењено"
-#: plugins/sudoers/visudo.c:512
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "привремена датотека нулте дужине (%s), %s је неизмењено"
-#: plugins/sudoers/visudo.c:518
+#: plugins/sudoers/visudo.c:519
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "уређивач (%s) није успео, %s је неизмењено"
-#: plugins/sudoers/visudo.c:540
+#: plugins/sudoers/visudo.c:541
#, c-format
msgid "%s unchanged"
msgstr "„%s“ је неизмењено"
-#: plugins/sudoers/visudo.c:599
+#: plugins/sudoers/visudo.c:598
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "не могу поново да отворим привремену датотеку (%s), %s је неизмењено."
-#: plugins/sudoers/visudo.c:611
+#: plugins/sudoers/visudo.c:610
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "не могу да обрадим привремену датотеку (%s), непозната грешка"
-#: plugins/sudoers/visudo.c:649
+#: plugins/sudoers/visudo.c:648
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "унутрашња грешка, не могу да пронађем „%s“ на списку!"
-#: plugins/sudoers/visudo.c:729 plugins/sudoers/visudo.c:738
+#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "не могу да подесим (јиб, гиб) за %s на (%u, %u)"
-#: plugins/sudoers/visudo.c:761
+#: plugins/sudoers/visudo.c:760
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "„%s“ и „%s“ нису на истом систему датотека, користим „mv“ за преименовање"
-#: plugins/sudoers/visudo.c:775
+#: plugins/sudoers/visudo.c:774
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "наредба није успела: „%s %s %s“, %s је неизмењено"
-#: plugins/sudoers/visudo.c:785
+#: plugins/sudoers/visudo.c:784
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "грешка преименовања „%s“, %s је неизмењено"
-#: plugins/sudoers/visudo.c:806
+#: plugins/sudoers/visudo.c:805
msgid "What now? "
msgstr "Шта сада? "
-#: plugins/sudoers/visudo.c:820
+#: plugins/sudoers/visudo.c:819
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
" x — излази без чувања измена у датотеци судоерса\n"
" Q — прекида и чува измене у датотеци судоерса (ОПАСНО!)\n"
-#: plugins/sudoers/visudo.c:866
+#: plugins/sudoers/visudo.c:865
#, c-format
msgid "unable to run %s"
msgstr "не могу да покренем %s"
-#: plugins/sudoers/visudo.c:896
+#: plugins/sudoers/visudo.c:895
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: погрешан власник (јиб, гиб) треба бити (%u, %u)\n"
-#: plugins/sudoers/visudo.c:903
+#: plugins/sudoers/visudo.c:902
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: лоша овлашћења, требају бити у режиму 0%o\n"
-#: plugins/sudoers/visudo.c:960 plugins/sudoers/visudo.c:967
+#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: успешно је обрађено\n"
-#: plugins/sudoers/visudo.c:986
+#: plugins/sudoers/visudo.c:977
#, c-format
msgid "%s busy, try again later"
msgstr "„%s“ је заузет, покушајте касније"
-#: plugins/sudoers/visudo.c:989
+#: plugins/sudoers/visudo.c:980
#, c-format
msgid "unable to lock %s"
msgstr "не могу да закључам „%s“"
-#: plugins/sudoers/visudo.c:990
+#: plugins/sudoers/visudo.c:981
msgid "Edit anyway? [y/N]"
msgstr "Да ипак уреим? [д/Н]"
-#: plugins/sudoers/visudo.c:1083
+#: plugins/sudoers/visudo.c:1091
#, c-format
-msgid "Error: %s:%d cycle in %s \"%s\""
-msgstr "Грешка: %s:%d циклус у „%s“ „%s“"
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Грешка: %s:%d:%d: циклус у „%s“ „%s“"
-#: plugins/sudoers/visudo.c:1084
+#: plugins/sudoers/visudo.c:1092
#, c-format
-msgid "Warning: %s:%d cycle in %s \"%s\""
-msgstr "Упозорење: %s:%d циклус у „%s“ „%s“"
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Упозорење: %s:%d:%d: циклус у „%s“ „%s“"
-#: plugins/sudoers/visudo.c:1088
+#: plugins/sudoers/visudo.c:1096
#, c-format
-msgid "Error: %s:%d %s \"%s\" referenced but not defined"
-msgstr "Грешка: %s:%d упута за „%s“ „%s“ постоји али није одређена"
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Грешка: %s:%d:%d: упута за „%s“ „%s“ постоји али није одређена"
-#: plugins/sudoers/visudo.c:1089
+#: plugins/sudoers/visudo.c:1097
#, c-format
-msgid "Warning: %s:%d %s \"%s\" referenced but not defined"
-msgstr "Упозорење: %s:%d упута за „%s“ „%s“ постоји али није одређена"
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Упозорење: %s:%d:%d: упута за „%s“ „%s“ постоји али није одређена"
-#: plugins/sudoers/visudo.c:1180
+#: plugins/sudoers/visudo.c:1188
#, c-format
-msgid "Warning: %s:%d unused %s \"%s\""
-msgstr "Упозорење: %s:%d некоришћено „%s“ „%s“"
+msgid "Warning: %s:%d:%d: unused %s \"%s\""
+msgstr "Упозорење: %s:%d:%d: некоришћено „%s“ „%s“"
-#: plugins/sudoers/visudo.c:1295
+#: plugins/sudoers/visudo.c:1303
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
"%s — безбедно уређује датотеку судоерса\n"
"\n"
-#: plugins/sudoers/visudo.c:1297
+#: plugins/sudoers/visudo.c:1305
msgid ""
"\n"
"Options:\n"
" -s, --strict строга провера синтаксе\n"
" -V, --version приказује податке о издању и излази\n"
-#: toke.l:1032
+#: toke.l:179
+msgid "empty string"
+msgstr "празна ниска"
+
+#: toke.l:189 toke.l:491
+msgid "empty group"
+msgstr "празна група"
+
+#: toke.l:197 toke.l:489
+msgid "empty netgroup"
+msgstr "празна мрежна група"
+
+#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+msgid "invalid line continuation"
+msgstr "неисправан наставак реда"
+
+#: toke.l:528 toke.l:540
+msgid "invalid IPv6 address"
+msgstr "неисправна ИПв6 адреса"
+
+#: toke.l:764
+msgid "unexpected line break in string"
+msgstr "неочекивани прекид реда у нисци"
+
+#: toke.l:1084
msgid "too many levels of includes"
msgstr "превише нивоа укључивања"
+#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
+#~ msgstr "Унапред учитава лажне функције извршавања које се налазе у библиотеци „sudo_noexec“"
+
+#~ msgid "sudo_ldap_conf_add_ports: port too large"
+#~ msgstr "sudo_ldap_conf_add_ports: прикључник је превелик"
+
+#~ msgid "unable to lock log file: %s"
+#~ msgstr "не могу да закључам датотеку дневника: %s"
+
#~ msgid "SSL_connect failed: ssl_error=%d, stack=%s\n"
#~ msgstr "„SSL_повезивање“ није успело: ssl_грешка=%d, спремник=%s\n"
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.4\n"
+"Project-Id-Version: sudo 1.9.5\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1075
msgid "syntax error"
msgstr ""
msgid "Sorry, try again."
msgstr ""
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314 gram.y:334
-#: gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386 gram.y:455 gram.y:464
-#: gram.y:475 gram.y:510 gram.y:517 gram.y:524 gram.y:531 gram.y:558 gram.y:654
-#: gram.y:661 gram.y:670 gram.y:679 gram.y:696 gram.y:834 gram.y:841 gram.y:849
-#: gram.y:855 gram.y:971 gram.y:978 gram.y:985 gram.y:992 gram.y:999
-#: gram.y:1025 gram.y:1032 gram.y:1039 gram.y:1236 gram.y:1526
-#: lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:352
-#: lib/eventlog/eventlog.c:753 lib/eventlog/eventlog.c:817
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
+#: gram.y:224 gram.y:290 gram.y:297 gram.y:304 gram.y:311 gram.y:318 gram.y:338
+#: gram.y:362 gram.y:369 gram.y:376 gram.y:383 gram.y:390 gram.y:459 gram.y:468
+#: gram.y:479 gram.y:514 gram.y:521 gram.y:528 gram.y:535 gram.y:562 gram.y:658
+#: gram.y:665 gram.y:674 gram.y:683 gram.y:700 gram.y:838 gram.y:845 gram.y:853
+#: gram.y:859 gram.y:967 gram.y:974 gram.y:981 gram.y:988 gram.y:995
+#: gram.y:1021 gram.y:1028 gram.y:1035 gram.y:1123 gram.y:1244 gram.y:1534
+#: lib/eventlog/eventlog.c:288 lib/eventlog/eventlog.c:360
+#: lib/eventlog/eventlog.c:761 lib/eventlog/eventlog.c:825
+#: lib/eventlog/eventlog.c:1070 lib/iolog/iolog_fileio.c:998
#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:305
#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115
#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133
#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
-#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
-#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
-#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
-#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
-#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
-#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
-#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/audit.c:115 plugins/sudoers/audit.c:265
+#: plugins/sudoers/auth/bsdauth.c:143 plugins/sudoers/auth/kerb5.c:118
+#: plugins/sudoers/auth/kerb5.c:144 plugins/sudoers/auth/pam.c:669
+#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
+#: plugins/sudoers/cvtsudoers.c:764 plugins/sudoers/cvtsudoers.c:1178
+#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:634
+#: plugins/sudoers/defaults.c:927 plugins/sudoers/defaults.c:1102
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:603
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1951
+#: plugins/sudoers/log_client.c:2008 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:277 plugins/sudoers/match_command.c:445
+#: plugins/sudoers/match_command.c:495 plugins/sudoers/match_command.c:569
+#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:199
+#: plugins/sudoers/parse.c:213 plugins/sudoers/parse.c:230
+#: plugins/sudoers/parse.c:244 plugins/sudoers/parse.c:264
+#: plugins/sudoers/parse.c:275 plugins/sudoers/parse_ldif.c:153
+#: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253
+#: plugins/sudoers/parse_ldif.c:260 plugins/sudoers/parse_ldif.c:265
+#: plugins/sudoers/parse_ldif.c:341 plugins/sudoers/parse_ldif.c:352
+#: plugins/sudoers/parse_ldif.c:379 plugins/sudoers/parse_ldif.c:396
+#: plugins/sudoers/parse_ldif.c:408 plugins/sudoers/parse_ldif.c:412
+#: plugins/sudoers/parse_ldif.c:426 plugins/sudoers/parse_ldif.c:594
+#: plugins/sudoers/parse_ldif.c:624 plugins/sudoers/parse_ldif.c:649
+#: plugins/sudoers/parse_ldif.c:707 plugins/sudoers/parse_ldif.c:724
+#: plugins/sudoers/parse_ldif.c:752 plugins/sudoers/parse_ldif.c:759
+#: plugins/sudoers/policy.c:526 plugins/sudoers/policy.c:874
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:194
+#: plugins/sudoers/pwutil.c:265 plugins/sudoers/pwutil.c:343
+#: plugins/sudoers/pwutil.c:517 plugins/sudoers/pwutil.c:581
+#: plugins/sudoers/pwutil.c:652 plugins/sudoers/pwutil.c:811
+#: plugins/sudoers/pwutil.c:867 plugins/sudoers/pwutil.c:911
+#: plugins/sudoers/pwutil.c:968 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
+#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:298
+#: plugins/sudoers/sudoers.c:324 plugins/sudoers/sudoers.c:368
+#: plugins/sudoers/sudoers.c:379 plugins/sudoers/sudoers.c:389
+#: plugins/sudoers/sudoers.c:431 plugins/sudoers/sudoers.c:792
+#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
+#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
+#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/toke_util.c:51
+#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:129
+#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
+#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
+#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
+#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:916
+#: toke.l:1036 toke.l:1094
msgid "unable to allocate memory"
msgstr ""
-#: gram.y:552
+#: gram.y:556
msgid "a digest requires a path name"
msgstr ""
-#: gram.y:581
+#: gram.y:585
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr ""
-#: gram.y:593
+#: gram.y:597
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr ""
-#: gram.y:715
+#: gram.y:719
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr ""
-#: gram.y:735
+#: gram.y:739
msgid "invalid notbefore value"
msgstr ""
-#: gram.y:743
+#: gram.y:747
msgid "invalid notafter value"
msgstr ""
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:756 plugins/sudoers/policy.c:335
msgid "timeout value too large"
msgstr ""
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:758 plugins/sudoers/policy.c:337
msgid "invalid timeout value"
msgstr ""
-#: gram.y:1079
+#: gram.y:1077
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr ""
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
+#: gram.y:1121
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr ""
+
+#: gram.y:1534 lib/eventlog/eventlog.c:288 lib/eventlog/eventlog.c:761
+#: lib/eventlog/eventlog.c:823 lib/eventlog/eventlog.c:824
+#: lib/eventlog/eventlog.c:1070 lib/iolog/iolog_fileio.c:998
#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
+#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1290 logsrvd/logsrvd.c:1303
+#: logsrvd/logsrvd.c:1348 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
+#: plugins/sudoers/audit.c:265 plugins/sudoers/auth/pam.c:482
#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
+#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:634
+#: plugins/sudoers/defaults.c:927 plugins/sudoers/defaults.c:1102
#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
+#: plugins/sudoers/log_client.c:686 plugins/sudoers/log_client.c:704
+#: plugins/sudoers/log_client.c:1413 plugins/sudoers/log_client.c:1626
+#: plugins/sudoers/log_client.c:1951 plugins/sudoers/log_client.c:2008
#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: plugins/sudoers/match_command.c:276 plugins/sudoers/match_command.c:444
+#: plugins/sudoers/match_command.c:494 plugins/sudoers/match_command.c:569
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
+#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:298
+#: plugins/sudoers/sudoers.c:324 plugins/sudoers/sudoers.c:368
+#: plugins/sudoers/sudoers.c:379 plugins/sudoers/sudoers.c:389
+#: plugins/sudoers/sudoers.c:431 plugins/sudoers/sudoers.c:792
#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/toke_util.c:51
#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:916
+#: toke.l:1036 toke.l:1094
#, c-format
msgid "%s: %s"
msgstr ""
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
+#: lib/eventlog/eventlog.c:293 lib/iolog/iolog_json.c:463
#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
+#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:92
#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
msgid "internal error, %s overflow"
msgstr ""
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:351
#, c-format
msgid "unable to dup stdin: %m"
msgstr ""
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:396
#, c-format
msgid "unable to execute %s: %m"
msgstr ""
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:436 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr ""
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:444 lib/eventlog/eventlog.c:498
#, c-format
msgid "unable to fork: %m"
msgstr ""
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:488
#, c-format
msgid "unable to open pipe: %m"
msgstr ""
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:902
#, c-format
msgid "%8s : %s"
msgstr ""
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:931
#, c-format
msgid "%8s : (command continued) %s"
msgstr ""
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr ""
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:521 logsrvd/logsrvd.c:572
+#: logsrvd/logsrvd.c:604 logsrvd/logsrvd.c:636
msgid "state machine error"
msgstr ""
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr ""
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr ""
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr ""
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr ""
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr ""
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr ""
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr ""
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr ""
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:498
msgid "error parsing AlertMessage"
msgstr ""
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:506
msgid "error logging alert event"
msgstr ""
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:527 logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:610
msgid "protocol error"
msgstr ""
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:537
msgid "error writing IoBuffer"
msgstr ""
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:589
msgid "error writing ChangeWindowSize"
msgstr ""
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:621
msgid "error writing CommandSuspend"
msgstr ""
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:706
msgid "unrecognized ClientMessage type"
msgstr ""
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:977
msgid "client message too large"
msgstr ""
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1207 logsrvd/logsrvd.c:1215
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1235 logsrvd/logsrvd.c:1243
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1279
#, c-format
msgid "unable to get TLS server method: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1284
#, c-format
msgid "unable to create TLS context: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1291 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr ""
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1304 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr ""
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1349 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr ""
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1366 logsrvd/logsrvd.c:1375
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1388
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1573
msgid "unable to get remote IP addr"
msgstr ""
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1601 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
+#: logsrvd/logsrvd.c:1609 logsrvd/logsrvd.c:1731 logsrvd/logsrvd.c:1833
#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2016 plugins/sudoers/log_client.c:2024
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
msgid "unable to add event to queue"
msgstr ""
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1785 logsrvd/logsrvd.c:2027
msgid "unable setup listen socket"
msgstr ""
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
+#: logsrvd/logsrvd.c:1933 logsrvd/sendlog.c:124
#, c-format
msgid ""
"%s - send sudo I/O log to remote server\n"
"\n"
msgstr ""
-#: logsrvd/logsrvd.c:1920
+#: logsrvd/logsrvd.c:1936
msgid ""
"\n"
"Options:\n"
" -V, --version display version information and exit\n"
msgstr ""
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1988 logsrvd/sendlog.c:1719
msgid "Protobuf-C version 1.3 or higher required"
msgstr ""
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2006
#, c-format
msgid "invalid random drop value: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2010 logsrvd/sendlog.c:1769
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
#: plugins/sudoers/visudo.c:177
#, c-format
msgid "%s:%s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:410 logsrvd/logsrvd_conf.c:655
#, c-format
msgid "%s: not a fully qualified path"
msgstr ""
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:769
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:778
+#: logsrvd/logsrvd_conf.c:780
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:788
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:794
#, c-format
msgid "%s:%d expected section name: %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:808
#, c-format
msgid "invalid value for %s: %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:814
+#: logsrvd/logsrvd_conf.c:816
#, c-format
msgid "%s:%d unknown key: %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1005
#, c-format
msgid "unknown syslog facility %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1009 logsrvd/logsrvd_conf.c:1013
+#: logsrvd/logsrvd_conf.c:1017
#, c-format
msgid "unknown syslog priority %s"
msgstr ""
msgid "unable to read %s/%s: %s"
msgstr ""
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr ""
msgstr ""
#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr ""
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr ""
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr ""
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr ""
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr ""
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr ""
msgid "premature EOF"
msgstr ""
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1760
#, c-format
msgid "server message too large: %u"
msgstr ""
msgid "commit point received from server [%lld, %ld]"
msgstr ""
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr ""
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
+#: plugins/sudoers/audit.c:261 plugins/sudoers/audit.c:400
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
msgid "unable to get time of day"
msgstr ""
msgid "unable to commit audit record"
msgstr ""
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr ""
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr ""
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:617
+#: plugins/sudoers/cvtsudoers.c:634 plugins/sudoers/cvtsudoers.c:1244
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1053 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:922
+#, c-format
+msgid "unable to open %s"
+msgstr ""
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
"\n"
msgstr ""
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:835 plugins/sudoers/sudoers.c:856
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr ""
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1091
+#: plugins/sudoers/sudoers.c:438 plugins/sudoers/sudoers.c:1307
#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
#, c-format
msgid "unknown user: %s"
msgid "%s: input and output files must be different"
msgstr ""
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:176
#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
msgid "unable to initialize sudoers default values"
msgid "invalid filter: %s"
msgstr ""
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr ""
-
#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr ""
#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr ""
msgid "The format of logs to produce: %s"
msgstr ""
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr ""
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr ""
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1034
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr ""
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1038
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr ""
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1049
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr ""
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1053
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr ""
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr ""
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1135
msgid "unable to rebuild the environment"
msgstr ""
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1209
#, c-format
msgid ""
"sorry, you are not allowed to set the following environment variables: %s"
msgid "Local IP address and netmask pairs:\n"
msgstr ""
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:443
#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
#, c-format
msgid "unknown group: %s"
msgstr ""
#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
+#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:493
#: plugins/sudoers/visudo.c:499
msgid "unable to read the clock"
msgstr ""
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr ""
msgid "unable to convert sudoOption: %s%s%s"
msgstr ""
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr ""
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr ""
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2032
msgid "error in event loop"
msgstr ""
msgid "TLS handshake was unsuccessful"
msgstr ""
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr ""
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1723 plugins/sudoers/log_client.c:1747
msgid "lost connection to log server"
msgstr ""
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1824
msgid "missing write buffer"
msgstr ""
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1973
msgid "unable to connect to log server"
msgstr ""
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr ""
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:581
+#: plugins/sudoers/sudoers.c:583 plugins/sudoers/sudoers.c:585
+#: plugins/sudoers/sudoers.c:587 plugins/sudoers/sudoers.c:737
+#: plugins/sudoers/sudoers.c:739
#, c-format
msgid "%s: command not found"
msgstr ""
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:577
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
msgid "a password is required"
msgstr ""
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr ""
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr ""
msgid "unable to execute %s"
msgstr ""
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1114
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr ""
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1116
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr ""
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1120
#, c-format
msgid ""
"\n"
"Sudoers path: %s\n"
msgstr ""
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1123
#, c-format
msgid "nsswitch path: %s\n"
msgstr ""
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1125
#, c-format
msgid "ldap.conf path: %s\n"
msgstr ""
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1126
#, c-format
msgid "ldap.secret path: %s\n"
msgstr ""
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1159
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr ""
msgid "unable to find symbol \"%s\" in %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:212 plugins/sudoers/sudoers.c:1010
msgid "problem with defaults entries"
msgstr ""
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:216
msgid "no valid sudoers sources found, quitting"
msgstr ""
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:290
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:292
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:317
#, c-format
msgid "user not allowed to change directory to %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:349
msgid "sudoers specifies that root is not allowed to sudo"
msgstr ""
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:409
msgid "user not allowed to override closefrom limit"
msgstr ""
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:410
msgid "you are not permitted to use the -C option"
msgstr ""
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:470
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr ""
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:485
msgid "no tty"
msgstr ""
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:486
msgid "sorry, you must have a tty to run sudo"
msgstr ""
-#: plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:493
#, c-format
msgid "invalid shell for user %s: %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:576
msgid "command in current directory"
msgstr ""
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:595
msgid "user not allowed to set a command timeout"
msgstr ""
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:597
msgid "sorry, you are not allowed set a command timeout"
msgstr ""
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:605
msgid "user not allowed to preserve the environment"
msgstr ""
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:607
msgid "sorry, you are not allowed to preserve the environment"
msgstr ""
msgid "%s is not a regular file"
msgstr ""
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1115
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr ""
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1094 toke.l:1120
#, c-format
msgid "%s is world writable"
msgstr ""
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1098 toke.l:1123
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr ""
msgid "%s is group writable"
msgstr ""
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr ""
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr ""
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr ""
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr ""
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr ""
" -V, --version display version information and exit\n"
msgstr ""
-#: toke.l:179
+#: toke.l:182
msgid "empty string"
msgstr ""
-#: toke.l:189 toke.l:491
+#: toke.l:192 toke.l:494
msgid "empty group"
msgstr ""
-#: toke.l:197 toke.l:489
+#: toke.l:200 toke.l:492
msgid "empty netgroup"
msgstr ""
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:296 toke.l:308 toke.l:320 toke.l:336 toke.l:355 toke.l:395
msgid "invalid line continuation"
msgstr ""
-#: toke.l:528 toke.l:540
+#: toke.l:531 toke.l:543
msgid "invalid IPv6 address"
msgstr ""
-#: toke.l:764
+#: toke.l:767
msgid "unexpected line break in string"
msgstr ""
-#: toke.l:1084
+#: toke.l:1087
msgid "too many levels of includes"
msgstr ""
#
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.1b1\n"
+"Project-Id-Version: sudoers 1.9.4b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-06-05 10:24-0600\n"
-"PO-Revision-Date: 2020-06-07 19:26+0800\n"
+"POT-Creation-Date: 2020-11-14 06:24-0700\n"
+"PO-Revision-Date: 2020-12-26 03:34+0100\n"
"Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
-"Language-Team: Swedish <tp-sv-list@lists.sourceforge.net>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.3.1\n"
+"X-Generator: Poedit 2.4.2\n"
-#: confstr.sh:1
+#: confstr.sh:1 gram.y:1077
msgid "syntax error"
msgstr "syntaxfel"
msgid "Sorry, try again."
msgstr "Försök igen."
-#: gram.y:203 gram.y:251 gram.y:258 gram.y:265 gram.y:272 gram.y:279
-#: gram.y:295 gram.y:319 gram.y:326 gram.y:333 gram.y:340 gram.y:347
-#: gram.y:410 gram.y:419 gram.y:430 gram.y:463 gram.y:470 gram.y:477
-#: gram.y:484 gram.y:511 gram.y:583 gram.y:590 gram.y:599 gram.y:608
-#: gram.y:625 gram.y:737 gram.y:744 gram.y:752 gram.y:758 gram.y:858
-#: gram.y:865 gram.y:872 gram.y:879 gram.y:886 gram.y:912 gram.y:919
-#: gram.y:926 gram.y:1068 gram.y:1347 lib/iolog/iolog_fileio.c:1101
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:283
-#: lib/iolog/iolog_json.c:313 lib/iolog/iolog_json.c:435
-#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115
-#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133
-#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196
-#: logsrvd/eventlog.c:223 logsrvd/sendlog.c:443 plugins/sudoers/alias.c:125
-#: plugins/sudoers/alias.c:132 plugins/sudoers/alias.c:148
-#: plugins/sudoers/audit.c:108 plugins/sudoers/audit.c:212
-#: plugins/sudoers/auth/bsdauth.c:143 plugins/sudoers/auth/kerb5.c:118
-#: plugins/sudoers/auth/kerb5.c:144 plugins/sudoers/auth/pam.c:669
-#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59
-#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:161
-#: plugins/sudoers/cvtsudoers.c:178 plugins/sudoers/cvtsudoers.c:189
-#: plugins/sudoers/cvtsudoers.c:301 plugins/sudoers/cvtsudoers.c:429
-#: plugins/sudoers/cvtsudoers.c:562 plugins/sudoers/cvtsudoers.c:579
-#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757
-#: plugins/sudoers/cvtsudoers.c:765 plugins/sudoers/cvtsudoers.c:1179
-#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285
-#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
-#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
-#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
-#: plugins/sudoers/cvtsudoers_ldif.c:426 plugins/sudoers/cvtsudoers_ldif.c:434
-#: plugins/sudoers/cvtsudoers_ldif.c:451 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:607 plugins/sudoers/defaults.c:626
-#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052
-#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84
-#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261
+#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
+#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
+#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
+#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
+#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
+#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
+#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
+#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
+#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
+#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
+#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
+#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
+#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
+#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
+#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
+#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
+#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
+#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
+#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
+#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
+#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
+#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
+#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
+#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
+#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
+#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
+#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
+#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
+#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
+#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
+#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
+#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483
-#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:382
-#: plugins/sudoers/iolog_client.c:559 plugins/sudoers/iolog_client.c:678
-#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176
-#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723
-#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183
-#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431
-#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440
-#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743
-#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279
-#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743
-#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959
-#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
+#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83
-#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192
-#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545
-#: plugins/sudoers/logging.c:586 plugins/sudoers/logging.c:723
-#: plugins/sudoers/logging.c:1083 plugins/sudoers/match_command.c:243
-#: plugins/sudoers/match_command.c:391 plugins/sudoers/match_command.c:438
-#: plugins/sudoers/match_command.c:509 plugins/sudoers/match_digest.c:80
-#: plugins/sudoers/parse.c:193 plugins/sudoers/parse.c:205
-#: plugins/sudoers/parse.c:220 plugins/sudoers/parse.c:232
+#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
+#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
+#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
+#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
+#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
+#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
+#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
+#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
+#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:491
-#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262
-#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514
-#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649
-#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865
-#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967
-#: plugins/sudoers/sssd.c:146 plugins/sudoers/sssd.c:409
-#: plugins/sudoers/sssd.c:472 plugins/sudoers/sssd.c:516
-#: plugins/sudoers/sssd.c:563 plugins/sudoers/sssd.c:755
-#: plugins/sudoers/stubs.c:96 plugins/sudoers/stubs.c:104
-#: plugins/sudoers/sudoers.c:316 plugins/sudoers/sudoers.c:327
-#: plugins/sudoers/sudoers.c:337 plugins/sudoers/sudoers.c:380
-#: plugins/sudoers/sudoers.c:720 plugins/sudoers/sudoers.c:849
-#: plugins/sudoers/sudoers.c:894 plugins/sudoers/sudoers.c:1198
-#: plugins/sudoers/sudoreplay.c:553 plugins/sudoers/sudoreplay.c:556
-#: plugins/sudoers/sudoreplay.c:1260 plugins/sudoers/sudoreplay.c:1470
-#: plugins/sudoers/sudoreplay.c:1474 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
+#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
+#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
+#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
+#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
+#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
+#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
+#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
+#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
+#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
+#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
+#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
+#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:432
+#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:146
-#: plugins/sudoers/visudo.c:322 plugins/sudoers/visudo.c:328
-#: plugins/sudoers/visudo.c:438 plugins/sudoers/visudo.c:616
-#: plugins/sudoers/visudo.c:936 plugins/sudoers/visudo.c:1024
-#: plugins/sudoers/visudo.c:1121 toke.l:864 toke.l:981 toke.l:1039
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
+#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
+#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
+#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
+#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
msgid "unable to allocate memory"
msgstr "kan inte allokera minne"
-#: gram.y:505
+#: gram.y:552
msgid "a digest requires a path name"
msgstr "en kontrollsumma kräver ett sökvägsnamn"
-#: gram.y:638
+#: gram.y:581
+msgid "values for \"CWD\" must start with a '/', '~', or '*'"
+msgstr "värden för ”CWD” måste börja med ett ”/”, ”~” eller ”*”"
+
+#: gram.y:593
+msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
+msgstr "värden för ”CHROOT” måste börja med ett ”/”, ”~” eller ”*”"
+
+#: gram.y:715
+#, c-format
+msgid "syntax error, reserved word %s used as an alias name"
+msgstr "syntaxfel, reserverat ord %s använt som ett aliasnamn"
+
+#: gram.y:735
msgid "invalid notbefore value"
msgstr "ogiltigt notbefore-värde"
-#: gram.y:646
+#: gram.y:743
msgid "invalid notafter value"
msgstr "ogiltigt notafter-värde"
-#: gram.y:655 plugins/sudoers/policy.c:306
+#: gram.y:752 plugins/sudoers/policy.c:335
msgid "timeout value too large"
msgstr "tidsgränsvärde för stort"
-#: gram.y:657 plugins/sudoers/policy.c:308
+#: gram.y:754 plugins/sudoers/policy.c:337
msgid "invalid timeout value"
msgstr "ogiltigt värde för tidsgräns"
-#: gram.y:1347 lib/iolog/iolog_fileio.c:1101 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:282 lib/iolog/iolog_json.c:313
-#: lib/iolog/iolog_json.c:435 lib/iolog/iolog_json.c:713
-#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115
-#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133
-#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196
-#: logsrvd/eventlog.c:223 logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1221
-#: logsrvd/logsrvd.c:1266 logsrvd/sendlog.c:443 logsrvd/sendlog.c:1301
-#: logsrvd/sendlog.c:1308 logsrvd/sendlog.c:1726 plugins/sudoers/audit.c:108
-#: plugins/sudoers/audit.c:212 plugins/sudoers/auth/pam.c:482
+#: gram.y:1079
+#, c-format
+msgid "%s:%d:%d: %s\n"
+msgstr "%s:%d:%d: %s\n"
+
+#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
+#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
+#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
+#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
+#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
+#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
+#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
+#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
+#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
+#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
+#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:160
-#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
-#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
-#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
-#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757
-#: plugins/sudoers/cvtsudoers.c:764 plugins/sudoers/cvtsudoers.c:1179
-#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
+#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
+#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
+#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
+#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
+#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
+#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433
-#: plugins/sudoers/cvtsudoers_ldif.c:450 plugins/sudoers/cvtsudoers_ldif.c:459
-#: plugins/sudoers/cvtsudoers_ldif.c:606 plugins/sudoers/defaults.c:626
-#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052
-#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84
-#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:132
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483
-#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:215
-#: plugins/sudoers/iolog_client.c:236 plugins/sudoers/iolog_client.c:249
-#: plugins/sudoers/iolog_client.c:382 plugins/sudoers/iolog_client.c:678
-#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176
-#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723
-#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183
-#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431
-#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440
-#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743
-#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279
-#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743
-#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959
-#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
-#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83
-#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192
-#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545
-#: plugins/sudoers/logging.c:585 plugins/sudoers/logging.c:1083
-#: plugins/sudoers/match_command.c:242 plugins/sudoers/match_command.c:390
-#: plugins/sudoers/match_command.c:437 plugins/sudoers/match_command.c:509
-#: plugins/sudoers/match_digest.c:80 plugins/sudoers/parse.c:192
-#: plugins/sudoers/parse.c:204 plugins/sudoers/parse.c:219
-#: plugins/sudoers/parse.c:231 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
+#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
+#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
+#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
+#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
+#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
+#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
+#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
+#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
+#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
+#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
+#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
+#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
+#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
+#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
+#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
+#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
+#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:120 plugins/sudoers/policy.c:129
-#: plugins/sudoers/policy.c:138 plugins/sudoers/policy.c:164
-#: plugins/sudoers/policy.c:291 plugins/sudoers/policy.c:306
-#: plugins/sudoers/policy.c:308 plugins/sudoers/policy.c:337
-#: plugins/sudoers/policy.c:346 plugins/sudoers/policy.c:389
-#: plugins/sudoers/policy.c:399 plugins/sudoers/policy.c:408
-#: plugins/sudoers/policy.c:417 plugins/sudoers/policy.c:491
-#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262
-#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514
-#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649
-#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865
-#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967
+#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
+#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
+#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
+#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
+#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
+#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
+#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
+#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
+#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
+#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
+#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
+#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:145
-#: plugins/sudoers/sssd.c:409 plugins/sudoers/sssd.c:472
-#: plugins/sudoers/sssd.c:516 plugins/sudoers/sssd.c:563
-#: plugins/sudoers/sssd.c:755 plugins/sudoers/stubs.c:96
-#: plugins/sudoers/stubs.c:104 plugins/sudoers/sudoers.c:316
-#: plugins/sudoers/sudoers.c:327 plugins/sudoers/sudoers.c:337
-#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:720
-#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:894
-#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/sudoreplay.c:553
-#: plugins/sudoers/sudoreplay.c:556 plugins/sudoers/sudoreplay.c:1260
-#: plugins/sudoers/sudoreplay.c:1470 plugins/sudoers/sudoreplay.c:1474
+#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
+#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
+#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
+#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
+#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
+#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
+#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:146 plugins/sudoers/visudo.c:322
-#: plugins/sudoers/visudo.c:328 plugins/sudoers/visudo.c:438
-#: plugins/sudoers/visudo.c:616 plugins/sudoers/visudo.c:936
-#: plugins/sudoers/visudo.c:1024 plugins/sudoers/visudo.c:1121 toke.l:864
-#: toke.l:981 toke.l:1039
+#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
+#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
+#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
+#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
+#: toke.l:1033 toke.l:1091
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/iolog/iolog_fileio.c:157
+#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
+#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
+#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
+#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
+#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
+#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
+#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
+#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
+#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
+#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
+#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
+#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
+#: plugins/sudoers/toke_util.c:169
+#, c-format
+msgid "internal error, %s overflow"
+msgstr "internt fel, %s spill"
+
+#: lib/eventlog/eventlog.c:343
+#, c-format
+msgid "unable to dup stdin: %m"
+msgstr "kan inte duplicera stdin: %m"
+
+#: lib/eventlog/eventlog.c:388
+#, c-format
+msgid "unable to execute %s: %m"
+msgstr "kan inte köra %s: %m"
+
+#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+msgid "unable to fork"
+msgstr "kan inte grena process"
+
+#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#, c-format
+msgid "unable to fork: %m"
+msgstr "kan inte grena process: %m"
+
+#: lib/eventlog/eventlog.c:480
+#, c-format
+msgid "unable to open pipe: %m"
+msgstr "kan inte öppna rör: %m"
+
+#: lib/eventlog/eventlog.c:894
+#, c-format
+msgid "%8s : %s"
+msgstr "%8s : %s"
+
+#: lib/eventlog/eventlog.c:923
+#, c-format
+msgid "%8s : (command continued) %s"
+msgstr "%8s : (kommando fortsätter) %s"
+
+#: lib/iolog/iolog_fileio.c:155
#, c-format
msgid "%s exists but is not a directory (0%o)"
msgstr "%s finns men är inte en katalog (0%o)"
-#: lib/iolog/iolog_fileio.c:187 lib/iolog/iolog_fileio.c:233
+#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
#: plugins/sudoers/timestamp.c:205
#, c-format
msgid "unable to mkdir %s"
msgstr "kan inte skapa katalogen %s"
-#: lib/iolog/iolog_fileio.c:237 plugins/sudoers/visudo.c:733
-#: plugins/sudoers/visudo.c:744
+#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
+#: plugins/sudoers/visudo.c:743
#, c-format
msgid "unable to change mode of %s to 0%o"
msgstr "kan inte ändra läge för %s till 0%o"
msgid "expected JSON_STRING, got %d"
msgstr "förväntade JSON_STRING, fick %d"
-#: lib/iolog/iolog_json.c:305
+#: lib/iolog/iolog_json.c:327
msgid "missing double quote in name"
msgstr "saknar citationstecken i namn"
-#: lib/iolog/iolog_json.c:392
+#: lib/iolog/iolog_json.c:414
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "förväntade JSON_OBJECT, fick %d"
-#: lib/iolog/iolog_json.c:441 lib/iolog/iolog_json.c:444
-#: lib/iolog/iolog_json.c:446 lib/iolog/iolog_json.c:538
-#: logsrvd/eventlog.c:228 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:563
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:435 plugins/sudoers/iolog.c:561
-#: plugins/sudoers/iolog.c:577 plugins/sudoers/ldap.c:516
-#: plugins/sudoers/ldap.c:747 plugins/sudoers/ldap.c:1080
-#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
-#: plugins/sudoers/linux_audit.c:89 plugins/sudoers/logging.c:1088
-#: plugins/sudoers/policy.c:521 plugins/sudoers/policy.c:668
-#: plugins/sudoers/policy.c:678 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:916 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
-#, c-format
-msgid "internal error, %s overflow"
-msgstr "internt fel, %s spill"
-
-#: lib/iolog/iolog_json.c:607 lib/iolog/iolog_json.c:731
+#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
msgid "unmatched close brace"
msgstr "omatchad avslutningsklammerparentes"
-#: lib/iolog/iolog_json.c:616
+#: lib/iolog/iolog_json.c:638
msgid "unexpected array"
msgstr "oväntat array"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:733
+#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
msgid "unmatched close bracket"
msgstr "omatchad avslutningsklammer"
-#: lib/iolog/iolog_json.c:637
+#: lib/iolog/iolog_json.c:659
msgid "unexpected string"
msgstr "oväntad sträng"
-#: lib/iolog/iolog_json.c:647
+#: lib/iolog/iolog_json.c:669
msgid "missing colon after name"
msgstr "saknar kolon efter namn"
-#: lib/iolog/iolog_json.c:658 lib/iolog/iolog_json.c:673
-#: lib/iolog/iolog_json.c:688
+#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
+#: lib/iolog/iolog_json.c:710
msgid "unexpected boolean"
msgstr "oväntad boolean"
-#: lib/iolog/iolog_json.c:704
+#: lib/iolog/iolog_json.c:726
msgid "unexpected number"
msgstr "oväntat nummer"
-#: lib/iolog/iolog_json.c:741
+#: lib/iolog/iolog_json.c:763
#, c-format
msgid "%s:%u unable to parse \"%s\""
msgstr "%s:%u kan inte tolka ”%s”"
msgid "invalid timing file line: %s"
msgstr "ogiltig rad i tidsmätningsfil: %s"
-#: logsrvd/eventlog.c:430 plugins/sudoers/logging.c:112
-#, c-format
-msgid "%8s : %s"
-msgstr "%8s : %s"
-
-#: logsrvd/eventlog.c:459 plugins/sudoers/logging.c:136
-#, c-format
-msgid "%8s : (command continued) %s"
-msgstr "%8s : (kommando fortsätter) %s"
-
-#: logsrvd/iolog_writer.c:936
+#: logsrvd/iolog_writer.c:919
msgid "log is already complete, cannot be restarted"
msgstr "logg är redan komplett, kan inte startas om"
-#: logsrvd/iolog_writer.c:967
+#: logsrvd/iolog_writer.c:950
msgid "unable to restart log"
msgstr "kan inte starta om logg"
-#: logsrvd/logsrv_util.c:98 logsrvd/logsrv_util.c:105
-#: plugins/sudoers/sudoreplay.c:353 plugins/sudoers/sudoreplay.c:359
+#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106
+#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358
#, c-format
msgid "unable to open %s/%s"
msgstr "kan inte öppna %s/%s"
-#: logsrvd/logsrv_util.c:132
+#: logsrvd/logsrv_util.c:133
#, c-format
msgid "missing I/O log file %s/%s"
msgstr "saknar I/O-loggfil %s/%s"
-#: logsrvd/logsrv_util.c:139
+#: logsrvd/logsrv_util.c:140
#, c-format
msgid "%s/%s: unable to seek forward %zu"
msgstr "%s/%s: kan inte söka framåt %zu"
-#: logsrvd/logsrv_util.c:149
+#: logsrvd/logsrv_util.c:150
#, c-format
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "kan inte hitta omstartspunkt [%lld, %ld] i %s/%s"
-#: logsrvd/logsrvd.c:230 logsrvd/logsrvd.c:299 logsrvd/logsrvd.c:343
-#: logsrvd/logsrvd.c:398 logsrvd/logsrvd.c:445 logsrvd/logsrvd.c:496
-#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:560
+#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
+#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
+#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
msgid "state machine error"
msgstr "fel i tillståndsmaskin"
-#: logsrvd/logsrvd.c:239
+#: logsrvd/logsrvd.c:299
msgid "invalid AcceptMessage"
msgstr "ogiltigt AcceptMessage"
-#: logsrvd/logsrvd.c:250
+#: logsrvd/logsrvd.c:307
msgid "error parsing AcceptMessage"
msgstr "fel vid tolkning av AcceptMessage"
-#: logsrvd/logsrvd.c:257
+#: logsrvd/logsrvd.c:314
msgid "error creating I/O log"
msgstr "fel vid skapande av I/O-logg"
-#: logsrvd/logsrvd.c:265
+#: logsrvd/logsrvd.c:321
msgid "error logging accept event"
msgstr "fel vid loggning av acceptanshändelse"
-#: logsrvd/logsrvd.c:308
+#: logsrvd/logsrvd.c:362
msgid "invalid RejectMessage"
msgstr "ogiltigt RejectMessage"
-#: logsrvd/logsrvd.c:319
+#: logsrvd/logsrvd.c:370
msgid "error parsing RejectMessage"
msgstr "fel vid tolkning av RejectMessage"
-#: logsrvd/logsrvd.c:325
+#: logsrvd/logsrvd.c:376
msgid "error logging reject event"
msgstr "fel vid loggning av avböjningshändelse"
-#: logsrvd/logsrvd.c:430
+#: logsrvd/logsrvd.c:486
+msgid "invalid AlertMessage"
+msgstr "ogiltigt AlertMessage"
+
+#: logsrvd/logsrvd.c:494
+msgid "error parsing AlertMessage"
+msgstr "fel vid tolkning av AlertMessage"
+
+#: logsrvd/logsrvd.c:502
msgid "error logging alert event"
msgstr "fel vid loggning av alarmhändelse"
-#: logsrvd/logsrvd.c:451 logsrvd/logsrvd.c:502 logsrvd/logsrvd.c:534
+#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
msgid "protocol error"
msgstr "protokollfel"
-#: logsrvd/logsrvd.c:461
+#: logsrvd/logsrvd.c:533
msgid "error writing IoBuffer"
msgstr "fel vid skrivning av IoBuffer"
-#: logsrvd/logsrvd.c:513
+#: logsrvd/logsrvd.c:585
msgid "error writing ChangeWindowSize"
msgstr "fel vid skrivning av ChangeWindowSize"
-#: logsrvd/logsrvd.c:545
+#: logsrvd/logsrvd.c:617
msgid "error writing CommandSuspend"
msgstr "fel vid skrivning av CommandSuspend"
-#: logsrvd/logsrvd.c:630
+#: logsrvd/logsrvd.c:702
msgid "unrecognized ClientMessage type"
msgstr "okänd ClientMessage-typ"
-#: logsrvd/logsrvd.c:895
+#: logsrvd/logsrvd.c:967
msgid "client message too large"
msgstr "klientmeddelande för stort"
-#: logsrvd/logsrvd.c:1125 logsrvd/logsrvd.c:1133
+#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "kan inte ställa in TLS 1.2-krypteringssvit till %s: %s"
-#: logsrvd/logsrvd.c:1153 logsrvd/logsrvd.c:1161
+#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "kan inte ställa in TLS 1.3-krypteringssvit till %s: %s"
-#: logsrvd/logsrvd.c:1197
+#: logsrvd/logsrvd.c:1269
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "kan inte hämta TLS-servermetod: %s"
-#: logsrvd/logsrvd.c:1202
+#: logsrvd/logsrvd.c:1274
#, c-format
msgid "unable to create TLS context: %s"
msgstr "kan inte skapa TLS-kontext: %s"
-#: logsrvd/logsrvd.c:1209 plugins/sudoers/iolog_client.c:237
+#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "kan inte läsa in certifikat %s"
-#: logsrvd/logsrvd.c:1222 plugins/sudoers/iolog_client.c:217
+#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "kan inte läsa in certifikatauktoritetsbunt %s"
-#: logsrvd/logsrvd.c:1267 plugins/sudoers/iolog_client.c:250
+#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "kan inte läsa in privat nyckel %s"
-#: logsrvd/logsrvd.c:1284 logsrvd/logsrvd.c:1293
+#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "kunde inte sätta diffie-hellman-parametrar: %s"
-#: logsrvd/logsrvd.c:1306
+#: logsrvd/logsrvd.c:1378
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "kunde inte sätta minsta protokollversion till TLS 1.2: %s"
-#: logsrvd/logsrvd.c:1491
+#: logsrvd/logsrvd.c:1563
msgid "unable to get remote IP addr"
msgstr "kan inte hämta fjärr-IP-adress"
-#: logsrvd/logsrvd.c:1519 plugins/sudoers/iolog_client.c:264
+#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "Kan inte fästa användardata på ssl-objektet: %s"
-#: logsrvd/logsrvd.c:1527 logsrvd/logsrvd.c:1649 logsrvd/logsrvd.c:1749
-#: logsrvd/sendlog.c:1105 logsrvd/sendlog.c:1461 logsrvd/sendlog.c:1476
-#: logsrvd/sendlog.c:1534 plugins/sudoers/iolog.c:921
-#: plugins/sudoers/iolog.c:1054 plugins/sudoers/iolog.c:1152
-#: plugins/sudoers/iolog_client.c:109 plugins/sudoers/iolog_client.c:325
-#: plugins/sudoers/iolog_client.c:341 plugins/sudoers/iolog_client.c:387
-#: plugins/sudoers/iolog_client.c:567 plugins/sudoers/iolog_client.c:574
-#: plugins/sudoers/iolog_client.c:1150 plugins/sudoers/iolog_client.c:1186
-#: plugins/sudoers/iolog_client.c:1194 plugins/sudoers/iolog_client.c:1254
-#: plugins/sudoers/iolog_client.c:1361 plugins/sudoers/iolog_client.c:1477
-#: plugins/sudoers/iolog_client.c:1759 plugins/sudoers/iolog_client.c:1767
-#: plugins/sudoers/sudoreplay.c:513 plugins/sudoers/sudoreplay.c:560
-#: plugins/sudoers/sudoreplay.c:792 plugins/sudoers/sudoreplay.c:904
-#: plugins/sudoers/sudoreplay.c:994 plugins/sudoers/sudoreplay.c:1009
-#: plugins/sudoers/sudoreplay.c:1016 plugins/sudoers/sudoreplay.c:1023
-#: plugins/sudoers/sudoreplay.c:1030 plugins/sudoers/sudoreplay.c:1037
-#: plugins/sudoers/sudoreplay.c:1164
+#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
+#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
+#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
+#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
+#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
+#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
+#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
+#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
+#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
+#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
+#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
+#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022
+#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036
+#: plugins/sudoers/sudoreplay.c:1163
msgid "unable to add event to queue"
msgstr "kan inte lägga till händelse till kö"
-#: logsrvd/logsrvd.c:1703 logsrvd/logsrvd.c:1937
+#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
msgid "unable setup listen socket"
msgstr "kan inte ställa in lyssningsuttag"
-#: logsrvd/logsrvd.c:1843 logsrvd/sendlog.c:123
+#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
#, c-format
msgid ""
"%s - send sudo I/O log to remote server\n"
"%s - skicka sudo I/O-logg till fjärrserver\n"
"\n"
-#: logsrvd/logsrvd.c:1846
+#: logsrvd/logsrvd.c:1920
msgid ""
"\n"
"Options:\n"
" -R, --random-drop antal procents chans att anslutningar bryts\n"
" -V, --version visa versionsinformation och avsluta\n"
-#: logsrvd/logsrvd.c:1898 logsrvd/sendlog.c:1699
+#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Protobuf-C version 1.3 eller högre krävs"
-#: logsrvd/logsrvd.c:1916
+#: logsrvd/logsrvd.c:1990
#, c-format
msgid "invalid random drop value: %s"
msgstr "ogiltigt slumpmässigt avbrottsvärde: %s"
-#: logsrvd/logsrvd.c:1920 logsrvd/sendlog.c:1749
-#: plugins/sudoers/cvtsudoers.c:229 plugins/sudoers/sudoreplay.c:300
-#: plugins/sudoers/visudo.c:178
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
+#: plugins/sudoers/visudo.c:177
#, c-format
msgid "%s version %s\n"
msgstr "%s version %s\n"
-#: logsrvd/logsrvd_conf.c:393
+#: logsrvd/logsrvd_conf.c:331
msgid "TLS not supported"
msgstr "TLS stöds inte"
-#: logsrvd/logsrvd_conf.c:405
+#: logsrvd/logsrvd_conf.c:343
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:471 logsrvd/logsrvd_conf.c:715
+#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: inte fullständigt kvalificerad sökväg"
-#: logsrvd/logsrvd_conf.c:829
+#: logsrvd/logsrvd_conf.c:767
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d omatchad ”[”: %s"
-#: logsrvd/logsrvd_conf.c:840
+#: logsrvd/logsrvd_conf.c:778
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s:%d ogiltigt konfigurationsavsnitt: %s"
-#: logsrvd/logsrvd_conf.c:848
+#: logsrvd/logsrvd_conf.c:786
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d ogiltig konfigurationsrad: %s"
-#: logsrvd/logsrvd_conf.c:854
+#: logsrvd/logsrvd_conf.c:792
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d avsnittsnamn förväntades: %s"
-#: logsrvd/logsrvd_conf.c:868
+#: logsrvd/logsrvd_conf.c:806
#, c-format
msgid "invalid value for %s: %s"
msgstr "ogiltigt värde för %s: %s"
-#: logsrvd/logsrvd_conf.c:876
+#: logsrvd/logsrvd_conf.c:814
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d okänd nyckel: %s"
-#: logsrvd/logsrvd_conf.c:1032
+#: logsrvd/logsrvd_conf.c:1003
#, c-format
msgid "unknown syslog facility %s"
msgstr "okänd syslog-funktionalitet: %s"
-#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1040
-#: logsrvd/logsrvd_conf.c:1044
+#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
+#: logsrvd/logsrvd_conf.c:1015
#, c-format
msgid "unknown syslog priority %s"
msgstr "okänd syslog-prioritet: %s"
-#: logsrvd/sendlog.c:126
+#: logsrvd/sendlog.c:127
msgid ""
"\n"
"Options:\n"
" -t, --test testa granskningsserver genom att skicka valda I/O-loggmeddelanden parallellt n gånger\n"
" -V, --version visa versionsinformation och avsluta\n"
-#: logsrvd/sendlog.c:163 plugins/sudoers/iolog_client.c:433
+#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "kan inte slå upp %s:%s: %s"
-#: logsrvd/sendlog.c:186
+#: logsrvd/sendlog.c:202
msgid "unable to get server IP addr"
msgstr "kan inte hämta server-IP-adress"
-#: logsrvd/sendlog.c:240 plugins/sudoers/sudoreplay.c:852
+#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "kan inte läsa %s/%s: %s"
-#: logsrvd/sendlog.c:261 plugins/sudoers/iolog_client.c:684
+#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
#, c-format
msgid "client message too large: %zu"
msgstr "klientmeddelande för stort: %zu"
-#: logsrvd/sendlog.c:790
+#: logsrvd/sendlog.c:810
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: skrivbuffert används redan"
-#: logsrvd/sendlog.c:842 plugins/sudoers/iolog.c:845
-#: plugins/sudoers/iolog.c:914
+#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
+#: plugins/sudoers/iolog.c:949
#, c-format
msgid "unexpected I/O event %d"
msgstr "oväntad I/O-händelse %d"
-#: logsrvd/sendlog.c:888 logsrvd/sendlog.c:905 logsrvd/sendlog.c:939
-#: plugins/sudoers/iolog_client.c:1155 plugins/sudoers/iolog_client.c:1225
-#: plugins/sudoers/iolog_client.c:1273
+#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
+#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
+#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: oväntat tillstånd %d"
-#: logsrvd/sendlog.c:911 plugins/sudoers/iolog_client.c:1231
+#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
msgid "invalid ServerHello"
msgstr "ogiltigt ServerHello"
-#: logsrvd/sendlog.c:975 plugins/sudoers/iolog_client.c:1317
+#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
#, c-format
msgid "error message received from server: %s"
msgstr "felmeddelande mottaget från server: %s"
-#: logsrvd/sendlog.c:988 plugins/sudoers/iolog_client.c:1330
+#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
#, c-format
msgid "abort message received from server: %s"
msgstr "avbrottsmeddelande mottaget från server: %s"
-#: logsrvd/sendlog.c:1007 plugins/sudoers/iolog_client.c:1349
+#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
msgid "unable to unpack ServerMessage"
msgstr "kan inte packa upp ServerMessage"
-#: logsrvd/sendlog.c:1047 plugins/sudoers/iolog_client.c:1382
+#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: oväntat type_case-värde %d"
-#: logsrvd/sendlog.c:1076
+#: logsrvd/sendlog.c:1096
msgid "timeout reading from server"
msgstr "tidsgräns passerad vid läsning från server"
-#: logsrvd/sendlog.c:1154
+#: logsrvd/sendlog.c:1174
msgid "premature EOF"
msgstr "oväntad EOF"
-#: logsrvd/sendlog.c:1167 plugins/sudoers/iolog_client.c:1536
+#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
#, c-format
msgid "server message too large: %u"
msgstr "servermeddelande för långt: %u"
-#: logsrvd/sendlog.c:1218
+#: logsrvd/sendlog.c:1238
msgid "timeout writing to server"
msgstr "tidsgräns passerad vid skrivning till server"
-#: logsrvd/sendlog.c:1437 plugins/sudoers/iolog_client.c:297
+#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "Tidsgräns för TLS-handskakning uppnådd"
-#: logsrvd/sendlog.c:1456 logsrvd/sendlog.c:1471
-#: plugins/sudoers/iolog_client.c:319 plugins/sudoers/iolog_client.c:335
+#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "kan inte ställa in händelse"
-#: logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1485
+#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
#, c-format
msgid "TLS connection failed: %s"
msgstr "TLS-anslutning misslyckades: %s"
-#: logsrvd/sendlog.c:1518
+#: logsrvd/sendlog.c:1538
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "Kan inte initiera ssl-kontext: %s"
-#: logsrvd/sendlog.c:1523 plugins/sudoers/iolog_client.c:259
+#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "Kan inte allokera ssl-objekt: %s"
-#: logsrvd/sendlog.c:1528
+#: logsrvd/sendlog.c:1548
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "Kan inte fästa kontakt på ssl-objektet: %s"
-#: logsrvd/sendlog.c:1772
+#: logsrvd/sendlog.c:1792
msgid "both restart point and iolog ID must be specified"
msgstr "både omstartspunkt och iolog-ID måste anges"
-#: logsrvd/sendlog.c:1776
+#: logsrvd/sendlog.c:1796
msgid "a restart point may not be set when no I/O is sent"
msgstr "en omstartspunkt får inte sättas när ingen I/O skickas"
-#: logsrvd/sendlog.c:1851
+#: logsrvd/sendlog.c:1871
#, c-format
msgid "exited prematurely with state %d"
msgstr "avslutade oväntat i tillstånd %d"
-#: logsrvd/sendlog.c:1852
+#: logsrvd/sendlog.c:1872
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "förfluten tid skickad till server [%lld, %ld]"
-#: logsrvd/sendlog.c:1854
+#: logsrvd/sendlog.c:1874
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "incheckningspunkt mottagen från server [%lld, %ld]"
-#: plugins/sudoers/alias.c:144
+#: plugins/sudoers/alias.c:148
#, c-format
msgid "Alias \"%s\" already defined"
msgstr "Aliaset ”%s” är redan definierat"
-#: plugins/sudoers/auth/aix_auth.c:198 plugins/sudoers/logging.c:784
-msgid "unable to fork"
-msgstr "kan inte grena process"
+#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
+#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
+#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+msgid "unable to get time of day"
+msgstr "kan inte hämta tid på dagen"
-#: plugins/sudoers/auth/aix_auth.c:278
+#: plugins/sudoers/auth/aix_auth.c:277
#, c-format
msgid "unable to change password for %s"
msgstr "kan inte ändra lösenord för %s"
msgid "unable to initialize BSD authentication"
msgstr "kan inte initiera BSD-autentisering"
-#: plugins/sudoers/auth/bsdauth.c:180
+#: plugins/sudoers/auth/bsdauth.c:179
msgid "your account has expired"
msgstr "ditt konto har gått ut"
-#: plugins/sudoers/auth/bsdauth.c:182
+#: plugins/sudoers/auth/bsdauth.c:181
msgid "approval failed"
msgstr "godkännande misslyckades"
msgid "PAM account management error: %s"
msgstr "Fel vid hantering av PAM-konto: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:242
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
#, c-format
msgid "you do not exist in the %s database"
msgstr "du finns inte i %s-databasen"
msgid "SecurID communication failed"
msgstr "SecurID-kommunikation misslyckades"
-#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:212
+#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:210
msgid "unknown SecurID error"
msgstr "okänt SecurID-fel"
msgid "invalid passcode length for SecurID"
msgstr "ogiltig lösenordslängd för SecurID"
-#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:124
+#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:123
msgid "unable to initialize SIA session"
msgstr "kan inte initiera SIA-session"
msgid "Unable to initialize authentication methods."
msgstr "Kan inte initiera autentiseringsmetoder."
-#: plugins/sudoers/auth/sudo_auth.c:473
+#: plugins/sudoers/auth/sudo_auth.c:471
msgid "Authentication methods:"
msgstr "Autentiseringsmetoder:"
"\n"
#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:763 plugins/sudoers/sudoers.c:811
+#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "okänt uid: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/iolog.c:117
-#: plugins/sudoers/policy.c:1037 plugins/sudoers/sudoers.c:387
-#: plugins/sudoers/sudoers.c:388 plugins/sudoers/sudoers.c:1240
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:392
+#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
+#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
+#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
#, c-format
msgid "unknown user: %s"
msgstr "okänd användare: %s"
-#: plugins/sudoers/cvtsudoers.c:195
+#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
msgstr "ordningsinkrement: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:211
+#: plugins/sudoers/cvtsudoers.c:210
#, c-format
msgid "starting order: %s: %s"
msgstr "startordning: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:221
+#: plugins/sudoers/cvtsudoers.c:220
#, c-format
msgid "order padding: %s: %s"
msgstr "ordningsutfyllnad: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:231 plugins/sudoers/visudo.c:180
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
#, c-format
msgid "%s grammar version %d\n"
msgstr "%s grammatikversion %d\n"
-#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/testsudoers.c:167
+#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/testsudoers.c:167
#, c-format
msgid "unsupported input format %s"
msgstr "inmatningsformat %s stöds inte"
-#: plugins/sudoers/cvtsudoers.c:263
+#: plugins/sudoers/cvtsudoers.c:262
#, c-format
msgid "unsupported output format %s"
msgstr "utmatningsformat %s stöds inte"
-#: plugins/sudoers/cvtsudoers.c:315
+#: plugins/sudoers/cvtsudoers.c:314
#, c-format
msgid "%s: input and output files must be different"
msgstr "%s: in- och utmatningsfiler måste vara olika"
-#: plugins/sudoers/cvtsudoers.c:331 plugins/sudoers/sudoers.c:181
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:248
-#: plugins/sudoers/visudo.c:604 plugins/sudoers/visudo.c:927
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
+#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
+#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
msgid "unable to initialize sudoers default values"
msgstr "kan inte initiera sudoers standardvärden"
-#: plugins/sudoers/cvtsudoers.c:417 plugins/sudoers/ldap_conf.c:431
+#: plugins/sudoers/cvtsudoers.c:416 plugins/sudoers/ldap_conf.c:431
#, c-format
msgid "%s: %s: %s: %s"
msgstr "%s: %s: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:476
+#: plugins/sudoers/cvtsudoers.c:475
#, c-format
msgid "%s: unknown key word: %s"
msgstr "%s: okänt nyckelord: %s"
-#: plugins/sudoers/cvtsudoers.c:522
+#: plugins/sudoers/cvtsudoers.c:521
#, c-format
msgid "invalid defaults type: %s"
msgstr "ogiltig standardtyp: %s"
-#: plugins/sudoers/cvtsudoers.c:545
+#: plugins/sudoers/cvtsudoers.c:544
#, c-format
msgid "invalid suppression type: %s"
msgstr "ogiltig undertryckningstyp: %s"
-#: plugins/sudoers/cvtsudoers.c:585 plugins/sudoers/cvtsudoers.c:599
+#: plugins/sudoers/cvtsudoers.c:584 plugins/sudoers/cvtsudoers.c:598
#, c-format
msgid "invalid filter: %s"
msgstr "ogiltigt filter: %s"
-#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:635
-#: plugins/sudoers/cvtsudoers.c:1245 plugins/sudoers/cvtsudoers_json.c:861
-#: plugins/sudoers/cvtsudoers_ldif.c:680 plugins/sudoers/sudoers.c:986
-#: plugins/sudoers/sudoreplay.c:1436 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:923
+#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
+#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
+#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
+#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
+#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
#, c-format
msgid "unable to open %s"
msgstr "kan inte öppna %s"
-#: plugins/sudoers/cvtsudoers.c:638 plugins/sudoers/visudo.c:932
+#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "misslyckades med att tolka %s-filen, okänt fel"
-#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/visudo.c:949
+#: plugins/sudoers/cvtsudoers.c:645
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "tolkningsfel i %s nära rad %d\n"
-#: plugins/sudoers/cvtsudoers.c:649 plugins/sudoers/visudo.c:952
+#: plugins/sudoers/cvtsudoers.c:648
#, c-format
msgid "parse error in %s\n"
msgstr "tolkningsfel i %s\n"
-#: plugins/sudoers/cvtsudoers.c:1292 plugins/sudoers/sudoreplay.c:1125
+#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
#, c-format
msgid "unable to write to %s"
msgstr "kan inte skriva till %s"
-#: plugins/sudoers/cvtsudoers.c:1315
+#: plugins/sudoers/cvtsudoers.c:1314
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
"%s - konvertera mellan sudoers filformat\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1317
+#: plugins/sudoers/cvtsudoers.c:1316
msgid ""
"\n"
"Options:\n"
" -V, --version visa versionsinformation och avsluta"
#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514
-#: plugins/sudoers/cvtsudoers_json.c:702
+#: plugins/sudoers/cvtsudoers_json.c:713
#, c-format
msgid "unknown defaults entry \"%s\""
msgstr "okänd standardpost ”%s”"
-#: plugins/sudoers/cvtsudoers_json.c:640 plugins/sudoers/cvtsudoers_json.c:653
-#: plugins/sudoers/cvtsudoers_ldif.c:345 plugins/sudoers/cvtsudoers_ldif.c:356
-#: plugins/sudoers/ldap.c:502
+#: plugins/sudoers/cvtsudoers_json.c:651 plugins/sudoers/cvtsudoers_json.c:664
+#: plugins/sudoers/cvtsudoers_ldif.c:346 plugins/sudoers/cvtsudoers_ldif.c:357
+#: plugins/sudoers/ldap.c:503
msgid "unable to get GMT time"
msgstr "kan inte hämta GMT-tid"
-#: plugins/sudoers/cvtsudoers_json.c:643 plugins/sudoers/cvtsudoers_json.c:656
-#: plugins/sudoers/cvtsudoers_ldif.c:348 plugins/sudoers/cvtsudoers_ldif.c:359
-#: plugins/sudoers/ldap.c:508
+#: plugins/sudoers/cvtsudoers_json.c:654 plugins/sudoers/cvtsudoers_json.c:667
+#: plugins/sudoers/cvtsudoers_ldif.c:349 plugins/sudoers/cvtsudoers_ldif.c:360
+#: plugins/sudoers/ldap.c:509
msgid "unable to format timestamp"
msgstr "kan inte formatera tidsstämpel"
-#: plugins/sudoers/cvtsudoers_ldif.c:632
+#: plugins/sudoers/cvtsudoers_ldif.c:640
#, c-format
msgid "too many sudoers entries, maximum %u"
msgstr "för många sudoers-poster, maximalt %u"
-#: plugins/sudoers/cvtsudoers_ldif.c:675
+#: plugins/sudoers/cvtsudoers_ldif.c:683
msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified."
msgstr "miljövariabeln SUDOERS_BASE är inte satt och flaggan -b angavs inte."
-#: plugins/sudoers/def_data.c:42
+#: plugins/sudoers/def_data.c:50
#, c-format
msgid "Syslog facility if syslog is being used for logging: %s"
msgstr "Syslog-facilitet om syslog används för loggning: %s"
-#: plugins/sudoers/def_data.c:46
+#: plugins/sudoers/def_data.c:54
#, c-format
msgid "Syslog priority to use when user authenticates successfully: %s"
msgstr "Syslog-prioritet att använda när användaren lyckas med autentisering: %s"
-#: plugins/sudoers/def_data.c:50
+#: plugins/sudoers/def_data.c:58
#, c-format
msgid "Syslog priority to use when user authenticates unsuccessfully: %s"
msgstr "Syslog-prioritet att använda när användaren misslyckas med autentisering: %s"
-#: plugins/sudoers/def_data.c:54
+#: plugins/sudoers/def_data.c:62
msgid "Put OTP prompt on its own line"
msgstr "Lägg OTP-prompt på en egen rad"
-#: plugins/sudoers/def_data.c:58
+#: plugins/sudoers/def_data.c:66
msgid "Ignore '.' in $PATH"
msgstr "Ignorera ”.” i $PATH"
-#: plugins/sudoers/def_data.c:62
+#: plugins/sudoers/def_data.c:70
msgid "Always send mail when sudo is run"
msgstr "Skicka alltid e-post när sudo körs"
-#: plugins/sudoers/def_data.c:66
+#: plugins/sudoers/def_data.c:74
msgid "Send mail if user authentication fails"
msgstr "Skicka e-post om användarens autentisering misslyckas"
-#: plugins/sudoers/def_data.c:70
+#: plugins/sudoers/def_data.c:78
msgid "Send mail if the user is not in sudoers"
msgstr "Skicka e-post om användaren inte finns med i sudoers"
-#: plugins/sudoers/def_data.c:74
+#: plugins/sudoers/def_data.c:82
msgid "Send mail if the user is not in sudoers for this host"
msgstr "Skicka e-post om användaren inte finns med i sudoers för denna värddator"
-#: plugins/sudoers/def_data.c:78
+#: plugins/sudoers/def_data.c:86
msgid "Send mail if the user is not allowed to run a command"
msgstr "Skicka e-post om användaren inte tillåts att köra ett kommando"
-#: plugins/sudoers/def_data.c:82
+#: plugins/sudoers/def_data.c:90
msgid "Send mail if the user tries to run a command"
msgstr "Skicka e-post om användaren försöker köra ett kommando"
-#: plugins/sudoers/def_data.c:86
+#: plugins/sudoers/def_data.c:94
msgid "Use a separate timestamp for each user/tty combo"
msgstr "Använd en separat tidsstämpel för varje användar-/tty-kombination"
-#: plugins/sudoers/def_data.c:90
+#: plugins/sudoers/def_data.c:98
msgid "Lecture user the first time they run sudo"
msgstr "Lär upp användaren första gången de kör sudo"
-#: plugins/sudoers/def_data.c:94
+#: plugins/sudoers/def_data.c:102
#, c-format
msgid "File containing the sudo lecture: %s"
msgstr "Fil som innehåller sudo-lektion: %s"
-#: plugins/sudoers/def_data.c:98
+#: plugins/sudoers/def_data.c:106
msgid "Require users to authenticate by default"
msgstr "Kräv att användare autentiseras som standard"
-#: plugins/sudoers/def_data.c:102
+#: plugins/sudoers/def_data.c:110
msgid "Root may run sudo"
msgstr "Root får köra sudo"
-#: plugins/sudoers/def_data.c:106
+#: plugins/sudoers/def_data.c:114
msgid "Log the hostname in the (non-syslog) log file"
msgstr "Logga värdnamnet i (den icke syslog-baserade) loggfilen"
-#: plugins/sudoers/def_data.c:110
+#: plugins/sudoers/def_data.c:118
msgid "Log the year in the (non-syslog) log file"
msgstr "Logga året i (den icke syslog-baserade) loggfilen"
-#: plugins/sudoers/def_data.c:114
+#: plugins/sudoers/def_data.c:122
msgid "If sudo is invoked with no arguments, start a shell"
msgstr "Om sudo startas utan argument, starta ett skal"
-#: plugins/sudoers/def_data.c:118
+#: plugins/sudoers/def_data.c:126
msgid "Set $HOME to the target user when starting a shell with -s"
msgstr "Ställ in $HOME till målanvändaren när ett skal startas med -s"
-#: plugins/sudoers/def_data.c:122
+#: plugins/sudoers/def_data.c:130
msgid "Always set $HOME to the target user's home directory"
msgstr "Ställ alltid in $HOME till målanvändarens hemkatalog"
-#: plugins/sudoers/def_data.c:126
+#: plugins/sudoers/def_data.c:134
msgid "Allow some information gathering to give useful error messages"
msgstr "Tillåt viss informationsinsamling för att ge meningsfulla felmeddelanden"
-#: plugins/sudoers/def_data.c:130
+#: plugins/sudoers/def_data.c:138
msgid "Require fully-qualified hostnames in the sudoers file"
msgstr "Kräv fullständiga värdnamn i sudoers-filen"
-#: plugins/sudoers/def_data.c:134
+#: plugins/sudoers/def_data.c:142
msgid "Insult the user when they enter an incorrect password"
msgstr "Förolämpa användaren när de anger ett felaktigt lösenord"
-#: plugins/sudoers/def_data.c:138
+#: plugins/sudoers/def_data.c:146
msgid "Only allow the user to run sudo if they have a tty"
msgstr "Tillåt bara användare att köra sudo om de har en tty"
-#: plugins/sudoers/def_data.c:142
+#: plugins/sudoers/def_data.c:150
msgid "Visudo will honor the EDITOR environment variable"
msgstr "Visudo kommer att respektera miljövariabeln EDITOR"
-#: plugins/sudoers/def_data.c:146
+#: plugins/sudoers/def_data.c:154
msgid "Prompt for root's password, not the users's"
msgstr "Fråga efter root-lösenordet, inte användarens"
-#: plugins/sudoers/def_data.c:150
+#: plugins/sudoers/def_data.c:158
msgid "Prompt for the runas_default user's password, not the users's"
msgstr "Fråga efter runas_default-användarens lösenord, inte användarens"
-#: plugins/sudoers/def_data.c:154
+#: plugins/sudoers/def_data.c:162
msgid "Prompt for the target user's password, not the users's"
msgstr "Fråga efter målanvändarens lösenord, inte användarens"
-#: plugins/sudoers/def_data.c:158
+#: plugins/sudoers/def_data.c:166
msgid "Apply defaults in the target user's login class if there is one"
msgstr "Tillämpa standardvärden i målanvändarens inloggningsklass om det finns en"
-#: plugins/sudoers/def_data.c:162
+#: plugins/sudoers/def_data.c:170
msgid "Set the LOGNAME and USER environment variables"
msgstr "Ställ in miljövariablerna LOGNAME och USER"
-#: plugins/sudoers/def_data.c:166
+#: plugins/sudoers/def_data.c:174
msgid "Only set the effective uid to the target user, not the real uid"
msgstr "Sätt bara det effektiva uid:t till målanvändaren, inte till det riktiga uid:t"
-#: plugins/sudoers/def_data.c:170
+#: plugins/sudoers/def_data.c:178
msgid "Don't initialize the group vector to that of the target user"
msgstr "Initiera inte gruppvektorn till den från målanvändaren"
-#: plugins/sudoers/def_data.c:174
+#: plugins/sudoers/def_data.c:182
#, c-format
msgid "Length at which to wrap log file lines (0 for no wrap): %u"
msgstr "Längden vid vilken långa loggfilsrader radbryts (0 för att inte radbryta): %u"
-#: plugins/sudoers/def_data.c:178
+#: plugins/sudoers/def_data.c:186
#, c-format
msgid "Authentication timestamp timeout: %.1f minutes"
msgstr "Tidsgräns för autentiseringstidsstämpel: %.1f minuter"
-#: plugins/sudoers/def_data.c:182
+#: plugins/sudoers/def_data.c:190
#, c-format
msgid "Password prompt timeout: %.1f minutes"
msgstr "Tidsgräns för lösenordsprompt: %.1f minuter"
-#: plugins/sudoers/def_data.c:186
+#: plugins/sudoers/def_data.c:194
#, c-format
msgid "Number of tries to enter a password: %u"
msgstr "Antal försök att ange ett lösenord: %u"
-#: plugins/sudoers/def_data.c:190
+#: plugins/sudoers/def_data.c:198
#, c-format
msgid "Umask to use or 0777 to use user's: 0%o"
msgstr "Umask att använda eller 0777 för att använda användarens: 0%o"
-#: plugins/sudoers/def_data.c:194
+#: plugins/sudoers/def_data.c:202
#, c-format
msgid "Path to log file: %s"
msgstr "Sökväg till loggfil: %s"
-#: plugins/sudoers/def_data.c:198
+#: plugins/sudoers/def_data.c:206
#, c-format
msgid "Path to mail program: %s"
msgstr "Sökväg till e-postprogram: %s"
-#: plugins/sudoers/def_data.c:202
+#: plugins/sudoers/def_data.c:210
#, c-format
msgid "Flags for mail program: %s"
msgstr "Flaggor för e-postprogram: %s"
-#: plugins/sudoers/def_data.c:206
+#: plugins/sudoers/def_data.c:214
#, c-format
msgid "Address to send mail to: %s"
msgstr "Adress att skicka e-post till: %s"
-#: plugins/sudoers/def_data.c:210
+#: plugins/sudoers/def_data.c:218
#, c-format
msgid "Address to send mail from: %s"
msgstr "Adress att skicka e-post från: %s"
-#: plugins/sudoers/def_data.c:214
+#: plugins/sudoers/def_data.c:222
#, c-format
msgid "Subject line for mail messages: %s"
msgstr "Ämnesrad för e-postmeddelanden: %s"
-#: plugins/sudoers/def_data.c:218
+#: plugins/sudoers/def_data.c:226
#, c-format
msgid "Incorrect password message: %s"
msgstr "Meddelande vid felaktigt lösenord: %s"
-#: plugins/sudoers/def_data.c:222
+#: plugins/sudoers/def_data.c:230
#, c-format
msgid "Path to lecture status dir: %s"
msgstr "Sökväg till lektionsstatuskatalog: %s"
-#: plugins/sudoers/def_data.c:226
+#: plugins/sudoers/def_data.c:234
#, c-format
msgid "Path to authentication timestamp dir: %s"
msgstr "Sökväg till katalog för autentiseringstidsstämplar: %s"
-#: plugins/sudoers/def_data.c:230
+#: plugins/sudoers/def_data.c:238
#, c-format
msgid "Owner of the authentication timestamp dir: %s"
msgstr "Ägare av katalogen för autentiseringstidsstämplar: %s"
-#: plugins/sudoers/def_data.c:234
+#: plugins/sudoers/def_data.c:242
#, c-format
msgid "Users in this group are exempt from password and PATH requirements: %s"
msgstr "Användare i denna grupp är undantagna från lösenords- och SÖKVÄGs-kraven: %s"
-#: plugins/sudoers/def_data.c:238
+#: plugins/sudoers/def_data.c:246
#, c-format
msgid "Default password prompt: %s"
msgstr "Standard lösenordsprompt: %s"
-#: plugins/sudoers/def_data.c:242
+#: plugins/sudoers/def_data.c:250
msgid "If set, passprompt will override system prompt in all cases."
msgstr "Om inställt kommer passprompt att åsidosätta systemprompten i varje fall."
-#: plugins/sudoers/def_data.c:246
+#: plugins/sudoers/def_data.c:254
#, c-format
msgid "Default user to run commands as: %s"
msgstr "Standardanvändaren att köra kommandon som: %s"
-#: plugins/sudoers/def_data.c:250
+#: plugins/sudoers/def_data.c:258
#, c-format
msgid "Value to override user's $PATH with: %s"
msgstr "Värde att åsidosätta användarens $PATH med: %s"
-#: plugins/sudoers/def_data.c:254
+#: plugins/sudoers/def_data.c:262
#, c-format
msgid "Path to the editor for use by visudo: %s"
msgstr "Sökväg till textredigerare för användning av visudo: %s"
-#: plugins/sudoers/def_data.c:258
+#: plugins/sudoers/def_data.c:266
#, c-format
msgid "When to require a password for 'list' pseudocommand: %s"
msgstr "När ett lösenord ska krävas för pseudokommandot ”list”: %s"
-#: plugins/sudoers/def_data.c:262
+#: plugins/sudoers/def_data.c:270
#, c-format
msgid "When to require a password for 'verify' pseudocommand: %s"
msgstr "När lösenord ska krävas för pseudokommandot ”verify”: %s"
-#: plugins/sudoers/def_data.c:266
-msgid "Preload the dummy exec functions contained in the sudo_noexec library"
-msgstr "Förinläs attrapp-exec-funktioner som finns i biblioteket sudo_noexec"
+#: plugins/sudoers/def_data.c:274
+msgid "Preload the sudo_noexec library which replaces the exec functions"
+msgstr "Förinläs sudo_noexec-biblioteket vilket ersätter exec-funktionerna"
-#: plugins/sudoers/def_data.c:270
+#: plugins/sudoers/def_data.c:278
msgid "If LDAP directory is up, do we ignore local sudoers file"
msgstr "Om LDAP-registret är uppe, ignorerar vi den lokala sudoers-filen"
-#: plugins/sudoers/def_data.c:274
+#: plugins/sudoers/def_data.c:282
#, c-format
msgid "File descriptors >= %d will be closed before executing a command"
-msgstr "Fildeskriptorer >= %d kommer att stängas innan ett kommando exekveras"
+msgstr "Fildeskriptorer >= %d kommer att stängas innan ett kommando körs"
-#: plugins/sudoers/def_data.c:278
-msgid "If set, users may override the value of `closefrom' with the -C option"
+#: plugins/sudoers/def_data.c:286
+msgid "If set, users may override the value of \"closefrom\" with the -C option"
msgstr "Om inställt kan användare åsidosätta värdet ”closefrom” med flaggan -C"
-#: plugins/sudoers/def_data.c:282
+#: plugins/sudoers/def_data.c:290
msgid "Allow users to set arbitrary environment variables"
msgstr "Låt användare ställa in godtyckliga miljövariabler"
-#: plugins/sudoers/def_data.c:286
+#: plugins/sudoers/def_data.c:294
msgid "Reset the environment to a default set of variables"
msgstr "Återställ miljön till standarduppsättningen av variabler"
-#: plugins/sudoers/def_data.c:290
-msgid "Environment variables to check for sanity:"
-msgstr "Miljövariabler att kontrollera:"
+#: plugins/sudoers/def_data.c:298
+msgid "Environment variables to check for safety:"
+msgstr "Miljövariabler att säkerhetskontrollera:"
-#: plugins/sudoers/def_data.c:294
+#: plugins/sudoers/def_data.c:302
msgid "Environment variables to remove:"
msgstr "Miljövariabler att ta bort:"
-#: plugins/sudoers/def_data.c:298
+#: plugins/sudoers/def_data.c:306
msgid "Environment variables to preserve:"
msgstr "Miljövariabler att behålla:"
-#: plugins/sudoers/def_data.c:302
+#: plugins/sudoers/def_data.c:310
#, c-format
msgid "SELinux role to use in the new security context: %s"
msgstr "SELinux-roll att använda i den nya säkerhetskontexten: %s"
-#: plugins/sudoers/def_data.c:306
+#: plugins/sudoers/def_data.c:314
#, c-format
msgid "SELinux type to use in the new security context: %s"
msgstr "SELinux-typ att använda i den nya säkerhetskontexten: %s"
-#: plugins/sudoers/def_data.c:310
+#: plugins/sudoers/def_data.c:318
#, c-format
msgid "Path to the sudo-specific environment file: %s"
msgstr "Sökväg till den sudo-specifika miljöfilen: %s"
-#: plugins/sudoers/def_data.c:314
+#: plugins/sudoers/def_data.c:322
#, c-format
msgid "Path to the restricted sudo-specific environment file: %s"
msgstr "Sökväg till den begränsade sudo-specifika miljöfilen: %s"
-#: plugins/sudoers/def_data.c:318
+#: plugins/sudoers/def_data.c:326
#, c-format
msgid "Locale to use while parsing sudoers: %s"
msgstr "Lokalanpassning att använda vid tolkning av sudoers: %s"
-#: plugins/sudoers/def_data.c:322
+#: plugins/sudoers/def_data.c:330
msgid "Allow sudo to prompt for a password even if it would be visible"
msgstr "Tillåt sudo att fråga efter ett lösenord även om det skulle vara synligt"
-#: plugins/sudoers/def_data.c:326
+#: plugins/sudoers/def_data.c:334
msgid "Provide visual feedback at the password prompt when there is user input"
msgstr "Ge visuell återkoppling vid lösenordsprompten när det finns användarinmatad data"
-#: plugins/sudoers/def_data.c:330
+#: plugins/sudoers/def_data.c:338
msgid "Use faster globbing that is less accurate but does not access the filesystem"
msgstr "Använd snabbare matchning som är mindre exakt men inte använder filsystemet"
-#: plugins/sudoers/def_data.c:334
+#: plugins/sudoers/def_data.c:342
msgid "The umask specified in sudoers will override the user's, even if it is more permissive"
msgstr "Umasken angiven i sudoers kommer att åsidosätta användarens, även om den är mer tillåtande"
-#: plugins/sudoers/def_data.c:338
+#: plugins/sudoers/def_data.c:346
msgid "Log user's input for the command being run"
msgstr "Logga användarens inmatning för kommandot som körs"
-#: plugins/sudoers/def_data.c:342
+#: plugins/sudoers/def_data.c:350
msgid "Log the output of the command being run"
msgstr "Logga utmatningen för kommandot som körs"
-#: plugins/sudoers/def_data.c:346
+#: plugins/sudoers/def_data.c:354
msgid "Compress I/O logs using zlib"
msgstr "Komprimera I/O-loggar med hjälp av zlib"
-#: plugins/sudoers/def_data.c:350
+#: plugins/sudoers/def_data.c:358
msgid "Always run commands in a pseudo-tty"
msgstr "Kör alltid kommandon i en pseudo-tty"
-#: plugins/sudoers/def_data.c:354
+#: plugins/sudoers/def_data.c:362
#, c-format
msgid "Plugin for non-Unix group support: %s"
msgstr "Insticksmodul för stöd för icke-Unix-grupper: %s"
-#: plugins/sudoers/def_data.c:358
+#: plugins/sudoers/def_data.c:366
#, c-format
msgid "Directory in which to store input/output logs: %s"
msgstr "Katalog i vilken in-/utmatningsloggar lagras: %s"
-#: plugins/sudoers/def_data.c:362
+#: plugins/sudoers/def_data.c:370
#, c-format
msgid "File in which to store the input/output log: %s"
msgstr "Fil i vilken in-/utmatningsloggar lagras: %s"
-#: plugins/sudoers/def_data.c:366
+#: plugins/sudoers/def_data.c:374
msgid "Add an entry to the utmp/utmpx file when allocating a pty"
msgstr "Lägg till en post till utmp/utmpx-filen när en pty allokeras"
-#: plugins/sudoers/def_data.c:370
+#: plugins/sudoers/def_data.c:378
msgid "Set the user in utmp to the runas user, not the invoking user"
msgstr "Sätt användaren i utmp till runas-användaren, inte användaren som anropar"
-#: plugins/sudoers/def_data.c:374
+#: plugins/sudoers/def_data.c:382
#, c-format
msgid "Set of permitted privileges: %s"
msgstr "Uppsättning tillåtna rättigheter: %s"
-#: plugins/sudoers/def_data.c:378
+#: plugins/sudoers/def_data.c:386
#, c-format
msgid "Set of limit privileges: %s"
msgstr "Uppsättning av begränsningsrättigheter: %s"
-#: plugins/sudoers/def_data.c:382
+#: plugins/sudoers/def_data.c:390
msgid "Run commands on a pty in the background"
msgstr "Kör kommandon i en pty i bakgrunden"
-#: plugins/sudoers/def_data.c:386
+#: plugins/sudoers/def_data.c:394
#, c-format
msgid "PAM service name to use: %s"
msgstr "PAM-tjänstnamn att använda: %s"
-#: plugins/sudoers/def_data.c:390
+#: plugins/sudoers/def_data.c:398
#, c-format
msgid "PAM service name to use for login shells: %s"
msgstr "PAM-tjänstnamn att använda för inloggningsskal: %s"
-#: plugins/sudoers/def_data.c:394
+#: plugins/sudoers/def_data.c:402
msgid "Attempt to establish PAM credentials for the target user"
msgstr "Försök att etablera PAM-inloggningsuppgifter för målanvändaren"
-#: plugins/sudoers/def_data.c:398
+#: plugins/sudoers/def_data.c:406
msgid "Create a new PAM session for the command to run in"
msgstr "Skapa en ny PAM-session för kommandot att köra i"
-#: plugins/sudoers/def_data.c:402
+#: plugins/sudoers/def_data.c:410
msgid "Perform PAM account validation management"
msgstr "Utför valideringshantering av PAM-konto"
-#: plugins/sudoers/def_data.c:406
+#: plugins/sudoers/def_data.c:414
#, c-format
msgid "Maximum I/O log sequence number: %s"
msgstr "Största sekvensnummer i I/O-logg: %s"
-#: plugins/sudoers/def_data.c:410
+#: plugins/sudoers/def_data.c:418
msgid "Enable sudoers netgroup support"
msgstr "Aktivera sudoers nätgruppsstöd"
-#: plugins/sudoers/def_data.c:414
+#: plugins/sudoers/def_data.c:422
msgid "Check parent directories for writability when editing files with sudoedit"
msgstr "Kontrollera överordnade kataloger för skrivbarhet när filer redigeras med sudoedit"
-#: plugins/sudoers/def_data.c:418
+#: plugins/sudoers/def_data.c:426
msgid "Follow symbolic links when editing files with sudoedit"
msgstr "Följ symboliska länkar när filer redigeras med sudoedit"
-#: plugins/sudoers/def_data.c:422
+#: plugins/sudoers/def_data.c:430
msgid "Query the group plugin for unknown system groups"
msgstr "Fråga gruppinsticksmodulen efter okända systemgrupper"
-#: plugins/sudoers/def_data.c:426
+#: plugins/sudoers/def_data.c:434
msgid "Match netgroups based on the entire tuple: user, host and domain"
msgstr "Matcha nätgrupper baserat på hela tupeln: användare, värd och domän"
-#: plugins/sudoers/def_data.c:430
+#: plugins/sudoers/def_data.c:438
msgid "Allow commands to be run even if sudo cannot write to the audit log"
msgstr "Tillåt kommandon att köras även om sudo inte kan skriva till granskningsloggen"
-#: plugins/sudoers/def_data.c:434
+#: plugins/sudoers/def_data.c:442
msgid "Allow commands to be run even if sudo cannot write to the I/O log"
msgstr "Tillåt kommandon att köras även om sudo inte kan skriva I/O-loggen"
-#: plugins/sudoers/def_data.c:438
+#: plugins/sudoers/def_data.c:446
msgid "Allow commands to be run even if sudo cannot write to the log file"
msgstr "Tillåt kommandon att köras även om sudo inte kan skriva till loggfilen"
-#: plugins/sudoers/def_data.c:442
+#: plugins/sudoers/def_data.c:450
msgid "Resolve groups in sudoers and match on the group ID, not the name"
msgstr "Gör namnupplösning för grupper i sudoers och matcha efter grupp-ID, inte namnet"
-#: plugins/sudoers/def_data.c:446
+#: plugins/sudoers/def_data.c:454
#, c-format
msgid "Log entries larger than this value will be split into multiple syslog messages: %u"
msgstr "Loggposter större än detta värde kommer att delas upp i flera syslog-meddelanden: %u"
-#: plugins/sudoers/def_data.c:450
+#: plugins/sudoers/def_data.c:458
#, c-format
msgid "User that will own the I/O log files: %s"
msgstr "Användare som kommer att äga I/O-loggfilerna: %s"
-#: plugins/sudoers/def_data.c:454
+#: plugins/sudoers/def_data.c:462
#, c-format
msgid "Group that will own the I/O log files: %s"
msgstr "Grupp som kommer att äga I/O-loggfilerna: %s"
-#: plugins/sudoers/def_data.c:458
+#: plugins/sudoers/def_data.c:466
#, c-format
msgid "File mode to use for the I/O log files: 0%o"
msgstr "Filrättigheter att använda för I/O-loggfilerna: 0%o"
-#: plugins/sudoers/def_data.c:462
+#: plugins/sudoers/def_data.c:470
#, c-format
msgid "Execute commands by file descriptor instead of by path: %s"
-msgstr "Exekvera kommandon efter fildeskriptor istället för efter sökväg: %s"
+msgstr "Kör kommandon efter fildeskriptor istället för efter sökväg: %s"
-#: plugins/sudoers/def_data.c:466
+#: plugins/sudoers/def_data.c:474
msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning"
msgstr "Hoppa över okända Defaults-poster i sudoers istället för att skriva ut en varning"
-#: plugins/sudoers/def_data.c:470
+#: plugins/sudoers/def_data.c:478
#, c-format
msgid "Time in seconds after which the command will be terminated: %u"
msgstr "Tid i sekunder efter vilka kommandot kommer att avslutas: %u"
-#: plugins/sudoers/def_data.c:474
+#: plugins/sudoers/def_data.c:482
msgid "Allow the user to specify a timeout on the command line"
msgstr "Tillåt användaren att ange en tidsgräns på kommandoraden"
-#: plugins/sudoers/def_data.c:478
+#: plugins/sudoers/def_data.c:486
msgid "Flush I/O log data to disk immediately instead of buffering it"
msgstr "Spola ut I/O-loggdata till disk omedelbart istället för att buffra det"
-#: plugins/sudoers/def_data.c:482
+#: plugins/sudoers/def_data.c:490
msgid "Include the process ID when logging via syslog"
msgstr "Inkludera process-ID:t vid loggning via syslog"
-#: plugins/sudoers/def_data.c:486
+#: plugins/sudoers/def_data.c:494
#, c-format
msgid "Type of authentication timestamp record: %s"
msgstr "Typ av post för autentiseringstidsstämplar: %s"
-#: plugins/sudoers/def_data.c:490
+#: plugins/sudoers/def_data.c:498
#, c-format
msgid "Authentication failure message: %s"
msgstr "Autentiseringsfelsmeddelande: %s"
-#: plugins/sudoers/def_data.c:494
+#: plugins/sudoers/def_data.c:502
msgid "Ignore case when matching user names"
msgstr "Matcha användarnamn skiftlägesokänsligt"
-#: plugins/sudoers/def_data.c:498
+#: plugins/sudoers/def_data.c:506
msgid "Ignore case when matching group names"
msgstr "Matcha gruppnamn skiftlägesokänsligt"
-#: plugins/sudoers/def_data.c:502
+#: plugins/sudoers/def_data.c:510
msgid "Log when a command is allowed by sudoers"
msgstr "Logga när ett kommando tillåts av sudoers"
-#: plugins/sudoers/def_data.c:506
+#: plugins/sudoers/def_data.c:514
msgid "Log when a command is denied by sudoers"
msgstr "Logga när ett kommando nekas av sudoers"
-#: plugins/sudoers/def_data.c:510
+#: plugins/sudoers/def_data.c:518
msgid "Sudo log server(s) to connect to with optional port"
msgstr "Sudo-loggservrar att ansluta till med valfri port"
-#: plugins/sudoers/def_data.c:514
+#: plugins/sudoers/def_data.c:522
#, c-format
msgid "Sudo log server timeout in seconds: %u"
msgstr "Tidsgräns för sudo-loggserver i sekunder: %u"
-#: plugins/sudoers/def_data.c:518
+#: plugins/sudoers/def_data.c:526
msgid "Enable SO_KEEPALIVE socket option on the socket connected to the logserver"
msgstr "Aktivera SO_KEEPALIVE-kontaktalternativ på kontakten ansluten till loggservern"
-#: plugins/sudoers/def_data.c:522
+#: plugins/sudoers/def_data.c:530
#, c-format
msgid "Path to the audit server's CA bundle file: %s"
msgstr "Sökväg till granskningsserverns CA-buntfil: %s"
-#: plugins/sudoers/def_data.c:526
+#: plugins/sudoers/def_data.c:534
#, c-format
msgid "Path to the sudoers certificate file: %s"
msgstr "Sökväg till sudoers certifikatfil: %s"
-#: plugins/sudoers/def_data.c:530
+#: plugins/sudoers/def_data.c:538
#, c-format
msgid "Path to the sudoers private key file: %s"
msgstr "Sökväg till sudoers privata nyckelfil: %s"
-#: plugins/sudoers/def_data.c:534
+#: plugins/sudoers/def_data.c:542
msgid "Verify that the log server's certificate is valid"
msgstr "Verifiera att loggserverns certifikatfil är giltig"
-#: plugins/sudoers/def_data.c:538
+#: plugins/sudoers/def_data.c:546
msgid "Allow the use of unknown runas user and/or group ID"
msgstr "Tillåt användningen av okänd runas-användare och/eller grupp-ID"
-#: plugins/sudoers/def_data.c:542
+#: plugins/sudoers/def_data.c:550
msgid "Only permit running commands as a user with a valid shell"
msgstr "Tillåt endast körning av kommandon som en användare med ett giltigt skal"
-#: plugins/sudoers/def_data.c:546
+#: plugins/sudoers/def_data.c:554
msgid "Set the pam remote user to the user running sudo"
msgstr "Ställ in pam-fjärranvändaren för användaren som kör sudo"
-#: plugins/sudoers/def_data.c:550
+#: plugins/sudoers/def_data.c:558
msgid "Set the pam remote host to the local host name"
msgstr "Ställ in pam-fjärrvärden till det lokala värdnamnet"
-#: plugins/sudoers/defaults.c:183
+#: plugins/sudoers/def_data.c:562
#, c-format
-msgid "%s:%d unknown defaults entry \"%s\""
-msgstr "%s:%d okänd standardpost ”%s”"
+msgid "Working directory to change to before executing the command: %s"
+msgstr "Arbetskatalog att ändra till före körning av kommandot: %s"
-#: plugins/sudoers/defaults.c:186
+#: plugins/sudoers/def_data.c:566
#, c-format
-msgid "%s: unknown defaults entry \"%s\""
-msgstr "%s: okänd standardpost ”%s”"
+msgid "Root directory to change to before executing the command: %s"
+msgstr "Rotkatalog att ändra till innan kommandot körs: %s"
-#: plugins/sudoers/defaults.c:229
+#: plugins/sudoers/def_data.c:570
#, c-format
-msgid "%s:%d no value specified for \"%s\""
-msgstr "%s:%d inget värde angivet för ”%s”"
+msgid "The format of logs to produce: %s"
+msgstr "Formatet för loggarna som ska produceras: %s"
-#: plugins/sudoers/defaults.c:232
+#: plugins/sudoers/defaults.c:185
#, c-format
-msgid "%s: no value specified for \"%s\""
-msgstr "%s: inget värde angivet för ”%s”"
+msgid "%s:%d:%d: unknown defaults entry \"%s\""
+msgstr "%s:%d:%d: okänd standardpost ”%s”"
-#: plugins/sudoers/defaults.c:252
+#: plugins/sudoers/defaults.c:188
#, c-format
-msgid "%s:%d values for \"%s\" must start with a '/'"
-msgstr "%s:%d värden för ”%s” måste börja med ett ”/”"
+msgid "%s: unknown defaults entry \"%s\""
+msgstr "%s: okänd standardpost ”%s”"
-#: plugins/sudoers/defaults.c:255
+#: plugins/sudoers/defaults.c:234
#, c-format
-msgid "%s: values for \"%s\" must start with a '/'"
-msgstr "%s: värden för ”%s” måste börja med ett ”/”"
+msgid "%s:%d:%d: no value specified for \"%s\""
+msgstr "%s:%d:%d: inget värde angivet för ”%s”"
+
+#: plugins/sudoers/defaults.c:237
+#, c-format
+msgid "%s: no value specified for \"%s\""
+msgstr "%s: inget värde angivet för ”%s”"
-#: plugins/sudoers/defaults.c:277
+#: plugins/sudoers/defaults.c:275
#, c-format
-msgid "%s:%d option \"%s\" does not take a value"
-msgstr "%s:%d flaggan ”%s” tar inte emot något värde"
+msgid "%s:%d:%d: option \"%s\" does not take a value"
+msgstr "%s:%d:%d: flaggan ”%s” tar inte emot något värde"
-#: plugins/sudoers/defaults.c:280
+#: plugins/sudoers/defaults.c:278
#, c-format
msgid "%s: option \"%s\" does not take a value"
msgstr "%s: flaggan ”%s” tar inte emot något värde"
-#: plugins/sudoers/defaults.c:305
+#: plugins/sudoers/defaults.c:303
#, c-format
-msgid "%s:%d invalid Defaults type 0x%x for option \"%s\""
-msgstr "%s:%d ogiltig standardtyp 0x%x för flagga ”%s”"
+msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\""
+msgstr "%s:%d:%d: ogiltig standardtyp 0x%x för flagga ”%s”"
-#: plugins/sudoers/defaults.c:308
+#: plugins/sudoers/defaults.c:306
#, c-format
msgid "%s: invalid Defaults type 0x%x for option \"%s\""
msgstr "%s: ogiltig standardtyp 0x%x för flagga ”%s”"
-#: plugins/sudoers/defaults.c:318
+#: plugins/sudoers/defaults.c:316
#, c-format
-msgid "%s:%d value \"%s\" is invalid for option \"%s\""
-msgstr "%s:%d värdet ”%s” är ogiltigt för flaggan ”%s”"
+msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\""
+msgstr "%s:%d:%d: värdet ”%s” är ogiltigt för flaggan ”%s”"
-#: plugins/sudoers/defaults.c:321
+#: plugins/sudoers/defaults.c:319
#, c-format
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: värdet ”%s” är ogiltigt för flaggan ”%s”"
-#: plugins/sudoers/env.c:404
+#: plugins/sudoers/defaults.c:1030
+#, c-format
+msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
+msgstr "%s:%d:%d: värden för ”%s” måste börja med ett ”/”, ”~” eller ”*”"
+
+#: plugins/sudoers/defaults.c:1034
+#, c-format
+msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
+msgstr "%s: värden för ”%s” måste börja med ett ”/”, ”~” eller ”*”"
+
+#: plugins/sudoers/defaults.c:1045
+#, c-format
+msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
+msgstr "%s:%d:%d: värden för ”%s” måste börja med ett ”/”"
+
+#: plugins/sudoers/defaults.c:1049
+#, c-format
+msgid "%s: values for \"%s\" must start with a '/'"
+msgstr "%s: värden för ”%s” måste börja med ett ”/”"
+
+#: plugins/sudoers/env.c:405
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: trasig envp, längd stämmer inte"
-#: plugins/sudoers/env.c:1131
+#: plugins/sudoers/env.c:1133
msgid "unable to rebuild the environment"
msgstr "kan inte återuppbygga miljön"
-#: plugins/sudoers/env.c:1205
+#: plugins/sudoers/env.c:1207
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "du får inte lov att ställa in följande miljövariabler: %s"
-#: plugins/sudoers/file.c:104
+#: plugins/sudoers/file.c:107
#, c-format
msgid "parse error in %s near line %d"
msgstr "tolkningsfel i %s nära rad %d"
-#: plugins/sudoers/file.c:107
+#: plugins/sudoers/file.c:110
#, c-format
msgid "parse error in %s"
msgstr "tolkningsfel i %s"
msgid "%s must only be writable by owner"
msgstr "%s får endast vara skrivbar av ägaren"
-#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:571
+#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:569
#, c-format
msgid "unable to load %s: %s"
msgstr "kan inte läsa in %s: %s"
msgid "Local IP address and netmask pairs:\n"
msgstr "Lokala IP-adress- och nätmaskpar:\n"
-#: plugins/sudoers/iolog.c:142 plugins/sudoers/sudoers.c:393
-#: plugins/sudoers/sudoers.c:394 plugins/sudoers/sudoers.c:1274
-#: plugins/sudoers/testsudoers.c:416
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
+#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
#, c-format
msgid "unknown group: %s"
msgstr "okänd grupp: %s"
-#: plugins/sudoers/iolog.c:517 plugins/sudoers/iolog.c:807
-#: plugins/sudoers/iolog.c:959 plugins/sudoers/iolog.c:966
-#: plugins/sudoers/iolog.c:1087 plugins/sudoers/iolog.c:1094
-#: plugins/sudoers/iolog.c:1193 plugins/sudoers/iolog.c:1200
+#: plugins/sudoers/iolog.c:622
+msgid "unable to update sequence file"
+msgstr "kan inte uppdatera sekvensfil"
+
+#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
+#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
+#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
+#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "kan inte skriva till I/O-loggfil: %s"
-#: plugins/sudoers/iolog.c:566
-msgid "unable to update sequence file"
-msgstr "kan inte uppdatera sekvensfil"
-
-#: plugins/sudoers/iolog.c:605
+#: plugins/sudoers/iolog.c:661
#, c-format
msgid "unable to create %s/%s"
msgstr "kan inte skapa %s/%s"
-#: plugins/sudoers/iolog.c:631
-msgid "unable to connect to log server"
-msgstr "kan inte ansluta till loggserver"
-
-#: plugins/sudoers/iolog.c:851
+#: plugins/sudoers/iolog.c:886
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: internt fel, I/O-loggfil för händelse %d inte öppen"
-#: plugins/sudoers/iolog.c:944 plugins/sudoers/iolog.c:1072
-#: plugins/sudoers/iolog.c:1177 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:492
-#: plugins/sudoers/visudo.c:498
+#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
+#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
+#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
+#: plugins/sudoers/visudo.c:499
msgid "unable to read the clock"
msgstr "kan inte läsa klockan"
-#: plugins/sudoers/iolog.c:1169 plugins/sudoers/iolog_client.c:977
+#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: internt fel, ogiltig signal %d"
-#: plugins/sudoers/iolog_client.c:113 plugins/sudoers/iolog_client.c:392
-#: plugins/sudoers/iolog_client.c:1200 plugins/sudoers/iolog_client.c:1775
-msgid "error in event loop"
-msgstr "fel i händelseloop"
-
-#: plugins/sudoers/iolog_client.c:194
-#, c-format
-msgid "Creation of new SSL_CTX object failed: %s"
-msgstr "Skapande av nytt SSL_CTX-objekt misslyckades: %s"
-
-#: plugins/sudoers/iolog_client.c:346 plugins/sudoers/iolog_client.c:351
-#, c-format
-msgid "TLS connection to %s:%s failed: %s"
-msgstr "TLS-anslutning till %s:%s misslyckades: %s"
-
-#: plugins/sudoers/iolog_client.c:496
-msgid "TLS initialization was unsuccessful"
-msgstr "TLS-initiering misslyckades"
-
-#: plugins/sudoers/iolog_client.c:505
-msgid "TLS handshake was unsuccessful"
-msgstr "TLS-handskakning misslyckades"
-
-#: plugins/sudoers/iolog_client.c:767 plugins/sudoers/iolog_client.c:959
-msgid "unable to get time of day"
-msgstr "kan inte hämta tid på dagen"
-
-#: plugins/sudoers/iolog_client.c:986
-#, c-format
-msgid "%s: internal error, invalid exit status %d"
-msgstr "%s: internt fel, ogiltig avslutningskod %d"
-
-#: plugins/sudoers/iolog_client.c:1523
-msgid "lost connection to log server"
-msgstr "förlorade kontakten med loggservern"
-
-#: plugins/sudoers/iolog_client.c:1600
-msgid "missing write buffer"
-msgstr "saknar skrivbuffert"
-
-#: plugins/sudoers/ldap.c:176 plugins/sudoers/ldap_conf.c:291
+#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:291
msgid "starttls not supported when using ldaps"
msgstr "starttls stöds inte när ldaps används"
-#: plugins/sudoers/ldap.c:247
+#: plugins/sudoers/ldap.c:248
#, c-format
msgid "unable to initialize SSL cert and key db: %s"
msgstr "kan inte initiera SSL-certifikat och nyckeldatabas: %s"
-#: plugins/sudoers/ldap.c:250
+#: plugins/sudoers/ldap.c:251
#, c-format
msgid "you must set TLS_CERT in %s to use SSL"
msgstr "du måste ställa in TLS_CERT i %s för att använda SSL"
-#: plugins/sudoers/ldap.c:1658
+#: plugins/sudoers/ldap.c:1660
#, c-format
msgid "unable to initialize LDAP: %s"
msgstr "kan inte initiera LDAP: %s"
-#: plugins/sudoers/ldap.c:1694
+#: plugins/sudoers/ldap.c:1697
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-bibliotek har inte stöd för ldap_start_tls_s() eller ldap_start_tls_s_np()"
-#: plugins/sudoers/ldap.c:1831 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "ogiltigt sudoOrder-attribut: %s"
#: plugins/sudoers/ldap_conf.c:200
-msgid "sudo_ldap_conf_add_ports: port too large"
-msgstr "sudo_ldap_conf_add_ports: port är för stor"
+#, c-format
+msgid "%s: port too large"
+msgstr "%s: port för stor"
#: plugins/sudoers/ldap_conf.c:260
#, c-format
msgid "unable to mix ldap and ldaps URIs"
msgstr "kan inte blanda ldap- och ldaps-URI:er"
-#: plugins/sudoers/ldap_util.c:548 plugins/sudoers/ldap_util.c:550
+#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "kan inte konvertera sudoOption: %s%s%s"
msgid "unable to open audit system"
msgstr "kan inte öppna granskningssystem"
-#: plugins/sudoers/linux_audit.c:100
+#: plugins/sudoers/linux_audit.c:101
msgid "unable to send audit message"
msgstr "kan inte skicka granskningsmeddelande"
-#: plugins/sudoers/logging.c:167
+#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
+#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+msgid "error in event loop"
+msgstr "fel i händelseloop"
+
+#: plugins/sudoers/log_client.c:193
#, c-format
-msgid "unable to open log file: %s"
-msgstr "kan inte öppna loggfil: %s"
+msgid "Creation of new SSL_CTX object failed: %s"
+msgstr "Skapande av nytt SSL_CTX-objekt misslyckades: %s"
-#: plugins/sudoers/logging.c:175
+#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350
#, c-format
-msgid "unable to lock log file: %s"
-msgstr "kan inte låsa loggfil: %s"
+msgid "TLS connection to %s:%s failed: %s"
+msgstr "TLS-anslutning till %s:%s misslyckades: %s"
-#: plugins/sudoers/logging.c:208
+#: plugins/sudoers/log_client.c:519
+msgid "TLS initialization was unsuccessful"
+msgstr "TLS-initiering misslyckades"
+
+#: plugins/sudoers/log_client.c:528
+msgid "TLS handshake was unsuccessful"
+msgstr "TLS-handskakning misslyckades"
+
+#: plugins/sudoers/log_client.c:1202
#, c-format
-msgid "unable to write log file: %s"
-msgstr "kan inte skriva till loggfil: %s"
+msgid "%s: internal error, invalid exit status %d"
+msgstr "%s: internt fel, ogiltig avslutningskod %d"
+
+#: plugins/sudoers/log_client.c:1738
+msgid "lost connection to log server"
+msgstr "förlorade kontakten med loggservern"
+
+#: plugins/sudoers/log_client.c:1815
+msgid "missing write buffer"
+msgstr "saknar skrivbuffert"
+
+#: plugins/sudoers/log_client.c:1964
+msgid "unable to connect to log server"
+msgstr "kan inte ansluta till loggserver"
-#: plugins/sudoers/logging.c:241
+#: plugins/sudoers/logging.c:244
msgid "user NOT in sudoers"
msgstr "användare finns INTE i sudoers"
-#: plugins/sudoers/logging.c:243
+#: plugins/sudoers/logging.c:246
msgid "user NOT authorized on host"
msgstr "användaren är INTE auktoriserad på värddatorn"
-#: plugins/sudoers/logging.c:245
+#: plugins/sudoers/logging.c:248
msgid "command not allowed"
msgstr "kommandot tillåts inte"
-#: plugins/sudoers/logging.c:288
+#: plugins/sudoers/logging.c:269
#, c-format
msgid "%s is not in the sudoers file. This incident will be reported.\n"
msgstr "%s finns inte i filen sudoers. Denna incident kommer att rapporteras.\n"
-#: plugins/sudoers/logging.c:291
+#: plugins/sudoers/logging.c:272
#, c-format
msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n"
msgstr "%s tillåts inte att köra sudo på %s. Denna incident kommer att rapporteras.\n"
-#: plugins/sudoers/logging.c:295
+#: plugins/sudoers/logging.c:276
#, c-format
msgid "Sorry, user %s may not run sudo on %s.\n"
msgstr "Tyvärr, användaren %s får inte köra sudo på %s.\n"
-#: plugins/sudoers/logging.c:298
+#: plugins/sudoers/logging.c:279
#, c-format
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "Tyvärr, användaren %s tillåts inte att köra ”%s%s%s” som %s%s%s på %s.\n"
-#: plugins/sudoers/logging.c:335 plugins/sudoers/sudoers.c:512
-#: plugins/sudoers/sudoers.c:514 plugins/sudoers/sudoers.c:516
-#: plugins/sudoers/sudoers.c:518 plugins/sudoers/sudoers.c:665
-#: plugins/sudoers/sudoers.c:667
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
+#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
+#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
+#: plugins/sudoers/sudoers.c:741
#, c-format
msgid "%s: command not found"
msgstr "%s: kommandot hittades inte"
-#: plugins/sudoers/logging.c:337 plugins/sudoers/sudoers.c:508
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
"ignorerar ”%s” som hittades i ”.”\n"
"Använd ”sudo ./%s” om detta är den ”%s” som du vill köra."
-#: plugins/sudoers/logging.c:354
-msgid "authentication failure"
-msgstr "autentiseringsfel"
-
-#: plugins/sudoers/logging.c:380
-msgid "a password is required"
-msgstr "ett lösenord krävs"
-
-#: plugins/sudoers/logging.c:450
+#: plugins/sudoers/logging.c:337
#, c-format
msgid "%u incorrect password attempt"
msgid_plural "%u incorrect password attempts"
msgstr[0] "%u felaktigt lösenordsförsök"
msgstr[1] "%u felaktiga lösenordsförsök"
-#: plugins/sudoers/logging.c:714
-#, c-format
-msgid "unable to dup stdin: %m"
-msgstr "kan inte duplicera stdin: %m"
+#: plugins/sudoers/logging.c:393
+msgid "authentication failure"
+msgstr "autentiseringsfel"
-#: plugins/sudoers/logging.c:751
-#, c-format
-msgid "unable to execute %s: %m"
-msgstr "kan inte köra %s: %m"
+#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453
+msgid "a password is required"
+msgstr "ett lösenord krävs"
-#: plugins/sudoers/logging.c:792 plugins/sudoers/logging.c:848
+#: plugins/sudoers/logging.c:729
#, c-format
-msgid "unable to fork: %m"
-msgstr "kan inte grena process: %m"
+msgid "unable to open log file: %s"
+msgstr "kan inte öppna loggfil: %s"
-#: plugins/sudoers/logging.c:838
+#: plugins/sudoers/logging.c:762
#, c-format
-msgid "unable to open pipe: %m"
-msgstr "kan inte öppna rör: %m"
+msgid "unable to write log file: %s"
+msgstr "kan inte skriva till loggfil: %s"
-#: plugins/sudoers/match_digest.c:116
+#: plugins/sudoers/match_digest.c:129
#, c-format
msgid "digest for %s (%s) is not in %s form"
msgstr "kontrollsumma för %s (%s) är inte på %s-form"
-#: plugins/sudoers/parse.c:442
+#: plugins/sudoers/parse.c:518
#, c-format
msgid ""
"\n"
"\n"
"LDAP-roll: %s\n"
-#: plugins/sudoers/parse.c:445
-#, c-format
+#: plugins/sudoers/parse.c:521
msgid ""
"\n"
"Sudoers entry:\n"
"\n"
"Sudoers-post:\n"
-#: plugins/sudoers/parse.c:447
-#, c-format
+#: plugins/sudoers/parse.c:523
msgid " RunAsUsers: "
msgstr " KörSomAnvändare: "
-#: plugins/sudoers/parse.c:462
-#, c-format
+#: plugins/sudoers/parse.c:538
msgid " RunAsGroups: "
msgstr " KörSomGrupper: "
-#: plugins/sudoers/parse.c:472
-#, c-format
+#: plugins/sudoers/parse.c:548
msgid " Options: "
msgstr " Flaggor: "
-#: plugins/sudoers/parse.c:522
-#, c-format
+#: plugins/sudoers/parse.c:602
msgid " Commands:\n"
msgstr " Kommandon:\n"
-#: plugins/sudoers/parse.c:713
+#: plugins/sudoers/parse.c:793
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "Matchande standardposter för %s på %s:\n"
-#: plugins/sudoers/parse.c:731
+#: plugins/sudoers/parse.c:811
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "Runas- och kommando-specifika standardvärden för %s:\n"
-#: plugins/sudoers/parse.c:749
+#: plugins/sudoers/parse.c:829
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "Användare %s får köra följande kommandon på %s:\n"
-#: plugins/sudoers/parse.c:764
+#: plugins/sudoers/parse.c:844
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "Användaren %s tillåts inte att köra sudo på %s.\n"
msgid "invalid LDIF attribute: %s"
msgstr "ogiltigt LDIF-attribut: %s"
-#: plugins/sudoers/policy.c:77 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "ogiltigt %.*s inställt av sudo-framände"
-#: plugins/sudoers/policy.c:281 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
msgid "unable to parse network address list"
msgstr "kan inte tolka nätverksadresslista"
-#: plugins/sudoers/policy.c:426
+#: plugins/sudoers/policy.c:455
msgid "user name not set by sudo front-end"
msgstr "användarnamn inte inställt av sudo-framände"
-#: plugins/sudoers/policy.c:430
+#: plugins/sudoers/policy.c:459
msgid "user-ID not set by sudo front-end"
msgstr "användar-ID inte inställt av sudo-framände"
-#: plugins/sudoers/policy.c:434
+#: plugins/sudoers/policy.c:463
msgid "group-ID not set by sudo front-end"
msgstr "grupp-ID inte inställt av sudo-framände"
-#: plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:467
msgid "host name not set by sudo front-end"
msgstr "värdnamn inte inställt av sudo-framände"
-#: plugins/sudoers/policy.c:896 plugins/sudoers/visudo.c:230
-#: plugins/sudoers/visudo.c:861
+#: plugins/sudoers/policy.c:643
+#, c-format
+msgid "invalid working directory: %s"
+msgstr "ogiltig arbetskatalog: %s"
+
+#: plugins/sudoers/policy.c:811
+#, c-format
+msgid "invalid chroot directory: %s"
+msgstr "ogiltig chroot-katalog: %s"
+
+#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
+#: plugins/sudoers/visudo.c:860
#, c-format
msgid "unable to execute %s"
msgstr "kan inte köra %s"
-#: plugins/sudoers/policy.c:1060
+#: plugins/sudoers/policy.c:1111
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Sudoers policyinsticksmodul version %s\n"
-#: plugins/sudoers/policy.c:1062
+#: plugins/sudoers/policy.c:1113
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Sudoers-filgrammatik version %d\n"
-#: plugins/sudoers/policy.c:1066
+#: plugins/sudoers/policy.c:1117
#, c-format
msgid ""
"\n"
"\n"
"Sökväg till sudoers: %s\n"
-#: plugins/sudoers/policy.c:1069
+#: plugins/sudoers/policy.c:1120
#, c-format
msgid "nsswitch path: %s\n"
msgstr "Sökväg till nsswitch: %s\n"
-#: plugins/sudoers/policy.c:1071
+#: plugins/sudoers/policy.c:1122
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "Sökväg till ldap.conf: %s\n"
-#: plugins/sudoers/policy.c:1072
+#: plugins/sudoers/policy.c:1123
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "Sökväg till ldap.secret: %s\n"
-#: plugins/sudoers/policy.c:1105
+#: plugins/sudoers/policy.c:1156
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "kan inte registrera krok av typ %d (version %d.%d)"
-#: plugins/sudoers/pwutil.c:214 plugins/sudoers/pwutil.c:232
+#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
#, c-format
msgid "unable to cache uid %u"
msgstr "kan inte cacha uid %u"
-#: plugins/sudoers/pwutil.c:226
+#: plugins/sudoers/pwutil.c:229
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "kan inte cacha uid %u, finns redan"
-#: plugins/sudoers/pwutil.c:286 plugins/sudoers/pwutil.c:304
-#: plugins/sudoers/pwutil.c:367 plugins/sudoers/pwutil.c:412
+#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
+#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
#, c-format
msgid "unable to cache user %s"
msgstr "kan inte cacha användare %s"
-#: plugins/sudoers/pwutil.c:299
+#: plugins/sudoers/pwutil.c:302
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "kan inte cacha användare %s, finns redan"
-#: plugins/sudoers/pwutil.c:531 plugins/sudoers/pwutil.c:549
+#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
#, c-format
msgid "unable to cache gid %u"
msgstr "kan inte cacha gid %u"
-#: plugins/sudoers/pwutil.c:543
+#: plugins/sudoers/pwutil.c:546
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "kan inte cacha gid %u, finns redan"
-#: plugins/sudoers/pwutil.c:596 plugins/sudoers/pwutil.c:614
-#: plugins/sudoers/pwutil.c:662 plugins/sudoers/pwutil.c:704
+#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
+#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
#, c-format
msgid "unable to cache group %s"
msgstr "kan inte cacha grupp %s"
-#: plugins/sudoers/pwutil.c:609
+#: plugins/sudoers/pwutil.c:612
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "kan inte cacha grupp %s, finns redan"
-#: plugins/sudoers/pwutil.c:831 plugins/sudoers/pwutil.c:883
-#: plugins/sudoers/pwutil.c:933 plugins/sudoers/pwutil.c:986
+#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
+#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "kan inte cacha grupplista för %s, finns redan"
-#: plugins/sudoers/pwutil.c:837 plugins/sudoers/pwutil.c:888
-#: plugins/sudoers/pwutil.c:939 plugins/sudoers/pwutil.c:991
+#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
+#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
#, c-format
msgid "unable to cache group list for %s"
msgstr "kan inte cacha grupplista för %s"
-#: plugins/sudoers/pwutil.c:877
+#: plugins/sudoers/pwutil.c:879
#, c-format
msgid "unable to parse groups for %s"
msgstr "kan inte tolka grupper för %s"
-#: plugins/sudoers/pwutil.c:980
+#: plugins/sudoers/pwutil.c:981
#, c-format
msgid "unable to parse gids for %s"
msgstr "kan inte tolka gids för %s"
msgid "truncated audit path argv[0]: %s"
msgstr "trunkerad granskningssökväg argv[0]: %s"
-#: plugins/sudoers/sssd.c:573
+#: plugins/sudoers/sssd.c:572
msgid "unable to initialize SSS source. Is SSSD installed on your machine?"
msgstr "kan inte initiera SSS-källa. Är SSSD installerat på din maskin?"
-#: plugins/sudoers/sssd.c:581 plugins/sudoers/sssd.c:590
-#: plugins/sudoers/sssd.c:599 plugins/sudoers/sssd.c:608
-#: plugins/sudoers/sssd.c:617
+#: plugins/sudoers/sssd.c:580 plugins/sudoers/sssd.c:589
+#: plugins/sudoers/sssd.c:598 plugins/sudoers/sssd.c:607
+#: plugins/sudoers/sssd.c:616
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "kan inte hitta symbol ”%s” i %s"
-#: plugins/sudoers/sudoers.c:217 plugins/sudoers/sudoers.c:943
+#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
msgid "problem with defaults entries"
msgstr "problem med standardposter"
-#: plugins/sudoers/sudoers.c:221
+#: plugins/sudoers/sudoers.c:218
msgid "no valid sudoers sources found, quitting"
msgstr "inga giltiga sudoers-källor hittades, avslutar"
-#: plugins/sudoers/sudoers.c:297
+#: plugins/sudoers/sudoers.c:292
+#, c-format
+msgid "user not allowed to change root directory to %s"
+msgstr "användare inte tillåten att ändra rotkatalog till %s"
+
+#: plugins/sudoers/sudoers.c:294
+#, c-format
+msgid "you are not permitted to use the -R option with %s"
+msgstr "du tillåts inte att använda flaggan -R med %s"
+
+#: plugins/sudoers/sudoers.c:319
+#, c-format
+msgid "user not allowed to change directory to %s"
+msgstr "användare inte tillåten att ändra katalog till %s"
+
+#: plugins/sudoers/sudoers.c:320
+#, c-format
+msgid "you are not permitted to use the -D option with %s"
+msgstr "du tillåts inte att använda flaggan -D med %s"
+
+#: plugins/sudoers/sudoers.c:351
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers anger att root inte tillåts att använda sudo"
-#: plugins/sudoers/sudoers.c:357
+#: plugins/sudoers/sudoers.c:411
msgid "user not allowed to override closefrom limit"
msgstr "användare inte tillåten att åsidosätta closefrom-begränsning"
-#: plugins/sudoers/sudoers.c:358
+#: plugins/sudoers/sudoers.c:412
msgid "you are not permitted to use the -C option"
msgstr "du tillåts inte att använda flaggan -C"
-#: plugins/sudoers/sudoers.c:420
+#: plugins/sudoers/sudoers.c:472
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "tidsstämpelägare (%s): Det finns ingen sådan användare"
-#: plugins/sudoers/sudoers.c:435
+#: plugins/sudoers/sudoers.c:487
msgid "no tty"
msgstr "ingen tty"
-#: plugins/sudoers/sudoers.c:436
+#: plugins/sudoers/sudoers.c:488
msgid "sorry, you must have a tty to run sudo"
msgstr "tyvärr, du måste ha en tty för att köra sudo"
-#: plugins/sudoers/sudoers.c:442 plugins/sudoers/sudoers.c:444
+#: plugins/sudoers/sudoers.c:495
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "ogiltigt skal för användare %s: %s"
-#: plugins/sudoers/sudoers.c:507
+#: plugins/sudoers/sudoers.c:578
msgid "command in current directory"
msgstr "kommando i aktuell katalog"
-#: plugins/sudoers/sudoers.c:525
+#: plugins/sudoers/sudoers.c:597
msgid "user not allowed to set a command timeout"
msgstr "användare inte tillåten att ställa in en tidsgräns för kommandon"
-#: plugins/sudoers/sudoers.c:526
+#: plugins/sudoers/sudoers.c:599
msgid "sorry, you are not allowed set a command timeout"
msgstr "tyvärr, du tillåts inte att ställa in en tidsgräns för kommandon"
-#: plugins/sudoers/sudoers.c:534
-msgid "user not allowed to set a preserve the environment"
-msgstr "användare inte tillåten att ställa in att behålla miljön"
+#: plugins/sudoers/sudoers.c:607
+msgid "user not allowed to preserve the environment"
+msgstr "användare inte tillåten att behålla miljön"
-#: plugins/sudoers/sudoers.c:535
+#: plugins/sudoers/sudoers.c:609
msgid "sorry, you are not allowed to preserve the environment"
msgstr "tyvärr, du tillåts inte att behålla miljövariabler"
-#: plugins/sudoers/sudoers.c:878
+#: plugins/sudoers/sudoers.c:945
msgid "command too long"
msgstr "kommandot för långt"
-#: plugins/sudoers/sudoers.c:936
+#: plugins/sudoers/sudoers.c:1003
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoedit behöver inte köras via sudo"
-#: plugins/sudoers/sudoers.c:990 plugins/sudoers/sudoreplay.c:1548
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "kan inte läsa %s"
-#: plugins/sudoers/sudoers.c:1015 plugins/sudoers/visudo.c:431
-#: plugins/sudoers/visudo.c:727
+#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
+#: plugins/sudoers/visudo.c:726
#, c-format
msgid "unable to stat %s"
msgstr "kan inte ta status på %s"
-#: plugins/sudoers/sudoers.c:1019 plugins/sudoers/visudo.c:1037
+#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
#, c-format
msgid "%s is not a regular file"
msgstr "%s är inte en vanlig fil"
-#: plugins/sudoers/sudoers.c:1023 plugins/sudoers/timestamp.c:252 toke.l:1060
+#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s ägs av uid %u, ska vara %u"
-#: plugins/sudoers/sudoers.c:1027 toke.l:1065
+#: plugins/sudoers/sudoers.c:1094 toke.l:1117
#, c-format
msgid "%s is world writable"
msgstr "%s är skrivbar för alla"
-#: plugins/sudoers/sudoers.c:1031 toke.l:1068
+#: plugins/sudoers/sudoers.c:1098 toke.l:1120
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s ägs av gid %u, ska vara %u"
-#: plugins/sudoers/sudoers.c:1064
+#: plugins/sudoers/sudoers.c:1131
#, c-format
msgid "only root can use \"-c %s\""
msgstr "endast root kan använda ”-c %s”"
-#: plugins/sudoers/sudoers.c:1083
+#: plugins/sudoers/sudoers.c:1150
#, c-format
msgid "unknown login class: %s"
msgstr "okänd inloggningsklass: %s"
-#: plugins/sudoers/sudoers.c:1168 plugins/sudoers/sudoers.c:1183
+#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
#, c-format
msgid "unable to resolve host %s"
msgstr "kan inte slå upp värddatorn %s"
-#: plugins/sudoers/sudoreplay.c:258
+#: plugins/sudoers/sudoreplay.c:257
#, c-format
msgid "invalid filter option: %s"
msgstr "ogiltig filterflagga: %s"
-#: plugins/sudoers/sudoreplay.c:274
+#: plugins/sudoers/sudoreplay.c:273
#, c-format
msgid "invalid max wait: %s"
msgstr "ogiltig största väntan: %s"
-#: plugins/sudoers/sudoreplay.c:297
+#: plugins/sudoers/sudoreplay.c:296
#, c-format
msgid "invalid speed factor: %s"
msgstr "ogiltig hastighetsfaktor: %s"
-#: plugins/sudoers/sudoreplay.c:333
+#: plugins/sudoers/sudoreplay.c:332
#, c-format
msgid "%s/%.2s/%.2s/%.2s: %s"
msgstr "%s/%.2s/%.2s/%.2s: %s"
-#: plugins/sudoers/sudoreplay.c:338
+#: plugins/sudoers/sudoreplay.c:337
#, c-format
msgid "%s/timing: %s"
msgstr "%s/tidsmätning: %s"
-#: plugins/sudoers/sudoreplay.c:342
+#: plugins/sudoers/sudoreplay.c:341
#, c-format
msgid "%s/%s: %s"
msgstr "%s/%s: %s"
-#: plugins/sudoers/sudoreplay.c:366
+#: plugins/sudoers/sudoreplay.c:365
#, c-format
msgid "Replaying sudo session: %s"
msgstr "Spelar upp sudo-session: %s"
-#: plugins/sudoers/sudoreplay.c:628
+#: plugins/sudoers/sudoreplay.c:627
msgid "unable to set tty to raw mode"
msgstr "kan inte ställa in tty i råläge"
-#: plugins/sudoers/sudoreplay.c:679
+#: plugins/sudoers/sudoreplay.c:678
msgid "Warning: your terminal is too small to properly replay the log.\n"
msgstr "Varning: din terminal är för liten för att korrekt spela upp loggen.\n"
-#: plugins/sudoers/sudoreplay.c:680
+#: plugins/sudoers/sudoreplay.c:679
#, c-format
msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d."
msgstr "Logg-geometri är %d x %d, din terminals geometri är %d x %d."
-#: plugins/sudoers/sudoreplay.c:708
+#: plugins/sudoers/sudoreplay.c:707
msgid "Replay finished, press any key to restore the terminal."
msgstr "Uppspelning avslutad, tryck på en tangent för att återställa terminalen."
-#: plugins/sudoers/sudoreplay.c:1198 plugins/sudoers/sudoreplay.c:1228
+#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227
#, c-format
msgid "ambiguous expression \"%s\""
msgstr "tvetydigt uttryck ”%s”"
-#: plugins/sudoers/sudoreplay.c:1250
+#: plugins/sudoers/sudoreplay.c:1249
msgid "unmatched ')' in expression"
msgstr "omatchat ”)” i uttryck"
-#: plugins/sudoers/sudoreplay.c:1254
+#: plugins/sudoers/sudoreplay.c:1253
#, c-format
msgid "unknown search term \"%s\""
msgstr "okänt sökvillkor ”%s”"
-#: plugins/sudoers/sudoreplay.c:1269
+#: plugins/sudoers/sudoreplay.c:1268
#, c-format
msgid "%s requires an argument"
msgstr "%s kräver ett argument"
-#: plugins/sudoers/sudoreplay.c:1272 plugins/sudoers/sudoreplay.c:1524
+#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523
#, c-format
msgid "invalid regular expression: %s"
msgstr "ogiltigt reguljärt uttryck: %s"
-#: plugins/sudoers/sudoreplay.c:1277
+#: plugins/sudoers/sudoreplay.c:1276
#, c-format
msgid "could not parse date \"%s\""
msgstr "kunde inte tolka datumet ”%s”"
-#: plugins/sudoers/sudoreplay.c:1286
+#: plugins/sudoers/sudoreplay.c:1285
msgid "unmatched '(' in expression"
msgstr "omatchat ”(” i uttryck"
-#: plugins/sudoers/sudoreplay.c:1288
+#: plugins/sudoers/sudoreplay.c:1287
msgid "illegal trailing \"or\""
msgstr "ogiltigt avslutande ”or”"
-#: plugins/sudoers/sudoreplay.c:1290
+#: plugins/sudoers/sudoreplay.c:1289
msgid "illegal trailing \"!\""
msgstr "ogiltigt efterföljande ”!”"
-#: plugins/sudoers/sudoreplay.c:1348
+#: plugins/sudoers/sudoreplay.c:1347
#, c-format
msgid "unknown search type %d"
msgstr "okänd söktyp %d"
-#: plugins/sudoers/sudoreplay.c:1615
+#: plugins/sudoers/sudoreplay.c:1614
#, c-format
msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n"
msgstr "användning: %s [-hnRS] [-d kat] [-m num] [-s num] ID\n"
-#: plugins/sudoers/sudoreplay.c:1618
+#: plugins/sudoers/sudoreplay.c:1617
#, c-format
msgid "usage: %s [-h] [-d dir] -l [search expression]\n"
msgstr "användning: %s [-h] [-d kat] -l [sökuttryck]\n"
-#: plugins/sudoers/sudoreplay.c:1627
+#: plugins/sudoers/sudoreplay.c:1626
#, c-format
msgid ""
"%s - replay sudo session logs\n"
"%s - spela upp loggar från sudo-session\n"
"\n"
-#: plugins/sudoers/sudoreplay.c:1629
+#: plugins/sudoers/sudoreplay.c:1628
msgid ""
"\n"
"Options:\n"
" -s, --speed=num påskynda eller fördröj utmatning\n"
" -V, --version visa versionsinformation och avsluta"
-#: plugins/sudoers/testsudoers.c:354
+#: plugins/sudoers/testsudoers.c:348
msgid "\thost unmatched"
msgstr "\tvärd omatchad"
-#: plugins/sudoers/testsudoers.c:357
+#: plugins/sudoers/testsudoers.c:351
msgid ""
"\n"
"Command allowed"
"\n"
"Kommandot tillåts"
-#: plugins/sudoers/testsudoers.c:358
+#: plugins/sudoers/testsudoers.c:352
msgid ""
"\n"
"Command denied"
"\n"
"Kommandot nekades"
-#: plugins/sudoers/testsudoers.c:358
+#: plugins/sudoers/testsudoers.c:352
msgid ""
"\n"
"Command unmatched"
msgid "the -x option will be removed in a future release"
msgstr "flaggan -x kommer att tas bort i en framtida version"
-#: plugins/sudoers/visudo.c:227
+#: plugins/sudoers/visudo.c:228
msgid "please consider using the cvtsudoers utility instead"
msgstr "överväg att använda verktyget cvtsudoers istället"
-#: plugins/sudoers/visudo.c:278 plugins/sudoers/visudo.c:660
+#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
#, c-format
msgid "press return to edit %s: "
msgstr "tryck på retur för att redigera %s: "
-#: plugins/sudoers/visudo.c:339
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "angiven redigerare (%s) finns inte"
-#: plugins/sudoers/visudo.c:341
+#: plugins/sudoers/visudo.c:342
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "ingen textredigerare hittad (sökväg för textredigerare = %s)"
-#: plugins/sudoers/visudo.c:451 plugins/sudoers/visudo.c:459
+#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
msgid "write error"
msgstr "skrivfel"
-#: plugins/sudoers/visudo.c:505
+#: plugins/sudoers/visudo.c:506
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "kan inte hämta filinformation för temporärfil (%s), %s oförändrad"
# sebras: not an exact translation, but I think it captures the meaning of the original text.
-#: plugins/sudoers/visudo.c:512
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "temporärfil tom (%s), %s oförändrad"
-#: plugins/sudoers/visudo.c:518
+#: plugins/sudoers/visudo.c:519
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "redigeraren (%s) misslyckades, %s är oförändrad"
-#: plugins/sudoers/visudo.c:540
+#: plugins/sudoers/visudo.c:541
#, c-format
msgid "%s unchanged"
msgstr "%s oförändrad"
-#: plugins/sudoers/visudo.c:599
+#: plugins/sudoers/visudo.c:598
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "kan inte återöppna temporärfil (%s), %s är oförändrad."
-#: plugins/sudoers/visudo.c:611
+#: plugins/sudoers/visudo.c:610
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "kan inte tolka temporärfil (%s), okänt fel"
-#: plugins/sudoers/visudo.c:649
+#: plugins/sudoers/visudo.c:648
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "internt fel, kan inte hitta %s i listan!"
-#: plugins/sudoers/visudo.c:729 plugins/sudoers/visudo.c:738
+#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "kan inte ställa in (uid, gid) för %s till (%u, %u)"
-#: plugins/sudoers/visudo.c:761
+#: plugins/sudoers/visudo.c:760
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s och %s finns inte på samma filsystem, använder mv för att byta namn"
-#: plugins/sudoers/visudo.c:775
+#: plugins/sudoers/visudo.c:774
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "kommandot misslyckades: ”%s %s %s”, %s är oförändrad"
-#: plugins/sudoers/visudo.c:785
+#: plugins/sudoers/visudo.c:784
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "fel vid namnbyte för %s, %s är oförändrad"
-#: plugins/sudoers/visudo.c:806
+#: plugins/sudoers/visudo.c:805
msgid "What now? "
msgstr "Nu då? "
-#: plugins/sudoers/visudo.c:820
+#: plugins/sudoers/visudo.c:819
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
" avsluta (x) utan att spara ändringar i sudoers-filen\n"
" Avsluta (Q) och spara ändringar i sudoers-filen (FARLIGT!)\n"
-#: plugins/sudoers/visudo.c:866
+#: plugins/sudoers/visudo.c:865
#, c-format
msgid "unable to run %s"
msgstr "kan inte köra %s"
-#: plugins/sudoers/visudo.c:896
+#: plugins/sudoers/visudo.c:895
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: felaktig ägare (uid, gid) ska vara (%u, %u)\n"
-#: plugins/sudoers/visudo.c:903
+#: plugins/sudoers/visudo.c:902
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: felaktiga rättigheter, bör vara läge 0%o\n"
-#: plugins/sudoers/visudo.c:960 plugins/sudoers/visudo.c:967
+#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: tolkad OK\n"
-#: plugins/sudoers/visudo.c:986
+#: plugins/sudoers/visudo.c:977
#, c-format
msgid "%s busy, try again later"
msgstr "%s är upptagen, försök igen senare"
-#: plugins/sudoers/visudo.c:989
+#: plugins/sudoers/visudo.c:980
#, c-format
msgid "unable to lock %s"
msgstr "kan inte låsa %s"
-#: plugins/sudoers/visudo.c:990
+#: plugins/sudoers/visudo.c:981
msgid "Edit anyway? [y/N]"
msgstr "Redigera ändå? [y/N]"
-#: plugins/sudoers/visudo.c:1083
+#: plugins/sudoers/visudo.c:1091
#, c-format
-msgid "Error: %s:%d cycle in %s \"%s\""
-msgstr "Fel: %s:%d cykel i %s ”%s”"
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Fel: %s:%d:%d: cykel i %s ”%s”"
-#: plugins/sudoers/visudo.c:1084
+#: plugins/sudoers/visudo.c:1092
#, c-format
-msgid "Warning: %s:%d cycle in %s \"%s\""
-msgstr "Varning: %s:%d cykel i %s ”%s”"
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Varning: %s:%d:%d: cykel i %s ”%s”"
-#: plugins/sudoers/visudo.c:1088
+#: plugins/sudoers/visudo.c:1096
#, c-format
-msgid "Error: %s:%d %s \"%s\" referenced but not defined"
-msgstr "Fel: %s:%d %s ”%s” refererad till men inte definierad"
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Fel: %s:%d:%d: %s ”%s” refererad till men inte definierad"
-#: plugins/sudoers/visudo.c:1089
+#: plugins/sudoers/visudo.c:1097
#, c-format
-msgid "Warning: %s:%d %s \"%s\" referenced but not defined"
-msgstr "Varning: %s:%d %s ”%s” refererad till men inte definierad"
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Varning: %s:%d:%d: %s ”%s” refererad till men inte definierad"
-#: plugins/sudoers/visudo.c:1180
+#: plugins/sudoers/visudo.c:1188
#, c-format
-msgid "Warning: %s:%d unused %s \"%s\""
-msgstr "Varning: %s:%d oanvänd %s ”%s”"
+msgid "Warning: %s:%d:%d: unused %s \"%s\""
+msgstr "Varning: %s:%d:%d: oanvänd %s ”%s”"
-#: plugins/sudoers/visudo.c:1295
+#: plugins/sudoers/visudo.c:1303
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
"%s - redigera sudoers-filen på ett säkert sätt\n"
"\n"
-#: plugins/sudoers/visudo.c:1297
+#: plugins/sudoers/visudo.c:1305
msgid ""
"\n"
"Options:\n"
" -s, --strict strikt syntaxkontroll\n"
" -V, --version visa versionsinformation och avsluta\n"
-#: toke.l:1032
+#: toke.l:179
+msgid "empty string"
+msgstr "tom sträng"
+
+#: toke.l:189 toke.l:491
+msgid "empty group"
+msgstr "tom grupp"
+
+#: toke.l:197 toke.l:489
+msgid "empty netgroup"
+msgstr "tom nätgrupp"
+
+#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+msgid "invalid line continuation"
+msgstr "ogiltig radfortsättning"
+
+#: toke.l:528 toke.l:540
+msgid "invalid IPv6 address"
+msgstr "ogiltig IPv6-adress"
+
+#: toke.l:764
+msgid "unexpected line break in string"
+msgstr "oväntad radbrytning i sträng"
+
+#: toke.l:1084
msgid "too many levels of includes"
msgstr "för många nivåer av inkluderingar"
+#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
+#~ msgstr "Förinläs attrapp-exec-funktioner som finns i biblioteket sudo_noexec"
+
+#~ msgid "sudo_ldap_conf_add_ports: port too large"
+#~ msgstr "sudo_ldap_conf_add_ports: port är för stor"
+
+#~ msgid "unable to lock log file: %s"
+#~ msgstr "kan inte låsa loggfil: %s"
+
#~ msgid "SSL_connect failed: ssl_error=%d, stack=%s\n"
#~ msgstr "SSL_connect misslyckades: ssl_error=%d, stack=%s\n"
}
#endif /* HAVE_LOGIN_CAP_H */
#ifdef HAVE_SELINUX
- if (user_role != NULL) {
+ if (def_selinux && user_role != NULL) {
if ((command_info[info_len++] = sudo_new_key_val("selinux_role", user_role)) == NULL)
goto oom;
}
- if (user_type != NULL) {
+ if (def_selinux && user_type != NULL) {
if ((command_info[info_len++] = sudo_new_key_val("selinux_type", user_type)) == NULL)
goto oom;
}
rcs->refcnt = 1;
rcs->str[0] = '\0';
/* cppcheck-suppress memleak */
- debug_return_ptr(rcs->str);
+ debug_return_ptr(rcs->str); // -V773
}
char *
* Similarly, the fake root node keeps us from having to worry
* about splitting the root.
*/
- tree->root.left = tree->root.right = tree->root.parent = &tree->nil;
+ tree->root.left = tree->root.right = tree->root.parent = &tree->nil; // -V778
tree->root.color = black;
tree->root.data = NULL;
mib[3] = (int)pid;
mib[4] = sizeof(*ki_proc);
mib[5] = 1;
- do {
+ for (;;) {
struct sudo_kinfo_proc *kp;
size += size / 10;
}
ki_proc = kp;
rc = sysctl(mib, sudo_kp_namelen, ki_proc, &size, NULL, 0);
- } while (rc == -1 && errno == ENOMEM);
+ if (rc != -1 || errno != ENOMEM)
+ break;
+ }
if (rc != -1) {
#if defined(HAVE_KINFO_PROC_FREEBSD)
/* FreeBSD and Dragonfly */
free(def_runchroot);
if ((def_runchroot = strdup(user_runchroot)) == NULL) {
sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
- debug_return_bool(-1);
+ debug_return_int(-1);
}
debug_return_bool(true);
}
nwritten = write(fd, entry, entry->size);
} else {
old_eof = offset;
-#ifdef HAVE_PWRITE
nwritten = pwrite(fd, entry, entry->size, offset);
-#else
- if (lseek(fd, offset, SEEK_SET) == -1) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO|SUDO_DEBUG_LINENO,
- "unable to seek to %lld", (long long)offset);
- nwritten = -1;
- } else {
- nwritten = write(fd, entry, entry->size);
- }
-#endif
}
if ((size_t)nwritten != entry->size) {
if (nwritten == -1) {
}
/* Seek to the record position and read it. */
-#ifdef HAVE_PREAD
nread = pread(cookie->fd, entry, sizeof(*entry), cookie->pos);
-#else
- if (lseek(cookie->fd, cookie->pos, SEEK_SET) == -1) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO|SUDO_DEBUG_LINENO,
- "unable to seek to %lld", (long long)cookie->pos);
- goto done;
- }
- nread = read(cookie->fd, entry, sizeof(*entry));
-#endif
if (nread != sizeof(*entry)) {
/* short read, should not happen */
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
# define NAMLEN(dirent) strlen((dirent)->d_name)
#endif
+// PVS Studio suppression
+// -V::519, 1004, 1037
+
int sudolineno; /* current sudoers line number. */
char *sudoers; /* sudoers file being parsed. */
struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */
-#line 2799 "toke.c"
+#line 2802 "toke.c"
#define INITIAL 0
#define GOTDEFS 1
}
{
-#line 114 "toke.l"
+#line 117 "toke.l"
-#line 3021 "toke.c"
+#line 3024 "toke.c"
while ( 1 ) /* loops until end-of-file is reached */
{
case 1:
YY_RULE_SETUP
-#line 115 "toke.l"
+#line 118 "toke.l"
{
LEXTRACE(", ");
return ',';
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 120 "toke.l"
+#line 123 "toke.l"
BEGIN STARTDEFS;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 122 "toke.l"
+#line 125 "toke.l"
{
BEGIN INDEFS;
LEXTRACE("DEFVAR ");
case 4:
YY_RULE_SETUP
-#line 131 "toke.l"
+#line 134 "toke.l"
{
BEGIN STARTDEFS;
LEXTRACE(", ");
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 137 "toke.l"
+#line 140 "toke.l"
{
LEXTRACE("= ");
return '=';
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 142 "toke.l"
+#line 145 "toke.l"
{
LEXTRACE("+= ");
return '+';
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 147 "toke.l"
+#line 150 "toke.l"
{
LEXTRACE("-= ");
return '-';
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 152 "toke.l"
+#line 155 "toke.l"
{
LEXTRACE("BEGINSTR ");
sudoerslval.string = NULL;
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 159 "toke.l"
+#line 162 "toke.l"
{
LEXTRACE("WORD(2) ");
if (!fill(sudoerstext, sudoersleng))
case 10:
/* rule 10 can match eol */
YY_RULE_SETUP
-#line 168 "toke.l"
+#line 171 "toke.l"
{
/* Line continuation char followed by newline. */
sudolineno++;
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 174 "toke.l"
+#line 177 "toke.l"
{
LEXTRACE("ENDSTR ");
BEGIN prev_state;
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 209 "toke.l"
+#line 212 "toke.l"
{
LEXTRACE("BACKSLASH ");
if (!append(sudoerstext, sudoersleng))
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 215 "toke.l"
+#line 218 "toke.l"
{
LEXTRACE("STRBODY ");
if (!append(sudoerstext, sudoersleng))
case 14:
YY_RULE_SETUP
-#line 223 "toke.l"
+#line 226 "toke.l"
{
/* quoted fnmatch glob char, pass verbatim */
LEXTRACE("QUOTEDCHAR ");
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 231 "toke.l"
+#line 234 "toke.l"
{
/* quoted sudoers special char, strip backslash */
LEXTRACE("QUOTEDCHAR ");
case 16:
/* rule 16 can match eol */
YY_RULE_SETUP
-#line 239 "toke.l"
+#line 242 "toke.l"
{
BEGIN INITIAL;
sudoersless(0);
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 246 "toke.l"
+#line 249 "toke.l"
{
LEXTRACE("ARG ");
if (!fill_args(sudoerstext, sudoersleng, sawspace))
case 18:
YY_RULE_SETUP
-#line 254 "toke.l"
+#line 257 "toke.l"
{
/* Only return DIGEST if the length is correct. */
yy_size_t digest_len =
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 269 "toke.l"
+#line 272 "toke.l"
{
/* Only return DIGEST if the length is correct. */
yy_size_t len, digest_len =
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 291 "toke.l"
+#line 294 "toke.l"
{
if (continued) {
sudoerserror(N_("invalid line continuation"));
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 303 "toke.l"
+#line 306 "toke.l"
{
if (continued) {
sudoerserror(N_("invalid line continuation"));
case 22:
/* rule 22 can match eol */
YY_RULE_SETUP
-#line 315 "toke.l"
+#line 318 "toke.l"
{
if (continued) {
sudoerserror(N_("invalid line continuation"));
case 23:
/* rule 23 can match eol */
YY_RULE_SETUP
-#line 331 "toke.l"
+#line 334 "toke.l"
{
if (continued) {
sudoerserror(N_("invalid line continuation"));
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 347 "toke.l"
+#line 350 "toke.l"
{
char deftype;
int n;
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 388 "toke.l"
+#line 391 "toke.l"
{
int n;
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 415 "toke.l"
+#line 418 "toke.l"
{
/* cmnd does not require passwd for this user */
LEXTRACE("NOPASSWD ");
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 421 "toke.l"
+#line 424 "toke.l"
{
/* cmnd requires passwd for this user */
LEXTRACE("PASSWD ");
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 427 "toke.l"
+#line 430 "toke.l"
{
LEXTRACE("NOEXEC ");
return NOEXEC;
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 432 "toke.l"
+#line 435 "toke.l"
{
LEXTRACE("EXEC ");
return EXEC;
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 437 "toke.l"
+#line 440 "toke.l"
{
LEXTRACE("SETENV ");
return SETENV;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 442 "toke.l"
+#line 445 "toke.l"
{
LEXTRACE("NOSETENV ");
return NOSETENV;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 447 "toke.l"
+#line 450 "toke.l"
{
LEXTRACE("LOG_OUTPUT ");
return LOG_OUTPUT;
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 452 "toke.l"
+#line 455 "toke.l"
{
LEXTRACE("NOLOG_OUTPUT ");
return NOLOG_OUTPUT;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 457 "toke.l"
+#line 460 "toke.l"
{
LEXTRACE("LOG_INPUT ");
return LOG_INPUT;
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 462 "toke.l"
+#line 465 "toke.l"
{
LEXTRACE("NOLOG_INPUT ");
return NOLOG_INPUT;
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 467 "toke.l"
+#line 470 "toke.l"
{
LEXTRACE("MAIL ");
return MAIL;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 472 "toke.l"
+#line 475 "toke.l"
{
LEXTRACE("NOMAIL ");
return NOMAIL;
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 477 "toke.l"
+#line 480 "toke.l"
{
LEXTRACE("FOLLOW ");
return FOLLOWLNK;
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 482 "toke.l"
+#line 485 "toke.l"
{
LEXTRACE("NOFOLLOW ");
return NOFOLLOWLNK;
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 487 "toke.l"
+#line 490 "toke.l"
{
if (sudoerstext[0] == '+')
sudoerserror(N_("empty netgroup"));
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 496 "toke.l"
+#line 499 "toke.l"
{
/* netgroup */
if (!fill(sudoerstext, sudoersleng))
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 504 "toke.l"
+#line 507 "toke.l"
{
/* group */
if (!fill(sudoerstext, sudoersleng))
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 512 "toke.l"
+#line 515 "toke.l"
{
if (!fill(sudoerstext, sudoersleng))
yyterminate();
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 519 "toke.l"
+#line 522 "toke.l"
{
if (!fill(sudoerstext, sudoersleng))
yyterminate();
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 526 "toke.l"
+#line 529 "toke.l"
{
if (!ipv6_valid(sudoerstext)) {
sudoerserror(N_("invalid IPv6 address"));
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 538 "toke.l"
+#line 541 "toke.l"
{
if (!ipv6_valid(sudoerstext)) {
sudoerserror(N_("invalid IPv6 address"));
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 550 "toke.l"
+#line 553 "toke.l"
{
LEXTRACE("ALL ");
return ALL;
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 556 "toke.l"
+#line 559 "toke.l"
{
LEXTRACE("CMND_TIMEOUT ");
return CMND_TIMEOUT;
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 561 "toke.l"
+#line 564 "toke.l"
{
LEXTRACE("NOTBEFORE ");
return NOTBEFORE;
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 566 "toke.l"
+#line 569 "toke.l"
{
LEXTRACE("NOTAFTER ");
return NOTAFTER;
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 571 "toke.l"
+#line 574 "toke.l"
{
LEXTRACE("CWD ");
prev_state = YY_START;
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 578 "toke.l"
+#line 581 "toke.l"
{
LEXTRACE("CHROOT ");
prev_state = YY_START;
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 585 "toke.l"
+#line 588 "toke.l"
{
#ifdef HAVE_SELINUX
LEXTRACE("ROLE ");
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 594 "toke.l"
+#line 597 "toke.l"
{
#ifdef HAVE_SELINUX
LEXTRACE("TYPE ");
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 602 "toke.l"
+#line 605 "toke.l"
{
#ifdef HAVE_PRIV_SET
LEXTRACE("PRIVS ");
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 611 "toke.l"
+#line 614 "toke.l"
{
#ifdef HAVE_PRIV_SET
LEXTRACE("LIMITPRIVS ");
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 620 "toke.l"
+#line 623 "toke.l"
{
got_alias:
if (!fill(sudoerstext, sudoersleng))
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 628 "toke.l"
+#line 631 "toke.l"
{
/* XXX - no way to specify digest for command */
/* no command args allowed for Defaults!/path */
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 637 "toke.l"
+#line 640 "toke.l"
{
digest_type = SUDO_DIGEST_SHA224;
BEGIN WANTDIGEST;
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 644 "toke.l"
+#line 647 "toke.l"
{
digest_type = SUDO_DIGEST_SHA256;
BEGIN WANTDIGEST;
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 651 "toke.l"
+#line 654 "toke.l"
{
digest_type = SUDO_DIGEST_SHA384;
BEGIN WANTDIGEST;
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 658 "toke.l"
+#line 661 "toke.l"
{
digest_type = SUDO_DIGEST_SHA512;
BEGIN WANTDIGEST;
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 665 "toke.l"
+#line 668 "toke.l"
{
BEGIN GOTCMND;
LEXTRACE("COMMAND ");
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 672 "toke.l"
+#line 675 "toke.l"
{
BEGIN prev_state;
if (!fill(sudoerstext, sudoersleng))
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 680 "toke.l"
+#line 683 "toke.l"
{
/* directories can't have args... */
if (sudoerstext[sudoersleng - 1] == '/') {
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 694 "toke.l"
+#line 697 "toke.l"
{
LEXTRACE("BEGINSTR ");
sudoerslval.string = NULL;
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 701 "toke.l"
+#line 704 "toke.l"
{
/* a word */
if (!fill(sudoerstext, sudoersleng))
case 68:
YY_RULE_SETUP
-#line 710 "toke.l"
+#line 713 "toke.l"
{
/* include file/directory */
if (!fill(sudoerstext, sudoersleng))
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 719 "toke.l"
+#line 722 "toke.l"
{
LEXTRACE("BEGINSTR ");
sudoerslval.string = NULL;
case 70:
YY_RULE_SETUP
-#line 727 "toke.l"
+#line 730 "toke.l"
{
LEXTRACE("( ");
return '(';
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 732 "toke.l"
+#line 735 "toke.l"
{
LEXTRACE(") ");
return ')';
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 737 "toke.l"
+#line 740 "toke.l"
{
LEXTRACE(", ");
return ',';
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 742 "toke.l"
+#line 745 "toke.l"
{
LEXTRACE("= ");
return '=';
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 747 "toke.l"
+#line 750 "toke.l"
{
LEXTRACE(": ");
return ':';
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 752 "toke.l"
+#line 755 "toke.l"
{
if (sudoersleng & 1) {
LEXTRACE("!");
case 76:
/* rule 76 can match eol */
YY_RULE_SETUP
-#line 759 "toke.l"
+#line 762 "toke.l"
{
if (YY_START == INSTR) {
/* re-scan after changing state */
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 775 "toke.l"
+#line 778 "toke.l"
{ /* throw away space/tabs */
sawspace = true; /* but remember for fill_args */
}
case 78:
/* rule 78 can match eol */
YY_RULE_SETUP
-#line 779 "toke.l"
+#line 782 "toke.l"
{
sawspace = true; /* remember for fill_args */
sudolineno++;
case 79:
/* rule 79 can match eol */
YY_RULE_SETUP
-#line 785 "toke.l"
+#line 788 "toke.l"
{
if (sudoerstext[sudoersleng - 1] == '\n') {
/* comment ending in a newline */
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 800 "toke.l"
+#line 803 "toke.l"
{
LEXTRACE("NOMATCH ");
return NOMATCH;
case YY_STATE_EOF(WANTDIGEST):
case YY_STATE_EOF(GOTINC):
case YY_STATE_EOF(EXPECTPATH):
-#line 805 "toke.l"
+#line 808 "toke.l"
{
if (!pop_include())
yyterminate();
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 810 "toke.l"
+#line 813 "toke.l"
ECHO;
YY_BREAK
-#line 4037 "toke.c"
+#line 4040 "toke.c"
case YY_END_OF_BUFFER:
{
#define YYTABLES_NAME "yytables"
-#line 810 "toke.l"
+#line 813 "toke.l"
struct path_list {
# define NAMLEN(dirent) strlen((dirent)->d_name)
#endif
+// PVS Studio suppression
+// -V::519, 1004, 1037
+
int sudolineno; /* current sudoers line number. */
char *sudoers; /* sudoers file being parsed. */
struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */
*dst = '\0';
/* Check for sudoedit specified as a fully-qualified path. */
- if ((dst = strrchr(sudoerslval.command.cmnd, '/')) != NULL) {
+ if ((dst = strrchr(sudoerslval.command.cmnd, '/')) != NULL) { // -V575
if (strcmp(dst, "/sudoedit") == 0) {
if (sudoers_strict) {
sudoerserror(
{
if (pwf == NULL) {
pwf = fopen(pwfile, "r");
- if (pwf != NULL)
- (void)fcntl(fileno(pwf), F_SETFD, FD_CLOEXEC);
+ if (pwf != NULL) {
+ if (fcntl(fileno(pwf), F_SETFD, FD_CLOEXEC) == -1) {
+ fclose(pwf);
+ pwf = NULL;
+ }
+ }
} else {
rewind(pwf);
}
if (pwf == NULL) {
if ((pwf = fopen(pwfile, "r")) == NULL)
return NULL;
- (void)fcntl(fileno(pwf), F_SETFD, FD_CLOEXEC);
+ if (fcntl(fileno(pwf), F_SETFD, FD_CLOEXEC) == -1) {
+ fclose(pwf);
+ return NULL;
+ }
} else {
rewind(pwf);
}
if (pwf == NULL) {
if ((pwf = fopen(pwfile, "r")) == NULL)
return NULL;
- (void)fcntl(fileno(pwf), F_SETFD, FD_CLOEXEC);
+ if (fcntl(fileno(pwf), F_SETFD, FD_CLOEXEC) == -1) {
+ fclose(pwf);
+ return NULL;
+ }
} else {
rewind(pwf);
}
{
if (grf == NULL) {
grf = fopen(grfile, "r");
- if (grf != NULL)
- (void)fcntl(fileno(grf), F_SETFD, FD_CLOEXEC);
+ if (grf != NULL) {
+ if (fcntl(fileno(grf), F_SETFD, FD_CLOEXEC) == -1) {
+ fclose(grf);
+ grf = NULL;
+ }
+ }
} else {
rewind(grf);
}
if (grf == NULL) {
if ((grf = fopen(grfile, "r")) == NULL)
return NULL;
- (void)fcntl(fileno(grf), F_SETFD, FD_CLOEXEC);
+ if (fcntl(fileno(grf), F_SETFD, FD_CLOEXEC) == -1) {
+ fclose(grf);
+ grf = NULL;
+ }
} else {
rewind(grf);
}
if (grf == NULL) {
if ((grf = fopen(grfile, "r")) == NULL)
return NULL;
- (void)fcntl(fileno(grf), F_SETFD, FD_CLOEXEC);
+ if (fcntl(fileno(grf), F_SETFD, FD_CLOEXEC) == -1) {
+ fclose(grf);
+ grf = NULL;
+ }
} else {
rewind(grf);
}
GETGROUPS_T **groupsp, int *ngroupsp)
{
GETGROUPS_T *groups = *groupsp;
- int grpsize = *ngroupsp;
- int i, ngroups = 1;
+ int i, grpsize, ngroups = 1;
int ret = -1;
struct group *grp;
grpsize <<= 2;
} else {
/* Static group vector. */
- if (grpsize < 1)
+ if ((grpsize = *ngroupsp) < 1)
return -1;
}
ac = editor_argc - 3;
if (lineno > 0) {
(void)snprintf(linestr, sizeof(linestr), "+%d", lineno);
- editor_argv[ac++] = linestr;
+ editor_argv[ac++] = linestr; // -V507
}
editor_argv[ac++] = "--";
editor_argv[ac++] = sp->tpath;
SSP_LDFLAGS = @SSP_LDFLAGS@
# cppcheck options, usually set in the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# splint options, usually set in the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
#
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.2rc1\n"
+"Project-Id-Version: sudo 1.9.3b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-06-24 05:35-0600\n"
-"PO-Revision-Date: 2020-07-17 23:13+0900\n"
+"POT-Creation-Date: 2020-09-12 08:28-0600\n"
+"PO-Revision-Date: 2020-12-11 01:07+0900\n"
"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
"Language-Team: Korean <translation-team-ko@googlegroups.com>\n"
"Language: ko\n"
#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:462 src/load_plugins.c:468
-#: src/parse_args.c:176 src/parse_args.c:197 src/parse_args.c:270
-#: src/parse_args.c:593 src/parse_args.c:615 src/parse_args.c:640
+#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
+#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:485 src/selinux.c:494 src/sesh.c:116
-#: src/sudo.c:624 src/sudo.c:693 src/sudo.c:703 src/sudo.c:724 src/sudo.c:743
-#: src/sudo.c:752 src/sudo.c:761 src/sudo.c:778 src/sudo.c:820 src/sudo.c:830
-#: src/sudo.c:859 src/sudo.c:1045 src/sudo.c:1067 src/sudo.c:1365
-#: src/sudo.c:1538 src/sudo.c:1732 src/sudo.c:2076 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:974
-#: src/sudo_edit.c:994
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
+#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
+#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
+#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
+#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
+#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
+#: src/sudo_edit.c:996
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:462 src/load_plugins.c:468
-#: src/parse_args.c:176 src/parse_args.c:198 src/parse_args.c:270
-#: src/parse_args.c:593 src/parse_args.c:615 src/parse_args.c:640
+#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
+#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:485 src/selinux.c:494 src/sesh.c:116
-#: src/sudo.c:234 src/sudo.c:624 src/sudo.c:859 src/sudo.c:1045
-#: src/sudo.c:1067 src/sudo.c:1365 src/sudo.c:1538 src/sudo.c:1732
-#: src/sudo.c:2076 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:974 src/sudo_edit.c:994
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
+#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
+#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
+#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
+#: src/sudo_edit.c:976 src/sudo_edit.c:996
msgid "unable to allocate memory"
msgstr "메모리를 할당할 수 없습니다"
#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:367
+#: src/selinux.c:264 src/sudo.c:369
#, c-format
msgid "unable to open %s"
msgstr "%s을(를) 열 수 없습니다"
msgid "%s is group writable"
msgstr "%s에 그룹 구성원이 기록할 수 있습니다"
-#: src/copy_file.c:118
+#: src/copy_file.c:91
+#, c-format
+msgid "%s: truncate %s to zero bytes? (y/n) [n] "
+msgstr "%s: %s 문자열을 0 바이트로 자릅니까? (y/n) [n] "
+
+#: src/copy_file.c:95
+#, c-format
+msgid "not overwriting %s"
+msgstr "%s 덮어쓰지 않음"
+
+#: src/copy_file.c:117
#, c-format
msgid "unable to read from %s"
msgstr "%s을(를) 읽을 수 없습니다"
-#: src/copy_file.c:122 src/sudo_edit.c:695
+#: src/copy_file.c:134 src/sudo_edit.c:695
#, c-format
msgid "unable to write to %s"
msgstr "%s에 기록할 수 없습니다"
msgstr "처리 tty를 설정할 수 없습니다"
#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:304
+#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "파이프를 만들 수 없습니다"
msgstr "상위로부터 메시지를 받을 수 없습니다"
#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:308
+#: src/sudo_edit.c:735 src/tgetpass.c:310
msgid "unable to fork"
msgstr "포킹할 수 없습니다"
msgid "unable to restore tty label"
msgstr "tty 레이블을 복원할 수 없습니다"
-#: src/exec_monitor.c:632 src/sesh.c:126 src/sudo.c:1123
+#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
#, c-format
msgid "unable to execute %s"
msgstr "%s을(를) 실행할 수 없습니다"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:353
+#: src/load_plugins.c:354
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "%s의 %d번째 줄에서 \"%s\" 플러그인을 불러오는 중 오류"
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "%2$s의 %3$d번째 줄에서 \"%1$s\" 정책 플러그인 무시"
-#: src/load_plugins.c:329
+#: src/load_plugins.c:330
msgid "only a single policy plugin may be specified"
msgstr "단일 정책 플러그인을 지정하십시오"
-#: src/load_plugins.c:355
+#: src/load_plugins.c:356
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "%2$s에 알 수 없는 정책 유형 %1$d이(가) 있습니다"
-#: src/load_plugins.c:541
+#: src/load_plugins.c:552
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "%s 정책 플러그인에 check_policy 메서드가 없습니다"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:477
+#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
#, c-format
msgid "internal error, %s overflow"
msgstr "내부 오류, %s 오버플로우"
-#: src/parse_args.c:218
+#: src/parse_args.c:223
#, c-format
msgid "invalid environment variable name: %s"
msgstr "잘못된 환경 변수 이름: %s"
-#: src/parse_args.c:319
+#: src/parse_args.c:325
msgid "the argument to -C must be a number greater than or equal to 3"
msgstr "-C의 인자 값은 3보다 크거나 같아야 합니다"
-#: src/parse_args.c:532
+#: src/parse_args.c:552
msgid "you may not specify both the -i and -s options"
msgstr "-i 와 -s 옵션을 함께 지정할 수 없습니다"
-#: src/parse_args.c:536
+#: src/parse_args.c:557
msgid "you may not specify both the -i and -E options"
msgstr "-i 와 -E 옵션을 함께 지정할 수 없습니다"
-#: src/parse_args.c:546
+#: src/parse_args.c:567
msgid "the -E option is not valid in edit mode"
msgstr "-E 옵션은 편집 모드에서 유효하지 않습니다"
-#: src/parse_args.c:548
+#: src/parse_args.c:570
msgid "you may not specify environment variables in edit mode"
msgstr "편집 모드에서 환경 변수를 지정할 수 없습니다"
-#: src/parse_args.c:557
+#: src/parse_args.c:580
msgid "the -U option may only be used with the -l option"
msgstr "-U 옵션은 -l 옵션만 함께 사용할 수 있습니다"
-#: src/parse_args.c:561
+#: src/parse_args.c:584
msgid "the -A and -S options may not be used together"
msgstr "-A 와 -S 옵션을 함께 사용할 수 없습니다"
-#: src/parse_args.c:654
+#: src/parse_args.c:677
msgid "sudoedit is not supported on this platform"
msgstr "이 플랫폼에서 sudoedit를 지원하지 않습니다"
-#: src/parse_args.c:735
+#: src/parse_args.c:759
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:749
+#: src/parse_args.c:773
#, c-format
msgid ""
"%s - edit files as another user\n"
"%s - 다른 사용자 권한으로 파일을 편집합니다\n"
"\n"
-#: src/parse_args.c:751
+#: src/parse_args.c:775
#, c-format
msgid ""
"%s - execute a command as another user\n"
"%s - 다른 사용자 권한으로 명령을 실행합니다\n"
"\n"
-#: src/parse_args.c:756
-#, c-format
+#: src/parse_args.c:780
msgid ""
"\n"
"Options:\n"
"\n"
"옵션:\n"
-#: src/parse_args.c:758
+#: src/parse_args.c:782
msgid "use a helper program for password prompting"
msgstr "암호 질문에 보조 프로그램 활용"
-#: src/parse_args.c:761
+#: src/parse_args.c:785
msgid "use specified BSD authentication type"
msgstr "지정 BSD 인증 형식 활용"
-#: src/parse_args.c:764
+#: src/parse_args.c:788
msgid "run command in the background"
msgstr "백그라운드에서 명령 실행"
-#: src/parse_args.c:766
+#: src/parse_args.c:790
msgid "ring bell when prompting"
msgstr "프롬프트를 띄울 때 알림 소리를 냅니다"
-#: src/parse_args.c:768
+#: src/parse_args.c:792
msgid "close all file descriptors >= num"
msgstr "num 보다 크거나 같은 모든 파일 서술자를 닫습니다"
-#: src/parse_args.c:771
+#: src/parse_args.c:795
msgid "run command with the specified BSD login class"
msgstr "지정 BSD 로그인 클래스로 명령을 실행합니다"
-#: src/parse_args.c:774
+#: src/parse_args.c:798
+msgid "change the working directory before running command"
+msgstr "명령 실행 전 작업 디렉터리를 바꿉니다"
+
+#: src/parse_args.c:800
msgid "preserve user environment when running command"
msgstr "명령을 실행할 때 사용자 환경을 유지합니다"
-#: src/parse_args.c:776
+#: src/parse_args.c:802
msgid "preserve specific environment variables"
msgstr "지정 환경 변수 값을 유지합니다"
-#: src/parse_args.c:778
+#: src/parse_args.c:804
msgid "edit files instead of running a command"
msgstr "명령을 실행하는 대신 파일을 편집합니다"
-#: src/parse_args.c:780
+#: src/parse_args.c:806
msgid "run command as the specified group name or ID"
msgstr "지정 그룹 이름 또는 ID로 명령을 실행합니다"
-#: src/parse_args.c:782
+#: src/parse_args.c:808
msgid "set HOME variable to target user's home dir"
msgstr "대상 사용자의 내 폴더에 HOME 변수를 지정합니다"
-#: src/parse_args.c:784
+#: src/parse_args.c:810
msgid "display help message and exit"
msgstr "도움말을 보여주고 빠져나갑니다"
-#: src/parse_args.c:786
+#: src/parse_args.c:812
msgid "run command on host (if supported by plugin)"
msgstr "(플러그인에서 지원한다면)호스트에서 명령을 실행합니다"
-#: src/parse_args.c:788
+#: src/parse_args.c:814
msgid "run login shell as the target user; a command may also be specified"
msgstr "대상 사용자 자격으로 셸에 로그인하며 명령을 지정할 수 있습니다"
-#: src/parse_args.c:790
+#: src/parse_args.c:816
msgid "remove timestamp file completely"
msgstr "타임스탬프 파일을 완전히 제거합니다"
-#: src/parse_args.c:792
+#: src/parse_args.c:818
msgid "invalidate timestamp file"
msgstr "타임스탬프 파일을 초기화합니다"
-#: src/parse_args.c:794
+#: src/parse_args.c:820
msgid "list user's privileges or check a specific command; use twice for longer format"
msgstr "사용자 권한을 보여주거나 지정 명령을 확인합니다. 긴 형식으로 보려면 옵션을 두 번 사용하십시오"
-#: src/parse_args.c:796
+#: src/parse_args.c:822
msgid "non-interactive mode, no prompts are used"
msgstr "비대화형 모드. 프롬프트를 사용하지 않습니다"
-#: src/parse_args.c:798
+#: src/parse_args.c:824
msgid "preserve group vector instead of setting to target's"
msgstr "대상을 설정하는 대신 그룹 벡터를 유지합니다"
-#: src/parse_args.c:800
+#: src/parse_args.c:826
msgid "use the specified password prompt"
msgstr "지정 암호 프롬프트를 활용합니다"
-#: src/parse_args.c:803
+#: src/parse_args.c:828
+msgid "change the root directory before running command"
+msgstr "명령 실행 전 루트 디렉터리를 바꿉니다"
+
+#: src/parse_args.c:831
msgid "create SELinux security context with specified role"
msgstr "지정 역할을 지닌 SELinux 보안 컨텍스트를 만듭니다"
-#: src/parse_args.c:806
+#: src/parse_args.c:834
msgid "read password from standard input"
msgstr "표준 입력으로 암호를 입력 받습니다"
-#: src/parse_args.c:808
+#: src/parse_args.c:836
msgid "run shell as the target user; a command may also be specified"
msgstr "셸을 대상 사용자 명의로 실행하며 명령을 지정할 수 있습니다"
-#: src/parse_args.c:811
+#: src/parse_args.c:839
msgid "create SELinux security context with specified type"
msgstr "지정 유형의 SELinux 보안 컨텍스트를 만듭니다"
-#: src/parse_args.c:814
+#: src/parse_args.c:842
msgid "terminate command after the specified time limit"
msgstr "지정 제한 시간 이후로 명령 실행을 멈춥니다"
-#: src/parse_args.c:816
+#: src/parse_args.c:844
msgid "in list mode, display privileges for user"
msgstr "목록 모드에서 사용자 권한을 보여줍니다"
-#: src/parse_args.c:818
+#: src/parse_args.c:846
msgid "run command (or edit file) as specified user name or ID"
msgstr "지정한 사용자 이름 또는 ID로 명령을 실행(또는 파일 편집)"
-#: src/parse_args.c:820
+#: src/parse_args.c:848
msgid "display version information and exit"
msgstr "버전 정보를 보여주고 나갑니다"
-#: src/parse_args.c:822
+#: src/parse_args.c:850
msgid "update user's timestamp without running a command"
msgstr "명령을 실행하지 않고 사용자 타임스탬프를 업데이트합니다"
-#: src/parse_args.c:824
+#: src/parse_args.c:852
msgid "stop processing command line arguments"
msgstr "명령행 인자 처리를 멈춥니다"
msgid "unable to set key creation context to %s"
msgstr "키 생성 컨텍스트를 %s(으)로 설정할 수 없습니다"
-#: src/sesh.c:78
+#: src/sesh.c:77
msgid "requires at least one argument"
msgstr "최소한 하나의 인자가 필요합니다"
-#: src/sesh.c:107
+#: src/sesh.c:106
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "잘못된 파일 서술자 번호: %s"
-#: src/sesh.c:121
+#: src/sesh.c:120
#, c-format
msgid "unable to run %s as a login shell"
msgstr "%s(을)를 로그인 쉘로 실행할 수 없습니다"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "경고! \"%s\" 프로젝트에 자원 처리 할당에 실패했습니다"
-#: src/sudo.c:219
+#: src/sudo.c:220
#, c-format
msgid "Sudo version %s\n"
msgstr "sudo 버전 %s\n"
-#: src/sudo.c:221
+#: src/sudo.c:222
#, c-format
msgid "Configure options: %s\n"
msgstr "설정 옵션: %s\n"
-#: src/sudo.c:230
+#: src/sudo.c:231
msgid "fatal error, unable to load plugins"
msgstr "치명적인 오류. 플러그인을 불러올 수 없습니다"
-#: src/sudo.c:275
+#: src/sudo.c:277
msgid "plugin did not return a command to execute"
msgstr "플러그인에서 실행할 명령을 반환하지 않았습니다"
-#: src/sudo.c:310
+#: src/sudo.c:312
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "예상치 못한 sudo 모드 0x%x"
-#: src/sudo.c:543
+#: src/sudo.c:546
#, c-format
msgid "you do not exist in the %s database"
msgstr "%s 데이터베이스에 없는 사용자입니다"
-#: src/sudo.c:600
+#: src/sudo.c:603
msgid "unable to determine tty"
msgstr "tty를 지정할 수 없습니다"
-#: src/sudo.c:905
+#: src/sudo.c:913
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s은(는) %d uid를 소유해야 하며 setuid 비트를 설정해야 합니다"
-#: src/sudo.c:908
+#: src/sudo.c:916
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "%d은(는) 유효한 uid가 아닙니다. %s은(는) 'nosuid' 옵션을 설정한 파일 시스템이거나 루트 권한이 없는 NFS 파일 시스템입니까?"
-#: src/sudo.c:914
+#: src/sudo.c:922
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "%d은(는) 유효한 uid가 아닙니다. sudo에 setuid root를 설치했습니까?"
-#: src/sudo.c:930
+#: src/sudo.c:938
msgid "unable to set supplementary group IDs"
msgstr "추가 그룹 ID를 설정할 수 없습니다"
-#: src/sudo.c:937
+#: src/sudo.c:945
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "유효한 gid를 %u 실행 gid로 설정할 수 없습니다"
-#: src/sudo.c:943
+#: src/sudo.c:951
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "gid를 실행 gid %u(으)로 설정할 수 없습니다"
-#: src/sudo.c:986
+#: src/sudo.c:994
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "예상치 못한 하위 프로세스 중단 상태: %d"
-#: src/sudo.c:1095
+#: src/sudo.c:1103
msgid "unable to initialize policy plugin"
msgstr "정책 플러그인을 초기화할 수 없습니다"
-#: src/sudo.c:1158
+#: src/sudo.c:1166
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "%s 정책 플러그인에 \"check_policy\" 메서드가 빠졌습니다"
-#: src/sudo.c:1173 src/sudo.c:1226 src/sudo.c:1270
+#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
msgid "command rejected by policy"
msgstr "정책을 통해 명령을 거부 했습니다"
-#: src/sudo.c:1178 src/sudo.c:1231 src/sudo.c:1275
+#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
msgid "policy plugin error"
msgstr "정책 플러그인 오류"
-#: src/sudo.c:1212
+#: src/sudo.c:1220
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "%s 정책 플러그인에서 권한 조회를 지원하지 않습니다"
-#: src/sudo.c:1256
+#: src/sudo.c:1264
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "%s 정책 플러그인에서 -v 옵션을 지원하지 않습니다"
-#: src/sudo.c:1294
+#: src/sudo.c:1302
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "%s 정책 플러그인에서 -k/-K 옵션을 지원하지 않습니다"
-#: src/sudo.c:1423
+#: src/sudo.c:1431
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "%s 입출력 플러그인 초기화 오류"
-#: src/sudo.c:1577
+#: src/sudo.c:1585
#, c-format
msgid "error initializing audit plugin %s"
msgstr "%s 감사 플러그인 초기화 오류"
-#: src/sudo.c:1755
+#: src/sudo.c:1763
#, c-format
msgid "error initializing approval plugin %s"
msgstr "%s 승인 플러그인 초기화 오류"
-#: src/sudo.c:1831
+#: src/sudo.c:1839
msgid "command rejected by approver"
msgstr "승인자가 명령을 거부했습니다"
-#: src/sudo.c:1840
+#: src/sudo.c:1848
msgid "approval plugin error"
msgstr "승인 플러그인 오류"
msgid "%s unchanged"
msgstr "%s 바꾸지 않음"
-#: src/sudo_edit.c:706 src/sudo_edit.c:907
+#: src/sudo_edit.c:706 src/sudo_edit.c:909
#, c-format
msgid "contents of edit session left in %s"
msgstr "%s에 편집 세션 내용 남음"
msgid "sesh: unable to create temporary files"
msgstr "sesh: 임시 파일을 만들 수 없습니다"
-#: src/sudo_edit.c:818 src/sudo_edit.c:900
+#: src/sudo_edit.c:818 src/sudo_edit.c:902
msgid "sesh: killed by a signal"
msgstr "sesh: 시그널을 받아 죽음"
-#: src/sudo_edit.c:820 src/sudo_edit.c:903
+#: src/sudo_edit.c:820 src/sudo_edit.c:905
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: 잘못된 오류 %d"
-#: src/sudo_edit.c:894
+#: src/sudo_edit.c:895
msgid "unable to copy temporary files back to their original location"
msgstr "원위치에 임시 파일을 복사할 수 없습니다"
-#: src/sudo_edit.c:897
+#: src/sudo_edit.c:899
msgid "unable to copy some of the temporary files back to their original location"
msgstr "원 위치에 임시 파일 일부를 복사할 수 없습니다"
-#: src/sudo_edit.c:941
+#: src/sudo_edit.c:943
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "uid를 루트로 바꿀 수 없습니다(%u)"
-#: src/sudo_edit.c:958
+#: src/sudo_edit.c:960
msgid "plugin error: missing file list for sudoedit"
msgstr "플러그인 오류: sudoedit에 파일 목록이 빠짐"
-#: src/sudo_edit.c:1009 src/sudo_edit.c:1022
+#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
msgid "unable to read the clock"
msgstr "클록을 읽을 수 없습니다"
msgid "unable to read password"
msgstr "암호를 읽을 수 없습니다"
-#: src/tgetpass.c:140
+#: src/tgetpass.c:141
msgid "a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper"
msgstr "암호를 읽으려면 터미널이 필요합니다. -S 옵션을 사용하여 표준 입력으로 암호를 받거나 askpass 도우미를 설정하십시오"
-#: src/tgetpass.c:150
+#: src/tgetpass.c:152
msgid "no askpass program specified, try setting SUDO_ASKPASS"
msgstr "askpass 프로그램을 지정하지 않았습니다. SUDO_ASKPASS를 설정해보십시오"
-#: src/tgetpass.c:325
+#: src/tgetpass.c:327
#, c-format
msgid "unable to set gid to %u"
msgstr "gid를 %u(으)로 설정할 수 없습니다"
-#: src/tgetpass.c:329
+#: src/tgetpass.c:331
#, c-format
msgid "unable to set uid to %u"
msgstr "uid를 %u(으)로 설정할 수 없습니다"
-#: src/tgetpass.c:334
+#: src/tgetpass.c:336
#, c-format
msgid "unable to run %s"
msgstr "%s을(를) 실행할 수 없습니다"
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011—2020.
msgid ""
msgstr ""
-"Project-Id-Version: sudo-1.9.2rc1\n"
+"Project-Id-Version: sudo-1.9.3b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-06-24 05:35-0600\n"
-"PO-Revision-Date: 2020-08-04 11:50+0200\n"
+"POT-Creation-Date: 2020-09-12 08:28-0600\n"
+"PO-Revision-Date: 2020-12-11 07:41+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
"Language: sr\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Virtaal 0.7.1\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
#: lib/util/aix.c:89 lib/util/aix.c:169
#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:462 src/load_plugins.c:468
-#: src/parse_args.c:176 src/parse_args.c:197 src/parse_args.c:270
-#: src/parse_args.c:593 src/parse_args.c:615 src/parse_args.c:640
+#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
+#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:485 src/selinux.c:494 src/sesh.c:116
-#: src/sudo.c:624 src/sudo.c:693 src/sudo.c:703 src/sudo.c:724 src/sudo.c:743
-#: src/sudo.c:752 src/sudo.c:761 src/sudo.c:778 src/sudo.c:820 src/sudo.c:830
-#: src/sudo.c:859 src/sudo.c:1045 src/sudo.c:1067 src/sudo.c:1365
-#: src/sudo.c:1538 src/sudo.c:1732 src/sudo.c:2076 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:974
-#: src/sudo_edit.c:994
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
+#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
+#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
+#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
+#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
+#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
+#: src/sudo_edit.c:996
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:462 src/load_plugins.c:468
-#: src/parse_args.c:176 src/parse_args.c:198 src/parse_args.c:270
-#: src/parse_args.c:593 src/parse_args.c:615 src/parse_args.c:640
+#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
+#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:485 src/selinux.c:494 src/sesh.c:116
-#: src/sudo.c:234 src/sudo.c:624 src/sudo.c:859 src/sudo.c:1045
-#: src/sudo.c:1067 src/sudo.c:1365 src/sudo.c:1538 src/sudo.c:1732
-#: src/sudo.c:2076 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:974 src/sudo_edit.c:994
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
+#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
+#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
+#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
+#: src/sudo_edit.c:976 src/sudo_edit.c:996
msgid "unable to allocate memory"
msgstr "не могу да доделим меморију"
#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:367
+#: src/selinux.c:264 src/sudo.c:369
#, c-format
msgid "unable to open %s"
msgstr "не могу да отворим %s"
msgid "%s is group writable"
msgstr "%s је групно уписив"
-#: src/copy_file.c:118
+#: src/copy_file.c:91
+#, c-format
+msgid "%s: truncate %s to zero bytes? (y/n) [n] "
+msgstr "%s: да скратим „%s“ на нула бајта? (y/n) [n] "
+
+#: src/copy_file.c:95
+#, c-format
+msgid "not overwriting %s"
+msgstr "не преписујем „%s“"
+
+#: src/copy_file.c:117
#, c-format
msgid "unable to read from %s"
msgstr "не могу да читам из „%s“"
-#: src/copy_file.c:122 src/sudo_edit.c:695
+#: src/copy_file.c:134 src/sudo_edit.c:695
#, c-format
msgid "unable to write to %s"
msgstr "не могу да упишем у %s"
msgstr "не могу да подесим контролисање tty"
#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:304
+#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "не могу да направим спојку"
msgstr "не могу да примим поруку од родитеља"
#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:308
+#: src/sudo_edit.c:735 src/tgetpass.c:310
msgid "unable to fork"
msgstr "не могу да поделим"
msgid "unable to restore tty label"
msgstr "не могу да повратим tty натпис"
-#: src/exec_monitor.c:632 src/sesh.c:126 src/sudo.c:1123
+#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
#, c-format
msgid "unable to execute %s"
msgstr "не могу да извршим %s"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:353
+#: src/load_plugins.c:354
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "грешка у „%s“, %d. ред приликом учитавања прикључка „%s“"
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "занемарујем прикључак сигурности „%s“ у %s, %d. ред"
-#: src/load_plugins.c:329
+#: src/load_plugins.c:330
msgid "only a single policy plugin may be specified"
msgstr "може бити наведен само један прикључак сигурности"
-#: src/load_plugins.c:355
+#: src/load_plugins.c:356
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "нађох непознату врсту прикључка %d у „%s“"
-#: src/load_plugins.c:541
+#: src/load_plugins.c:552
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "прикључак сигурности %s не садржи метод провере_сигурности"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:477
+#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
#, c-format
msgid "internal error, %s overflow"
msgstr "унутрашња грешка, прекорачење функције „%s“"
-#: src/parse_args.c:218
+#: src/parse_args.c:223
#, c-format
msgid "invalid environment variable name: %s"
msgstr "неисправан назив променљиве окружења: %s"
-#: src/parse_args.c:319
+#: src/parse_args.c:325
msgid "the argument to -C must be a number greater than or equal to 3"
msgstr "аргумент уз -C мора бити број већи или једнак 3"
-#: src/parse_args.c:532
+#: src/parse_args.c:552
msgid "you may not specify both the -i and -s options"
msgstr "не можете да наведете обе опције „-i“ и „-s“"
-#: src/parse_args.c:536
+#: src/parse_args.c:557
msgid "you may not specify both the -i and -E options"
msgstr "не можете да наведете обе опције „-i“ и „-E“"
-#: src/parse_args.c:546
+#: src/parse_args.c:567
msgid "the -E option is not valid in edit mode"
msgstr "опција „-E“ није исправна у режиму уређивања"
-#: src/parse_args.c:548
+#: src/parse_args.c:570
msgid "you may not specify environment variables in edit mode"
msgstr "не можете да одредите променљиве окружења у режиму уређивања"
-#: src/parse_args.c:557
+#: src/parse_args.c:580
msgid "the -U option may only be used with the -l option"
msgstr "опција „-U“ може бити коришћена само са опцијом „-l“"
-#: src/parse_args.c:561
+#: src/parse_args.c:584
msgid "the -A and -S options may not be used together"
msgstr "опције „-A“ и „-S“ не могу бити коришћене заједно"
-#: src/parse_args.c:654
+#: src/parse_args.c:677
msgid "sudoedit is not supported on this platform"
msgstr "„sudoedit“ није подржано на овој платформи"
-#: src/parse_args.c:735
+#: src/parse_args.c:759
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:749
+#: src/parse_args.c:773
#, c-format
msgid ""
"%s - edit files as another user\n"
"%s — уредите датотеке као други корисник\n"
"\n"
-#: src/parse_args.c:751
+#: src/parse_args.c:775
#, c-format
msgid ""
"%s - execute a command as another user\n"
"%s — извршите наредбу као други корисник\n"
"\n"
-#: src/parse_args.c:756
-#, c-format
+#: src/parse_args.c:780
msgid ""
"\n"
"Options:\n"
"\n"
"Опције:\n"
-#: src/parse_args.c:758
+#: src/parse_args.c:782
msgid "use a helper program for password prompting"
msgstr "користи програм испомоћи за упит лозинке"
-#: src/parse_args.c:761
+#: src/parse_args.c:785
msgid "use specified BSD authentication type"
msgstr "користи наведену врсту БСД потврде идентитета"
-#: src/parse_args.c:764
+#: src/parse_args.c:788
msgid "run command in the background"
msgstr "покреће наредбу у позадини"
-#: src/parse_args.c:766
+#: src/parse_args.c:790
msgid "ring bell when prompting"
msgstr "звони приликом постављања упита"
-#: src/parse_args.c:768
+#: src/parse_args.c:792
msgid "close all file descriptors >= num"
msgstr "затвара све описнике датотеке >= fd"
-#: src/parse_args.c:771
+#: src/parse_args.c:795
msgid "run command with the specified BSD login class"
msgstr "покреће наредбу са наведеним разредом БСД пријаве"
-#: src/parse_args.c:774
+#: src/parse_args.c:798
+msgid "change the working directory before running command"
+msgstr "мења радни директоријум пре покретања наредбе"
+
+#: src/parse_args.c:800
msgid "preserve user environment when running command"
msgstr "чува корисничко окружење приликом покретања наредбе"
-#: src/parse_args.c:776
+#: src/parse_args.c:802
msgid "preserve specific environment variables"
msgstr "чува нарочите променљиве окружења"
-#: src/parse_args.c:778
+#: src/parse_args.c:804
msgid "edit files instead of running a command"
msgstr "уређује датотеке уместо да изврши наредбу"
-#: src/parse_args.c:780
+#: src/parse_args.c:806
msgid "run command as the specified group name or ID"
msgstr "извршава наредбу као наведени назив групе или ИБ"
-#: src/parse_args.c:782
+#: src/parse_args.c:808
msgid "set HOME variable to target user's home dir"
msgstr "подешава променљиву ЛИЧНО у циљну корисничку личну фасциклу"
-#: src/parse_args.c:784
+#: src/parse_args.c:810
msgid "display help message and exit"
msgstr "приказује поруку помоћи и излази"
-#: src/parse_args.c:786
+#: src/parse_args.c:812
msgid "run command on host (if supported by plugin)"
msgstr "покреће наредбу на домаћину (ако је подржано прикључком)"
-#: src/parse_args.c:788
+#: src/parse_args.c:814
msgid "run login shell as the target user; a command may also be specified"
msgstr "покреће љуску пријаве као крајњи корисник; наредба може такође бити наведена"
-#: src/parse_args.c:790
+#: src/parse_args.c:816
msgid "remove timestamp file completely"
msgstr "потпуно уклања датотеку записа датума и времена"
-#: src/parse_args.c:792
+#: src/parse_args.c:818
msgid "invalidate timestamp file"
msgstr "чини неисправном датотеку датума и времена"
-#: src/parse_args.c:794
+#: src/parse_args.c:820
msgid "list user's privileges or check a specific command; use twice for longer format"
msgstr "исписује привилегије корисника или проверава посебну наредбу; користи се двапута за дуже записе"
-#: src/parse_args.c:796
+#: src/parse_args.c:822
msgid "non-interactive mode, no prompts are used"
msgstr "немеђудејствени режим, не користи упите"
-#: src/parse_args.c:798
+#: src/parse_args.c:824
msgid "preserve group vector instead of setting to target's"
msgstr "чува вектор групе уместо да подеси на циљеве"
-#: src/parse_args.c:800
+#: src/parse_args.c:826
msgid "use the specified password prompt"
msgstr "користи упит наведене лозинке"
-#: src/parse_args.c:803
+#: src/parse_args.c:828
+msgid "change the root directory before running command"
+msgstr "мења корени директоријум пре покретања наредбе"
+
+#: src/parse_args.c:831
msgid "create SELinux security context with specified role"
msgstr "ствара СЕЛинукс сигурносни контекст са наведеном улогом"
-#: src/parse_args.c:806
+#: src/parse_args.c:834
msgid "read password from standard input"
msgstr "чита лозинку са стандардног улаза"
-#: src/parse_args.c:808
+#: src/parse_args.c:836
msgid "run shell as the target user; a command may also be specified"
msgstr "покреће љуску као крајњи корисник; наредба такође може бити наведена"
-#: src/parse_args.c:811
+#: src/parse_args.c:839
msgid "create SELinux security context with specified type"
msgstr "ствара СЕЛинукс сигурносни контекст са наведеном улогом"
-#: src/parse_args.c:814
+#: src/parse_args.c:842
msgid "terminate command after the specified time limit"
msgstr "окончава наредбу након наведеног временског ограничења"
-#: src/parse_args.c:816
+#: src/parse_args.c:844
msgid "in list mode, display privileges for user"
msgstr "у режиму списка, приказује привилегије за корисника"
-#: src/parse_args.c:818
+#: src/parse_args.c:846
msgid "run command (or edit file) as specified user name or ID"
msgstr "покреће наредбу (или уређује датотеку) као наведени корисник"
-#: src/parse_args.c:820
+#: src/parse_args.c:848
msgid "display version information and exit"
msgstr "приказује податке о издању и излази"
-#: src/parse_args.c:822
+#: src/parse_args.c:850
msgid "update user's timestamp without running a command"
msgstr "освежава кориснички запис датума и времена без покретања наредбе"
-#: src/parse_args.c:824
+#: src/parse_args.c:852
msgid "stop processing command line arguments"
msgstr "зауставља обрађивање аргумената линије наредби"
msgid "unable to set key creation context to %s"
msgstr "не могу да подесим контекст стварања кључа за %s"
-#: src/sesh.c:78
+#: src/sesh.c:77
msgid "requires at least one argument"
msgstr "захтева барем један аргумент"
-#: src/sesh.c:107
+#: src/sesh.c:106
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "неисправан број описника датотеке: %s"
-#: src/sesh.c:121
+#: src/sesh.c:120
#, c-format
msgid "unable to run %s as a login shell"
msgstr "не могу да покренем „%s“ као шкољку пријављивања"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "упозорење, није успело додељивање контроле ресурса за пројекат „%s“"
-#: src/sudo.c:219
+#: src/sudo.c:220
#, c-format
msgid "Sudo version %s\n"
msgstr "Судо издање %s\n"
-#: src/sudo.c:221
+#: src/sudo.c:222
#, c-format
msgid "Configure options: %s\n"
msgstr "Опције подешавања: %s\n"
-#: src/sudo.c:230
+#: src/sudo.c:231
msgid "fatal error, unable to load plugins"
msgstr "кобна грешка, не могу да учитам прикључке"
-#: src/sudo.c:275
+#: src/sudo.c:277
msgid "plugin did not return a command to execute"
msgstr "прикључак није вратио наредбу за извршавање"
-#: src/sudo.c:310
+#: src/sudo.c:312
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "неочекивани судо режим 0x%x"
-#: src/sudo.c:543
+#: src/sudo.c:546
#, c-format
msgid "you do not exist in the %s database"
msgstr "не постојите у „%s“ бази података"
-#: src/sudo.c:600
+#: src/sudo.c:603
msgid "unable to determine tty"
msgstr "не могу да одредим конзолу"
-#: src/sudo.c:905
+#: src/sudo.c:913
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s мора бити власништвo уида %d и треба да има подешен бит „setuid“"
-#: src/sudo.c:908
+#: src/sudo.c:916
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "стварни уид није %d, већ %s на систему датотека са подешеном опцијом „nosuid“ или је НФС систем датотека без администраторских привилегија?"
-#: src/sudo.c:914
+#: src/sudo.c:922
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "стварни уид није %d, већ сетуид администратор инсталиран судоом?"
-#: src/sudo.c:930
+#: src/sudo.c:938
msgid "unable to set supplementary group IDs"
msgstr "не могу да подесим додатне ИБ-ове групе"
-#: src/sudo.c:937
+#: src/sudo.c:945
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "не могу да подесим ефективан гид да се покрене_као гид %u"
-#: src/sudo.c:943
+#: src/sudo.c:951
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "не могу да подесим гид да се покрене као гид %u"
-#: src/sudo.c:986
+#: src/sudo.c:994
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "неочекивани услов завршетка потпроцеса: %d"
-#: src/sudo.c:1095
+#: src/sudo.c:1103
msgid "unable to initialize policy plugin"
msgstr "не могу да започнем прикључак сигурности"
-#: src/sudo.c:1158
+#: src/sudo.c:1166
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "прикључак сигурности %s не садржи метод „check_policy“"
-#: src/sudo.c:1173 src/sudo.c:1226 src/sudo.c:1270
+#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
msgid "command rejected by policy"
msgstr "наредба је одбачена политиком"
-#: src/sudo.c:1178 src/sudo.c:1231 src/sudo.c:1275
+#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
msgid "policy plugin error"
msgstr "грешка прикључка политике"
-#: src/sudo.c:1212
+#: src/sudo.c:1220
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "прикључак сигурности %s не подржава привилегије исписивања"
-#: src/sudo.c:1256
+#: src/sudo.c:1264
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "прикључак сигурности %s не подржава опцију -v"
-#: src/sudo.c:1294
+#: src/sudo.c:1302
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "прикључак сигурности %s не подржава опције -k/-K"
-#: src/sudo.c:1423
+#: src/sudo.c:1431
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "грешка приликом покретања У/И прикључка %s"
-#: src/sudo.c:1577
+#: src/sudo.c:1585
#, c-format
msgid "error initializing audit plugin %s"
msgstr "грешка покретања аудит прикључка „%s“"
-#: src/sudo.c:1755
+#: src/sudo.c:1763
#, c-format
msgid "error initializing approval plugin %s"
msgstr "грешка покретања прикључка одобравања „%s“"
-#: src/sudo.c:1831
+#: src/sudo.c:1839
msgid "command rejected by approver"
msgstr "наредбу је одбацио одобравач"
-#: src/sudo.c:1840
+#: src/sudo.c:1848
msgid "approval plugin error"
msgstr "грешка прикључка одобравања"
msgid "%s unchanged"
msgstr "%s је непромењен"
-#: src/sudo_edit.c:706 src/sudo_edit.c:907
+#: src/sudo_edit.c:706 src/sudo_edit.c:909
#, c-format
msgid "contents of edit session left in %s"
msgstr "садржај сесије уређивања је остао у %s"
msgid "sesh: unable to create temporary files"
msgstr "sesh: не могу да направим привремене датотеке"
-#: src/sudo_edit.c:818 src/sudo_edit.c:900
+#: src/sudo_edit.c:818 src/sudo_edit.c:902
msgid "sesh: killed by a signal"
msgstr "sesh: убијено сигналом"
-#: src/sudo_edit.c:820 src/sudo_edit.c:903
+#: src/sudo_edit.c:820 src/sudo_edit.c:905
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: непозната грешка „%d“"
-#: src/sudo_edit.c:894
+#: src/sudo_edit.c:895
msgid "unable to copy temporary files back to their original location"
msgstr "не могу да умножим привремене датотеке назад на њихова првобитна места"
-#: src/sudo_edit.c:897
+#: src/sudo_edit.c:899
msgid "unable to copy some of the temporary files back to their original location"
msgstr "не могу да умножим неке од привремених датотека назад на њихова првобитна места"
-#: src/sudo_edit.c:941
+#: src/sudo_edit.c:943
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "не могу да променим уид у администратора (%u)"
-#: src/sudo_edit.c:958
+#: src/sudo_edit.c:960
msgid "plugin error: missing file list for sudoedit"
msgstr "грешка прикључка: недостаје датотеа списка за уређивање судоа"
-#: src/sudo_edit.c:1009 src/sudo_edit.c:1022
+#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
msgid "unable to read the clock"
msgstr "не могу да прочитам сат"
msgid "unable to read password"
msgstr "не могу да прочитам лозинку"
-#: src/tgetpass.c:140
+#: src/tgetpass.c:141
msgid "a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper"
msgstr "терминал је потребан за читање лозинке; или користите опцију „-S“ да читате из стандардног улаза или подесите помоћника тражиоца пролаза"
-#: src/tgetpass.c:150
+#: src/tgetpass.c:152
msgid "no askpass program specified, try setting SUDO_ASKPASS"
msgstr "није наведен програм за пропуштање, покушајте да подесите SUDO_ASKPASS"
-#: src/tgetpass.c:325
+#: src/tgetpass.c:327
#, c-format
msgid "unable to set gid to %u"
msgstr "не могу да подесим гид у %u"
-#: src/tgetpass.c:329
+#: src/tgetpass.c:331
#, c-format
msgid "unable to set uid to %u"
msgstr "не могу да подесим уид у %u"
-#: src/tgetpass.c:334
+#: src/tgetpass.c:336
#, c-format
msgid "unable to run %s"
msgstr "не могу да покренем %s"
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.3\n"
+"Project-Id-Version: sudo 1.9.5\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgstr ""
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893 src/exec_pty.c:1046
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:52 src/load_plugins.c:65
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 src/exec_pty.c:1053
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:52 src/load_plugins.c:65
#: src/load_plugins.c:163 src/load_plugins.c:188 src/load_plugins.c:223
-#: src/load_plugins.c:463 src/load_plugins.c:469 src/parse_args.c:181
+#: src/load_plugins.c:455 src/load_plugins.c:461 src/parse_args.c:181
#: src/parse_args.c:202 src/parse_args.c:275 src/parse_args.c:616
#: src/parse_args.c:638 src/parse_args.c:663 src/preserve_fds.c:46
#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489
-#: src/selinux.c:498 src/sesh.c:115 src/sudo.c:632 src/sudo.c:701
-#: src/sudo.c:711 src/sudo.c:732 src/sudo.c:751 src/sudo.c:760 src/sudo.c:769
-#: src/sudo.c:786 src/sudo.c:828 src/sudo.c:838 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:498 src/sesh.c:110 src/sesh.c:143 src/sesh.c:149
+#: src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 src/sudo.c:632 src/sudo.c:702
+#: src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 src/sudo.c:761 src/sudo.c:770
+#: src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr ""
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893 src/exec_pty.c:1218
-#: src/exec_pty.c:1227 src/exec_pty.c:1234 src/exec_pty.c:1241
-#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
-#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
-#: src/exec_pty.c:1290 src/exec_pty.c:1298 src/exec_pty.c:1740
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 src/exec_pty.c:1225
+#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
+#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
+#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
+#: src/exec_pty.c:1297 src/exec_pty.c:1305 src/exec_pty.c:1747
#: src/load_plugins.c:163 src/load_plugins.c:188 src/load_plugins.c:223
-#: src/load_plugins.c:463 src/load_plugins.c:469 src/parse_args.c:181
+#: src/load_plugins.c:455 src/load_plugins.c:461 src/parse_args.c:181
#: src/parse_args.c:203 src/parse_args.c:275 src/parse_args.c:616
#: src/parse_args.c:638 src/parse_args.c:663 src/preserve_fds.c:46
#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489
-#: src/selinux.c:498 src/sesh.c:115 src/sudo.c:235 src/sudo.c:632
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:498 src/sesh.c:110 src/sesh.c:408 src/sudo.c:236
+#: src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076
+#: src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120
+#: src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr ""
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr ""
msgid "unable to mkdir %s"
msgstr ""
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr ""
msgstr ""
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr ""
msgid "value too small"
msgstr ""
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr ""
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr ""
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr ""
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr ""
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr ""
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr ""
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr ""
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr ""
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr ""
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr ""
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr ""
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr ""
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr ""
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr ""
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr ""
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
msgstr ""
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr ""
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr ""
msgid "unable to set controlling tty"
msgstr ""
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr ""
msgid "unable to receive message from parent"
msgstr ""
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr ""
msgid "unable to restore tty label"
msgstr ""
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr ""
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr ""
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr ""
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr ""
msgid "unable to allocate pty"
msgstr ""
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr ""
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr ""
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr ""
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr ""
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr ""
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr ""
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr ""
msgid "%s must be only be writable by owner"
msgstr ""
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr ""
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr ""
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr ""
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr ""
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr ""
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr ""
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr ""
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr ""
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr ""
msgid "unable to set key creation context to %s"
msgstr ""
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr ""
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr ""
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr ""
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr ""
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr ""
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr ""
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr ""
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr ""
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr ""
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr ""
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr ""
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr ""
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr ""
msgid "unable to determine tty"
msgstr ""
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr ""
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid ""
"effective uid is not %d, is %s on a file system with the 'nosuid' option set "
"or an NFS file system without root privileges?"
msgstr ""
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr ""
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr ""
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr ""
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr ""
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr ""
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr ""
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr ""
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr ""
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr ""
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr ""
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr ""
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr ""
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr ""
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr ""
-#: src/sudo.c:1763
+#: src/sudo.c:1668
#, c-format
-msgid "error initializing approval plugin %s"
+msgid "%s: unable to log error event%s%s"
msgstr ""
-#: src/sudo.c:1839
-msgid "command rejected by approver"
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
msgstr ""
-#: src/sudo.c:1848
-msgid "approval plugin error"
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
msgstr ""
-#: src/sudo_edit.c:226
-msgid "no writable temporary directory found"
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
msgstr ""
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
+#: src/sudo.c:1799
+#, c-format
+msgid "error initializing approval plugin %s"
msgstr ""
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
+#: src/sudo.c:1875
+msgid "command rejected by approver"
msgstr ""
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
+#: src/sudo.c:1884
+msgid "approval plugin error"
msgstr ""
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
+#: src/sudo_edit.c:112
+msgid "no writable temporary directory found"
msgstr ""
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr ""
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr ""
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr ""
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr ""
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr ""
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr ""
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr ""
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr ""
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid ""
"unable to copy some of the temporary files back to their original location"
msgstr ""
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr ""
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr ""
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr ""
#
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.1b1\n"
+"Project-Id-Version: sudo 1.9.3b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-06-05 10:24-0600\n"
-"PO-Revision-Date: 2020-06-07 19:16+0800\n"
+"POT-Creation-Date: 2020-09-12 08:28-0600\n"
+"PO-Revision-Date: 2020-12-26 03:44+0100\n"
"Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
-"Language-Team: Swedish <tp-sv-list@lists.sourceforge.net>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.3.1\n"
+"X-Generator: Poedit 2.4.2\n"
"X-Poedit-Bookmarks: -1,0,-1,-1,-1,-1,-1,-1,-1,-1\n"
#: lib/util/aix.c:89 lib/util/aix.c:169
#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:462 src/load_plugins.c:468
-#: src/parse_args.c:176 src/parse_args.c:197 src/parse_args.c:270
-#: src/parse_args.c:593 src/parse_args.c:615 src/parse_args.c:640
+#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
+#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:485 src/selinux.c:494 src/sesh.c:116
-#: src/sudo.c:624 src/sudo.c:693 src/sudo.c:703 src/sudo.c:724 src/sudo.c:743
-#: src/sudo.c:752 src/sudo.c:761 src/sudo.c:778 src/sudo.c:820 src/sudo.c:830
-#: src/sudo.c:859 src/sudo.c:1045 src/sudo.c:1067 src/sudo.c:1365
-#: src/sudo.c:1538 src/sudo.c:1732 src/sudo.c:2076 src/sudo_edit.c:263
-#: src/sudo_edit.c:767 src/sudo_edit.c:851 src/sudo_edit.c:971
-#: src/sudo_edit.c:991
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
+#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
+#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
+#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
+#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
+#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
+#: src/sudo_edit.c:996
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:462 src/load_plugins.c:468
-#: src/parse_args.c:176 src/parse_args.c:198 src/parse_args.c:270
-#: src/parse_args.c:593 src/parse_args.c:615 src/parse_args.c:640
+#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
+#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:485 src/selinux.c:494 src/sesh.c:116
-#: src/sudo.c:234 src/sudo.c:624 src/sudo.c:859 src/sudo.c:1045
-#: src/sudo.c:1067 src/sudo.c:1365 src/sudo.c:1538 src/sudo.c:1732
-#: src/sudo.c:2076 src/sudo_edit.c:263 src/sudo_edit.c:767 src/sudo_edit.c:851
-#: src/sudo_edit.c:971 src/sudo_edit.c:991
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
+#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
+#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
+#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
+#: src/sudo_edit.c:976 src/sudo_edit.c:996
msgid "unable to allocate memory"
msgstr "kunde inte allokera minne"
#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:367
+#: src/selinux.c:264 src/sudo.c:369
#, c-format
msgid "unable to open %s"
msgstr "kunde inte öppna %s"
msgid "%s is group writable"
msgstr "%s är skrivbar för gruppen"
-#: src/copy_file.c:118
+#: src/copy_file.c:91
+#, c-format
+msgid "%s: truncate %s to zero bytes? (y/n) [n] "
+msgstr "%s: trunkera %s till noll byte? (y för ja/n för nej) [n] "
+
+#: src/copy_file.c:95
+#, c-format
+msgid "not overwriting %s"
+msgstr "skriver inte över %s"
+
+#: src/copy_file.c:117
#, c-format
msgid "unable to read from %s"
msgstr "kunde inte läsa från %s"
-#: src/copy_file.c:122 src/sudo_edit.c:695
+#: src/copy_file.c:134 src/sudo_edit.c:695
#, c-format
msgid "unable to write to %s"
msgstr "kunde inte skriva till %s"
msgstr "kan inte ställa in kontrollerande tty"
#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:304
+#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "kunde inte skapa rör"
msgstr "kan inte ta emot meddelande från förälder"
#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:732 src/tgetpass.c:308
+#: src/sudo_edit.c:735 src/tgetpass.c:310
msgid "unable to fork"
msgstr "kunde inte grena process"
msgid "unable to restore tty label"
msgstr "kan inte återställa tty-etikett"
-#: src/exec_monitor.c:632 src/sesh.c:126 src/sudo.c:1123
+#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
#, c-format
msgid "unable to execute %s"
msgstr "kunde inte köra %s"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:353
+#: src/load_plugins.c:354
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "fel i %s, rad %d under inläsning av insticksmodul ”%s”"
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "ignorerar policyinsticksmodul ”%s” i %s, rad %d"
-#: src/load_plugins.c:329
+#: src/load_plugins.c:330
msgid "only a single policy plugin may be specified"
msgstr "bara en policyinsticksmodul kan anges"
-#: src/load_plugins.c:355
+#: src/load_plugins.c:356
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "okänd insticksmodulstyp %d hittad i %s"
-#: src/load_plugins.c:541
+#: src/load_plugins.c:552
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "policyinsticksmodul %s inkluderar inte en check_policy-metod"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:477
+#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
#, c-format
msgid "internal error, %s overflow"
msgstr "internt fel, %s spill"
-#: src/parse_args.c:218
+#: src/parse_args.c:223
#, c-format
msgid "invalid environment variable name: %s"
msgstr "ogiltigt namn på miljövariabel: %s"
-#: src/parse_args.c:319
+#: src/parse_args.c:325
msgid "the argument to -C must be a number greater than or equal to 3"
msgstr "argumentet till -C måste vara ett tal större än eller lika med 3"
-#: src/parse_args.c:532
-msgid "you may not specify both the `-i' and `-s' options"
-msgstr "du får inte ange flaggorna ”-i” och ”-s” samtidigt"
+#: src/parse_args.c:552
+msgid "you may not specify both the -i and -s options"
+msgstr "du får inte ange flaggorna -i och -s samtidigt"
-#: src/parse_args.c:536
-msgid "you may not specify both the `-i' and `-E' options"
-msgstr "du får inte ange flaggorna ”-i” och ”-E” samtidigt"
+#: src/parse_args.c:557
+msgid "you may not specify both the -i and -E options"
+msgstr "du får inte ange flaggorna -i och -E samtidigt"
-#: src/parse_args.c:546
-msgid "the `-E' option is not valid in edit mode"
-msgstr "flaggan ”-E” är inte giltig i redigeringsläget"
+#: src/parse_args.c:567
+msgid "the -E option is not valid in edit mode"
+msgstr "flaggan -E är inte giltig i redigeringsläget"
-#: src/parse_args.c:548
+#: src/parse_args.c:570
msgid "you may not specify environment variables in edit mode"
msgstr "du får inte ange miljövariabler i redigeringsläget"
-#: src/parse_args.c:557
-msgid "the `-U' option may only be used with the `-l' option"
-msgstr "flaggan ”-U” får bara användas med flaggan ”-l”"
+#: src/parse_args.c:580
+msgid "the -U option may only be used with the -l option"
+msgstr "flaggan -U får bara användas med flaggan -l"
-#: src/parse_args.c:561
-msgid "the `-A' and `-S' options may not be used together"
-msgstr "flaggorna ”-A” och ”-S” får inte användas tillsammans"
+#: src/parse_args.c:584
+msgid "the -A and -S options may not be used together"
+msgstr "flaggorna -A och -S får inte användas tillsammans"
-#: src/parse_args.c:654
+#: src/parse_args.c:677
msgid "sudoedit is not supported on this platform"
msgstr "sudoedit stöds inte på denna plattform"
-#: src/parse_args.c:735
+#: src/parse_args.c:759
msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified"
msgstr "Endast en av flaggorna -e, -h, -i, -K, -l, -s, -v eller -V får anges"
-#: src/parse_args.c:749
+#: src/parse_args.c:773
#, c-format
msgid ""
"%s - edit files as another user\n"
"%s - redigera filer som en annan användare\n"
"\n"
-#: src/parse_args.c:751
+#: src/parse_args.c:775
#, c-format
msgid ""
"%s - execute a command as another user\n"
"%s - kör ett kommando som en annan användare\n"
"\n"
-#: src/parse_args.c:756
-#, c-format
+#: src/parse_args.c:780
msgid ""
"\n"
"Options:\n"
"\n"
"Flaggor:\n"
-#: src/parse_args.c:758
+#: src/parse_args.c:782
msgid "use a helper program for password prompting"
msgstr "använd hjälpprogram för att fråga efter lösenord"
-#: src/parse_args.c:761
+#: src/parse_args.c:785
msgid "use specified BSD authentication type"
msgstr "använd angiven BSD-autentiseringstyp"
-#: src/parse_args.c:764
+#: src/parse_args.c:788
msgid "run command in the background"
msgstr "kör kommando i bakgrunden"
-#: src/parse_args.c:766
+#: src/parse_args.c:790
msgid "ring bell when prompting"
msgstr "ring i klockan vid fråga"
-#: src/parse_args.c:768
+#: src/parse_args.c:792
msgid "close all file descriptors >= num"
msgstr "stäng alla fildeskriptorer >= num"
-#: src/parse_args.c:771
+#: src/parse_args.c:795
msgid "run command with the specified BSD login class"
msgstr "kör kommando med den angivna BSD-inloggningsklassen"
-#: src/parse_args.c:774
+#: src/parse_args.c:798
+msgid "change the working directory before running command"
+msgstr "ändra arbetskatalog innan kommando körs"
+
+#: src/parse_args.c:800
msgid "preserve user environment when running command"
msgstr "bevara användarens miljö när kommandot körs"
-#: src/parse_args.c:776
+#: src/parse_args.c:802
msgid "preserve specific environment variables"
msgstr "bevara specifika miljövariabler"
-#: src/parse_args.c:778
+#: src/parse_args.c:804
msgid "edit files instead of running a command"
msgstr "redigera filer istället för att köra ett kommando"
-#: src/parse_args.c:780
+#: src/parse_args.c:806
msgid "run command as the specified group name or ID"
msgstr "kör kommando som angivet gruppnamn eller ID"
-#: src/parse_args.c:782
+#: src/parse_args.c:808
msgid "set HOME variable to target user's home dir"
msgstr "ställ in HOME-variabeln till målanvändarens hemkatalog"
-#: src/parse_args.c:784
+#: src/parse_args.c:810
msgid "display help message and exit"
msgstr "visa hjälpmeddelande och avsluta"
-#: src/parse_args.c:786
+#: src/parse_args.c:812
msgid "run command on host (if supported by plugin)"
msgstr "kör kommando på värd (om det stöds av instick)"
-#: src/parse_args.c:788
+#: src/parse_args.c:814
msgid "run login shell as the target user; a command may also be specified"
msgstr "kör ett inloggningsskal som målanvändaren; ett kommando kan också anges"
-#: src/parse_args.c:790
+#: src/parse_args.c:816
msgid "remove timestamp file completely"
msgstr "ta bort tidsstämpelfil helt"
-#: src/parse_args.c:792
+#: src/parse_args.c:818
msgid "invalidate timestamp file"
msgstr "ogiltigförklara tidsstämpelfil"
-#: src/parse_args.c:794
+#: src/parse_args.c:820
msgid "list user's privileges or check a specific command; use twice for longer format"
msgstr "lista användarens rättigheter eller kontrollera ett specifikt kommando; använd två gånger för längre format"
-#: src/parse_args.c:796
+#: src/parse_args.c:822
msgid "non-interactive mode, no prompts are used"
msgstr "icke-interaktivt läge, inga frågor ställs"
-#: src/parse_args.c:798
+#: src/parse_args.c:824
msgid "preserve group vector instead of setting to target's"
msgstr "behåll gruppvektor istället för att ställa in den till målets"
-#: src/parse_args.c:800
+#: src/parse_args.c:826
msgid "use the specified password prompt"
msgstr "använd angiven lösenordsprompt"
-#: src/parse_args.c:803
+#: src/parse_args.c:828
+msgid "change the root directory before running command"
+msgstr "ändra rotkatalog innan kommando körs"
+
+#: src/parse_args.c:831
msgid "create SELinux security context with specified role"
msgstr "skapa SELinux-säkerhetskontext med angiven roll"
-#: src/parse_args.c:806
+#: src/parse_args.c:834
msgid "read password from standard input"
msgstr "läs lösenord från standard in"
-#: src/parse_args.c:808
+#: src/parse_args.c:836
msgid "run shell as the target user; a command may also be specified"
msgstr "kör skal som målanvändaren; ett kommando kan också anges"
-#: src/parse_args.c:811
+#: src/parse_args.c:839
msgid "create SELinux security context with specified type"
msgstr "skapa SELinux-säkerhetskontext med angiven typ"
-#: src/parse_args.c:814
+#: src/parse_args.c:842
msgid "terminate command after the specified time limit"
msgstr "avsluta kommando efter den angivna tidsgränsen"
-#: src/parse_args.c:816
+#: src/parse_args.c:844
msgid "in list mode, display privileges for user"
msgstr "i listläge, visa rättigheter för användaren"
-#: src/parse_args.c:818
+#: src/parse_args.c:846
msgid "run command (or edit file) as specified user name or ID"
msgstr "kör kommando (eller redigera fil) som angivet användarnamn eller ID"
-#: src/parse_args.c:820
+#: src/parse_args.c:848
msgid "display version information and exit"
msgstr "visa versionsinformation och avsluta"
-#: src/parse_args.c:822
+#: src/parse_args.c:850
msgid "update user's timestamp without running a command"
msgstr "uppdatera användarens tidsstämpel utan att köra ett kommando"
-#: src/parse_args.c:824
+#: src/parse_args.c:852
msgid "stop processing command line arguments"
msgstr "sluta behandla kommandoradsargument"
msgid "unable to set key creation context to %s"
msgstr "kan inte ställa in kontext för nyckelskapande till %s"
-#: src/sesh.c:78
+#: src/sesh.c:77
msgid "requires at least one argument"
msgstr "kräver minst ett argument"
-#: src/sesh.c:107
+#: src/sesh.c:106
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "ogiltigt fildeskriptornummer: %s"
-#: src/sesh.c:121
+#: src/sesh.c:120
#, c-format
msgid "unable to run %s as a login shell"
msgstr "kunde inte köra %s som ett inloggningsskal"
msgid "could not join project \"%s\""
msgstr "kunde inte gå med i projekt ”%s”"
-#: src/solaris.c:87
+#: src/solaris.c:89
#, c-format
msgid "no resource pool accepting default bindings exists for project \"%s\""
msgstr "ingen resurspool som accepterar standardbindningar existerar för projekt ”%s”"
-#: src/solaris.c:91
+#: src/solaris.c:93
#, c-format
msgid "specified resource pool does not exist for project \"%s\""
msgstr "angiven resurspool finns inte för projekt ”%s”"
-#: src/solaris.c:95
+#: src/solaris.c:97
#, c-format
msgid "could not bind to default resource pool for project \"%s\""
msgstr "kunde inte binda till standardresurspool för projekt ”%s”"
-#: src/solaris.c:101
+#: src/solaris.c:104
#, c-format
msgid "setproject failed for project \"%s\""
msgstr "setproject misslyckades för projekt ”%s”"
-#: src/solaris.c:103
+#: src/solaris.c:106
#, c-format
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "varning, tilldelning av resurskontroll misslyckades för projekt ”%s”"
-#: src/sudo.c:219
+#: src/sudo.c:220
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo version %s\n"
-#: src/sudo.c:221
+#: src/sudo.c:222
#, c-format
msgid "Configure options: %s\n"
msgstr "Konfigurationsflaggor: %s\n"
-#: src/sudo.c:230
+#: src/sudo.c:231
msgid "fatal error, unable to load plugins"
msgstr "ödesdigert fel, kunde inte läsa in insticksmoduler"
-#: src/sudo.c:275
+#: src/sudo.c:277
msgid "plugin did not return a command to execute"
msgstr "insticksmodul returnerade ett kommando att exekvera"
-#: src/sudo.c:310
+#: src/sudo.c:312
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "oväntat sudo-läge 0x%x"
-#: src/sudo.c:543
+#: src/sudo.c:546
#, c-format
msgid "you do not exist in the %s database"
msgstr "du existerar inte i %s-databasen"
-#: src/sudo.c:600
+#: src/sudo.c:603
msgid "unable to determine tty"
msgstr "kan inte detektera tty"
-#: src/sudo.c:905
+#: src/sudo.c:913
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s måste ägas av uid %d och ha setuid-biten inställd"
-#: src/sudo.c:908
+#: src/sudo.c:916
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "effektivt uid är inte %d, är %s på ett filsystem med flaggan ”nosuid” inställd eller ett NFS-filsystem utan root-rättigheter?"
-#: src/sudo.c:914
+#: src/sudo.c:922
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "effektivt uid är inte %d, har sudo installerats som setuid root?"
-#: src/sudo.c:930
+#: src/sudo.c:938
msgid "unable to set supplementary group IDs"
msgstr "kan inte ställa in kompletterande grupp-ID:n"
-#: src/sudo.c:937
+#: src/sudo.c:945
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "kunde inte ställa in effektiv gid till runas gid %u"
-#: src/sudo.c:943
+#: src/sudo.c:951
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "kunde inte ställa in gid för runas gid %u"
-#: src/sudo.c:986
+#: src/sudo.c:994
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "oväntat barnavslutsvillkor: %d"
-#: src/sudo.c:1095
+#: src/sudo.c:1103
msgid "unable to initialize policy plugin"
msgstr "kan inte initiera policy-instick"
-#: src/sudo.c:1158
+#: src/sudo.c:1166
#, c-format
-msgid "policy plugin %s is missing the `check_policy' method"
+msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "policyinsticksmodul %s saknar metoden ”check_policy”"
-#: src/sudo.c:1173 src/sudo.c:1226 src/sudo.c:1270
+#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
msgid "command rejected by policy"
msgstr "kommando avböjt enligt policy"
-#: src/sudo.c:1178 src/sudo.c:1231 src/sudo.c:1275
+#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
msgid "policy plugin error"
msgstr "fel i policyinsticksmodul"
-#: src/sudo.c:1212
+#: src/sudo.c:1220
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "policyinsticksmodul %s har inte stöd för att lista rättigheter"
-#: src/sudo.c:1256
+#: src/sudo.c:1264
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "policyinsticksmodul %s har inte stöd för flaggan -v"
-#: src/sudo.c:1294
+#: src/sudo.c:1302
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "policyinsticksmodul %s har inte stöd för flaggorna -k/-K"
-#: src/sudo.c:1423
+#: src/sudo.c:1431
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "fel vid initiering av I/O-insticksmodul %s"
-#: src/sudo.c:1577
+#: src/sudo.c:1585
#, c-format
msgid "error initializing audit plugin %s"
msgstr "fel vid initiering av granskningsinsticksmodul %s"
-#: src/sudo.c:1755
+#: src/sudo.c:1763
#, c-format
msgid "error initializing approval plugin %s"
msgstr "fel vid initiering av godkänningsinsticksmodul %s"
-#: src/sudo.c:1831
+#: src/sudo.c:1839
msgid "command rejected by approver"
msgstr "kommando avböjt av godkännare"
-#: src/sudo.c:1840
+#: src/sudo.c:1848
msgid "approval plugin error"
msgstr "fel i godkänningsinsticksmodul"
msgid "%s left unmodified"
msgstr "%s lämnad oförändrad"
-#: src/sudo_edit.c:680 src/sudo_edit.c:868
+#: src/sudo_edit.c:680 src/sudo_edit.c:871
#, c-format
msgid "%s unchanged"
msgstr "%s oförändrad"
-#: src/sudo_edit.c:703 src/sudo_edit.c:904
+#: src/sudo_edit.c:706 src/sudo_edit.c:909
#, c-format
msgid "contents of edit session left in %s"
msgstr "innehåll av redigeringssession finns kvar i %s"
-#: src/sudo_edit.c:811
+#: src/sudo_edit.c:814
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: internt fel: udda antal sökvägar"
-#: src/sudo_edit.c:813
+#: src/sudo_edit.c:816
msgid "sesh: unable to create temporary files"
msgstr "sesh: kunde inte skapa temporärfiler"
-#: src/sudo_edit.c:815 src/sudo_edit.c:897
+#: src/sudo_edit.c:818 src/sudo_edit.c:902
msgid "sesh: killed by a signal"
-msgstr "sesh: dödad en signal"
+msgstr "sesh: dödad av en signal"
-#: src/sudo_edit.c:817 src/sudo_edit.c:900
+#: src/sudo_edit.c:820 src/sudo_edit.c:905
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: okänt fel %d"
-#: src/sudo_edit.c:891
+#: src/sudo_edit.c:895
msgid "unable to copy temporary files back to their original location"
msgstr "kan inte kopiera temporära filer tillbaka till deras originalplats"
-#: src/sudo_edit.c:894
+#: src/sudo_edit.c:899
msgid "unable to copy some of the temporary files back to their original location"
msgstr "kan inte kopiera vissa av de temporära filerna tillbaka till deras originalplats"
-#: src/sudo_edit.c:938
+#: src/sudo_edit.c:943
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "kunde inte ändra uid till root (%u)"
-#: src/sudo_edit.c:955
+#: src/sudo_edit.c:960
msgid "plugin error: missing file list for sudoedit"
msgstr "insticksfel: fillista för sudoedit saknas"
-#: src/sudo_edit.c:1006 src/sudo_edit.c:1019
+#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
msgid "unable to read the clock"
msgstr "kunde inte läsa klockan"
msgid "unable to read password"
msgstr "kan inte läsa lösenord"
-#: src/tgetpass.c:140
+#: src/tgetpass.c:141
msgid "a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper"
msgstr "en terminal krävs för att läsa lösenordet; använd antingen flaggan -S för att läsa från standard in, eller konfigurera en askpass-hjälpare"
-#: src/tgetpass.c:150
+#: src/tgetpass.c:152
msgid "no askpass program specified, try setting SUDO_ASKPASS"
msgstr "inget askpass-program angivet, prova att ställ in SUDO_ASKPASS"
-#: src/tgetpass.c:325
+#: src/tgetpass.c:327
#, c-format
msgid "unable to set gid to %u"
msgstr "kunde inte ställa in gid till %u"
-#: src/tgetpass.c:329
+#: src/tgetpass.c:331
#, c-format
msgid "unable to set uid to %u"
msgstr "kunde inte ställa in uid till %u"
-#: src/tgetpass.c:334
+#: src/tgetpass.c:336
#, c-format
msgid "unable to run %s"
msgstr "kunde inte köra %s"
# XXX - fill in AUTH_OBJS from contents of the auth dir instead
$makefile =~ s:\@AUTH_OBJS\@:afs.lo aix_auth.lo bsdauth.lo dce.lo fwtk.lo getspwuid.lo kerb5.lo pam.lo passwd.lo rfc1938.lo secureware.lo securid5.lo sia.lo:;
$makefile =~ s:\@DIGEST\@:digest.lo digest_openssl.lo digest_gcrypt.lo:;
- $makefile =~ s:\@LTLIBOBJS\@:arc4random.lo arc4random_uniform.lo cfmakeraw.lo closefrom.lo dup3.lo explicit_bzero.lo fchmodat.lo freezero.lo fstatat.lo fnmatch.lo getaddrinfo.lo getcwd.lo getentropy.lo getgrouplist.lo getdelim.lo getopt_long.lo getusershell.lo glob.lo inet_ntop_lo inet_pton.lo isblank.lo memrchr.lo mksiglist.lo mksigname.lo mktemp.lo nanosleep.lo openat.lo pipe2.lo pw_dup.lo reallocarray.lo sha2.lo sig2str.lo siglist.lo signame.lo snprintf.lo str2sig.lo strlcat.lo strlcpy.lo strndup.lo strnlen.lo strsignal.lo unlinkat.lo utimens.lo vsyslog.lo:;
+ $makefile =~ s:\@LTLIBOBJS\@:arc4random.lo arc4random_uniform.lo cfmakeraw.lo closefrom.lo dup3.lo explicit_bzero.lo fchmodat.lo freezero.lo fstatat.lo fnmatch.lo getaddrinfo.lo getcwd.lo getentropy.lo getgrouplist.lo getdelim.lo getopt_long.lo getusershell.lo glob.lo inet_ntop_lo inet_pton.lo isblank.lo memrchr.lo mksiglist.lo mksigname.lo mktemp.lo nanosleep.lo openat.lo pipe2.lo pread.lo pwrite.lo pw_dup.lo reallocarray.lo sha2.lo sig2str.lo siglist.lo signame.lo snprintf.lo str2sig.lo strlcat.lo strlcpy.lo strndup.lo strnlen.lo strsignal.lo unlinkat.lo utimens.lo vsyslog.lo:;
# Parse OBJS lines
my %objs;
#
# SPDX-License-Identifier: ISC
#
-# Copyright (c) 2010-2018 Todd C. Miller <Todd.Miller@sudo.ws>
+# Copyright (c) 2010-2021
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
SSP_LDFLAGS = @SSP_LDFLAGS@
# cppcheck options, usually set in the top-level Makefile
-CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
# splint options, usually set in the top-level Makefile
SPLINT_OPTS = -D__restrict= -checks
PROGS = @PROGS@
-OBJS = conversation.o copy_file.o env_hooks.o exec.o exec_common.o \
- exec_monitor.o exec_nopty.o exec_pty.o get_pty.o hooks.o \
+OBJS = conversation.o copy_file.o edit_open.o env_hooks.o exec.o \
+ exec_common.o exec_monitor.o exec_nopty.o exec_pty.o get_pty.o hooks.o \
limits.o load_plugins.o net_ifs.o parse_args.o preserve_fds.o \
signal.o sudo.o sudo_edit.o tcsetpgrp_nobg.o tgetpass.o \
ttyname.o utmp.o @SUDO_OBJS@
POBJS = $(IOBJS:.i=.plog)
-SESH_OBJS = copy_file.o exec_common.o sesh.o
+SESH_OBJS = copy_file.o edit_open.o exec_common.o sesh.o
CHECK_NOEXEC_OBJS = check_noexec.o exec_common.o
$(CC) -E -o $@ $(CPPFLAGS) $<
copy_file.plog: copy_file.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/copy_file.c --i-file $< --output-file $@
+edit_open.o: $(srcdir)/edit_open.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(srcdir)/sudo.h $(srcdir)/sudo_edit.h \
+ $(top_builddir)/config.h $(top_builddir)/pathnames.h
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/edit_open.c
+edit_open.i: $(srcdir)/edit_open.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(srcdir)/sudo.h $(srcdir)/sudo_edit.h \
+ $(top_builddir)/config.h $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+edit_open.plog: edit_open.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/edit_open.c --i-file $< --output-file $@
env_hooks.o: $(srcdir)/env_hooks.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
$(incdir)/sudo_debug.h $(incdir)/sudo_dso.h \
selinux.plog: selinux.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/selinux.c --i-file $< --output-file $@
sesh.o: $(srcdir)/sesh.c $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
- $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_fatal.h \
- $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
- $(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(srcdir)/sudo_exec.h \
- $(top_builddir)/config.h
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/sudo.h $(srcdir)/sudo_edit.h $(srcdir)/sudo_exec.h \
+ $(top_builddir)/config.h $(top_builddir)/pathnames.h
$(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/sesh.c
sesh.i: $(srcdir)/sesh.c $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
- $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_fatal.h \
- $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
- $(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(srcdir)/sudo_exec.h \
- $(top_builddir)/config.h
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/sudo.h $(srcdir)/sudo_edit.h $(srcdir)/sudo_exec.h \
+ $(top_builddir)/config.h $(top_builddir)/pathnames.h
$(CC) -E -o $@ $(CPPFLAGS) $<
sesh.plog: sesh.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/sesh.c --i-file $< --output-file $@
$(incdir)/sudo_debug.h $(incdir)/sudo_event.h \
$(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
$(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
- $(incdir)/sudo_util.h $(srcdir)/sudo.h $(srcdir)/sudo_exec.h \
- $(top_builddir)/config.h $(top_builddir)/pathnames.h
+ $(incdir)/sudo_util.h $(srcdir)/sudo.h $(srcdir)/sudo_edit.h \
+ $(srcdir)/sudo_exec.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
$(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/sudo_edit.c
sudo_edit.i: $(srcdir)/sudo_edit.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
$(incdir)/sudo_debug.h $(incdir)/sudo_event.h \
$(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
$(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
- $(incdir)/sudo_util.h $(srcdir)/sudo.h $(srcdir)/sudo_exec.h \
- $(top_builddir)/config.h $(top_builddir)/pathnames.h
+ $(incdir)/sudo_util.h $(srcdir)/sudo.h $(srcdir)/sudo_edit.h \
+ $(srcdir)/sudo_exec.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
$(CC) -E -o $@ $(CPPFLAGS) $<
sudo_edit.plog: sudo_edit.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/sudo_edit.c --i-file $< --output-file $@
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2020-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
#include <config.h>
+#include <sys/stat.h>
+
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
sudo_warn(U_("unable to write to %s"), dst);
debug_return_int(-1);
}
+
+bool
+sudo_check_temp_file(int tfd, const char *tfile, uid_t uid, struct stat *sb)
+{
+ struct stat sbuf;
+ debug_decl(sudo_check_temp_file, SUDO_DEBUG_UTIL);
+
+ if (sb == NULL)
+ sb = &sbuf;
+
+ if (fstat(tfd, sb) == -1) {
+ sudo_warn(U_("unable to stat %s"), tfile);
+ debug_return_bool(false);
+ }
+ if (!S_ISREG(sb->st_mode)) {
+ sudo_warnx(U_("%s: not a regular file"), tfile);
+ debug_return_bool(false);
+ }
+ if ((sb->st_mode & ALLPERMS) != (S_IRUSR|S_IWUSR)) {
+ sudo_warnx(U_("%s: bad file mode: 0%o"), tfile, sb->st_mode & ALLPERMS);
+ debug_return_bool(false);
+ }
+ if (sb->st_uid != uid) {
+ sudo_warnx(U_("%s is owned by uid %u, should be %u"),
+ tfile, (unsigned int)sb->st_uid, (unsigned int)uid);
+ debug_return_bool(false);
+ }
+ debug_return_bool(true);
+}
--- /dev/null
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2015-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <grp.h>
+#include <pwd.h>
+#include <fcntl.h>
+
+#include "sudo.h"
+#include "sudo_edit.h"
+
+#if defined(HAVE_SETRESUID) || defined(HAVE_SETREUID) || defined(HAVE_SETEUID)
+
+void
+switch_user(uid_t euid, gid_t egid, int ngroups, GETGROUPS_T *groups)
+{
+ int serrno = errno;
+ debug_decl(switch_user, SUDO_DEBUG_EDIT);
+
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "set uid:gid to %u:%u(%u)", (unsigned int)euid, (unsigned int)egid,
+ ngroups > 0 ? (unsigned int)groups[0] : (unsigned int)egid);
+
+ /* When restoring root, change euid first; otherwise change it last. */
+ if (euid == ROOT_UID) {
+ if (seteuid(ROOT_UID) != 0)
+ sudo_fatal("seteuid(ROOT_UID)");
+ }
+ if (setegid(egid) != 0)
+ sudo_fatal("setegid(%d)", (int)egid);
+ if (ngroups != -1) {
+ if (sudo_setgroups(ngroups, groups) != 0)
+ sudo_fatal("setgroups");
+ }
+ if (euid != ROOT_UID) {
+ if (seteuid(euid) != 0)
+ sudo_fatal("seteuid(%u)", (unsigned int)euid);
+ }
+ errno = serrno;
+
+ debug_return;
+}
+
+#if defined(HAVE_FACCESSAT) && defined(AT_EACCESS)
+/*
+ * Returns true if the open directory fd is owned or writable by the user.
+ */
+int
+dir_is_writable(int dfd, struct sudo_cred *user_cred, struct sudo_cred *cur_cred)
+{
+ struct stat sb;
+ int rc;
+ debug_decl(dir_is_writable, SUDO_DEBUG_EDIT);
+
+ if (fstat(dfd, &sb) == -1)
+ debug_return_int(-1);
+
+ /* If the user owns the dir we always consider it writable. */
+ if (sb.st_uid == user_cred->uid) {
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "user uid %u matches directory uid %u",
+ (unsigned int)user_cred->uid, (unsigned int)sb.st_uid);
+ debug_return_int(true);
+ }
+
+ /* Change uid/gid/groups to invoking user, usually needs root perms. */
+ if (cur_cred->euid != ROOT_UID) {
+ if (seteuid(ROOT_UID) != 0)
+ sudo_fatal("seteuid(ROOT_UID)");
+ }
+ switch_user(user_cred->uid, user_cred->gid, user_cred->ngroups,
+ user_cred->groups);
+
+ /* Access checks are done using the euid/egid and group vector. */
+ rc = faccessat(dfd, ".", W_OK, AT_EACCESS);
+
+ /* Restore uid/gid/groups, may need root perms. */
+ if (user_cred->uid != ROOT_UID) {
+ if (seteuid(ROOT_UID) != 0)
+ sudo_fatal("seteuid(ROOT_UID)");
+ }
+ switch_user(cur_cred->euid, cur_cred->egid, cur_cred->ngroups,
+ cur_cred->groups);
+
+ if (rc == 0)
+ debug_return_int(true);
+ if (errno == EACCES || errno == EROFS)
+ debug_return_int(false);
+ debug_return_int(-1);
+}
+#else
+static bool
+group_matches(gid_t target, struct sudo_cred *cred)
+{
+ int i;
+ debug_decl(group_matches, SUDO_DEBUG_EDIT);
+
+ if (target == cred->gid) {
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "user gid %u matches directory gid %u", (unsigned int)cred->gid,
+ (unsigned int)target);
+ debug_return_bool(true);
+ }
+ for (i = 0; i < cred->ngroups; i++) {
+ if (target == cred->groups[i]) {
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "user gid %u matches directory gid %u", cred->groups[i],
+ (unsigned int)target);
+ debug_return_bool(true);
+ }
+ }
+ debug_return_bool(false);
+}
+
+/*
+ * Returns true if the open directory fd is owned or writable by the user.
+ */
+int
+dir_is_writable(int dfd, struct sudo_cred *user_cred, struct sudo_cred *cur_cred)
+{
+ struct stat sb;
+ debug_decl(dir_is_writable, SUDO_DEBUG_EDIT);
+
+ if (fstat(dfd, &sb) == -1)
+ debug_return_int(-1);
+
+ /* If the user owns the dir we always consider it writable. */
+ if (sb.st_uid == user_cred->uid) {
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "user uid %u matches directory uid %u",
+ (unsigned int)user_cred->uid, (unsigned int)sb.st_uid);
+ debug_return_int(true);
+ }
+
+ /* Other writable? */
+ if (ISSET(sb.st_mode, S_IWOTH)) {
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "directory is writable by other");
+ debug_return_int(true);
+ }
+
+ /* Group writable? */
+ if (ISSET(sb.st_mode, S_IWGRP)) {
+ if (group_matches(sb.st_gid, user_cred)) {
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "directory is writable by one of the user's groups");
+ debug_return_int(true);
+ }
+ }
+
+ errno = EACCES;
+ debug_return_int(false);
+}
+#endif /* HAVE_FACCESSAT && AT_EACCESS */
+
+#ifdef O_NOFOLLOW
+static int
+sudo_edit_openat_nofollow(int dfd, char *path, int oflags, mode_t mode)
+{
+ debug_decl(sudo_edit_openat_nofollow, SUDO_DEBUG_EDIT);
+
+ debug_return_int(openat(dfd, path, oflags|O_NOFOLLOW, mode));
+}
+#else
+/*
+ * Returns true if fd and path don't match or path is a symlink.
+ * Used on older systems without O_NOFOLLOW.
+ */
+static bool
+sudo_edit_is_symlink(int fd, char *path)
+{
+ struct stat sb1, sb2;
+ debug_decl(sudo_edit_is_symlink, SUDO_DEBUG_EDIT);
+
+ /*
+ * Treat [fl]stat() failure like there was a symlink.
+ */
+ if (fstat(fd, &sb1) == -1 || lstat(path, &sb2) == -1)
+ debug_return_bool(true);
+
+ /*
+ * Make sure we did not open a link and that what we opened
+ * matches what is currently on the file system.
+ */
+ if (S_ISLNK(sb2.st_mode) ||
+ sb1.st_dev != sb2.st_dev || sb1.st_ino != sb2.st_ino) {
+ debug_return_bool(true);
+ }
+
+ debug_return_bool(false);
+}
+
+static int
+sudo_edit_openat_nofollow(int dfd, char *path, int oflags, mode_t mode)
+{
+ int fd = -1, odfd = -1;
+ struct stat sb;
+ debug_decl(sudo_edit_openat_nofollow, SUDO_DEBUG_EDIT);
+
+ /* Save cwd and chdir to dfd */
+ if ((odfd = open(".", O_RDONLY)) == -1)
+ debug_return_int(-1);
+ if (fchdir(dfd) == -1) {
+ close(odfd);
+ debug_return_int(-1);
+ }
+
+ /*
+ * Check if path is a symlink. This is racey but we detect whether
+ * we lost the race in sudo_edit_is_symlink() after the open.
+ */
+ if (lstat(path, &sb) == -1 && errno != ENOENT)
+ goto done;
+ if (S_ISLNK(sb.st_mode)) {
+ errno = ELOOP;
+ goto done;
+ }
+
+ fd = open(path, oflags, mode);
+ if (fd == -1)
+ goto done;
+
+ /*
+ * Post-open symlink check. This will leave a zero-length file if
+ * O_CREAT was specified but it is too dangerous to try and remove it.
+ */
+ if (sudo_edit_is_symlink(fd, path)) {
+ close(fd);
+ fd = -1;
+ errno = ELOOP;
+ }
+
+done:
+ /* Restore cwd */
+ if (odfd != -1) {
+ if (fchdir(odfd) == -1)
+ sudo_fatal("%s", U_("unable to restore current working directory"));
+ close(odfd);
+ }
+
+ debug_return_int(fd);
+}
+#endif /* O_NOFOLLOW */
+
+static int
+sudo_edit_open_nonwritable(char *path, int oflags, mode_t mode,
+ struct sudo_cred *user_cred, struct sudo_cred *cur_cred)
+{
+ const int dflags = DIR_OPEN_FLAGS;
+ int dfd, fd, is_writable;
+ debug_decl(sudo_edit_open_nonwritable, SUDO_DEBUG_EDIT);
+
+ if (path[0] == '/') {
+ dfd = open("/", dflags);
+ path++;
+ } else {
+ dfd = open(".", dflags);
+ if (path[0] == '.' && path[1] == '/')
+ path += 2;
+ }
+ if (dfd == -1)
+ debug_return_int(-1);
+
+ for (;;) {
+ char *slash;
+ int subdfd;
+
+ /*
+ * Look up one component at a time, avoiding symbolic links in
+ * writable directories.
+ */
+ is_writable = dir_is_writable(dfd, user_cred, cur_cred);
+ if (is_writable == -1) {
+ close(dfd);
+ debug_return_int(-1);
+ }
+
+ path += strspn(path, "/");
+ slash = strchr(path, '/');
+ if (slash == NULL)
+ break;
+ *slash = '\0';
+ if (is_writable)
+ subdfd = sudo_edit_openat_nofollow(dfd, path, dflags, 0);
+ else
+ subdfd = openat(dfd, path, dflags, 0);
+ *slash = '/'; /* restore path */
+ close(dfd);
+ if (subdfd == -1)
+ debug_return_int(-1);
+ path = slash + 1;
+ dfd = subdfd;
+ }
+
+ if (is_writable) {
+ close(dfd);
+ errno = EISDIR;
+ debug_return_int(-1);
+ }
+
+ /*
+ * For "sudoedit /" we will receive ENOENT from openat() and sudoedit
+ * will try to create a file with an empty name. We treat an empty
+ * path as the cwd so sudoedit can give a sensible error message.
+ */
+ fd = openat(dfd, *path ? path : ".", oflags, mode);
+ close(dfd);
+ debug_return_int(fd);
+}
+
+#ifdef O_NOFOLLOW
+int
+sudo_edit_open(char *path, int oflags, mode_t mode, int sflags,
+ struct sudo_cred *user_cred, struct sudo_cred *cur_cred)
+{
+ int fd;
+ debug_decl(sudo_edit_open, SUDO_DEBUG_EDIT);
+
+ if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW))
+ oflags |= O_NOFOLLOW;
+ if (ISSET(sflags, CD_SUDOEDIT_CHECKDIR) && user_cred->uid != ROOT_UID) {
+ fd = sudo_edit_open_nonwritable(path, oflags|O_NONBLOCK, mode,
+ user_cred, cur_cred);
+ } else {
+ fd = open(path, oflags|O_NONBLOCK, mode);
+ }
+ if (fd != -1 && !ISSET(oflags, O_NONBLOCK))
+ (void) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK);
+ debug_return_int(fd);
+}
+#else
+int
+sudo_edit_open(char *path, int oflags, mode_t mode, int sflags,
+ struct sudo_cred *user_cred, struct sudo_cred *cur_cred)
+{
+ struct stat sb;
+ int fd;
+ debug_decl(sudo_edit_open, SUDO_DEBUG_EDIT);
+
+ /*
+ * Check if path is a symlink. This is racey but we detect whether
+ * we lost the race in sudo_edit_is_symlink() after the file is opened.
+ */
+ if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW)) {
+ if (lstat(path, &sb) == -1 && errno != ENOENT)
+ debug_return_int(-1);
+ if (S_ISLNK(sb.st_mode)) {
+ errno = ELOOP;
+ debug_return_int(-1);
+ }
+ }
+
+ if (ISSET(sflags, CD_SUDOEDIT_CHECKDIR) && user_cred->uid != ROOT_UID) {
+ fd = sudo_edit_open_nonwritable(path, oflags|O_NONBLOCK, mode,
+ user_cred, cur_cred);
+ } else {
+ fd = open(path, oflags|O_NONBLOCK, mode);
+ }
+ if (fd == -1)
+ debug_return_int(-1);
+ if (!ISSET(oflags, O_NONBLOCK))
+ (void) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK);
+
+ /*
+ * Post-open symlink check. This will leave a zero-length file if
+ * O_CREAT was specified but it is too dangerous to try and remove it.
+ */
+ if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW) && sudo_edit_is_symlink(fd, path)) {
+ close(fd);
+ fd = -1;
+ errno = ELOOP;
+ }
+
+ debug_return_int(fd);
+}
+#endif /* O_NOFOLLOW */
+
+/*
+ * Verify that the parent dir of a new file exists and is not writable
+ * by the user. This fails early so the user knows ahead of time if the
+ * edit won't succeed. Additional checks are performed when copying the
+ * temporary file back to the origin so there are no TOCTOU issues.
+ * Does not modify the value of errno.
+ */
+bool
+sudo_edit_parent_valid(char *path, int sflags, struct sudo_cred *user_cred,
+ struct sudo_cred *cur_cred)
+{
+ const int serrno = errno;
+ struct stat sb;
+ bool ret = false;
+ char *slash;
+ int dfd;
+ debug_decl(sudo_edit_parent_valid, SUDO_DEBUG_EDIT);
+
+ /* Get dirname of path (the slash is restored later). */
+ slash = strrchr(path, '/');
+ if (slash == NULL) {
+ /* cwd */
+ path = ".";
+ } else if (slash == path) {
+ path = "/";
+ slash = NULL;
+ } else {
+ *slash = '\0';
+ }
+
+ /*
+ * The parent directory is allowed to be a symbolic link unless
+ * *its* parent is writable and CD_SUDOEDIT_CHECK is set.
+ */
+ dfd = sudo_edit_open(path, DIR_OPEN_FLAGS, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH,
+ sflags|CD_SUDOEDIT_FOLLOW, user_cred, cur_cred);
+ if (dfd != -1) {
+ if (fstat(dfd, &sb) == 0 && S_ISDIR(sb.st_mode))
+ ret = true;
+ close(dfd);
+ }
+ if (slash != NULL)
+ *slash = '/';
+
+ /* Restore errno. */
+ errno = serrno;
+
+ debug_return_bool(ret);
+}
+
+#endif /* HAVE_SETRESUID || HAVE_SETREUID || HAVE_SETEUID */
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2009-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
unlimit_nproc();
#if defined(HAVE_SETRESUID)
- if (setresuid(details->uid, details->euid, details->euid) != 0) {
+ if (setresuid(details->cred.uid, details->cred.euid, details->cred.euid) != 0) {
sudo_warn(U_("unable to change to runas uid (%u, %u)"),
- (unsigned int)details->uid, (unsigned int)details->euid);
+ (unsigned int)details->cred.uid, (unsigned int)details->cred.euid);
goto done;
}
#elif defined(HAVE_SETREUID)
- if (setreuid(details->uid, details->euid) != 0) {
+ if (setreuid(details->cred.uid, details->cred.euid) != 0) {
sudo_warn(U_("unable to change to runas uid (%u, %u)"),
- (unsigned int)details->uid, (unsigned int)details->euid);
+ (unsigned int)details->cred.uid, (unsigned int)details->cred.euid);
goto done;
}
#else
/* Cannot support real user-ID that is different from effective user-ID. */
- if (setuid(details->euid) != 0) {
+ if (setuid(details->cred.euid) != 0) {
sudo_warn(U_("unable to change to runas uid (%u, %u)"),
- (unsigned int)details->euid, (unsigned int)details->euid);
+ (unsigned int)details->cred.euid, (unsigned int)details->cred.euid);
goto done;
}
#endif /* !HAVE_SETRESUID && !HAVE_SETREUID */
debug_decl(direct_exec_allowed, SUDO_DEBUG_EXEC);
/* Assumes sudo_needs_pty() was already checked. */
- if (ISSET(details->flags, CD_SET_TIMEOUT|CD_SUDOEDIT) ||
+ if (ISSET(details->flags, CD_RBAC_ENABLED|CD_SET_TIMEOUT|CD_SUDOEDIT) ||
policy_plugin.u.policy->close != NULL)
debug_return_bool(false);
* whether it was dynamically allocated. [TODO: plugin API]
*/
if (preload_idx == -1 || !enabled) {
- const int env_size = env_len + 1 + (preload_idx == -1) + enabled;
+ const int env_size = env_len + 1 + (preload_idx == -1) + enabled; // -V547
char **nenvp = reallocarray(NULL, env_size, sizeof(*envp));
if (nenvp == NULL)
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2009-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
}
if (!get_pty(&io_fds[SFD_LEADER], &io_fds[SFD_FOLLOWER],
- ptyname, sizeof(ptyname), details->euid))
+ ptyname, sizeof(ptyname), details->cred.euid))
sudo_fatal("%s", U_("unable to allocate pty"));
/* Update tty name in command details (used by SELinux and AIX). */
#else
char addrstr[INET_ADDRSTRLEN], maskstr[INET_ADDRSTRLEN];
#endif
- int ailen, len, num_interfaces = 0;
+ int len, num_interfaces = 0;
+ size_t ailen;
char *cp;
debug_decl(get_net_ifs, SUDO_DEBUG_NETIF);
if (inet_ntop(AF_INET, &sin->sin_addr, maskstr, sizeof(maskstr)) == NULL)
continue;
- len = snprintf(cp, ailen - (*addrinfo - cp),
- "%s%s/%s", cp == *addrinfo ? "" : " ", addrstr, maskstr);
- if (len < 0 || len >= ailen - (*addrinfo - cp)) {
+ len = snprintf(cp, ailen, "%s%s/%s",
+ cp == *addrinfo ? "" : " ", addrstr, maskstr);
+ if (len < 0 || (size_t)len >= ailen) {
sudo_warnx(U_("internal error, %s overflow"), __func__);
goto done;
}
cp += len;
+ ailen -= len;
break;
#ifdef HAVE_STRUCT_IN6_ADDR
case AF_INET6:
if (inet_ntop(AF_INET6, &sin6->sin6_addr, maskstr, sizeof(maskstr)) == NULL)
continue;
- len = snprintf(cp, ailen - (*addrinfo - cp),
- "%s%s/%s", cp == *addrinfo ? "" : " ", addrstr, maskstr);
- if (len < 0 || len >= ailen - (*addrinfo - cp)) {
+ len = snprintf(cp, ailen, "%s%s/%s",
+ cp == *addrinfo ? "" : " ", addrstr, maskstr);
+ if (len < 0 || (size_t)len >= ailen) {
sudo_warnx(U_("internal error, %s overflow"), __func__);
goto done;
}
cp += len;
+ ailen -= len;
break;
#endif /* HAVE_STRUCT_IN6_ADDR */
}
struct ifreq *ifr, *ifr_tmp = (struct ifreq *)ifr_tmpbuf;
struct ifconf *ifconf;
struct sockaddr_in *sin;
- int ailen, i, len, n, sock, num_interfaces = 0;
- size_t buflen = sizeof(struct ifconf) + BUFSIZ;
+ int i, len, n, sock, num_interfaces = 0;
+ size_t ailen, buflen = sizeof(struct ifconf) + BUFSIZ;
char *cp, *previfname = "", *ifconf_buf = NULL;
char addrstr[INET_ADDRSTRLEN], maskstr[INET_ADDRSTRLEN];
#ifdef _ISC
if (inet_ntop(AF_INET, &sin->sin_addr, maskstr, sizeof(maskstr)) == NULL)
continue;
- len = snprintf(cp, ailen - (*addrinfo - cp),
- "%s%s/%s", cp == *addrinfo ? "" : " ", addrstr, maskstr);
- if (len < 0 || len >= ailen - (*addrinfo - cp)) {
+ len = snprintf(cp, ailen, "%s%s/%s",
+ cp == *addrinfo ? "" : " ", addrstr, maskstr);
+ if (len < 0 || (size_t)len >= ailen) {
sudo_warnx(U_("internal error, %s overflow"), __func__);
goto done;
}
cp += len;
+ ailen -= len;
/* Stash the name of the interface we saved. */
previfname = ifr->ifr_name;
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2008, 2010-2018, 2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2008, 2010-2018, 2020-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
# include "compat/stdbool.h"
#endif /* HAVE_STDBOOL_H */
-#include "sudo_compat.h"
-#include "sudo_conf.h"
-#include "sudo_debug.h"
+#include "sudo.h"
#include "sudo_exec.h"
-#include "sudo_fatal.h"
-#include "sudo_gettext.h"
-#include "sudo_plugin.h"
-#include "sudo_util.h"
+#include "sudo_edit.h"
sudo_dso_public int main(int argc, char *argv[], char *envp[]);
_exit(ret);
}
+/*
+ * Destructively parse a string in the format:
+ * uid:gid:groups,...
+ *
+ * On success, fills in ud and returns true, else false.
+ */
+static bool
+parse_user(char *userstr, struct sudo_cred *cred)
+{
+ char *cp, *ep;
+ const char *errstr;
+ debug_decl(parse_user, SUDO_DEBUG_EDIT);
+
+ /* UID */
+ cp = userstr;
+ if ((ep = strchr(cp, ':')) == NULL) {
+ sudo_warnx(U_("%s: %s"), cp, U_("invalid value"));
+ debug_return_bool(false);
+ }
+ *ep++ = '\0';
+ cred->uid = cred->euid = sudo_strtoid(cp, &errstr);
+ if (errstr != NULL) {
+ sudo_warnx(U_("%s: %s"), cp, errstr);
+ debug_return_bool(false);
+ }
+
+ /* GID */
+ cp = ep;
+ if ((ep = strchr(cp, ':')) == NULL) {
+ sudo_warnx(U_("%s: %s"), cp, U_("invalid value"));
+ debug_return_bool(false);
+ }
+ *ep++ = '\0';
+ cred->gid = cred->egid = sudo_strtoid(cp, &errstr);
+ if (errstr != NULL) {
+ sudo_warnx(U_("%s: %s"), cp, errstr);
+ debug_return_bool(false);
+ }
+
+ /* group vector */
+ cp = ep;
+ cred->ngroups = sudo_parse_gids(cp, NULL, &cred->groups);
+ if (cred->ngroups == -1)
+ debug_return_bool(false);
+
+ debug_return_bool(true);
+}
+
static int
-sesh_sudoedit(int argc, char *argv[])
+sesh_edit_create_tfiles(int edit_flags, struct sudo_cred *user_cred,
+ struct sudo_cred *run_cred, int argc, char *argv[])
{
- int i, oflags_dst, post, ret = SESH_ERR_FAILURE;
- int fd_src = -1, fd_dst = -1, follow = 0;
- struct stat sb;
+ int i, fd_src = -1, fd_dst = -1;
struct timespec times[2];
+ struct stat sb;
+ debug_decl(sesh_edit_create_tfiles, SUDO_DEBUG_EDIT);
+
+ for (i = 0; i < argc - 1; i += 2) {
+ char *path_src = argv[i];
+ const char *path_dst = argv[i + 1];
+
+ /*
+ * Try to open the source file for reading.
+ * If it doesn't exist, we'll create an empty destination file.
+ */
+ fd_src = sudo_edit_open(path_src, O_RDONLY,
+ S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, edit_flags, user_cred, run_cred);
+ if (fd_src == -1) {
+ if (errno != ENOENT) {
+ if (errno == ELOOP) {
+ sudo_warnx(U_("%s: editing symbolic links is not "
+ "permitted"), path_src);
+ } else if (errno == EISDIR) {
+ sudo_warnx(U_("%s: editing files in a writable directory "
+ "is not permitted"), path_src);
+ } else {
+ sudo_warn("%s", path_src);
+ }
+ goto cleanup;
+ }
+ /* New file, verify parent dir exists and is not writable. */
+ if (!sudo_edit_parent_valid(path_src, edit_flags, user_cred, run_cred))
+ goto cleanup;
+ }
+ if (fd_src == -1) {
+ /* New file. */
+ memset(&sb, 0, sizeof(sb));
+ } else if (fstat(fd_src, &sb) == -1 || !S_ISREG(sb.st_mode)) {
+ sudo_warnx(U_("%s: not a regular file"), path_src);
+ goto cleanup;
+ }
+
+ /*
+ * Create temporary file using O_EXCL to ensure that temporary
+ * files are created by us and that we do not open any symlinks.
+ */
+ fd_dst = open(path_dst, O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR);
+ if (fd_dst == -1) {
+ sudo_warn("%s", path_dst);
+ goto cleanup;
+ }
+
+ if (fd_src != -1) {
+ if (sudo_copy_file(path_src, fd_src, -1, path_dst, fd_dst, -1) == -1)
+ goto cleanup;
+ close(fd_src);
+ }
+
+ /* Make mtime on temp file match src (sb filled in above). */
+ mtim_get(&sb, times[0]);
+ times[1].tv_sec = times[0].tv_sec;
+ times[1].tv_nsec = times[0].tv_nsec;
+ if (futimens(fd_dst, times) == -1) {
+ if (utimensat(AT_FDCWD, path_dst, times, 0) == -1)
+ sudo_warn("%s", path_dst);
+ }
+ close(fd_dst);
+ fd_dst = -1;
+ }
+ debug_return_int(SESH_SUCCESS);
+
+cleanup:
+ /* Remove temporary files. */
+ for (i = 0; i < argc - 1; i += 2)
+ unlink(argv[i + 1]);
+ if (fd_src != -1)
+ close(fd_src);
+ if (fd_dst != -1)
+ close(fd_dst);
+ debug_return_int(SESH_ERR_NO_FILES);
+}
+
+static int
+sesh_edit_copy_tfiles(int edit_flags, struct sudo_cred *user_cred,
+ struct sudo_cred *run_cred, int argc, char *argv[])
+{
+ int i, ret = SESH_SUCCESS;
+ int fd_src = -1, fd_dst = -1;
+ debug_decl(sesh_edit_copy_tfiles, SUDO_DEBUG_EDIT);
+
+ for (i = 0; i < argc - 1; i += 2) {
+ const char *path_src = argv[i];
+ char *path_dst = argv[i + 1];
+ off_t len_src, len_dst;
+ struct stat sb;
+
+ /* Open temporary file for reading. */
+ if (fd_src != -1)
+ close(fd_src);
+ fd_src = open(path_src, O_RDONLY|O_NONBLOCK|O_NOFOLLOW);
+ if (fd_src == -1) {
+ sudo_warn("%s", path_src);
+ ret = SESH_ERR_SOME_FILES;
+ continue;
+ }
+ /* Make sure the temporary file is safe and has the proper owner. */
+ if (!sudo_check_temp_file(fd_src, path_src, run_cred->uid, &sb)) {
+ sudo_warnx(U_("contents of edit session left in %s"), path_src);
+ ret = SESH_ERR_SOME_FILES;
+ continue;
+ }
+ (void) fcntl(fd_src, F_SETFL, fcntl(fd_src, F_GETFL, 0) & ~O_NONBLOCK);
+
+ /* Create destination file. */
+ if (fd_dst != -1)
+ close(fd_dst);
+ fd_dst = sudo_edit_open(path_dst, O_WRONLY|O_CREAT,
+ S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, edit_flags, user_cred, run_cred);
+ if (fd_dst == -1) {
+ if (errno == ELOOP) {
+ sudo_warnx(U_("%s: editing symbolic links is not "
+ "permitted"), path_dst);
+ } else if (errno == EISDIR) {
+ sudo_warnx(U_("%s: editing files in a writable directory "
+ "is not permitted"), path_dst);
+ } else {
+ sudo_warn("%s", path_dst);
+ }
+ sudo_warnx(U_("contents of edit session left in %s"), path_src);
+ ret = SESH_ERR_SOME_FILES;
+ continue;
+ }
+
+ /* sudo_check_temp_file() filled in sb for us. */
+ len_src = sb.st_size;
+ if (fstat(fd_dst, &sb) != 0) {
+ sudo_warn("%s", path_dst);
+ sudo_warnx(U_("contents of edit session left in %s"), path_src);
+ ret = SESH_ERR_SOME_FILES;
+ continue;
+ }
+ len_dst = sb.st_size;
+
+ if (sudo_copy_file(path_src, fd_src, len_src, path_dst, fd_dst,
+ len_dst) == -1) {
+ sudo_warnx(U_("contents of edit session left in %s"), path_src);
+ ret = SESH_ERR_SOME_FILES;
+ continue;
+ }
+ unlink(path_src);
+ }
+ if (fd_src != -1)
+ close(fd_src);
+ if (fd_dst != -1)
+ close(fd_dst);
+
+ debug_return_int(ret);
+}
+
+static int
+sesh_sudoedit(int argc, char *argv[])
+{
+ int edit_flags, post, ret;
+ struct sudo_cred user_cred, run_cred;
debug_decl(sesh_sudoedit, SUDO_DEBUG_EDIT);
+ memset(&user_cred, 0, sizeof(user_cred));
+ memset(&run_cred, 0, sizeof(run_cred));
+ edit_flags = CD_SUDOEDIT_FOLLOW;
+
/* Check for -h flag (don't follow links). */
- if (strcmp(argv[2], "-h") == 0) {
+ if (argv[2] != NULL && strcmp(argv[2], "-h") == 0) {
argv++;
argc--;
- follow = O_NOFOLLOW;
+ CLR(edit_flags, CD_SUDOEDIT_FOLLOW); // -V753
+ }
+
+ /* Check for -w flag (disallow directories writable by the user). */
+ if (argv[2] != NULL && strcmp(argv[2], "-w") == 0) {
+ SET(edit_flags, CD_SUDOEDIT_CHECKDIR);
+
+ /* Parse uid:gid:gid1,gid2,... */
+ if (argv[3] == NULL || !parse_user(argv[3], &user_cred))
+ debug_return_int(SESH_ERR_FAILURE);
+ argv += 2;
+ argc -= 2;
}
if (argc < 3)
if (argc & 1)
debug_return_int(SESH_ERR_BAD_PATHS);
+ /* Masquerade as sudoedit so the user gets consistent error messages. */
+ setprogname("sudoedit");
+
/*
- * Use O_EXCL if we are not in the post editing stage
- * so that it's ensured that the temporary files are
- * created by us and that we are not opening any symlinks.
+ * sudoedit runs us with the effective user-ID and group-ID of
+ * the target user as well as with the target user's group list.
*/
- oflags_dst = O_WRONLY|O_CREAT|(post ? follow : O_EXCL);
- for (i = 0; i < argc - 1; i += 2) {
- const char *path_src = argv[i];
- const char *path_dst = argv[i + 1];
- /*
- * Try to open the source file for reading. If it
- * doesn't exist, that's OK, we'll create an empty
- * destination file.
- */
- if ((fd_src = open(path_src, O_RDONLY|follow, S_IRUSR|S_IWUSR)) < 0) {
- if (errno != ENOENT) {
- sudo_warn("%s", path_src);
- if (post) {
- ret = SESH_ERR_SOME_FILES;
- goto nocleanup;
- } else
- goto cleanup_0;
- }
- }
-
- if ((fd_dst = open(path_dst, oflags_dst, post ?
- (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH) : (S_IRUSR|S_IWUSR))) < 0) {
- /* error - cleanup */
- sudo_warn("%s", path_dst);
- if (post) {
- ret = SESH_ERR_SOME_FILES;
- goto nocleanup;
- } else
- goto cleanup_0;
- }
-
- if (fd_src != -1) {
- off_t len_src = -1;
- off_t len_dst = -1;
-
- if (post) {
- if (fstat(fd_src, &sb) != 0) {
- ret = SESH_ERR_SOME_FILES;
- goto nocleanup;
- }
- len_src = sb.st_size;
- if (fstat(fd_dst, &sb) != 0) {
- ret = SESH_ERR_SOME_FILES;
- goto nocleanup;
- }
- len_dst = sb.st_size;
- }
-
- if (sudo_copy_file(path_src, fd_src, len_src, path_dst, fd_dst,
- len_dst) == -1) {
- if (post) {
- ret = SESH_ERR_SOME_FILES;
- goto nocleanup;
- } else {
- goto cleanup_0;
- }
- }
+ run_cred.uid = run_cred.euid = geteuid();
+ run_cred.gid = run_cred.egid = getegid();
+ run_cred.ngroups = getgroups(0, NULL); // -V575
+ if (run_cred.ngroups > 0) {
+ run_cred.groups = reallocarray(NULL, run_cred.ngroups,
+ sizeof(GETGROUPS_T));
+ if (run_cred.groups == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__,
+ U_("unable to allocate memory"));
+ debug_return_int(SESH_ERR_FAILURE);
}
-
- if (!post) {
- if (fd_src == -1 || fstat(fd_src, &sb) != 0)
- memset(&sb, 0, sizeof(sb));
- /* Make mtime on temp file match src. */
- mtim_get(&sb, times[0]);
- times[1].tv_sec = times[0].tv_sec;
- times[1].tv_nsec = times[0].tv_nsec;
- if (futimens(fd_dst, times) == -1) {
- if (utimensat(AT_FDCWD, path_dst, times, 0) == -1)
- sudo_warn("%s", path_dst);
- }
- }
- close(fd_dst);
- fd_dst = -1;
- if (fd_src != -1) {
- close(fd_src);
- fd_src = -1;
+ if (getgroups(run_cred.ngroups, run_cred.groups) < 0) {
+ sudo_warn("%s", U_("unable to get group list"));
+ debug_return_int(SESH_ERR_FAILURE);
}
+ } else {
+ run_cred.ngroups = 0;
+ run_cred.groups = NULL;
}
- ret = SESH_SUCCESS;
- if (post) {
- /* Remove temporary files (post=1) */
- for (i = 0; i < argc - 1; i += 2)
- unlink(argv[i]);
- }
-nocleanup:
- if (fd_dst != -1)
- close(fd_dst);
- if (fd_src != -1)
- close(fd_src);
- return(ret);
-cleanup_0:
- /* Remove temporary files (post=0) */
- for (i = 0; i < argc - 1; i += 2)
- unlink(argv[i + 1]);
- if (fd_dst != -1)
- close(fd_dst);
- if (fd_src != -1)
- close(fd_src);
- return(SESH_ERR_NO_FILES);
+ ret = post ?
+ sesh_edit_copy_tfiles(edit_flags, &user_cred, &run_cred, argc, argv) :
+ sesh_edit_create_tfiles(edit_flags, &user_cred, &run_cred, argc, argv);
+ debug_return_int(ret);
}
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2009-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
int nargc, status = 0;
char **nargv, **env_add, **user_info;
char **command_info = NULL, **argv_out = NULL, **user_env_out = NULL;
+ const char * const allowed_prognames[] = { "sudo", "sudoedit", NULL };
struct sudo_settings *settings;
int submit_optind;
sigset_t mask;
debug_decl_vars(main, SUDO_DEBUG_MAIN);
- initprogname(argc > 0 ? argv[0] : "sudo");
+ /* Only allow "sudo" or "sudoedit" as the program name. */
+ initprogname2(argc > 0 ? argv[0] : "sudo", allowed_prognames);
/* Crank resource limits to unlimited. */
unlimit_sudo();
/* Print sudo version early, in case of plugin init failure. */
if (ISSET(sudo_mode, MODE_VERSION)) {
printf(_("Sudo version %s\n"), PACKAGE_VERSION);
- if (user_details.uid == ROOT_UID)
+ if (user_details.cred.uid == ROOT_UID)
(void) printf(_("Configure options: %s\n"), CONFIGURE_ARGS);
}
switch (sudo_mode & MODE_MASK) {
case MODE_VERSION:
- policy_show_version(!user_details.uid);
- iolog_show_version(!user_details.uid, settings, user_info,
+ policy_show_version(!user_details.cred.uid);
+ iolog_show_version(!user_details.cred.uid, settings, user_info,
nargc, nargv, envp);
- approval_show_version(!user_details.uid, settings, user_info,
+ approval_show_version(!user_details.cred.uid, settings, user_info,
submit_optind, argv, envp);
- audit_show_version(!user_details.uid);
+ audit_show_version(!user_details.cred.uid);
break;
case MODE_VALIDATE:
case MODE_VALIDATE|MODE_INVALIDATE:
* Returns 0 on success and -1 on failure.
*/
static int
-fill_group_list(struct user_details *ud)
+fill_group_list(const char *user, struct sudo_cred *cred)
{
int ret = -1;
debug_decl(fill_group_list, SUDO_DEBUG_UTIL);
* If user specified a max number of groups, use it, otherwise let
* sudo_getgrouplist2() allocate the group vector.
*/
- ud->ngroups = sudo_conf_max_groups();
- if (ud->ngroups > 0) {
- ud->groups = reallocarray(NULL, ud->ngroups, sizeof(GETGROUPS_T));
- if (ud->groups != NULL) {
+ cred->ngroups = sudo_conf_max_groups();
+ if (cred->ngroups > 0) {
+ cred->groups = reallocarray(NULL, cred->ngroups, sizeof(GETGROUPS_T));
+ if (cred->groups != NULL) {
/* No error on insufficient space if user specified max_groups. */
- (void)sudo_getgrouplist2(ud->username, ud->gid, &ud->groups,
- &ud->ngroups);
+ (void)sudo_getgrouplist2(user, cred->gid,
+ &cred->groups, &cred->ngroups);
ret = 0;
}
} else {
- ud->groups = NULL;
- ret = sudo_getgrouplist2(ud->username, ud->gid, &ud->groups,
- &ud->ngroups);
+ cred->groups = NULL;
+ ret = sudo_getgrouplist2(user, cred->gid, &cred->groups,
+ &cred->ngroups);
}
if (ret == -1) {
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
"%s: %s: unable to get groups via sudo_getgrouplist2()",
- __func__, ud->username);
+ __func__, user);
} else {
sudo_debug_printf(SUDO_DEBUG_INFO,
"%s: %s: got %d groups via sudo_getgrouplist2()",
- __func__, ud->username, ud->ngroups);
+ __func__, user, cred->ngroups);
}
debug_return_int(ret);
}
static char *
-get_user_groups(struct user_details *ud)
+get_user_groups(const char *user, struct sudo_cred *cred)
{
char *cp, *gid_list = NULL;
size_t glsize;
int i, len, group_source;
debug_decl(get_user_groups, SUDO_DEBUG_UTIL);
- ud->groups = NULL;
+ cred->groups = NULL;
group_source = sudo_conf_group_source();
if (group_source != GROUP_SOURCE_DYNAMIC) {
int maxgroups = (int)sysconf(_SC_NGROUPS_MAX);
maxgroups = NGROUPS_MAX;
/* Note that macOS may return ngroups > NGROUPS_MAX. */
- if ((ud->ngroups = getgroups(0, NULL)) > 0) {
+ cred->ngroups = getgroups(0, NULL); // -V575
+ if (cred->ngroups > 0) {
/* Use groups from kernel if not at limit or source is static. */
- if (ud->ngroups != maxgroups || group_source == GROUP_SOURCE_STATIC) {
- ud->groups = reallocarray(NULL, ud->ngroups, sizeof(GETGROUPS_T));
- if (ud->groups == NULL)
+ if (cred->ngroups != maxgroups || group_source == GROUP_SOURCE_STATIC) {
+ cred->groups = reallocarray(NULL, cred->ngroups, sizeof(GETGROUPS_T));
+ if (cred->groups == NULL)
goto done;
- if (getgroups(ud->ngroups, ud->groups) < 0) {
+ if (getgroups(cred->ngroups, cred->groups) < 0) {
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: %s: unable to get %d groups via getgroups()",
- __func__, ud->username, ud->ngroups);
- free(ud->groups);
- ud->groups = NULL;
+ "%s: unable to get %d groups via getgroups()",
+ __func__, cred->ngroups);
+ free(cred->groups);
+ cred->groups = NULL;
} else {
sudo_debug_printf(SUDO_DEBUG_INFO,
- "%s: %s: got %d groups via getgroups()",
- __func__, ud->username, ud->ngroups);
+ "%s: got %d groups via getgroups()",
+ __func__, cred->ngroups);
}
}
}
}
- if (ud->groups == NULL) {
+ if (cred->groups == NULL) {
/*
* Query group database if kernel list is too small or disabled.
* Typically, this is because NFS can only support up to 16 groups.
*/
- if (fill_group_list(ud) == -1)
+ if (fill_group_list(user, cred) == -1)
goto done;
}
/*
* Format group list as a comma-separated string of gids.
*/
- glsize = sizeof("groups=") - 1 + (ud->ngroups * (MAX_UID_T_LEN + 1));
+ glsize = sizeof("groups=") - 1 + (cred->ngroups * (MAX_UID_T_LEN + 1));
if ((gid_list = malloc(glsize)) == NULL)
goto done;
memcpy(gid_list, "groups=", sizeof("groups=") - 1);
cp = gid_list + sizeof("groups=") - 1;
- for (i = 0; i < ud->ngroups; i++) {
+ for (i = 0; i < cred->ngroups; i++) {
len = snprintf(cp, glsize - (cp - gid_list), "%s%u",
- i ? "," : "", (unsigned int)ud->groups[i]);
+ i ? "," : "", (unsigned int)cred->groups[i]);
if (len < 0 || (size_t)len >= glsize - (cp - gid_list))
sudo_fatalx(U_("internal error, %s overflow"), __func__);
cp += len;
if ((ud->sid = getsid(0)) == -1)
ud->sid = 0;
- ud->uid = getuid();
- ud->euid = geteuid();
- ud->gid = getgid();
- ud->egid = getegid();
+ ud->cred.uid = getuid();
+ ud->cred.euid = geteuid();
+ ud->cred.gid = getgid();
+ ud->cred.egid = getegid();
#ifdef HAVE_SETAUTHDB
- aix_setauthdb(IDtouser(ud->uid), NULL);
+ aix_setauthdb(IDtouser(ud->cred.uid), NULL);
#endif
- pw = getpwuid(ud->uid);
+ pw = getpwuid(ud->cred.uid);
#ifdef HAVE_SETAUTHDB
aix_restoreauthdb();
#endif
goto oom;
if (asprintf(&user_info[++i], "sid=%d", (int)ud->sid) == -1)
goto oom;
- if (asprintf(&user_info[++i], "uid=%u", (unsigned int)ud->uid) == -1)
+ if (asprintf(&user_info[++i], "uid=%u", (unsigned int)ud->cred.uid) == -1)
goto oom;
- if (asprintf(&user_info[++i], "euid=%u", (unsigned int)ud->euid) == -1)
+ if (asprintf(&user_info[++i], "euid=%u", (unsigned int)ud->cred.euid) == -1)
goto oom;
- if (asprintf(&user_info[++i], "gid=%u", (unsigned int)ud->gid) == -1)
+ if (asprintf(&user_info[++i], "gid=%u", (unsigned int)ud->cred.gid) == -1)
goto oom;
- if (asprintf(&user_info[++i], "egid=%u", (unsigned int)ud->egid) == -1)
+ if (asprintf(&user_info[++i], "egid=%u", (unsigned int)ud->cred.egid) == -1)
goto oom;
- if ((cp = get_user_groups(ud)) == NULL)
+ if ((cp = get_user_groups(ud->username, &ud->cred)) == NULL)
goto oom;
user_info[++i] = cp;
id = sudo_strtoid(cp, &errstr);
if (errstr != NULL)
sudo_fatalx(U_("%s: %s"), info[i], U_(errstr));
- details->egid = (gid_t)id;
+ details->cred.egid = (gid_t)id;
SET(details->flags, CD_SET_EGID);
break;
}
id = sudo_strtoid(cp, &errstr);
if (errstr != NULL)
sudo_fatalx(U_("%s: %s"), info[i], U_(errstr));
- details->euid = (uid_t)id;
+ details->cred.euid = (uid_t)id;
SET(details->flags, CD_SET_EUID);
break;
}
id = sudo_strtoid(cp, &errstr);
if (errstr != NULL)
sudo_fatalx(U_("%s: %s"), info[i], U_(errstr));
- details->gid = (gid_t)id;
+ details->cred.gid = (gid_t)id;
SET(details->flags, CD_SET_GID);
break;
}
if (strncmp("runas_groups=", info[i], sizeof("runas_groups=") - 1) == 0) {
cp = info[i] + sizeof("runas_groups=") - 1;
- details->ngroups = sudo_parse_gids(cp, NULL, &details->groups);
+ details->cred.ngroups = sudo_parse_gids(cp, NULL, &details->cred.groups);
/* sudo_parse_gids() will print a warning on error. */
- if (details->ngroups == -1)
+ if (details->cred.ngroups == -1)
exit(EXIT_FAILURE); /* XXX */
break;
}
id = sudo_strtoid(cp, &errstr);
if (errstr != NULL)
sudo_fatalx(U_("%s: %s"), info[i], U_(errstr));
- details->uid = (uid_t)id;
+ details->cred.uid = (uid_t)id;
SET(details->flags, CD_SET_UID);
break;
}
}
if (!ISSET(details->flags, CD_SET_EUID))
- details->euid = details->uid;
+ details->cred.euid = details->cred.uid;
if (!ISSET(details->flags, CD_SET_EGID))
- details->egid = details->gid;
+ details->cred.egid = details->cred.gid;
if (!ISSET(details->flags, CD_SET_UMASK))
CLR(details->flags, CD_OVERRIDE_UMASK);
#ifdef HAVE_SETAUTHDB
- aix_setauthdb(IDtouser(details->euid), NULL);
+ aix_setauthdb(IDtouser(details->cred.euid), NULL);
#endif
if (details->runas_user != NULL)
details->pw = getpwnam(details->runas_user);
if (details->pw == NULL)
- details->pw = getpwuid(details->euid);
+ details->pw = getpwuid(details->cred.euid);
#ifdef HAVE_SETAUTHDB
aix_restoreauthdb();
#endif
debug_decl(set_user_groups, SUDO_DEBUG_EXEC);
if (!ISSET(details->flags, CD_PRESERVE_GROUPS)) {
- if (details->ngroups >= 0) {
- if (sudo_setgroups(details->ngroups, details->groups) < 0) {
+ if (details->cred.ngroups >= 0) {
+ if (sudo_setgroups(details->cred.ngroups, details->cred.groups) < 0) {
sudo_warn("%s", U_("unable to set supplementary group IDs"));
goto done;
}
}
}
#ifdef HAVE_SETEUID
- if (ISSET(details->flags, CD_SET_EGID) && setegid(details->egid)) {
+ if (ISSET(details->flags, CD_SET_EGID) && setegid(details->cred.egid)) {
sudo_warn(U_("unable to set effective gid to runas gid %u"),
- (unsigned int)details->egid);
+ (unsigned int)details->cred.egid);
goto done;
}
#endif
- if (ISSET(details->flags, CD_SET_GID) && setgid(details->gid)) {
+ if (ISSET(details->flags, CD_SET_GID) && setgid(details->cred.gid)) {
sudo_warn(U_("unable to set gid to runas gid %u"),
- (unsigned int)details->gid);
+ (unsigned int)details->cred.gid);
goto done;
}
ret = true;
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 1993-1996, 1998-2005, 2007-2016
+ * Copyright (c) 1993-1996, 1998-2005, 2007-2021
* Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
const char *value;
};
+/* Sudo user credentials */
+struct sudo_cred {
+ uid_t uid;
+ uid_t euid;
+ uid_t gid;
+ uid_t egid;
+ int ngroups;
+ GETGROUPS_T *groups;
+};
+
struct user_details {
+ struct sudo_cred cred;
pid_t pid;
pid_t ppid;
pid_t pgid;
pid_t tcpgid;
pid_t sid;
- uid_t uid;
- uid_t euid;
- uid_t gid;
- uid_t egid;
const char *username;
const char *cwd;
const char *tty;
const char *host;
const char *shell;
- GETGROUPS_T *groups;
- int ngroups;
int ts_rows;
int ts_cols;
};
TAILQ_HEAD(preserved_fd_list, preserved_fd);
struct command_details {
- uid_t uid;
- uid_t euid;
- gid_t gid;
- gid_t egid;
+ struct sudo_cred cred;
mode_t umask;
int priority;
int timeout;
- int ngroups;
int closefrom;
int flags;
int execfd;
int cwd_optional;
struct preserved_fd_list preserved_fds;
struct passwd *pw;
- GETGROUPS_T *groups;
const char *command;
const char *runas_user;
const char *cwd;
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2004-2008, 2010-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2004-2008, 2010-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
#include <string.h>
#include <time.h>
#include <unistd.h>
-#include <ctype.h>
#include <errno.h>
#include <grp.h>
#include <pwd.h>
#include <fcntl.h>
#include "sudo.h"
+#include "sudo_edit.h"
#include "sudo_exec.h"
#if defined(HAVE_SETRESUID) || defined(HAVE_SETREUID) || defined(HAVE_SETEUID)
static char edit_tmpdir[MAX(sizeof(_PATH_VARTMP), sizeof(_PATH_TMP))];
-static void
-switch_user(uid_t euid, gid_t egid, int ngroups, GETGROUPS_T *groups)
-{
- int serrno = errno;
- debug_decl(switch_user, SUDO_DEBUG_EDIT);
-
- sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "set uid:gid to %u:%u(%u)", (unsigned int)euid, (unsigned int)egid,
- ngroups ? (unsigned int)groups[0] : (unsigned int)egid);
-
- /* When restoring root, change euid first; otherwise change it last. */
- if (euid == ROOT_UID) {
- if (seteuid(ROOT_UID) != 0)
- sudo_fatal("seteuid(ROOT_UID)");
- }
- if (setegid(egid) != 0)
- sudo_fatal("setegid(%d)", (int)egid);
- if (ngroups != -1) {
- if (sudo_setgroups(ngroups, groups) != 0)
- sudo_fatal("setgroups");
- }
- if (euid != ROOT_UID) {
- if (seteuid(euid) != 0)
- sudo_fatal("seteuid(%u)", (unsigned int)euid);
- }
- errno = serrno;
-
- debug_return;
-}
-
-#if defined(HAVE_FACCESSAT) && defined(AT_EACCESS)
-/*
- * Returns true if the open directory fd is owned or writable by the user.
- */
-static int
-dir_is_writable(int dfd, struct user_details *ud, struct command_details *cd)
-{
- struct stat sb;
- int rc;
- debug_decl(dir_is_writable, SUDO_DEBUG_EDIT);
-
- if (fstat(dfd, &sb) == -1)
- debug_return_int(-1);
-
- /* If the user owns the dir we always consider it writable. */
- if (sb.st_uid == ud->uid) {
- sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "user uid %u matches directory uid %u", (unsigned int)ud->uid,
- (unsigned int)sb.st_uid);
- debug_return_int(true);
- }
-
- /* Change uid/gid/groups to invoking user, usually needs root perms. */
- if (cd->euid != ROOT_UID) {
- if (seteuid(ROOT_UID) != 0)
- sudo_fatal("seteuid(ROOT_UID)");
- }
- switch_user(ud->uid, ud->gid, ud->ngroups, ud->groups);
-
- /* Access checks are done using the euid/egid and group vector. */
- rc = faccessat(dfd, ".", W_OK, AT_EACCESS);
-
- /* Change uid/gid/groups back to target user, may need root perms. */
- if (ud->uid != ROOT_UID) {
- if (seteuid(ROOT_UID) != 0)
- sudo_fatal("seteuid(ROOT_UID)");
- }
- switch_user(cd->euid, cd->egid, cd->ngroups, cd->groups);
-
- if (rc == 0)
- debug_return_int(true);
- if (errno == EACCES || errno == EROFS)
- debug_return_int(false);
- debug_return_int(-1);
-}
-#else
-static bool
-group_matches(gid_t target, gid_t gid, int ngroups, GETGROUPS_T *groups)
-{
- int i;
- debug_decl(group_matches, SUDO_DEBUG_EDIT);
-
- if (target == gid) {
- sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "user gid %u matches directory gid %u", (unsigned int)gid,
- (unsigned int)target);
- debug_return_bool(true);
- }
- for (i = 0; i < ngroups; i++) {
- if (target == groups[i]) {
- sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "user gid %u matches directory gid %u", (unsigned int)gid,
- (unsigned int)target);
- debug_return_bool(true);
- }
- }
- debug_return_bool(false);
-}
-
-/*
- * Returns true if the open directory fd is owned or writable by the user.
- */
-static int
-dir_is_writable(int dfd, struct user_details *ud, struct command_details *cd)
-{
- struct stat sb;
- debug_decl(dir_is_writable, SUDO_DEBUG_EDIT);
-
- if (fstat(dfd, &sb) == -1)
- debug_return_int(-1);
-
- /* If the user owns the dir we always consider it writable. */
- if (sb.st_uid == ud->uid) {
- sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "user uid %u matches directory uid %u", (unsigned int)ud->uid,
- (unsigned int)sb.st_uid);
- debug_return_int(true);
- }
-
- /* Other writable? */
- if (ISSET(sb.st_mode, S_IWOTH)) {
- sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "directory is writable by other");
- debug_return_int(true);
- }
-
- /* Group writable? */
- if (ISSET(sb.st_mode, S_IWGRP)) {
- if (group_matches(sb.st_gid, ud->gid, ud->ngroups, ud->groups)) {
- sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "directory is writable by one of the user's groups");
- debug_return_int(true);
- }
- }
-
- errno = EACCES;
- debug_return_int(false);
-}
-#endif /* HAVE_FACCESSAT && AT_EACCESS */
-
/*
* Find our temporary directory, one of /var/tmp, /usr/tmp, or /tmp
* Returns true on success, else false;
*/
static bool
-set_tmpdir(struct command_details *command_details)
+set_tmpdir(struct sudo_cred *user_cred)
{
const char *tdir = NULL;
const char *tmpdirs[] = {
#endif
_PATH_TMP
};
+ struct sudo_cred saved_cred;
unsigned int i;
size_t len;
int dfd;
debug_decl(set_tmpdir, SUDO_DEBUG_EDIT);
+ /* Stash old credentials. */
+ saved_cred.uid = getuid();
+ saved_cred.euid = geteuid();
+ saved_cred.gid = getgid();
+ saved_cred.egid = getegid();
+ saved_cred.ngroups = getgroups(0, NULL); // -V575
+ if (saved_cred.ngroups > 0) {
+ saved_cred.groups =
+ reallocarray(NULL, saved_cred.ngroups, sizeof(GETGROUPS_T));
+ if (saved_cred.groups == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ debug_return_bool(false);
+ }
+ if (getgroups(saved_cred.ngroups, saved_cred.groups) < 0) {
+ sudo_warn("%s", U_("unable to get group list"));
+ free(saved_cred.groups);
+ debug_return_bool(false);
+ }
+ } else {
+ saved_cred.ngroups = 0;
+ saved_cred.groups = NULL;
+ }
+
for (i = 0; tdir == NULL && i < nitems(tmpdirs); i++) {
if ((dfd = open(tmpdirs[i], O_RDONLY)) != -1) {
- if (dir_is_writable(dfd, &user_details, command_details) == true)
+ if (dir_is_writable(dfd, user_cred, &saved_cred) == true)
tdir = tmpdirs[i];
close(dfd);
}
}
- if (tdir == NULL)
- sudo_fatalx("%s", U_("no writable temporary directory found"));
-
+ free(saved_cred.groups);
+
+ if (tdir == NULL) {
+ sudo_warnx("%s", U_("no writable temporary directory found"));
+ debug_return_bool(false);
+ }
+
len = strlcpy(edit_tmpdir, tdir, sizeof(edit_tmpdir));
if (len >= sizeof(edit_tmpdir)) {
errno = ENAMETOOLONG;
} else {
len = asprintf(tfile, "%s/%s.XXXXXXXX", edit_tmpdir, cp);
}
- if (len == -1)
- sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ if (len == -1) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ debug_return_int(-1);
+ }
tfd = mkstemps(*tfile, suff ? strlen(suff) : 0);
sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
"%s -> %s, fd %d", ofile, *tfile, tfd);
debug_return_int(tfd);
}
-#ifdef O_NOFOLLOW
-static int
-sudo_edit_openat_nofollow(int dfd, char *path, int oflags, mode_t mode)
-{
- debug_decl(sudo_edit_openat_nofollow, SUDO_DEBUG_EDIT);
-
- debug_return_int(openat(dfd, path, oflags|O_NOFOLLOW, mode));
-}
-#else
-/*
- * Returns true if fd and path don't match or path is a symlink.
- * Used on older systems without O_NOFOLLOW.
- */
-static bool
-sudo_edit_is_symlink(int fd, char *path)
-{
- struct stat sb1, sb2;
- debug_decl(sudo_edit_is_symlink, SUDO_DEBUG_EDIT);
-
- /*
- * Treat [fl]stat() failure like there was a symlink.
- */
- if (fstat(fd, &sb1) == -1 || lstat(path, &sb2) == -1)
- debug_return_bool(true);
-
- /*
- * Make sure we did not open a link and that what we opened
- * matches what is currently on the file system.
- */
- if (S_ISLNK(sb2.st_mode) ||
- sb1.st_dev != sb2.st_dev || sb1.st_ino != sb2.st_ino) {
- debug_return_bool(true);
- }
-
- debug_return_bool(false);
-}
-
-static int
-sudo_edit_openat_nofollow(int dfd, char *path, int oflags, mode_t mode)
-{
- int fd = -1, odfd = -1;
- struct stat sb;
- debug_decl(sudo_edit_openat_nofollow, SUDO_DEBUG_EDIT);
-
- /* Save cwd and chdir to dfd */
- if ((odfd = open(".", O_RDONLY)) == -1)
- debug_return_int(-1);
- if (fchdir(dfd) == -1) {
- close(odfd);
- debug_return_int(-1);
- }
-
- /*
- * Check if path is a symlink. This is racey but we detect whether
- * we lost the race in sudo_edit_is_symlink() after the open.
- */
- if (lstat(path, &sb) == -1 && errno != ENOENT)
- goto done;
- if (S_ISLNK(sb.st_mode)) {
- errno = ELOOP;
- goto done;
- }
-
- fd = open(path, oflags, mode);
- if (fd == -1)
- goto done;
-
- /*
- * Post-open symlink check. This will leave a zero-length file if
- * O_CREAT was specified but it is too dangerous to try and remove it.
- */
- if (sudo_edit_is_symlink(fd, path)) {
- close(fd);
- fd = -1;
- errno = ELOOP;
- }
-
-done:
- /* Restore cwd */
- if (odfd != -1) {
- if (fchdir(odfd) == -1)
- sudo_fatal("%s", U_("unable to restore current working directory"));
- close(odfd);
- }
-
- debug_return_int(fd);
-}
-#endif /* O_NOFOLLOW */
-
-/*
- * Directory open flags for use with openat(2).
- * Use O_SEARCH/O_PATH and/or O_DIRECTORY where possible.
- */
-#if defined(O_SEARCH)
-# if defined(O_DIRECTORY)
-# define DIR_OPEN_FLAGS (O_SEARCH|O_DIRECTORY)
-# else
-# define DIR_OPEN_FLAGS (O_SEARCH)
-# endif
-#elif defined(O_PATH)
-# if defined(O_DIRECTORY)
-# define DIR_OPEN_FLAGS (O_PATH|O_DIRECTORY)
-# else
-# define DIR_OPEN_FLAGS (O_PATH)
-# endif
-#elif defined(O_DIRECTORY)
-# define DIR_OPEN_FLAGS (O_RDONLY|O_DIRECTORY)
-#else
-# define DIR_OPEN_FLAGS (O_RDONLY|O_NONBLOCK)
-#endif
-
-static int
-sudo_edit_open_nonwritable(char *path, int oflags, mode_t mode,
- struct command_details *command_details)
-{
- const int dflags = DIR_OPEN_FLAGS;
- int dfd, fd, is_writable;
- debug_decl(sudo_edit_open_nonwritable, SUDO_DEBUG_EDIT);
-
- if (path[0] == '/') {
- dfd = open("/", dflags);
- path++;
- } else {
- dfd = open(".", dflags);
- if (path[0] == '.' && path[1] == '/')
- path += 2;
- }
- if (dfd == -1)
- debug_return_int(-1);
-
- for (;;) {
- char *slash;
- int subdfd;
-
- /*
- * Look up one component at a time, avoiding symbolic links in
- * writable directories.
- */
- is_writable = dir_is_writable(dfd, &user_details, command_details);
- if (is_writable == -1) {
- close(dfd);
- debug_return_int(-1);
- }
-
- while (path[0] == '/')
- path++;
- slash = strchr(path, '/');
- if (slash == NULL)
- break;
- *slash = '\0';
- if (is_writable)
- subdfd = sudo_edit_openat_nofollow(dfd, path, dflags, 0);
- else
- subdfd = openat(dfd, path, dflags, 0);
- *slash = '/'; /* restore path */
- close(dfd);
- if (subdfd == -1)
- debug_return_int(-1);
- path = slash + 1;
- dfd = subdfd;
- }
-
- if (is_writable) {
- close(dfd);
- errno = EISDIR;
- debug_return_int(-1);
- }
-
- /*
- * For "sudoedit /" we will receive ENOENT from openat() and sudoedit
- * will try to create a file with an empty name. We treat an empty
- * path as the cwd so sudoedit can give a sensible error message.
- */
- fd = openat(dfd, *path ? path : ".", oflags, mode);
- close(dfd);
- debug_return_int(fd);
-}
-
-#ifdef O_NOFOLLOW
-static int
-sudo_edit_open(char *path, int oflags, mode_t mode,
- struct command_details *command_details)
-{
- const int sflags = command_details ? command_details->flags : 0;
- int fd;
- debug_decl(sudo_edit_open, SUDO_DEBUG_EDIT);
-
- if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW))
- oflags |= O_NOFOLLOW;
- if (ISSET(sflags, CD_SUDOEDIT_CHECKDIR) && user_details.uid != ROOT_UID) {
- fd = sudo_edit_open_nonwritable(path, oflags|O_NONBLOCK, mode,
- command_details);
- } else {
- fd = open(path, oflags|O_NONBLOCK, mode);
- }
- if (fd != -1 && !ISSET(oflags, O_NONBLOCK))
- (void) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK);
- debug_return_int(fd);
-}
-#else
-static int
-sudo_edit_open(char *path, int oflags, mode_t mode,
- struct command_details *command_details)
-{
- const int sflags = command_details ? command_details->flags : 0;
- struct stat sb;
- int fd;
- debug_decl(sudo_edit_open, SUDO_DEBUG_EDIT);
-
- /*
- * Check if path is a symlink. This is racey but we detect whether
- * we lost the race in sudo_edit_is_symlink() after the file is opened.
- */
- if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW)) {
- if (lstat(path, &sb) == -1 && errno != ENOENT)
- debug_return_int(-1);
- if (S_ISLNK(sb.st_mode)) {
- errno = ELOOP;
- debug_return_int(-1);
- }
- }
-
- if (ISSET(sflags, CD_SUDOEDIT_CHECKDIR) && user_details.uid != ROOT_UID) {
- fd = sudo_edit_open_nonwritable(path, oflags|O_NONBLOCK, mode,
- command_details);
- } else {
- fd = open(path, oflags|O_NONBLOCK, mode);
- }
- if (fd == -1)
- debug_return_int(-1);
- if (!ISSET(oflags, O_NONBLOCK))
- (void) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK);
-
- /*
- * Post-open symlink check. This will leave a zero-length file if
- * O_CREAT was specified but it is too dangerous to try and remove it.
- */
- if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW) && sudo_edit_is_symlink(fd, path)) {
- close(fd);
- fd = -1;
- errno = ELOOP;
- }
-
- debug_return_int(fd);
-}
-#endif /* O_NOFOLLOW */
-
/*
* Create temporary copies of files[] and store the temporary path name
* along with the original name, size and mtime in tf.
*/
for (i = 0, j = 0; i < nfiles; i++) {
rc = -1;
- switch_user(command_details->euid, command_details->egid,
- command_details->ngroups, command_details->groups);
+ switch_user(command_details->cred.euid, command_details->cred.egid,
+ command_details->cred.ngroups, command_details->cred.groups);
ofd = sudo_edit_open(files[i], O_RDONLY,
- S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, command_details);
+ S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, command_details->flags,
+ &user_details.cred, &command_details->cred);
if (ofd != -1 || errno == ENOENT) {
- if (ofd == -1) {
- /* New file, verify parent dir exists unless in cwd. */
- char *slash = strrchr(files[i], '/');
- if (slash != NULL && slash != files[i]) {
- int serrno = errno;
- *slash = '\0';
- if (stat(files[i], &sb) == 0 && S_ISDIR(sb.st_mode)) {
- memset(&sb, 0, sizeof(sb));
- rc = 0;
- }
- *slash = '/';
- errno = serrno;
- } else {
- memset(&sb, 0, sizeof(sb));
- rc = 0;
- }
- } else {
+ if (ofd != -1) {
rc = fstat(ofd, &sb);
+ } else {
+ /* New file, verify parent dir exists and is not writable. */
+ memset(&sb, 0, sizeof(sb));
+ if (sudo_edit_parent_valid(files[i], command_details->flags, &user_details.cred, &command_details->cred))
+ rc = 0;
}
}
- switch_user(ROOT_UID, user_details.egid,
- user_details.ngroups, user_details.groups);
+ switch_user(ROOT_UID, user_details.cred.egid,
+ user_details.cred.ngroups, user_details.cred.groups);
if (ofd != -1 && !S_ISREG(sb.st_mode)) {
sudo_warnx(U_("%s: not a regular file"), files[i]);
close(ofd);
continue;
}
tf[j].ofile = files[i];
- tf[j].osize = sb.st_size;
+ tf[j].osize = sb.st_size; // -V614
mtim_get(&sb, tf[j].omtim);
sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "seteuid(%u)", (unsigned int)user_details.uid);
- if (seteuid(user_details.uid) != 0)
- sudo_fatal("seteuid(%u)", (unsigned int)user_details.uid);
+ "seteuid(%u)", (unsigned int)user_details.cred.uid);
+ if (seteuid(user_details.cred.uid) != 0)
+ sudo_fatal("seteuid(%u)", (unsigned int)user_details.cred.uid);
tfd = sudo_edit_mktemp(tf[j].ofile, &tf[j].tfile);
sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
"seteuid(%u)", ROOT_UID);
/* Copy contents of temp files to real ones. */
for (i = 0; i < nfiles; i++) {
- int rc = -1;
sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "seteuid(%u)", (unsigned int)user_details.uid);
- if (seteuid(user_details.uid) != 0)
- sudo_fatal("seteuid(%u)", (unsigned int)user_details.uid);
+ "seteuid(%u)", (unsigned int)user_details.cred.uid);
+ if (seteuid(user_details.cred.uid) != 0)
+ sudo_fatal("seteuid(%u)", (unsigned int)user_details.cred.uid);
tfd = sudo_edit_open(tf[i].tfile, O_RDONLY,
- S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, NULL);
- if (tfd != -1)
- rc = fstat(tfd, &sb);
- sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "seteuid(%u)", ROOT_UID);
+ S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, 0, &user_details.cred, NULL);
if (seteuid(ROOT_UID) != 0)
sudo_fatal("seteuid(ROOT_UID)");
- if (rc == -1 || !S_ISREG(sb.st_mode)) {
- if (rc == -1)
- sudo_warn("%s", tf[i].tfile);
- else
- sudo_warnx(U_("%s: not a regular file"), tf[i].tfile);
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "seteuid(%u)", ROOT_UID);
+ if (tfd == -1 || !sudo_check_temp_file(tfd, tf[i].tfile, user_details.cred.uid, &sb)) {
sudo_warnx(U_("%s left unmodified"), tf[i].ofile);
if (tfd != -1)
close(tfd);
continue;
}
}
- switch_user(command_details->euid, command_details->egid,
- command_details->ngroups, command_details->groups);
+ switch_user(command_details->cred.euid, command_details->cred.egid,
+ command_details->cred.ngroups, command_details->cred.groups);
oldmask = umask(command_details->umask);
ofd = sudo_edit_open(tf[i].ofile, O_WRONLY|O_CREAT,
- S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, command_details);
+ S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, command_details->flags,
+ &user_details.cred, &command_details->cred);
umask(oldmask);
- switch_user(ROOT_UID, user_details.egid,
- user_details.ngroups, user_details.groups);
+ switch_user(ROOT_UID, user_details.cred.egid,
+ user_details.cred.ngroups, user_details.cred.groups);
if (ofd == -1) {
sudo_warn(U_("unable to write to %s"), tf[i].ofile);
goto bad;
#ifdef HAVE_SELINUX
static int
-selinux_run_helper(char *argv[], char *envp[])
+selinux_run_helper(uid_t uid, gid_t gid, int ngroups, GETGROUPS_T *groups,
+ char *const argv[], char *const envp[])
{
int status, ret = SESH_ERR_FAILURE;
const char *sesh;
break;
case 0:
/* child runs sesh in new context */
- if (selinux_setcon() == 0)
+ if (selinux_setcon() == 0) {
+ switch_user(uid, gid, ngroups, groups);
execve(sesh, argv, envp);
+ }
_exit(SESH_ERR_FAILURE);
default:
/* parent waits */
debug_return_int(ret);
}
+static char *
+selinux_fmt_sudo_user(void)
+{
+ char *cp, *user_str;
+ size_t user_size;
+ int i, len;
+ debug_decl(selinux_fmt_sudo_user, SUDO_DEBUG_EDIT);
+
+ user_size = (MAX_UID_T_LEN + 1) * (2 + user_details.cred.ngroups);
+ if ((user_str = malloc(user_size)) == NULL)
+ debug_return_ptr(NULL);
+
+ /* UID:GID: */
+ len = snprintf(user_str, user_size, "%u:%u:",
+ (unsigned int)user_details.cred.uid, (unsigned int)user_details.cred.gid);
+ if (len < 0 || (size_t)len >= user_size)
+ sudo_fatalx(U_("internal error, %s overflow"), __func__);
+
+ /* Supplementary GIDs */
+ cp = user_str + len;
+ for (i = 0; i < user_details.cred.ngroups; i++) {
+ len = snprintf(cp, user_size - (cp - user_str), "%s%u",
+ i ? "," : "", (unsigned int)user_details.cred.groups[i]);
+ if (len < 0 || (size_t)len >= user_size - (cp - user_str))
+ sudo_fatalx(U_("internal error, %s overflow"), __func__);
+ cp += len;
+ }
+
+ debug_return_ptr(user_str);
+}
+
static int
selinux_edit_create_tfiles(struct command_details *command_details,
struct tempfile *tf, char *files[], int nfiles)
{
- char **sesh_args, **sesh_ap;
- int i, rc, sesh_nargs;
+ char **sesh_args, **sesh_ap, *user_str = NULL;
+ int i, error, sesh_nargs, ret = -1;
struct stat sb;
debug_decl(selinux_edit_create_tfiles, SUDO_DEBUG_EDIT);
debug_return_int(0);
/* Construct common args for sesh */
- sesh_nargs = 4 + (nfiles * 2) + 1;
+ sesh_nargs = 6 + (nfiles * 2) + 1;
sesh_args = sesh_ap = reallocarray(NULL, sesh_nargs, sizeof(char *));
if (sesh_args == NULL) {
sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
- debug_return_int(-1);
+ goto done;
}
*sesh_ap++ = "sesh";
*sesh_ap++ = "-e";
if (!ISSET(command_details->flags, CD_SUDOEDIT_FOLLOW))
*sesh_ap++ = "-h";
+ if (ISSET(command_details->flags, CD_SUDOEDIT_CHECKDIR)) {
+ if ((user_str = selinux_fmt_sudo_user()) == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ goto done;
+ }
+ *sesh_ap++ = "-w";
+ *sesh_ap++ = user_str;
+ }
*sesh_ap++ = "0";
- /* XXX - temp files should be created with user's context */
for (i = 0; i < nfiles; i++) {
char *tfile, *ofile = files[i];
int tfd;
if (tfd == -1) {
sudo_warn("mkstemps");
free(tfile);
- free(sesh_args);
- debug_return_int(-1);
+ goto done;
}
/* Helper will re-create temp file with proper security context. */
close(tfd);
*sesh_ap = NULL;
/* Run sesh -e [-h] 0 <o1> <t1> ... <on> <tn> */
- rc = selinux_run_helper(sesh_args, command_details->envp);
- switch (rc) {
+ error = selinux_run_helper(command_details->cred.uid, command_details->cred.gid,
+ command_details->cred.ngroups, command_details->cred.groups, sesh_args,
+ command_details->envp);
+ switch (error) {
case SESH_SUCCESS:
break;
case SESH_ERR_BAD_PATHS:
case SESH_ERR_KILLED:
sudo_fatalx("%s", U_("sesh: killed by a signal"));
default:
- sudo_fatalx(U_("sesh: unknown error %d"), rc);
+ sudo_warnx(U_("sesh: unknown error %d"), error);
+ goto done;
}
- /* Chown to user's UID so they can edit the temporary files. */
for (i = 0; i < nfiles; i++) {
- if (chown(tf[i].tfile, user_details.uid, user_details.gid) != 0) {
+ int tfd = open(tf[i].tfile, O_RDONLY|O_NONBLOCK|O_NOFOLLOW);
+ if (tfd == -1) {
+ sudo_warn(U_("unable to open %s"), tf[i].tfile);
+ goto done;
+ }
+ if (!sudo_check_temp_file(tfd, tf[i].tfile, command_details->cred.uid, NULL)) {
+ close(tfd);
+ goto done;
+ }
+ if (fchown(tfd, user_details.cred.uid, user_details.cred.gid) != 0) {
sudo_warn("unable to chown(%s) to %d:%d for editing",
- tf[i].tfile, user_details.uid, user_details.gid);
+ tf[i].tfile, user_details.cred.uid, user_details.cred.gid);
+ close(tfd);
+ goto done;
}
+ close(tfd);
}
+ ret = nfiles;
+done:
/* Contents of tf will be freed by caller. */
free(sesh_args);
+ free(user_str);
- return (nfiles);
+ debug_return_int(ret);
}
static int
selinux_edit_copy_tfiles(struct command_details *command_details,
struct tempfile *tf, int nfiles, struct timespec *times)
{
- char **sesh_args, **sesh_ap;
- int i, rc, sesh_nargs, ret = 1;
+ char **sesh_args, **sesh_ap, *user_str = NULL;
+ int i, error, sesh_nargs, ret = 1;
+ int tfd = -1;
struct timespec ts;
struct stat sb;
debug_decl(selinux_edit_copy_tfiles, SUDO_DEBUG_EDIT);
debug_return_int(0);
/* Construct common args for sesh */
- sesh_nargs = 3 + (nfiles * 2) + 1;
+ sesh_nargs = 5 + (nfiles * 2) + 1;
sesh_args = sesh_ap = reallocarray(NULL, sesh_nargs, sizeof(char *));
if (sesh_args == NULL) {
sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
- debug_return_int(-1);
+ goto done;
}
*sesh_ap++ = "sesh";
*sesh_ap++ = "-e";
+ if (ISSET(command_details->flags, CD_SUDOEDIT_CHECKDIR)) {
+ if ((user_str = selinux_fmt_sudo_user()) == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ goto done;
+ }
+ *sesh_ap++ = "-w";
+ *sesh_ap++ = user_str;
+ }
*sesh_ap++ = "1";
/* Construct args for sesh -e 1 */
for (i = 0; i < nfiles; i++) {
- if (stat(tf[i].tfile, &sb) == 0) {
- mtim_get(&sb, ts);
- if (tf[i].osize == sb.st_size && sudo_timespeccmp(&tf[i].omtim, &ts, ==)) {
- /*
- * If mtime and size match but the user spent no measurable
- * time in the editor we can't tell if the file was changed.
- */
- if (sudo_timespeccmp(×[0], ×[1], !=)) {
- sudo_warnx(U_("%s unchanged"), tf[i].ofile);
- unlink(tf[i].tfile);
- continue;
- }
+ if (tfd != -1)
+ close(tfd);
+ if ((tfd = open(tf[i].tfile, O_RDONLY|O_NONBLOCK|O_NOFOLLOW)) == -1) {
+ sudo_warn(U_("unable to open %s"), tf[i].tfile);
+ continue;
+ }
+ if (!sudo_check_temp_file(tfd, tf[i].tfile, user_details.cred.uid, &sb))
+ continue;
+ mtim_get(&sb, ts);
+ if (tf[i].osize == sb.st_size && sudo_timespeccmp(&tf[i].omtim, &ts, ==)) {
+ /*
+ * If mtime and size match but the user spent no measurable
+ * time in the editor we can't tell if the file was changed.
+ */
+ if (sudo_timespeccmp(×[0], ×[1], !=)) {
+ sudo_warnx(U_("%s unchanged"), tf[i].ofile);
+ unlink(tf[i].tfile);
+ continue;
}
}
*sesh_ap++ = tf[i].tfile;
*sesh_ap++ = tf[i].ofile;
- if (chown(tf[i].tfile, command_details->uid, command_details->gid) != 0) {
+ if (fchown(tfd, command_details->cred.uid, command_details->cred.gid) != 0) {
sudo_warn("unable to chown(%s) back to %d:%d", tf[i].tfile,
- command_details->uid, command_details->gid);
+ command_details->cred.uid, command_details->cred.gid);
}
}
*sesh_ap = NULL;
+ if (tfd != -1)
+ close(tfd);
if (sesh_ap - sesh_args > 3) {
/* Run sesh -e 1 <t1> <o1> ... <tn> <on> */
- rc = selinux_run_helper(sesh_args, command_details->envp);
- switch (rc) {
+ error = selinux_run_helper(command_details->cred.uid, command_details->cred.gid,
+ command_details->cred.ngroups, command_details->cred.groups, sesh_args,
+ command_details->envp);
+ switch (error) {
case SESH_SUCCESS:
ret = 0;
break;
sudo_warnx("%s", U_("sesh: killed by a signal"));
break;
default:
- sudo_warnx(U_("sesh: unknown error %d"), rc);
+ sudo_warnx(U_("sesh: unknown error %d"), error);
break;
}
- if (ret != 0)
- sudo_warnx(U_("contents of edit session left in %s"), edit_tmpdir);
}
+
+done:
+ /* Contents of tf will be freed by caller. */
free(sesh_args);
+ free(user_str);
debug_return_int(ret);
}
{
struct command_details saved_command_details;
char **nargv = NULL, **ap, **files = NULL;
- int errors, i, ac, nargc, rc;
+ int errors, i, ac, nargc, ret;
int editor_argc = 0, nfiles = 0;
struct timespec times[2];
struct tempfile *tf = NULL;
debug_decl(sudo_edit, SUDO_DEBUG_EDIT);
- if (!set_tmpdir(command_details))
- goto cleanup;
-
/*
* Set real, effective and saved uids to root.
* We will change the euid as needed below.
goto cleanup;
}
+ /* Find a temporary directory writable by the user. */
+ if (!set_tmpdir(&user_details.cred))
+ goto cleanup;
+
/*
* The user's editor must be separated from the files to be
* edited by a "--" option.
goto cleanup;
}
memcpy(&saved_command_details, command_details, sizeof(struct command_details));
- command_details->uid = user_details.uid;
- command_details->euid = user_details.uid;
- command_details->gid = user_details.gid;
- command_details->egid = user_details.gid;
- command_details->ngroups = user_details.ngroups;
- command_details->groups = user_details.groups;
+ command_details->cred = user_details.cred;
command_details->argv = nargv;
- rc = run_command(command_details);
+ ret = run_command(command_details);
if (sudo_gettime_real(×[1]) == -1) {
sudo_warn("%s", U_("unable to read the clock"));
goto cleanup;
}
/* Restore saved command_details. */
- command_details->uid = saved_command_details.uid;
- command_details->euid = saved_command_details.euid;
- command_details->gid = saved_command_details.gid;
- command_details->egid = saved_command_details.egid;
- command_details->ngroups = saved_command_details.ngroups;
- command_details->groups = saved_command_details.groups;
+ command_details->cred = saved_command_details.cred;
command_details->argv = saved_command_details.argv;
/* Copy contents of temp files to real ones. */
errors = sudo_edit_copy_tfiles(command_details, tf, nfiles, times);
if (errors) {
/* Preserve the edited temporary files. */
- rc = W_EXITCODE(1, 0);
+ ret = W_EXITCODE(1, 0);
}
for (i = 0; i < nfiles; i++)
free(tf[i].tfile);
free(tf);
free(nargv);
- debug_return_int(rc);
+ debug_return_int(ret);
cleanup:
/* Clean up temp files and return. */
--- /dev/null
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * 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.
+ */
+
+#ifndef SUDO_EDIT_H
+#define SUDO_EDIT_H
+
+/*
+ * Directory open flags for use with openat(2).
+ * Use O_SEARCH/O_PATH and/or O_DIRECTORY where possible.
+ */
+#if defined(O_SEARCH)
+# if defined(O_DIRECTORY)
+# define DIR_OPEN_FLAGS (O_SEARCH|O_DIRECTORY)
+# else
+# define DIR_OPEN_FLAGS (O_SEARCH)
+# endif
+#elif defined(O_PATH)
+# if defined(O_DIRECTORY)
+# define DIR_OPEN_FLAGS (O_PATH|O_DIRECTORY)
+# else
+# define DIR_OPEN_FLAGS (O_PATH)
+# endif
+#elif defined(O_DIRECTORY)
+# define DIR_OPEN_FLAGS (O_RDONLY|O_DIRECTORY)
+#else
+# define DIR_OPEN_FLAGS (O_RDONLY|O_NONBLOCK)
+#endif
+
+/* copy_file.c */
+int sudo_copy_file(const char *src, int src_fd, off_t src_len, const char *dst, int dst_fd, off_t dst_len);
+bool sudo_check_temp_file(int tfd, const char *tname, uid_t uid, struct stat *sb);
+
+/* edit_open.c */
+struct sudo_cred;
+void switch_user(uid_t euid, gid_t egid, int ngroups, GETGROUPS_T *groups);
+int sudo_edit_open(char *path, int oflags, mode_t mode, int sflags, struct sudo_cred *user_cred, struct sudo_cred *cur_cred);
+int dir_is_writable(int dfd, struct sudo_cred *user_cred, struct sudo_cred *cur_cred);
+bool sudo_edit_parent_valid(char *path, int sflags, struct sudo_cred *user_cred, struct sudo_cred *cur_cred);
+
+#endif /* SUDO_EDIT_H */
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2010-2016 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2010-2017, 2020-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
*/
struct command_details;
struct command_status;
-
-/* copy_file.c */
-int sudo_copy_file(const char *src, int src_fd, off_t src_len, const char *dst, int dst_fd, off_t dst_len);
+struct stat;
/* exec.c */
void exec_cmnd(struct command_details *details, int errfd);
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 1996, 1998-2005, 2007-2018
+ * Copyright (c) 1996, 1998-2005, 2007-2021
* Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
restore_limits();
/* But avoid a setuid() failure on Linux due to RLIMIT_NPROC. */
unlimit_nproc();
- if (setgid(user_details.gid)) {
- sudo_warn(U_("unable to set gid to %u"), (unsigned int)user_details.gid);
+ if (setgid(user_details.cred.gid)) {
+ sudo_warn(U_("unable to set gid to %u"), (unsigned int)user_details.cred.gid);
_exit(255);
}
- if (setuid(user_details.uid)) {
- sudo_warn(U_("unable to set uid to %u"), (unsigned int)user_details.uid);
+ if (setuid(user_details.cred.uid)) {
+ sudo_warn(U_("unable to set uid to %u"), (unsigned int)user_details.cred.uid);
_exit(255);
}
restore_nproc();
mib[3] = (int)getpid();
mib[4] = sizeof(*ki_proc);
mib[5] = 1;
- do {
+ for (;;) {
struct sudo_kinfo_proc *kp;
size += size / 10;
}
ki_proc = kp;
rc = sysctl(mib, sudo_kp_namelen, ki_proc, &size, NULL, 0);
- } while (rc == -1 && errno == ENOMEM);
+ if (rc != -1 || errno != ENOMEM)
+ break;
+ }
errno = ENOENT;
if (rc != -1) {
if ((dev_t)ki_proc->sudo_kp_tdev != (dev_t)-1) {