Releases: sudo-project/sudo
Sudo 1.9.4
-
The sudoers parser will now detect when an upper-case reserved word is used when declaring an alias. Now instead of syntax error, unexpected CHROOT, expecting ALIAS the message will be syntax error, reserved word CHROOT used as an alias name. Bug #941.
-
Better handling of sudoers files without a final newline. The parser now adds a newline at end-of-file automatically which removes the need for special cases in the parser.
-
Fixed a regression introduced in sudo 1.9.1 in the sssd back-end where an uninitialized pointer could be freed on an error path. GitHub issue #67.
-
The core logging code is now shared between
sudo_logsrvd
and thesudoers
plugin. -
JSON log entries sent to syslog now use minimal JSON which skips all non-essential whitespace.
-
The sudoers plugin can now produce JSON-formatted logs. The log_format sudoers option can be used to select sudo or json format logs. The default is sudo format logs.
-
The
sudoers
plugin andvisudo
now display the column number in syntax error messages in addition to the line number. Bug #841. -
If I/O logging is not enabled but log_servers is set, the
sudoers
plugin will now log accept events tosudo_logsrvd
. Previously, the accept event was only sent when I/O logging was enabled. Thesudoers
plugin now sends reject and alert events too. -
The sudo logsrv protocol has been extended to allow an AlertMessage to contain an optional array of InfoMessage, as AcceptMessage and RejectMessage already do.
-
Fixed a bug in
sudo_logsrvd
where receipt ofSIGHUP
would result in duplicate entries in the debug log when debugging was enabled. -
The
visudo
utility now supportsEDITOR
environment variables that use single or double quotes in the command arguments. Bug #942. -
The PAM session modules now run when
sudo
is set-user-ID root, which allows a module to determine the original user-ID. Bug #944. -
Fixed a regression introduced in sudo 1.8.24 in the LDAP back-end where sudoNotBefore and sudoNotAfter were applied even when the
SUDOERS_TIMED
setting was not present inldap.conf
. Bug #945. -
Sudo packages for macOS 11 now contain universal binaries that support both Intel and Apple Silicon CPUs.
-
For
sudo_logsrvd
, an empty value for the pid_file setting insudo_logsrvd.conf
will now disable the process ID file.
Sudo 1.9.3p1
-
Fixed a regression introduced in sudo 1.9.3 where the configure script would not detect the
crypt
function if it was present in the C library, not an additional library. -
Fixed a regression introduced in sudo 1.8.23 with shadow passwd file authentication on OpenBSD. BSD authentication was not affected.
-
Sudo now logs when a user-specified command-line option is rejected by a sudoers rule. Previously, these conditions were written to the audit log, but the default sudo log file. Affected command line arguments include
-C
(--close-from
),-D
(--chdir
),-R
(--chroot
),-g
(--group
) and-u
(--user
).
Sudo 1.9.3
-
sudoedit
will now prompt the user before overwriting an existing file with one that is zero-length after editing. Bug #922. -
Fixed building the Python plugin on systems with a compiler that doesn't support symbol hiding.
-
Sudo now uses a linker script to hide symbols even when the compiler has native symbol hiding support. This should make it easier to detect omissions in the symbol exports file, regardless of the platform.
-
Fixed the libssl dependency in Debian packages for older releases that use
libssl1.0.0
. -
sudo
andvisudo
now provide more detailed messages when a syntax error is detected insudoers
. The offending line and token are now displayed. If the parser was generated by GNU bison, additional information about what token was expected is also displayed.
Bug #841. -
Sudoers rules must now end in either a newline or the end-of-file. Previously, it was possible to have multiple rules on a single line, separated by white space. The use of an end-of-line terminator makes it possible to display accurate error messages.
-
Sudo no longer refuses to run if a syntax error in the sudoers file is encountered. The entry with the syntax error will be discarded and sudo will continue to parse the file. This makes recovery from a syntax error less painful on systems where sudo is the primary method of superuser access. The historic behavior can be restored by add
error_recovery=false
to the sudoers plugin's optional arguments insudo.conf
. Bug 618. -
Fixed the sample_approval plugin's symbol exports file for systems where the compiler doesn't support symbol hiding.
-
Fixed a regression introduced in sudo 1.9.1 where arguments to the sudoers_policy plugin in
sudo.conf
were not being applied. The sudoers file is now parsed by the sudoers_audit plugin, which is loaded implicitly when sudoers_policy is listed insudo.conf
.
Starting with sudo 1.9.3, if there are plugin arguments for sudoers_policy but sudoers_audit is not listed, those arguments will be applied to sudoers_audit instead. -
The user's resource limits are now passed to sudo plugins in the
user_info[]
list. A plugin cannot determine the limits itself because sudo changes the limits while it runs to prevent resource starvation. -
It is now possible to set the working directory or change the root directory on a per-command basis using the
CWD
andCHROOT
options. There are also new Defaults settings, runchroot and runcwd that can be used to set the working directory or root directory on a more global basis. -
New
-D
(--chdir
) and-R
(--chroot
) command line options can be used to set the working directory or root directory if the sudoers file allows it. This functionality is not enabled by default and must be explicitly enabled in the sudoers file.
Sudo 1.9.2
-
Fixed package builds on RedHat Enterprise Linux 8.
-
The
configure
script now usespkg-config
to find the opensslcflags
andlibs
where possible. -
The contents of the
log.json
I/O log file is now documented in the sudoers manual. -
The sudoers plugin now properly exports the
sudoers_audit
symbol on systems where the compiler lacks symbol visibility controls. This caused a regression in 1.9.1 where a successful sudo command was not logged due to the missing audit plugin. Bug #931. -
Fixed a regression introduced in 1.9.1 that can result in crash when there is a syntax error in the sudoers file. Bug #934.
Sudo 1.9.1
-
Fixed an AIX-specific problem when I/O logging was enabled. The terminal device was not being properly set to raw mode. Bug #927.
-
Corrected handling of
sudo_logsrvd
connections without associated I/O log data. This fixes support for RejectMessage as well as AcceptMessage when the expect_iobufs flag is not set. -
Added an iolog_path entry to the JSON-format event log produced by
sudo_logsrvd
. Previously, it was only possible to determine the I/O log file an event belonged to using sudo-format logs. -
Fixed the bundle IDs for
sudo-logsrvd
andsudo-python
macOS packages. -
I/O log files produced by the sudoers plugin now clear the write bits on the I/O log timing file when the log is complete. This is consistent with how
sudo_logsrvd
indicates that a log is complete. -
The
sudoreplay
utility has a new -F (follow) command line option to allow replaying a session that is still in progress, similar totail -f
. -
The
@include
and@includedir
directives can be used in sudoers instead of#include
and#includedir
. In addition, include paths may now have embedded white space by either using a double-quoted string or escaping the space characters with a backslash. -
Fixed some Solaris 11.4 compilation errors.
-
When running a command in a pty, sudo will no longer try to suspend itself if the user's tty has been revoked (for instance when the parent ssh daemon is killed). This fixes a bug where sudo would continuously suspend the command (which would succeed), then suspend itself (which would fail due to the missing tty) and then resume the command.
-
If sudo's event loop fails due to the tty being revoked, remove the user's tty events and restart the event loop (once). This fixes a problem when running
sudo reboot
in a pty on some systems. When the event loop exited unexpectedly, sudo would kill the command running in the pty, which in the case ofreboot
, could lead to the system being in a half-rebooted state. -
Fixed a regression introduced in sudo 1.8.23 in the LDAP and SSSD back-ends where a missing
sudoHost
attribute was treated as anALL
wildcard value. AsudoRole
with nosudoHost
attribute is now ignored as it was prior to version 1.8.23. -
The audit plugin API has been changed slightly. The sudo front-end now audits an accept event itself after all approval plugins are run and the I/O logging plugins (if any) are opened. This makes it possible for an audit plugin to only log a single overall accept event if desired.
-
The sudoers plugin can now be loaded as an audit plugin. Logging of successful commands is now performed in the audit plugin's accept function. As a result, commands are now only logged if allowed by sudoers and all approval plugins. Commands rejected by an approval plugin are now also logged by the sudoers plugin.
-
Romanian translation for sudo and sudoers from translationproject.org.
-
Fixed a regression introduced in sudo 1.9.0 where
sudoedit
did not remove its temporary files after installing them. Bug #929. -
Fixed a regression introduced in sudo 1.9.0 where the iolog_file setting in
sudoers
andsudo_logsrvd.conf
caused an error if the file name ended in six or more X's.
Sudo 1.8.31p2
-
Sudo command line options that take a value may only be specified once. This is to help guard against problems caused by poorly written scripts that invoke sudo with user-controlled input. Bug #924.
-
When running a command in a pty, sudo will no longer try to suspend itself if the user's tty has been revoked (for instance when the parent ssh daemon is killed). This fixes a bug where sudo would continuously suspend the command (which would succeed), then suspend itself (which would fail due to the missing tty) and then resume the command.
-
If sudo's event loop fails due to the tty being revoked, remove the user's tty events and restart the event loop (once). This fixes a problem when running
sudo reboot
in a pty on some systems. When the event loop exited unexpectedly, sudo would kill the command running in the pty, which in the case ofreboot
, could lead to the system being in a half-rebooted state. -
Fixed a regression introduced in sudo 1.8.23 in the LDAP and SSSD back-ends where a missing
sudoHost
attribute was treated as anALL
wildcard value. AsudoRole
with nosudoHost
attribute is now ignored as it was prior to version 1.8.23.
Sudo 1.9.0
-
Fixed a test failure in the
strsig_test
regress test on FreeBSD. -
Sudo now includes a logging daemon,
sudo_logsrvd
, which can be used to implement centralized logging of I/O logs. TLS connections are supported when sudo is configured with the--enable-openssl
option. For more information, see the sudo_logsrvd, logsrvd.conf and sudo_logsrv.proto manuals as well as thelog_servers
setting in the sudoers manual.The
--disable-log-server
and--disable-log-client
configure options can be used to disable building the I/O log server and/or remote I/O log support in the sudoers plugin. -
The new
sudo_sendlog
utility can be used to testsudo_logsrvd
or send existing sudo I/O logs to a centralized server. -
It is now possible to write sudo plugins in Python 3 when sudo is configured with the
--enable-python
option. See the sudo_plugin_python manual for details.Sudo 1.9.0 comes with several Python example plugins that get installed sudo's examples directory.
The sudo blog article What's new in sudo 1.9: Python includes a simple tutorial on writing python plugins.
-
Sudo now supports an audit plugin type. An audit plugin receives accept, reject, exit and error messages and can be used to implement custom logging that is independent of the underlying security policy. Multiple audit plugins may be specified in the
sudo.conf
file. A sample audit plugin is included that writes logs in JSON format. -
Sudo now supports an approval plugin type. An approval plugin is run only after the main security policy (such as sudoers) accepts a command to be run. The approval policy may perform additional checks, potentially interacting with the user. Multiple approval plugins may be specified in the
sudo.conf
file. Only if all approval plugins succeed will the command be allowed. -
Sudo's
-S
command line option now causes the sudo conversation function to write to the standard output or standard error instead of the terminal device. -
It is now possible to use
Cmd_Alias
instead ofCmnd_Alias
for people who find the former more natural. -
The new
pam_ruser
andpam_rhost
sudoers settings can be used to enable or disable setting the PAM remote user and/or host values during PAM session setup. -
More than one SHA-2 digest may now be specified for a single command. Multiple digests must be separated by a comma.
-
It is now possible to specify a SHA-2 digest in conjunction with the
ALL
reserved word in a command specification. This allows one to give permission to run any command that matches the specified digest, regardless of its path. -
sudo
andsudo_logsrvd
now create an extended I/O log info file in JSON format that contains additional information about the command that was run, such as the host name. Thesudoreplay
utility uses this file in preference to the legacy log file. -
The
sudoreplay
utility can now match on a host name in list mode. The list output also now includes the host name if one is present in the log file. -
For
sudo -i
, if the target user's home directory does not exist, sudo will now warn about the problem but run the command in the current working directory. Previously, this was a fatal error. Debian bug #598519. -
The command line arguments in the SUDO_COMMAND environment variable are now truncated at 4096 characters. This avoids an "Argument list too long" error when executing a command with a large number of arguments. Bug #923 (Debian bug #596631).
-
Sudo now properly ends the PAM transaction when the user authenticates successfully but sudoers denies the command. Debian bug #669687.
-
The sudoers grammar in the manual now indicates that "sudoedit" requires one or more arguments. Debian bug #571621.
-
When copying the edited files to the original path, sudoedit now allocates any additional space needed before writing. Previously, it could truncate the destination file if the file system was full. Bug #922.
-
Fixed an issue where PAM session modules could be called with the wrong user name when multiple users in the passwd database share the the same user-ID. Debian bug #734752.
-
Sudo command line options that take a value may only be specified once. This is to help guard against problems caused by poorly written scripts that invoke sudo with user-controlled input. Bug #924.
Sudo 1.8.31p1
- Sudo once again ignores a failure to restore the
RLIMIT_CORE
resource limit, as it did prior to version 1.8.29. Linux containers don't allowRLIMIT_CORE
to be set back toRLIM_INFINITY
if we set the limit to zero, even for root, which resulted in a warning from sudo.
Sudo 1.8.31
-
Fixed CVE-2019-18634, a buffer overflow when the pwfeedback sudoers option is enabled on systems with uni-directional pipes.
-
The sudoedit_checkdir option now treats a user-owned directory as writable, even if it does not have the write bit set at the time of check. Symbolic links will no longer be followed by sudoedit in any user-owned directory. Bug #912.
-
Fixed sudoedit on macOS 10.15 and above where the root file system is mounted read-only. Bug #913.
-
Fixed a crash introduced in sudo 1.8.30 when suspending sudo at the password prompt. Bug #914.
-
Fixed compilation on systems where the mmap MAP_ANON flag is not available. Bug #915.
Sudo 1.8.30
-
Fixed a warning on macOS introduced in sudo 1.8.29 when sudo attempts to set the open file limit to unlimited. Bug #904.
-
Sudo now closes file descriptors before changing uids. This prevents a non-root process from interfering with sudo's ability to close file descriptors on systems that support the prlimit(2) system call.
-
Sudo now treats an attempt to run
sudo sudoedit
as simplysudoedit
. If the sudoers file contains a fully-qualified path to sudoedit, sudo will now treat it simply assudoedit
(with no path). Visudo will will now treat a fully-qualified path to sudoedit as an error. Bug #871. -
Fixed a bug introduced in sudo 1.8.28 where sudo would warn about a missing
/etc/environment
file on AIX and Linux when PAM is not enabled. Bug #907. -
Fixed a bug on Linux introduced in sudo 1.8.29 that prevented the askpass program from running due to an unlimited stack size resource limit. Bug #908.
-
If a group provider plugin has optional arguments, the argument list passed to the plugin is now NULL terminated as per the documentation.
-
The user's time stamp file is now only updated if both authentication and approval phases succeed. This is consistent with the behavior of sudo prior to version 1.8.23. Bug #910.
-
The new allow_unknown_runas_id sudoers setting can be used to enable or disable the use of unknown user or group IDs. Previously, sudo would always allow unknown user or group IDs if the sudoers entry permitted it, including via the ALL alias. As of sudo 1.8.30, the admin must explicitly enable support for unknown IDs.
-
The new runas_check_shell sudoers setting can be used to require that the runas user have a shell listed in the
/etc/shells
file. On many systems, users such as bin, do not have a valid shell and this flag can be used to prevent commands from being run as those users. -
Fixed a problem restoring the SELinux tty context during reboot if mctransd is killed before sudo finishes. GitHub Issue #17.
-
Fixed an intermittent warning on NetBSD when sudo restores the initial stack size limit.