1What's new in Sudo 1.9.8p2
2
3 * Fixed a potential out-of-bounds read with "sudo -i" when the
4   target user's shell is bash.  This is a regression introduced
5   in sudo 1.9.8.  Bug #998.
6
7 * sudo_logsrvd now only sends a log ID for first command of a session.
8   There is no need to send the log ID for each sub-command.
9
10 * Fixed a few minor memory leaks in intercept mode.
11
12 * Fixed a problem with sudo_logsrvd in relay mode if "store_first"
13   was enabled when handling sub-commands.  A new zero-length journal
14   file was created for each sub-command instead of simply using
15   the existing journal file.
16
17What's new in Sudo 1.9.8p1
18
19 * Fixed support for passing a prompt (sudo -p) or a login class
20   (sudo -l) on the command line.  This is a regression introduced
21   in sudo 1.9.8.  Bug #993.
22
23 * Fixed a crash with "sudo ALL" rules in the LDAP and SSSD back-ends.
24   This is a regression introduced in sudo 1.9.8.  Bug #994.
25
26 * Fixed a compilation error when the --enable-static-sudoers configure
27   option was specified.  This is a regression introduced in sudo
28   1.9.8 caused by a symbol clash with the intercept and log server
29   protobuf functions.
30
31What's new in Sudo 1.9.8
32
33 * It is now possible to transparently intercepting sub-commands
34   executed by the original command run via sudo.  Intercept support
35   is implemented using LD_PRELOAD (or the equivalent supported by
36   the system) and so has some limitations.  The two main limitations
37   are that only dynamic executables are supported and only the
38   execl, execle, execlp, execv, execve, execvp, and execvpe library
39   functions are currently intercepted. Its main use case is to
40   support restricting privileged shells run via sudo.
41
42   To support this, there is a new "intercept" Defaults setting and
43   an INTERCEPT command tag that can be used in sudoers.  For example:
44
45    Cmnd_Alias SHELLS=/bin/bash, /bin/sh, /bin/csh, /bin/ksh, /bin/zsh
46    Defaults!SHELLS intercept
47
48   would cause sudo to run the listed shells in intercept mode.
49   This can also be set on a per-rule basis.  For example:
50
51    Cmnd_Alias SHELLS=/bin/bash, /bin/sh, /bin/csh, /bin/ksh, /bin/zsh
52    chuck ALL = INTERCEPT: SHELLS
53
54   would only apply intercept mode to user "chuck" when running one
55   of the listed shells.
56
57   In intercept mode, sudo will not prompt for a password before
58   running a sub-command and will not allow a set-user-ID or
59   set-group-ID program to be run by default.  The new
60   intercept_authenticate and intercept_allow_setid sudoers settings
61   can be used to change this behavior.
62
63 * The new "log_subcmds" sudoers setting can be used to log additional
64   commands run in a privileged shell.  It uses the same mechanism as
65   the intercept support described above and has the same limitations.
66
67 * The new "log_exit_status" sudoers setting can be used to log
68   the exit status commands run via sudo.  This is also a corresponding
69   "log_exit" setting in the sudo_logsrvd.conf eventlog stanza.
70
71 * Support for logging sudo_logsrvd errors via syslog or to a file.
72   Previously, most sudo_logsrvd errors were only visible in the
73   debug log.
74
75 * Better diagnostics when there is a TLS certificate validation error.
76
77 * Using the "+=" or "-=" operators in a Defaults setting that takes
78   a string, not a list, now produces a warning from sudo and a
79   syntax error from inside visudo.
80
81 * Fixed a bug where the "iolog_mode" setting in sudoers and sudo_logsrvd
82   had no effect when creating I/O log parent directories if the I/O log
83   file name ended with the string "XXXXXX".
84
85 * Fixed a bug in the sudoers custom prompt code where the size
86   parameter that was passed to the strlcpy() function was incorrect.
87   No overflow was possible since the correct amount of memory was
88   already pre-allocated.
89
90 * The mksigname and mksiglist helper programs are now built with
91   the host compiler, not the target compiler, when cross-compiling.
92   Bug #989.
93
94 * Fixed compilation error when the --enable-static-sudoers configure
95   option was specified.  This was due to a typo introduced in sudo
96   1.9.7.  GitHub PR #113.
97
98What's new in Sudo 1.9.7p2
99
100 * When formatting JSON output, octal numbers are now stored as
101   strings, not numbers.  The JSON spec does not actually support
102   octal numbers with a '0' prefix.
103
104 * Fixed a compilation issue on Solaris 9.
105
106 * Sudo now can handle the getgroups() function returning a different
107   number of groups for subsequent invocations.  GitHub PR #106.
108
109 * When loading a Python plugin, python_plugin.so now verifies
110   that the module loaded matches the one we tried to load.  This
111   allows sudo to display a more useful error message when trying
112   to load a plugin with a name that conflicts with a Python module
113   installed in the system location.
114
115 * Sudo no longer sets the the open files resource limit to "unlimited"
116   while it runs.  This avoids a problem where sudo's closefrom()
117   emulation would need to close a very large number of descriptors
118   on systems without a way to determine which ones are actually open.
119
120 * Sudo now includes a configure check for va_copy or __va_copy and
121   only defines its own version if the configure test fails.
122
123 * Fixed a bug in sudo's utmp file handling which prevented old
124   entries from being reused.  As a result, the utmp (or utmpx)
125   file was appended to unnecessarily.  GitHub PR #108.
126
127 * Fixed a bug introduced in sudo 1.9.7 that prevented sudo_logsrvd
128   from accepting TLS connections when OpenSSL is used.  Bug #988.
129
130What's new in Sudo 1.9.7p1
131
132 * Fixed an SELinux sudoedit bug when the edited temporary file
133   could not be opened.  The sesh helper would still be run even
134   when there are no temporary files available to install.
135
136 * Fixed a compilation problem on FreeBSD.
137
138 * The sudo_noexec.so file is now built as a module on all systems
139   other than macOS.  This makes it possible to use other libtool
140   implementations such as slibtool.  On macOS shared libraries and
141   modules are not interchangeable and the version of libtool shipped
142   with sudo must be used.
143
144 * Fixed a few bugs in the getgrouplist() emulation on Solaris when
145   reading from the local group file.
146
147 * Fixed a bug in sudo_logsrvd that prevented periodic relay server
148   connection retries from occurring in "store_first" mode.
149
150 * Disabled the nss_search()-based getgrouplist() emulation on HP-UX
151   due to a crash when the group source is set to "compat" in
152   /etc/nsswitch.conf.  This is probably due to a mismatch between
153   include/compat/nss_dbdefs.h and what HP-UX uses internally.  On
154   HP-UX we now just cycle through groups the slow way using
155   getgrent().  Bug #978.
156
157What's new in Sudo 1.9.7
158
159 * The "fuzz" Makefile target now runs all the fuzzers for 8192
160   passes (can be overridden via the FUZZ_RUNS variable).  This makes
161   it easier to run the fuzzers in-tree.  To run a fuzzer indefinitely,
162   set FUZZ_RUNS=-1, e.g. "make FUZZ_RUNS=-1 fuzz".
163
164 * Fixed fuzzing on FreeBSD where the ld.lld linker returns an
165   error by default when a symbol is multiply-defined.
166
167 * Added support for determining local IPv6 addresses on systems
168   that lack the getifaddrs() function.  This now works on AIX,
169   HP-UX and Solaris (at least).  Bug #969.
170
171 * Fixed a bug introduced in sudo 1.9.6 that caused "sudo -V" to
172   report a usage error.  Also, when invoked as sudoedit, sudo now
173   allows a more restricted set of options that matches the usage
174   statement and documentation.  GitHub issue #95.
175
176 * Fixed a crash in sudo_sendlog when the specified certificate
177   or key does not exist or is invalid.  Bug #970
178
179 * Fixed a compilation error when sudo is configured with the
180   --disable-log-client option.
181
182 * Sudo's limited support for SUCCESS=return entries in nsswitch.conf
183   is now documented.  Bug #971.
184
185 * Sudo now requires autoconf 2.70 or higher to regenerate the
186   configure script.  Bug #972.
187
188 * sudo_logsrvd now has a relay mode which can be used to create
189   a hierarchy of log servers.  By default, when a relay server is
190   defined, messages from the client are forwarded immediately to
191   the relay.  However, if the "store_first" setting is enabled,
192   the log will be stored locally until the command completes and
193   then relayed.  Bug #965.
194
195 * Sudo now links with OpenSSL by default if it is available unless
196   the --disable-openssl configure option is used or both the
197   --disable-log-client and --disable-log-server configure options
198   are specified.
199
200 * Fixed configure's Python version detection when the version minor
201   number is more than a single digit, for example Python 3.10.
202
203 * The sudo Python module tests now pass for Python 3.10.
204
205 * Sudo will now avoid changing the datasize resource limit
206   as long as the existing value is at least 1GB.  This works around
207   a problem on 64-bit HP-UX where it is not possible to exactly
208   restore the original datasize limit.  Bug #973.
209
210 * Fixed a race condition that could result in a hang when sudo is
211   executed by a process where the SIGCHLD handler is set to SIG_IGN.
212   This fixes the bug described by GitHub PR #98.
213
214 * Fixed an out-of-bounds read in sudoedit and visudo when the
215   EDITOR, VISUAL or SUDO_EDITOR environment variables end in an
216   unescaped backslash.  Also fixed the handling of quote characters
217   that are escaped by a backslash.  GitHub issue #99.
218
219 * Fixed a bug that prevented the "log_server_verify" sudoers option
220   from taking effect.
221
222 * The sudo_sendlog utility has a new -s option to cause it to stop
223   sending I/O records after a user-specified elapsed time.  This
224   can be used to test the I/O log restart functionality of sudo_logsrvd.
225
226 * Fixed a crash introduced in sudo 1.9.4 in sudo_logsrvd when
227   attempting to restart an interrupted I/O log transfer.
228
229 * The TLS connection timeout in the sudoers log client was previously
230   hard-coded to 10 seconds.  It now uses the value of log_server_timeout.
231
232 * The configure script now outputs a summary of the user-configurable
233   options at the end, separate from output of configure script tests.
234   Bug #820.
235
236 * Corrected the description of which groups may be specified via the
237   -g option in the Runas_Spec section.  Bug #975.
238
239What's new in Sudo 1.9.6p1
240
241 * Fixed a regression introduced in sudo 1.9.6 that resulted in an
242   error message instead of a usage message when sudo is run with
243   no arguments.
244
245What's new in Sudo 1.9.6
246
247 * Fixed a sudo_sendlog compilation problem with the AIX xlC compiler.
248
249 * Fixed a regression introduced in sudo 1.9.4 where the
250   --disable-root-mailer configure option had no effect.
251
252 * Added a --disable-leaks configure option that avoids some
253   memory leaks on exit that would otherwise occur.  This is intended
254   to be used with development tools that measure memory leaks.  It
255   is not safe to use in production at this time.
256
257 * Plugged some memory leaks identified by oss-fuzz and ASAN.
258
259 * Fixed the handling of sudoOptions for an LDAP sudoRole that
260   contains multiple sudoCommands.  Previously, some of the options
261   would only be applied to the first sudoCommand.
262
263 * Fixed a potential out of bounds read in the parsing of NOTBEFORE
264   and NOTAFTER sudoers command options (and their LDAP equivalents).
265
266 * The parser used for reading I/O log JSON files is now more
267   resilient when processing invalid JSON.
268
269 * Fixed typos that prevented "make uninstall" from working.
270   GitHub issue #87.
271
272 * Fixed a regression introduced in sudo 1.9.4 where the last line
273   in a sudoers file might not have a terminating NUL character
274   added if no newline was present.
275
276 * Integrated oss-fuzz and LLVM's libFuzzer with sudo.  The new
277   --enable-fuzzer configure option can be combined with the
278   --enable-sanitizer option to build sudo with fuzzing support.
279   Multiple fuzz targets are available for fuzzing different parts
280   of sudo.  Fuzzers are built and tested via "make fuzz" or as part
281   of "make check" (even when sudo is not built with fuzzing support).
282   Fuzzing support currently requires the LLVM clang compiler (not gcc).
283
284 * Fixed the --enable-static-sudoers configure option.
285   GitHub issue #92.
286
287 * Fixed a potential out of bounds read sudo when is run by a user
288   with more groups than the value of "max_groups" in sudo.conf.
289
290 * Added an "admin_flag" sudoers option to make the use of the
291   ~/.sudo_as_admin_successful file configurable on systems where
292   sudo is build with the --enable-admin-flag configure option.
293   This mostly affects Ubuntu and its derivatives.  GitHub issue #56.
294
295 * The "max_groups" setting in sudo.conf is now limited to 1024.
296   This setting is obsolete and should no longer be needed.
297
298 * Fixed a bug in the tilde expansion of "CHROOT=dir" and "CWD=dir"
299   sudoers command options.  A path "~/foo" was expanded to
300   "/home/userfoo" instead of "/home/user/foo".  This also affects
301   the runchroot and runcwd Defaults settings.
302
303 * Fixed a bug on systems without a native getdelim(3) function
304   where very long lines could cause parsing of the sudoers file
305   to end prematurely.  Bug #960.
306
307 * Fixed a potential integer overflow when converting the
308   timestamp_timeout and passwd_timeout sudoers settings to a
309   timespec struct.
310
311 * The default for the "group_source" setting in sudo.conf is now
312   "dynamic" on macOS.  Recent versions of macOS do not reliably
313   return all of a user's non-local groups via getgroups(2), even
314   when _DARWIN_UNLIMITED_GETGROUPS is defined.  Bug #946.
315
316 * Fixed a potential use-after-free in the PAM conversation function.
317   Bug #967.
318
319 * Fixed potential redefinition of sys/stat.h macros in sudo_compat.h.
320   Bug #968.
321
322What's new in Sudo 1.9.5p2
323
324 * Fixed sudo's setprogname(3) emulation on systems that don't
325   provide it.
326
327 * Fixed a problem with the sudoers log server client where a partial
328   write to the server could result the sudo process consuming large
329   amounts of CPU time due to a cycle in the buffer queue. Bug #954.
330
331 * Added a missing dependency on libsudo_util in libsudo_eventlog.
332   Fixes a link error when building sudo statically.
333
334 * The user's KRB5CCNAME environment variable is now preserved when
335   performing PAM authentication.  This fixes GSSAPI authentication
336   when the user has a non-default ccache.
337
338 * When invoked as sudoedit, the same set of command line options
339   are now accepted as for "sudo -e".  The -H and -P options are
340   now rejected for sudoedit and "sudo -e" which matches the sudo
341   1.7 behavior.  This is part of the fix for CVE-2021-3156.
342
343 * Fixed a potential buffer overflow when unescaping backslashes
344   in the command's arguments.  Normally, sudo escapes special
345   characters when running a command via a shell (sudo -s or sudo
346   -i).  However, it was also possible to run sudoedit with the -s
347   or -i flags in which case no escaping had actually been done,
348   making a buffer overflow possible.  This fixes CVE-2021-3156.
349
350What's new in Sudo 1.9.5p1
351
352 * Fixed a regression introduced in sudo 1.9.5 where the editor run
353   by sudoedit was set-user-ID root unless SELinux RBAC was in use.
354   The editor is now run with the user's real and effective user-IDs.
355
356What's new in Sudo 1.9.5
357
358 * Fixed a crash introduced in 1.9.4 when running "sudo -i" as an
359   unknown user.  This is related to but distinct from Bug #948.
360
361 * If the "lecture_file" setting is enabled in sudoers, it must now
362   refer to a regular file or a symbolic link to a regular file.
363
364 * Fixed a potential use-after-free bug in sudo_logsrvd when the
365   server shuts down if there are existing connections from clients
366   that are only logging events and not session I/O data.
367
368 * Fixed a buffer size mismatch when serializing the list of IP
369   addresses for configured network interfaces.  This bug is not
370   actually exploitable since the allocated buffer is large enough
371   to hold the list of addresses.
372
373 * If sudo is executed with a name other than "sudo" or "sudoedit",
374   it will now fall back to "sudo" as the program name.  This affects
375   warning, help and usage messages as well as the matching of Debug
376   lines in the /etc/sudo.conf file.  Previously, it was possible
377   for the invoking user to manipulate the program name by setting
378   argv[0] to an arbitrary value when executing sudo.
379
380 * Sudo now checks for failure when setting the close-on-exec flag
381   on open file descriptors.  This should never fail but, if it
382   were to, there is the possibility of a file descriptor leak to
383   a child process (such as the command sudo runs).
384
385 * Fixed CVE-2021-23239, a potential information leak in sudoedit
386   that could be used to test for the existence of directories not
387   normally accessible to the user in certain circumstances.  When
388   creating a new file, sudoedit checks to make sure the parent
389   directory of the new file exists before running the editor.
390   However, a race condition exists if the invoking user can replace
391   (or create) the parent directory.  If a symbolic link is created
392   in place of the parent directory, sudoedit will run the editor
393   as long as the target of the link exists.  If the target of the
394   link does not exist, an error message will be displayed.  The
395   race condition can be used to test for the existence of an
396   arbitrary directory.  However, it _cannot_ be used to write to
397   an arbitrary location.
398
399 * Fixed CVE-2021-23240, a flaw in the temporary file handling of
400   sudoedit's SELinux RBAC support.  On systems where SELinux is
401   enabled, a user with sudoedit permissions may be able to set the
402   owner of an arbitrary file to the user-ID of the target user.
403   On Linux kernels that support "protected symlinks", setting
404   /proc/sys/fs/protected_symlinks to 1 will prevent the bug from
405   being exploited.  For more information see
406   https://www.sudo.ws/alerts/sudoedit_selinux.html.
407
408 * Added writability checks for sudoedit when SELinux RBAC is in use.
409   This makes sudoedit behavior consistent regardless of whether
410   or not SELinux RBAC is in use.  Previously, the "sudoedit_checkdir"
411   setting had no effect for RBAC entries.
412
413 * A new sudoers option "selinux" can be used to disable sudo's
414   SELinux RBAC support.
415
416 * Quieted warnings from PVS Studio, clang analyzer, and cppcheck.
417   Added suppression annotations for PVS Studio false positives.
418
419What's new in Sudo 1.9.4p2
420
421 * Fixed a bug introduced in sudo 1.9.4p1 which could lead to a crash
422   if the sudoers file contains a runas user-specific Defaults entry.
423   Bug #951.
424
425What's new in Sudo 1.9.4p1
426
427 * Sudo on macOS now supports users with more than 16 groups without
428   needing to set "group_source" to "dynamic" in /etc/sudo.conf.
429   Previously, only the first 15 were used when matching group-based
430   rules in sudoers.  Bug #946.
431
432 * Fixed a regression introduced in version 1.9.4 where sudo would
433   not build when configured using the --without-sendmail option.
434   Bug #947.
435
436 * Fixed a problem where if I/O logging was disabled and sudo was
437   unable to connect to sudo_logsrvd, the command would still be
438   allowed to run even when the "ignore_logfile_errors" sudoers
439   option was enabled.
440
441 * Fixed a crash introduced in version 1.9.4 when attempting to run
442   a command as a non-existent user.  Bug #948.
443
444 * The installed sudo.conf file now has the default sudoers Plugin
445   lines commented out.  This fixes a potential conflict when there
446   is both a system-installed version of sudo and a user-installed
447   version.  GitHub issue #75.
448
449 * Fixed a regression introduced in sudo 1.9.4 where sudo would run
450   the command as a child process even when a pseudo-terminal was
451   not in use and the "pam_session" and "pam_setcred" options were
452   disabled.  GitHub issue #76.
453
454 * Fixed a regression introduced in sudo 1.8.9 where the "closefrom"
455   sudoers option could not be set to a value of 3.  Bug #950.
456
457What's new in Sudo 1.9.4
458
459 * The sudoers parser will now detect when an upper-case reserved
460   word is used when declaring an alias.  Now instead of "syntax
461   error, unexpected CHROOT, expecting ALIAS" the message will be
462   "syntax error, reserved word CHROOT used as an alias name".
463   Bug #941.
464
465 * Better handling of sudoers files without a final newline.
466   The parser now adds a newline at end-of-file automatically which
467   removes the need for special cases in the parser.
468
469 * Fixed a regression introduced in sudo 1.9.1 in the sssd back-end
470   where an uninitialized pointer could be freed on an error path.
471   GitHub issue #67.
472
473 * The core logging code is now shared between sudo_logsrvd and
474   the sudoers plugin.
475
476 * JSON log entries sent to syslog now use "minimal" JSON which
477   skips all non-essential white space.
478
479 * The sudoers plugin can now produce JSON-formatted logs.  The
480   "log_format" sudoers option can be used to select sudo or json
481   format logs.  The default is sudo format logs.
482
483 * The sudoers plugin and visudo now display the column number in
484   syntax error messages in addition to the line number.  Bug #841.
485
486 * If I/O logging is not enabled but "log_servers" is set, the
487   sudoers plugin will now log accept events to sudo_logsrvd.
488   Previously, the accept event was only sent when I/O logging was
489   enabled.  The sudoers plugin now sends reject and alert events too.
490
491 * The sudo logsrv protocol has been extended to allow an AlertMessage
492   to contain an optional array of InfoMessage, as AcceptMessage
493   and RejectMessage already do.
494
495 * Fixed a bug in sudo_logsrvd where receipt of SIGHUP would result
496   in duplicate entries in the debug log when debugging was enabled.
497
498 * The visudo utility now supports EDITOR environment variables
499   that use single or double quotes in the command arguments.
500   Bug #942.
501
502 * The PAM session modules now run when sudo is set-user-ID root,
503   which allows a module to determine the original user-ID.
504   Bug #944.
505
506 * Fixed a regression introduced in sudo 1.8.24 in the LDAP back-end
507   where sudoNotBefore and sudoNotAfter were applied even when the
508   SUDOERS_TIMED setting was not present in ldap.conf.  Bug #945.
509
510 * Sudo packages for macOS 11 now contain universal binaries that
511   support both Intel and Apple Silicon CPUs.
512
513 * For sudo_logsrvd, an empty value for the "pid_file" setting in
514   sudo_logsrvd.conf will now disable the process ID file.
515
516What's new in Sudo 1.9.3p1
517
518 * Fixed a regression introduced in sudo 1.9.3 where the configure
519   script would not detect the crypt(3) function if it was present
520   in the C library, not an additional library.
521
522 * Fixed a regression introduced in sudo 1.8.23 with shadow passwd
523   file authentication on OpenBSD.  BSD authentication was not
524   affected.
525
526 * Sudo now logs when a user-specified command-line option is
527   rejected by a sudoers rule.  Previously, these conditions were
528   written to the audit log, but the default sudo log file.  Affected
529   command line arguments include -C (--close-from), -D (--chdir),
530   -R (--chroot), -g (--group) and -u (--user).
531
532What's new in Sudo 1.9.3
533
534 * sudoedit will now prompt the user before overwriting an existing
535   file with one that is zero-length after editing.  Bug #922.
536
537 * Fixed building the Python plugin on systems with a compiler that
538   doesn't support symbol hiding.
539
540 * Sudo now uses a linker script to hide symbols even when the
541   compiler supports symbol hiding.  This should make it easier to
542   detect omissions in the symbol exports file, regardless of the
543   platform.
544
545 * Fixed the libssl dependency in Debian packages for older releases
546   that use libssl1.0.0.
547
548 * Sudo and visudo now provide more detailed messages when a syntax
549   error is detected in sudoers.  The offending line and token are
550   now displayed.  If the parser was generated by GNU bison,
551   additional information about what token was expected is also
552   displayed.  Bug #841.
553
554 * Sudoers rules must now end in either a newline or the end-of-file.
555   Previously, it was possible to have multiple rules on a single
556   line, separated by white space.  The use of an end-of-line
557   terminator makes it possible to display accurate error messages.
558
559 * Sudo no longer refuses to run if a syntax error in the sudoers
560   file is encountered.  The entry with the syntax error will be
561   discarded and sudo will continue to parse the file.  This makes
562   recovery from a syntax error less painful on systems where sudo
563   is the primary method of superuser access.  The historic behavior
564   can be restored by add "error_recovery=false" to the sudoers
565   plugin's optional arguments in sudo.conf.  Bug #618.
566
567 * Fixed the sample_approval plugin's symbol exports file for systems
568   where the compiler doesn't support symbol hiding.
569
570 * Fixed a regression introduced in sudo 1.9.1 where arguments to
571   the "sudoers_policy" plugin in sudo.conf were not being applied.
572   The sudoers file is now parsed by the "sudoers_audit" plugin,
573   which is loaded implicitly when "sudoers_policy" is listed in
574   sudo.conf.  Starting with sudo 1.9.3, if there are plugin arguments
575   for "sudoers_policy" but "sudoers_audit" is not listed, those
576   arguments will be applied to "sudoers_audit" instead.
577
578 * The user's resource limits are now passed to sudo plugins in
579   the user_info[] list.  A plugin cannot determine the limits
580   itself because sudo changes the limits while it runs to prevent
581   resource starvation.
582
583 * It is now possible to set the working directory or change the
584   root directory on a per-command basis using the CWD and CHROOT
585   options.  CWD and CHROOT are now reserved words in sudoers--they
586   can no longer be used as alias names.  There are also new Defaults
587   settings, runchroot and runcwd, that can be used to set the
588   working directory or root directory on a more global basis.
589
590 * New -D (--chdir) and -R (--chroot) command line options can be
591   used to set the working directory or root directory if the sudoers
592   file allows it.  This functionality is not enabled by default
593   and must be explicitly enabled in the sudoers file.
594
595 * Fixed a regression introduced in sudo 1.9.1 where the sudoers_audit
596   symbol could not be resolved when sudo is configured with the
597   --enable-static-sudoers option.  Bug #936 and GitHub issue #61.
598
599What's new in Sudo 1.9.2
600
601 * Fixed package builds on RedHat Enterprise Linux 8.
602
603 * The configure script now uses pkg-config to find the openssl
604   cflags and libs where possible.
605
606 * The contents of the log.json I/O log file is now documented in
607   the sudoers manual.
608
609 * The sudoers plugin now properly exports the sudoers_audit symbol
610   on systems where the compiler lacks symbol visibility controls.
611   This caused a regression in 1.9.1 where a successful sudo command
612   was not logged due to the missing audit plugin.  Bug #931.
613
614 * Fixed a regression introduced in 1.9.1 that can result in crash
615   when there is a syntax error in the sudoers file.  Bug #934.
616
617What's new in Sudo 1.9.1
618
619 * Fixed an AIX-specific problem when I/O logging was enabled.
620   The terminal device was not being properly set to raw mode.
621   Bug #927.
622
623 * Corrected handling of sudo_logsrvd connections without associated
624   I/O log data.  This fixes support for RejectMessage as well as
625   AcceptMessage when the expect_iobufs flag is not set.
626
627 * Added an "iolog_path" entry to the JSON-format event log produced
628   by sudo_logsrvd.  Previously, it was only possible to determine
629   the I/O log file an event belonged to using sudo-format logs.
630
631 * Fixed the bundle IDs for sudo-logsrvd and sudo-python macOS packages.
632
633 * I/O log files produced by the sudoers plugin now clear the write
634   bits on the I/O log timing file when the log is complete.  This
635   is consistent with how sudo_logsrvd indicates that a log is
636   complete.
637
638 * The sudoreplay utility has a new "-F" (follow) command line
639   option to allow replaying a session that is still in progress,
640   similar to "tail -f".
641
642 * The @include and @includedir directives can be used in sudoers
643   instead of #include and #includedir.  In addition, include paths
644   may now have embedded white space by either using a double-quoted
645   string or escaping the space characters with a backslash.
646
647 * Fixed some Solaris 11.4 compilation errors.
648
649 * When running a command in a pty, sudo will no longer try to
650   suspend itself if the user's tty has been revoked (for instance
651   when the parent ssh daemon is killed).  This fixes a bug where
652   sudo would continuously suspend the command (which would succeed),
653   then suspend itself (which would fail due to the missing tty)
654   and then resume the command.
655
656 * If sudo's event loop fails due to the tty being revoked, remove
657   the user's tty events and restart the event loop (once).  This
658   fixes a problem when running "sudo reboot" in a pty on some
659   systems.  When the event loop exited unexpectedly, sudo would
660   kill the command running in the pty, which in the case of "reboot",
661   could lead to the system being in a half-rebooted state.
662
663 * Fixed a regression introduced in sudo 1.8.23 in the LDAP and
664   SSSD back-ends where a missing sudoHost attribute was treated
665   as an "ALL" wildcard value.  A sudoRole with no sudoHost attribute
666   is now ignored as it was prior to version 1.8.23.
667
668 * The audit plugin API has been changed slightly.  The sudo front-end
669   now audits an accept event itself after all approval plugins are
670   run and the I/O logging plugins (if any) are opened.  This makes
671   it possible for an audit plugin to only log a single overall
672   accept event if desired.
673
674 * The sudoers plugin can now be loaded as an audit plugin.  Logging
675   of successful commands is now performed in the audit plugin's
676   accept function.  As a result, commands are now only logged if
677   allowed by sudoers and all approval plugins.  Commands rejected
678   by an approval plugin are now also logged by the sudoers plugin.
679
680 * Romanian translation for sudo and sudoers from translationproject.org.
681
682 * Fixed a regression introduced in sudo 1.9.0 where sudoedit did
683   not remove its temporary files after installing them.  Bug #929.
684
685 * Fixed a regression introduced in sudo 1.9.0 where the iolog_file
686   setting in sudoers and sudo_logsrvd.conf caused an error if the
687   file name ended in six or more X's.
688
689What's new in Sudo 1.9.0
690
691 * Fixed a test failure in the strsig_test regress test on FreeBSD.
692
693 * The maximum length of a conversation reply has been increased
694   from 255 to 1023 characters.  This allows for longer user passwords.
695   Bug #860.
696
697 * Sudo now includes a logging daemon, sudo_logsrvd, which can be
698   used to implement centralized logging of I/O logs.  TLS connections
699   are supported when sudo is configured with the --enable-openssl
700   option.  For more information, see the sudo_logsrvd, logsrvd.conf
701   and sudo_logsrv.proto manuals as well as the log_servers setting
702   in the sudoers manual.
703
704   The --disable-log-server and --disable-log-client configure
705   options can be used to disable building the I/O log server and/or
706   remote I/O log support in the sudoers plugin.
707
708 * The new sudo_sendlog utility can be used to test sudo_logsrvd
709   or send existing sudo I/O logs to a centralized server.
710
711 * It is now possible to write sudo plugins in Python 3 when sudo
712   is configured with the --enable-python option.  See the
713   sudo_plugin_python manual for details.
714
715   Sudo 1.9.0 comes with several Python example plugins that get
716   installed sudo's examples directory.
717
718   The sudo blog article "What's new in sudo 1.9: Python"
719   (https://blog.sudo.ws/posts/2020/01/whats-new-in-sudo-1.9-python/)
720   includes a simple tutorial on writing python plugins.
721
722 * Sudo now supports an "audit" plugin type.  An audit plugin
723   receives accept, reject, exit and error messages and can be used
724   to implement custom logging that is independent of the underlying
725   security policy.   Multiple audit plugins may be specified in
726   the sudo.conf file.  A sample audit plugin is included that
727   writes logs in JSON format.
728
729 * Sudo now supports an "approval" plugin type.  An approval plugin
730   is run only after the main security policy (such as sudoers) accepts
731   a command to be run.  The approval policy may perform additional
732   checks, potentially interacting with the user.  Multiple approval
733   plugins may be specified in the sudo.conf file.  Only if all
734   approval plugins succeed will the command be allowed.
735
736 * Sudo's -S command line option now causes the sudo conversation
737   function to write to the standard output or standard error instead
738   of the terminal device.
739
740 * Fixed a bug where if a #include or #includedir directive was the
741   last line in sudoers and there was no final newline character, it
742   was silently ignored.  Bug #917.
743
744 * It is now possible to use "Cmd_Alias" instead of "Cmnd_Alias" for
745   people who find the former more natural.
746
747 * The new "pam_ruser" and "pam_rhost" sudoers settings can be used
748   to enable or disable setting the PAM remote user and/or host
749   values during PAM session setup.
750
751 * More than one SHA-2 digest may now be specified for a single
752   command.  Multiple digests must be separated by a comma.
753
754 * It is now possible to specify a SHA-2 digest in conjunction with
755   the "ALL" reserved word in a command specification.  This allows
756   one to give permission to run any command that matches the
757   specified digest, regardless of its path.
758
759 * Sudo and sudo_logsrvd now create an extended I/O log info file
760   in JSON format that contains additional information about the
761   command that was run, such as the host name.  The sudoreplay
762   utility uses this file in preference to the legacy log file.
763
764 * The sudoreplay utility can now match on a host name in list mode.
765   The list output also now includes the host name if one is present
766   in the log file.
767
768 * For "sudo -i", if the target user's home directory does not
769   exist, sudo will now warn about the problem but run the command
770   in the current working directory.  Previously, this was a fatal
771   error.  Debian bug #598519.
772
773 * The command line arguments in the SUDO_COMMAND environment
774   variable are now truncated at 4096 characters.  This avoids an
775   "Argument list too long" error when executing a command with a
776   large number of arguments.  Bug #923 (Debian bug #596631).
777
778 * Sudo now properly ends the PAM transaction when the user
779   authenticates successfully but sudoers denies the command.
780   Debian bug #669687.
781
782 * The sudoers grammar in the manual now indicates that "sudoedit"
783   requires one or more arguments.  Debian bug #571621.
784
785 * When copying the edited files to the original path, sudoedit now
786   allocates any additional space needed before writing.  Previously,
787   it could truncate the destination file if the file system was
788   full.  Bug #922.
789
790 * Fixed an issue where PAM session modules could be called with
791   the wrong user name when multiple users in the passwd database
792   share the the same user-ID.  Debian bug #734752.
793
794 * Sudo command line options that take a value may only be specified
795   once.  This is to help guard against problems caused by poorly
796   written scripts that invoke sudo with user-controlled input.
797   Bug #924.
798
799What's new in Sudo 1.8.31p1
800
801 * Sudo once again ignores a failure to restore the RLIMIT_CORE
802   resource limit, as it did prior to version 1.8.29.  Linux
803   containers don't allow RLIMIT_CORE to be set back to RLIM_INFINITY
804   if we set the limit to zero, even for root, which resulted in a
805   warning from sudo.
806
807What's new in Sudo 1.8.31
808
809 * Fixed CVE-2019-18634, a buffer overflow when the "pwfeedback"
810   sudoers option is enabled on systems with uni-directional pipes.
811
812 * The "sudoedit_checkdir" option now treats a user-owned directory
813   as writable, even if it does not have the write bit set at the
814   time of check.  Symbolic links will no longer be followed by
815   sudoedit in any user-owned directory.  Bug #912
816
817 * Fixed sudoedit on macOS 10.15 and above where the root file system
818   is mounted read-only.  Bug #913.
819
820 * Fixed a crash introduced in sudo 1.8.30 when suspending sudo
821   at the password prompt.  Bug #914.
822
823 * Fixed compilation on systems where the mmap MAP_ANON flag
824   is not available.  Bug #915.
825
826What's new in Sudo 1.8.30
827
828 * Fixed a warning on macOS introduced in sudo 1.8.29 when sudo
829   attempts to set the open file limit to unlimited.  Bug #904.
830
831 * Sudo now closes file descriptors before changing uids.  This
832   prevents a non-root process from interfering with sudo's ability
833   to close file descriptors on systems that support the prlimit(2)
834   system call.
835
836 * Sudo now treats an attempt to run "sudo sudoedit" as simply
837   "sudoedit".  If the sudoers file contains a fully-qualified path
838   to sudoedit, sudo will now treat it simply as "sudoedit" (with
839   no path).  Visudo will will now treat a fully-qualified path
840   to sudoedit as an error.  Bug #871.
841
842 * Fixed a bug introduced in sudo 1.8.28 where sudo would warn about
843   a missing /etc/environment file on AIX and Linux when PAM is not
844   enabled.  Bug #907
845
846 * Fixed a bug on Linux introduced in sudo 1.8.29 that prevented
847   the askpass program from running due to an unlimited stack size
848   resource limit.  Bug #908.
849
850 * If a group provider plugin has optional arguments, the argument list
851   passed to the plugin is now NULL terminated as per the documentation.
852
853 * The user's time stamp file is now only updated if both authentication
854   and approval phases succeed.  This is consistent with the behavior
855   of sudo prior to version 1.8.23.  Bug #910
856
857 * The new allow_unknown_runas_id sudoers setting can be used to
858   enable or disable the use of unknown user or group IDs.  Previously,
859   sudo would always allow unknown user or group IDs if the sudoers
860   entry permitted it, including via the "ALL" alias.  As of sudo
861   1.8.30, the admin must explicitly enable support for unknown IDs.
862
863 * The new runas_check_shell sudoers setting can be used to require
864   that the runas user have a shell listed in the /etc/shells file.
865   On many systems, users such as "bin", do not have a valid shell
866   and this flag can be used to prevent commands from being run as
867   those users.
868
869 * Fixed a problem restoring the SELinux tty context during reboot
870   if mctransd is killed before sudo finishes.  GitHub issue #17.
871
872 * Fixed an intermittent warning on NetBSD when sudo restores the
873   initial stack size limit.
874
875What's new in Sudo 1.8.29
876
877 * The cvtsudoers command will now reject non-LDIF input when converting
878   from LDIF format to sudoers or JSON formats.
879
880 * The new log_allowed and log_denied sudoers settings make it possible
881   to disable logging and auditing of allowed and/or denied commands.
882
883 * The umask is now handled differently on systems with PAM or login.conf.
884   If the umask is explicitly set in sudoers, that value is used regardless
885   of what PAM or login.conf may specify.  However, if the umask is not
886   explicitly set in sudoers, PAM or login.conf may now override the default
887   sudoers umask.  Bug #900.
888
889 * For "make install", the sudoers file is no longer checked for syntax
890   errors when DESTDIR is set.  The default sudoers file includes the
891   contents of /etc/sudoers.d which may not be readable as non-root.
892   Bug #902.
893
894 * Sudo now sets most resource limits to their maximum value to avoid
895   problems caused by insufficient resources, such as an inability to
896   allocate memory or open files and pipes.
897
898 * Fixed a regression introduced in sudo 1.8.28 where sudo would refuse
899   to run if the parent process was not associated with a session.
900   This was due to sudo passing a session ID of -1 to the plugin.
901
902What's new in Sudo 1.8.28p1
903
904 * The fix for Bug #869 caused "sudo -v" to prompt for a password
905   when "verifypw" is set to "all" (the default) and all of the
906   user's sudoers entries are marked with NOPASSWD.  Bug #901.
907
908What's new in Sudo 1.8.28
909
910 * Sudo will now only set PAM_TTY to the empty string when no
911   terminal is present on Solaris and Linux.  This workaround is
912   only needed on those systems which may have PAM modules that
913   misbehave when PAM_TTY is not set.
914
915 * The mailerflags sudoers option now has a default value even if
916   sendmail support was disabled at configure time.  Fixes a crash
917   when the mailerpath sudoers option is set but mailerflags is not.
918   Bug #878.
919
920 * Sudo will now filter out last login messages on HP-UX unless it
921   a shell is being run via "sudo -s" or "sudo -i".  Otherwise,
922   when trusted mode is enabled, these messages will be displayed
923   for each command.
924
925 * On AIX, when the user's password has expired and PAM is not in use,
926   sudo will now allow the user to change their password.
927   Bug #883.
928
929 * Sudo has a new -B command line option that will ring the terminal
930   bell when prompting for a password.
931
932 * Sudo no longer refuses to prompt for a password when it cannot
933   determine the user's terminal as long as it can open /dev/tty.
934   This allows sudo to function on systems where /proc is unavailable,
935   such as when running in a chroot environment.
936
937 * The "env_editor" sudoers flag is now on by default.  This makes
938   source builds more consistent with the packages generated by
939   sudo's mkpkg script.
940
941 * Sudo no longer ships with pre-formatted copies of the manual pages.
942   These were included for systems like IRIX that don't ship with an
943   nroff utility.  There are now multiple Open Source nroff replacements
944   so this should no longer be an issue.
945
946 * Fixed a bad interaction with configure's --prefix and
947   --disable-shared options.  Bug #886.
948
949 * More verbose error message when a password is required and no terminal
950   is present.  Bug #828.
951
952 * Command tags, such as NOPASSWD, are honored when a user tries to run a
953   command that is allowed by sudoers but which does not actually
954   exist on the file system.  Bug #888.
955
956 * Asturian translation for sudoers from translationproject.org.
957
958 * I/O log timing files now store signal suspend and resume information
959   in the form of a signal name instead of a number.
960
961 * Fixed a bug introduced in 1.8.24 that prevented sudo from honoring
962   the value of "ipa_hostname" from sssd.conf, if specified, when
963   matching the host name.
964
965 * Fixed a bug introduced in 1.8.21 that prevented the core dump
966   resource limit set in the pam_limits module from taking effect.
967   Bug #894.
968
969 * Fixed parsing of double-quoted Defaults group and netgroup bindings.
970
971 * The user ID is now used when matching sudoUser attributes in LDAP.
972   Previously, the user name, group name and group IDs were used
973   when matching but not the user ID.
974
975 * Sudo now writes PAM messages to the user's terminal, if available,
976   instead of the standard output or standard error.  This prevents
977   PAM output from being intermixed with that of the command when
978   output is sent to a file or pipe.  Bug #895.
979
980 * Sudoedit now honors the umask and umask_override settings in sudoers.
981   Previously, the user's umask was used as-is.
982
983 * Fixed a bug where the terminal's file context was not restored
984   when using SELinux RBAC.  Bug #898.
985
986 * Fixed CVE-2019-14287, a bug where a sudo user may be able to
987   run a command as root when the Runas specification explicitly
988   disallows root access as long as the ALL keyword is listed first.
989
990What's new in Sudo 1.8.27
991
992 * On HP-UX, sudo will now update the utmps file when running a command
993   in a pseudo-tty.  Previously, only the utmp and utmpx files were
994   updated.
995
996 * Nanosecond precision file time stamps are now supported in HP-UX.
997
998 * Fixes and clarifications to the sudo plugin documentation.
999
1000 * The sudo manuals no longer require extensive post-processing to
1001   hide system-specific features.  Conditionals in the roff source
1002   are now used instead.  This fixes corruption of the sudo manual
1003   on systems without BSD login classes.  Bug #861.
1004
1005 * If an I/O logging plugin is configured but the plugin does not
1006   actually log any I/O, sudo will no longer force the command to
1007   be run in a pseudo-tty.
1008
1009 * The fix for bug #843 in sudo 1.8.24 was incomplete.  If the
1010   user's password was expired or needed to be updated, but no sudo
1011   password was required, the PAM handle was freed too early,
1012   resulting in a failure when processing PAM session modules.
1013
1014 * In visudo, it is now possible to specify the path to sudoers
1015   without using the -f option.  Bug #864.
1016
1017 * Fixed a bug introduced in sudo 1.8.22 where the utmp (or utmpx)
1018   file would not be updated when a command was run in a pseudo-tty.
1019   Bug #865.
1020
1021 * Sudo now sets the silent flag when opening the PAM session except
1022   when running a shell via "sudo -s" or "sudo -i".  This prevents
1023   the pam_lastlog module from printing the last login information
1024   for each sudo command.  Bug #867.
1025
1026 * Fixed the default AIX hard resource limit for the maximum number
1027   of files a user may have open.  If no hard limit for "nofiles"
1028   is explicitly set in /etc/security/limits, the default should
1029   be "unlimited".  Previously, the default hard limit was 8196.
1030
1031What's new in Sudo 1.8.26
1032
1033 * Fixed a bug in cvtsudoers when converting to JSON format when
1034   alias expansion is enabled. Bug #853.
1035
1036 * Sudo no long sets the USERNAME environment variable when running
1037   commands. This is a non-standard environment variable that was
1038   set on some older Linux systems.
1039
1040 * Sudo now treats the LOGNAME and USER environment variables (as
1041   well as the LOGIN variable on AIX) as a single unit.  If one is
1042   preserved or removed from the environment using env_keep, env_check
1043   or env_delete, so is the other.
1044
1045 * Added support for OpenLDAP's TLS_REQCERT setting in ldap.conf.
1046
1047 * Sudo now logs when the command was suspended and resumed in the
1048   I/O logs.  This information is used by sudoreplay to skip the
1049   time suspended when replaying the session unless the new -S flag
1050   is used.
1051
1052 * Fixed documentation problems found by the igor utility.  Bug #854.
1053
1054 * Sudo now prints a warning message when there is an error or end
1055   of file while reading the password instead of exiting silently.
1056
1057 * Fixed a bug in the sudoers LDAP back-end parsing the command_timeout,
1058   role, type, privs and limitprivs sudoOptions.  This also affected
1059   cvtsudoers conversion from LDIF to sudoers or JSON.
1060
1061 * Fixed a bug that prevented timeout settings in sudoers from
1062   functioning unless a timeout was also specified on the command
1063   line.
1064
1065 * Asturian translation for sudo from translationproject.org.
1066
1067 * When generating LDIF output, cvtsudoers can now be configured
1068   to pad the sudoOrder increment such that the start order is used
1069   as a prefix.  Bug #856.
1070
1071 * Fixed a bug introduced in sudo 1.8.25 that prevented sudo from
1072   properly setting the user's groups on AIX.  Bug #857.
1073
1074 * If the user specifies a group via sudo's -g option that matches
1075   any of the target user's groups, it is now allowed even if no
1076   groups are present in the Runas_Spec.  Previously, it was only
1077   allowed if it matched the target user's primary group.
1078
1079 * The sudoers LDAP back-end now supports negated sudoRunAsUser and
1080   sudoRunAsGroup entries.
1081
1082 * Sudo now provides a proper error message when the "fqdn" sudoers
1083   option is set and it is unable to resolve the local host name.
1084   Bug #859.
1085
1086 * Portuguese translation for sudo and sudoers from translationproject.org.
1087
1088 * Sudo now includes sudoers LDAP schema for the on-line configuration
1089   supported by OpenLDAP.
1090
1091What's new in Sudo 1.8.25p1
1092
1093 * Fixed a bug introduced in sudo 1.8.25 that caused a crash on
1094   systems that have the poll() function but not the ppoll() function.
1095   Bug #851.
1096
1097What's new in Sudo 1.8.25
1098
1099 * Fixed a bug introduced in sudo 1.8.20 that broke formatting of
1100   I/O log timing file entries on systems without a C99-compatible
1101   snprintf() function.  Our replacement snprintf() doesn't support
1102   floating point so we can't use the "%f" format directive.
1103
1104 * I/O log timing file entries now use a monotonic timer and include
1105   nanosecond precision.  A monotonic timer that does not increment
1106   while the system is sleeping is used where available.
1107
1108 * Fixed a bug introduced in sudo 1.8.24 where sudoNotAfter in the LDAP
1109   back-end was not being properly parsed.  Bug #845.
1110
1111 * When sudo runs a command in a pseudo-terminal, the follower
1112   device is now closed in the main process immediately after
1113   starting the monitor process.  This removes the need for an
1114   AIX-specific workaround that was added in sudo 1.8.24.
1115
1116 * Added support for monotonic timers on HP-UX.
1117
1118 * Fixed a bug displaying timeout values the "sudo -V" output.
1119   The value displayed was 3600 times the actual value.  Bug #846.
1120
1121 * Fixed a build issue on AIX 7.1 BOS levels that include memset_s()
1122   and define rsize_t in string.h.  Bug #847.
1123
1124 * The testsudoers utility now supports querying an LDIF-format
1125   policy.
1126
1127 * Sudo now sets the LOGIN environment variable to the same value as
1128   LOGNAME on AIX systems.  Bug #848.
1129
1130 * Fixed a regression introduced in sudo 1.8.24 where the LDAP and
1131   SSSD back-ends evaluated the rules in reverse sudoOrder.  Bug #849.
1132
1133What's new in Sudo 1.8.24
1134
1135 * The LDAP and SSS back-ends now use the same rule evaluation code
1136   as the sudoers file back-end.  This builds on the work in sudo
1137   1.8.23 where the formatting functions for "sudo -l" output were
1138   shared.  The handling of negated commands in SSS and LDAP is
1139   unchanged.
1140
1141 * Fixed a regression introduced in 1.8.23 where "sudo -i" could
1142   not be used in conjunction with --preserve-env=VARIABLE.  Bug #835.
1143
1144 * cvtsudoers can now parse base64-encoded attributes in LDIF files.
1145
1146 * Random insults are now more random.
1147
1148 * Fixed the noexec wordexp(3) test on FreeBSD.
1149
1150 * Added SUDO_CONV_PREFER_TTY flag for conversation function to
1151   tell sudo to try writing to /dev/tty first. Can be used in
1152   conjunction with SUDO_CONV_INFO_MSG and SUDO_CONV_ERROR_MSG.
1153
1154 * Sudo now supports an arbitrary number of groups per user on
1155   Solaris.  Previously, only the first 64 groups were found.
1156   This should remove the need to set "max_groups" in sudo.conf.
1157
1158 * Fixed typos in the OpenLDAP sudo schema.  Bugs #839 and #840.
1159
1160 * Fixed a race condition when building with parallel make.
1161   Bug #842.
1162
1163 * Fixed a duplicate free when netgroup_base in ldap.conf is set
1164   to an invalid value.
1165
1166 * Fixed a bug introduced in sudo 1.8.23 on AIX that could prevent
1167   local users and groups from being resolved properly on systems
1168   that have users stored in NIS, LDAP or AD.
1169
1170 * Added a workaround for an AIX bug exposed by a change in sudo
1171   1.8.23 that prevents the terminal mode from being restored when
1172   I/O logging is enabled.
1173
1174 * On systems using PAM, sudo now ignores the PAM_NEW_AUTHTOK_REQD
1175   and PAM_AUTHTOK_EXPIRED errors from PAM account management if
1176   authentication is disabled for the user.  This fixes a regression
1177   introduced in sudo 1.8.23.  Bug #843.
1178
1179 * Fixed an ambiguity in the sudoers manual in the description and
1180   definition of User, Runas, Host, and Cmnd Aliases.  Bug #834.
1181
1182 * Fixed a bug that resulted in only the first window size change
1183   event being logged.
1184
1185 * Fixed a bug on HP-UX systems introduced in sudo 1.8.22 that
1186   caused sudo to prompt for a password every time when tty-based
1187   time stamp files were in use.
1188
1189 * Fixed a compilation problem on systems that define O_PATH or
1190   O_SEARCH in fnctl.h but do not define O_DIRECTORY.  Bug #844.
1191
1192What's new in Sudo 1.8.23
1193
1194 * PAM account management modules and BSD auth approval modules are
1195   now run even when no password is required.
1196
1197 * For kernel-based time stamps, if no terminal is present, fall
1198   back to parent-pid style time stamps.
1199
1200 * The new cvtsudoers utility replaces both the "sudoers2ldif" script
1201   and the "visudo -x" functionality.  It can read a file in either
1202   sudoers or LDIF format and produce JSON, LDIF or sudoers output.
1203   It is also possible to filter the generated output file by user,
1204   group or host name.
1205
1206 * The file, ldap and sss sudoers back-ends now share a common set
1207   of formatting functions for "sudo -l" output, which is also used
1208   by the cvtsudoers utility.
1209
1210 * The /run directory is now used in preference to /var/run if it
1211   exists. Bug #822.
1212
1213 * More accurate descriptions of the --with-rundir and --with-vardir
1214   configure options.  Bug #823.
1215
1216 * The setpassent() and setgroupent() functions are now used on systems
1217   that support them to keep the passwd and group database open.
1218   Sudo performs a lot of passwd and group lookups so it can be
1219   beneficial to avoid opening and closing the files each time.
1220
1221 * The new case_insensitive_user and case_insensitive_group sudoers
1222   options can be used to control whether sudo does case-sensitive
1223   matching of users and groups in sudoers.  Case insensitive
1224   matching is now the default.
1225
1226 * Fixed a bug on some systems where sudo could hang on command
1227   exit when I/O logging was enabled.  Bug #826.
1228
1229 * Fixed the build-time process start time test on Linux when the
1230   test is run from within a container.  Bug #829.
1231
1232 * When determining which temporary directory to use, sudoedit now
1233   checks the directory for writability before using it.  Previously,
1234   sudoedit only performed an existence check.  Bug #827.
1235
1236 * Sudo now includes an optional set of Monty Python-inspired insults.
1237
1238 * Fixed the execution of scripts with an associated digest (checksum)
1239   in sudoers on FreeBSD systems.  FreeBSD does not have a proper
1240   /dev/fd directory mounted by default and its fexecve(2) is not
1241   fully POSIX compliant when executing scripts.  Bug #831.
1242
1243 * Chinese (Taiwan) translation for sudo from translationproject.org.
1244
1245What's new in Sudo 1.8.22
1246
1247 * Commands run in the background from a script run via sudo will
1248   no longer receive SIGHUP when the parent exits and I/O logging
1249   is enabled.  Bug #502
1250
1251 * A particularly offensive insult is now disabled by default.
1252   Bug #804
1253
1254 * The description of "sudo -i" now correctly documents that
1255   the "env_keep" and "env_check" sudoers options are applied to
1256   the environment.  Bug #806
1257
1258 * Fixed a crash when the system's host name is not set.
1259   Bug #807
1260
1261 * The sudoers2ldif script now handles #include and #includedir
1262   directives.
1263
1264 * Fixed a bug where sudo would silently exit when the command was
1265   not allowed by sudoers and the "passwd_tries" sudoers option
1266   was set to a value less than one.
1267
1268 * Fixed a bug with the "listpw" and "verifypw" sudoers options and
1269   multiple sudoers sources.  If the option is set to "all", a
1270   password should be required unless none of a user's sudoers
1271   entries from any source require authentication.
1272
1273 * Fixed a bug with the "listpw" and "verifypw" sudoers options in
1274   the LDAP and SSSD back-ends.  If the option is set to "any", and
1275   the entry contained multiple rules, only the first matching rule
1276   was checked.  If an entry contained more than one matching rule
1277   and the first rule required authentication but a subsequent rule
1278   did not, sudo would prompt for a password when it should not have.
1279
1280 * When running a command as the invoking user (not root), sudo
1281   would execute the command with the same group vector it was
1282   started with.  Sudo now executes the command with a new group
1283   vector based on the group database which is consistent with
1284   how su(1) operates.
1285
1286 * Fixed a double free in the SSSD back-end that could occur when
1287   ipa_hostname is present in sssd.conf and is set to an unqualified
1288   host name.
1289
1290 * When I/O logging is enabled, sudo will now write to the terminal
1291   even when it is a background process.  Previously, sudo would
1292   only write to the tty when it was the foreground process when
1293   I/O logging was enabled.  If the TOSTOP terminal flag is set,
1294   sudo will suspend the command (and then itself) with the SIGTTOU
1295   signal.
1296
1297 * A new "authfail_message" sudoers option that overrides the
1298   default "N incorrect password attempt(s)".
1299
1300 * An empty sudoRunAsUser attribute in the LDAP and SSSD back-ends
1301   will now match the invoking user.  This is more consistent with
1302   how an empty runas user in the sudoers file is treated.
1303
1304 * Documented that in check mode, visudo does not check the owner/mode
1305   on files specified with the -f flag.  Bug #809.
1306
1307 * It is now an error to specify the runas user as an empty string
1308   on the command line.  Previously, an empty runas user was treated
1309   the same as an unspecified runas user.  Bug #817.
1310
1311 * When "timestamp_type" option is set to "tty" and a terminal is
1312   present, the time stamp record will now include the start time
1313   of the session leader.  When the "timestamp_type" option is set
1314   to "ppid" or when no terminal is available, the start time of
1315   the parent process is used instead.  This significantly reduces
1316   the likelihood of a time stamp record being re-used when a user
1317   logs out and back in again.  Bug #818.
1318
1319 * The sudoers time stamp file format is now documented in the new
1320   sudoers_timestamp manual.
1321
1322 * The "timestamp_type" option now takes a "kernel" value on OpenBSD
1323   systems.  This causes the tty-based time stamp to be stored in
1324   the kernel instead of on the file system.  If no tty is present,
1325   the time stamp is considered to be invalid.
1326
1327 * Visudo will now use the SUDO_EDITOR environment variable (if
1328   present) in addition to VISUAL and EDITOR.
1329
1330What's new in Sudo 1.8.21p2
1331
1332 * Fixed a bug introduced in version 1.8.21 which prevented sudo
1333   from using the PAM-supplied prompt.  Bug #799
1334
1335 * Fixed a bug introduced in version 1.8.21 which could result in
1336   sudo hanging when running commands that exit quickly.  Bug #800
1337
1338 * Fixed a bug introduced in version 1.8.21 which prevented the
1339   command from being run when the password was read via an external
1340   program using the askpass interface.  Bug #801
1341
1342What's new in Sudo 1.8.21p1
1343
1344 * On systems that support both PAM and SIGINFO, the main sudo
1345   process will no longer forward SIGINFO to the command if the
1346   signal was generated from the keyboard.  The command will have
1347   already received SIGINFO since it is part of the same process
1348   group so there's no need for sudo to forward it.  This is
1349   consistent with the handling of SIGINT, SIGQUIT and SIGTSTP.
1350   Bug #796
1351
1352 * If SUDOERS_SEARCH_FILTER in ldap.conf does not specify a value,
1353   the LDAP search expression used when looking up netgroups and
1354   non-Unix groups had a syntax error if a group plugin was not
1355   specified.
1356
1357 * "sudo -U otheruser -l" will now have an exit value of 0 even
1358   if "otheruser" has no sudo privileges.  The exit value when a
1359   user attempts to lists their own privileges or when a command
1360   is specified is unchanged.
1361
1362 * Fixed a regression introduced in sudo 1.8.21 where sudoreplay
1363   playback would hang for I/O logs that contain terminal input.
1364
1365 * Sudo 1.8.18 contained an incomplete fix for the matching of
1366   entries in the LDAP and SSSD back-ends when a sudoRunAsGroup is
1367   specified but no sudoRunAsUser is present in the sudoRole.
1368
1369What's new in Sudo 1.8.21
1370
1371 * The path that sudo uses to search for terminal devices can now
1372   be configured via the new "devsearch" Path setting in sudo.conf.
1373
1374 * It is now possible to preserve bash shell functions in the
1375   environment when the "env_reset" sudoers setting is disabled by
1376   removing the "*=()*" pattern from the env_delete list.
1377
1378 * A change made in sudo 1.8.15 inadvertently caused sudoedit to
1379   send itself SIGHUP instead of exiting when the editor returns
1380   an error or the file was not modified.
1381
1382 * Sudoedit now uses an exit code of zero if the file was not
1383   actually modified.  Previously, sudoedit treated a lack of
1384   modifications as an error.
1385
1386 * When running a command in a pseudo-tty (pty), sudo now copies a
1387   subset of the terminal flags to the new pty.  Previously, all
1388   flags were copied, even those not appropriate for a pty.
1389
1390 * Fixed a problem with debug logging in the sudoers I/O logging
1391   plugin.
1392
1393 * Window size change events are now logged to the policy plugin.
1394   On xterm and compatible terminals, sudoreplay is now capable of
1395   resizing the terminal to match the size of the terminal the
1396   command was run on.  The new -R option can be used to disable
1397   terminal resizing.
1398
1399 * Fixed a bug in visudo where a newly added file was not checked
1400   for syntax errors.  Bug #791.
1401
1402 * Fixed a bug in visudo where if a syntax error in an include
1403   directory (like /etc/sudoers.d) was detected, the edited version
1404   was left as a temporary file instead of being installed.
1405
1406 * On PAM systems, sudo will now treat "username's Password:" as
1407   a standard password prompt.  As a result, the SUDO_PROMPT
1408   environment variable will now override "username's Password:"
1409   as well as the more common "Password:".  Previously, the
1410   "passprompt_override" Defaults setting would need to be set for
1411   SUDO_PROMPT to override a prompt of "username's Password:".
1412
1413 * A new "syslog_pid" sudoers setting has been added to include
1414   sudo's process ID along with the process name when logging via
1415   syslog.  Bug #792.
1416
1417 * Fixed a bug introduced in sudo 1.8.18 where a command would
1418   not be terminated when the I/O logging plugin returned an error
1419   to the sudo front-end.
1420
1421 * A new "timestamp_type" sudoers setting has been added that replaces
1422   the "tty_tickets" option.  In addition to tty and global time stamp
1423   records, it is now possible to use the parent process ID to restrict
1424   the time stamp to commands run by the same process, usually the shell.
1425   Bug #793.
1426
1427 * The --preserve-env command line option has been extended to accept
1428   a comma-separated list of environment variables to preserve.
1429   Bug #279.
1430
1431 * Friulian translation for sudo from translationproject.org.
1432
1433What's new in Sudo 1.8.20p2
1434
1435 * Fixed a bug parsing /proc/pid/stat on Linux when the process
1436   name contains newlines.  This is not exploitable due to the /dev
1437   traversal changes in sudo 1.8.20p1.
1438
1439What's new in Sudo 1.8.20p1
1440
1441 * Fixed "make check" when using OpenSSL or GNU crypt.
1442   Bug #787.
1443
1444 * Fixed CVE-2017-1000367, a bug parsing /proc/pid/stat on Linux
1445   when the process name contains spaces.  Since the user has control
1446   over the command name, this could potentially be used by a user
1447   with sudo access to overwrite an arbitrary file on systems with
1448   SELinux enabled.  Also stop performing a breadth-first traversal
1449   of /dev when looking for the device; only a hard-coded list of
1450   directories are checked,
1451
1452What's new in Sudo 1.8.20
1453
1454 * Added support for SASL_MECH in ldap.conf. Bug #764
1455
1456 * Added support for digest matching when the command is a glob-style
1457   pattern or a directory. Previously, only explicit path matches
1458   supported digest checks.
1459
1460 * New "fdexec" Defaults option to control whether a command
1461   is executed by path or by open file descriptor.
1462
1463 * The embedded copy of zlib has been upgraded to version 1.2.11.
1464
1465 * Fixed a bug that prevented sudoers include files with a relative
1466   path starting with the letter 'i' from being opened.  Bug #776.
1467
1468 * Added support for command timeouts in sudoers.  The command will
1469   be terminated if the timeout expires.
1470
1471 * The SELinux role and type are now displayed in the "sudo -l"
1472   output for the LDAP and SSSD back-ends, just as they are in the
1473   sudoers back-end.
1474
1475 * A new command line option, -T, can be used to specify a command
1476   timeout as long as the user-specified timeout is not longer than
1477   the timeout specified in sudoers.  This option may only be
1478   used when the "user_command_timeouts" flag is enabled in sudoers.
1479
1480 * Added NOTBEFORE and NOTAFTER command options to the sudoers
1481   back-end similar to what is already available in the LDAP back-end.
1482
1483 * Sudo can now optionally use the SHA2 functions in OpenSSL or GNU
1484   crypt instead of the SHA2 implementation bundled with sudo.
1485
1486 * Fixed a compilation error on systems without the stdbool.h header
1487   file.  Bug #778.
1488
1489 * Fixed a compilation error in the standalone Kerberos V authentication
1490   module.  Bug #777.
1491
1492 * Added the iolog_flush flag to sudoers which causes I/O log data
1493   to be written immediately to disk instead of being buffered.
1494
1495 * I/O log files are now created with group ID 0 by default unless
1496   the "iolog_user" or "iolog_group" options are set in sudoers.
1497
1498 * It is now possible to store I/O log files on an NFS-mounted
1499   file system where uid 0 is remapped to an unprivileged user.
1500   The "iolog_user" option must be set to a non-root user and the
1501   top-level I/O log directory must exist and be owned by that user.
1502
1503 * Added the restricted_env_file setting to sudoers which is similar
1504   to env_file but its contents are subject to the same restrictions
1505   as variables in the invoking user's environment.
1506
1507 * Fixed a use after free bug in the SSSD back-end when the fqdn
1508   sudoOption is enabled and no hostname value is present in
1509   /etc/sssd/sssd.conf.
1510
1511 * Fixed a typo that resulted in a compilation error on systems
1512   where the killpg() function is not found by configure.
1513
1514 * Fixed a compilation error with the included version of zlib
1515   when sudo was built outside the source tree.
1516
1517 * Fixed the exit value of sudo when the command is terminated by
1518   a signal other than SIGINT.  This was broken in sudo 1.8.15 by
1519   the fix for Bug #722.  Bug #784.
1520
1521 * Fixed a regression introduced in sudo 1.8.18 where the "lecture"
1522   option could not be used in a positive boolean context, only
1523   a negative one.
1524
1525 * Fixed an issue where sudo would consume stdin if it was not
1526   connected to a tty even if log_input is not enabled in sudoers.
1527   Bug #786.
1528
1529 * Clarify in the sudoers manual that the #includedir directive
1530   diverts control to the files in the specified directory and,
1531   when parsing of those files is complete, returns control to the
1532   original file.  Bug #775.
1533
1534What's new in Sudo 1.8.19p2
1535
1536 * Fixed a crash in visudo introduced in sudo 1.8.9 when an IP address
1537   or network is used in a host-based Defaults entry.  Bug #766
1538
1539 * Added a missing check for the ignore_iolog_errors flag when
1540   the sudoers plugin generates the I/O log file path name.
1541
1542 * Fixed a typo in sudo's vsyslog() replacement that resulted in
1543   garbage being logged to syslog.
1544
1545What's new in Sudo 1.8.19p1
1546
1547 * Fixed a bug introduced in sudo 1.8.19 that resulted in the wrong
1548   syslog priority and facility being used.
1549
1550What's new in Sudo 1.8.19
1551
1552 * New "syslog_maxlen" Defaults option to control the maximum size of
1553   syslog messages generated by sudo.
1554
1555 * Sudo has been run against PVS-Studio and any issues that were
1556   not false positives have been addressed.
1557
1558 * I/O log files are now created with the same group ID as the
1559   parent directory and not the invoking user's group ID.
1560
1561 * I/O log permissions and ownership are now configurable via the
1562   "iolog_mode", "iolog_user" and "iolog_group" sudoers Defaults
1563   variables.
1564
1565 * Fixed configuration of the sudoers I/O log plugin debug subsystem.
1566   Previously, I/O log information was not being written to the
1567   sudoers debug log.
1568
1569 * Fixed a bug in visudo that broke editing of files in an include
1570   dir that have a syntax error.  Normally, visudo does not edit
1571   those files, but if a syntax error is detected in one, the user
1572   should get a chance to fix it.
1573
1574 * Warnings about unknown or unparsable sudoers Defaults entries now
1575   include the file and line number of the problem.
1576
1577 * Visudo will now use the file and line number information about an
1578   unknown or unparsable Defaults entry to go directly to the file
1579   with the problem.
1580
1581 * Fixed a bug in the sudoers LDAP back-end where a negated sudoHost
1582   entry would prevent other sudoHost entries following it from matching.
1583
1584 * Warnings from visudo about a cycle in an Alias entry now include the
1585   file and line number of the problem.
1586
1587 * In strict mode, visudo will now use the file and line number
1588   information about a cycle in an Alias entry to go directly to the
1589   file with the problem.
1590
1591 * The sudo_noexec.so file is now linked with -ldl on systems that
1592   require it for the wordexp() wrapper.
1593
1594 * Fixed linking of sudo_noexec.so on macOS systems where it must be
1595   a dynamic library and not a module.
1596
1597 * Sudo's "make check" now includes a test for sudo_noexec.so
1598   working.
1599
1600 * The sudo front-end now passes the user's umask to the plugin.
1601   Previously the plugin had to determine this itself.
1602
1603 * Sudoreplay can now display the stdin and ttyin streams when they
1604   are explicitly added to the filter list.
1605
1606 * Fixed a bug introduced in sudo 1.8.17 where the "all" setting
1607   for verifypw and listpw was not being honored.  Bug #762.
1608
1609 * The syslog priority (syslog_goodpri and syslog_badpri) can now
1610   be negated or set to "none" to disable logging of successful or
1611   unsuccessful sudo attempts via syslog.
1612
1613What's new in Sudo 1.8.18p1
1614
1615 * When sudo_noexec.so is used, the WRDE_NOCMD flag is now added
1616   if the wordexp() function is called.  This prevents commands
1617   from being run via wordexp() without disabling it entirely.
1618
1619 * On Linux systems, sudo_noexec.so now uses a seccomp filter to
1620   disable execute access if the kernel supports seccomp.  This is
1621   more robust than the traditional method of using stub functions
1622   that return an error.
1623
1624What's new in Sudo 1.8.18
1625
1626 * The sudoers locale is now set before parsing the sudoers file.
1627   If sudoers_locale is set in sudoers, it is applied before
1628   evaluating other Defaults entries.  Previously, sudoers_locale
1629   was used when evaluating sudoers but not during the initial parse.
1630   Bug #748.
1631
1632 * A missing or otherwise invalid #includedir is now ignored instead
1633   of causing a parse error.
1634
1635 * During "make install", backup files are only used on HP-UX where
1636   it is not possible to unlink a shared object that is in use.
1637   This works around a bug in ldconfig on Linux which could create
1638   links to the backup shared library file instead of the current
1639   one.
1640
1641 * Fixed a bug introduced in 1.8.17 where sudoers entries with long
1642   commands lines could be truncated, preventing a match.  Bug #752.
1643
1644 * The fqdn, runas_default and sudoers_locale Defaults settings are
1645   now applied before any other Defaults settings since they can
1646   change how other Defaults settings are parsed.
1647
1648 * On systems without the O_NOFOLLOW open(2) flag, when the NOFOLLOW
1649   flag is set, sudoedit now checks whether the file is a symbolic link
1650   before opening it as well as after the open.  Bug #753.
1651
1652 * Sudo will now only resolve a user's group IDs to group names
1653   when sudoers includes group-based permissions.  Group lookups
1654   can be expensive on some systems where the group database is
1655   not local.
1656
1657 * If the file system holding the sudo log file is full, allow
1658   the command to run unless the new ignore_logfile_errors Defaults
1659   option is disabled.  Bug #751.
1660
1661 * The ignore_audit_errors and ignore_iolog_errors Defaults options
1662   have been added to control sudo's behavior when it is unable to
1663   write to the audit and I/O logs.
1664
1665 * Fixed a bug introduced in 1.8.17 where the SIGPIPE signal handler
1666   was not being restored when sudo directly executes the command.
1667
1668 * Fixed a bug where "sudo -l command" would indicate that a command
1669   was runnable even when denied by sudoers when using the LDAP or
1670   SSSD back-ends.
1671
1672 * The match_group_by_gid Defaults option has been added to allow
1673   sites where group name resolution is slow and where sudoers only
1674   contains a small number of groups to match groups by group ID
1675   instead of by group name.
1676
1677 * Fixed a bug on Linux where a 32-bit sudo binary could fail with
1678   an "unable to allocate memory" error when run on a 64-bit system.
1679   Bug #755
1680
1681 * When parsing ldap.conf, sudo will now only treat a '#' character
1682   as the start of a comment when it is at the beginning of the
1683   line.
1684
1685 * Fixed a potential crash when auditing is enabled and the audit
1686   function fails with an error.  Bug #756
1687
1688 * Norwegian Nynorsk translation for sudo from translationproject.org.
1689
1690 * Fixed a typo that broke short host name matching when the fqdn
1691   flag is enabled in sudoers.  Bug #757
1692
1693 * Negated sudoHost attributes are now supported by the LDAP and
1694   SSSD back-ends.
1695
1696 * Fixed matching entries in the LDAP and SSSD back-ends when a
1697   RunAsGroup is specified but no RunAsUser is present.
1698
1699 * Fixed "sudo -l" output in the LDAP and SSSD back-ends when a
1700   RunAsGroup is specified but no RunAsUser is present.
1701
1702What's new in Sudo 1.8.17p1
1703
1704 * Fixed a bug introduced in 1.8.17 where the user's groups were
1705   not set on systems that don't use PAM.  Bug #749.
1706
1707What's new in Sudo 1.8.17
1708
1709 * On AIX, if /etc/security/login.cfg has auth_type set to PAM_AUTH
1710   but pam_start(3) fails, fall back to AIX authentication.
1711   Bug #740.
1712
1713 * Sudo now takes all sudoers sources into account when determining
1714   whether or not "sudo -l" or "sudo -v" should prompt for a password.
1715   In other words, if both file and ldap sudoers sources are in
1716   specified in /etc/nsswitch.conf, "sudo -v" will now require that
1717   all entries in both sources be have NOPASSWD (file) or !authenticate
1718   (ldap) in the entries.
1719
1720 * Sudo now ignores SIGPIPE until the command is executed.  Previously,
1721   SIGPIPE was only ignored in a few select places.  Bug #739.
1722
1723 * Fixed a bug introduced in sudo 1.8.14 where (non-syslog) log
1724   file entries were missing the newline when loglinelen is set to
1725   a non-positive number.  Bug #742.
1726
1727 * Unix groups are now set before the plugin session initialization
1728   code is run.  This makes it possible to use dynamic groups with
1729   the Linux-PAM pam_group module.
1730
1731 * Fixed a bug where a debugging statement could dereference a NULL
1732   pointer when looking up a group that doesn't exist.  Bug #743.
1733
1734 * Sudo has been run through the Coverity code scanner.  A number of
1735   minor bugs have been fixed as a result.  None were security issues.
1736
1737 * SELinux support, which was broken in 1.8.16, has been repaired.
1738
1739 * Fixed a bug when logging I/O where all output buffers might not
1740   get flushed at exit.
1741
1742 * Forward slashes are no longer escaped in the JSON output of
1743   "visudo -x".  This was never required by the standard and not
1744   escaping them improves readability of the output.
1745
1746 * Sudo no longer treats PAM_SESSION_ERR as a fatal error when
1747   opening the PAM session.  Other errors from pam_open_session()
1748   are still treated as fatal.  This avoids the "policy plugin
1749   failed session initialization" error message seen on some systems.
1750
1751 * Korean translation for sudo and sudoers from translationproject.org.
1752
1753 * Fixed a bug on AIX where the stack size hard resource limit was
1754   being set to 2GB instead of 4GB on 64-bit systems.
1755
1756 * The SSSD back-end now properly supports "sudo -U otheruser -l".
1757
1758 * The SSSD back-end now uses the value of "ipa_hostname"
1759   from sssd.conf, if specified, when matching the host name.
1760
1761 * Fixed a hang on some systems when the command is being run in
1762   a pty and it failed to execute.
1763
1764 * When performing a wildcard match in sudoers, check for an exact
1765   string match if the user command was fully-qualified (or resolved
1766   via the PATH).  This fixes an issue executing scripts on Linux
1767   when there are multiple wildcard matches with the same base name.
1768   Bug #746.
1769
1770What's new in Sudo 1.8.16
1771
1772 * Fixed a compilation error on Solaris 10 with Stun Studio 12.
1773   Bug #727.
1774
1775 * When preserving variables from the invoking user's environment, if
1776   there are duplicates sudo now only keeps the first instance.
1777
1778 * Fixed a bug that could cause warning mail to be sent in list
1779   mode (sudo -l) for users without sudo privileges when the
1780   LDAP and sssd back-ends are used.
1781
1782 * Fixed a bug that prevented the "mail_no_user" option from working
1783   properly with the LDAP back-end.
1784
1785 * In the LDAP and sssd back-ends, white space is now ignored between
1786   an operator (!, +, +=, -=) when parsing a sudoOption.
1787
1788 * It is now possible to disable Path settings in sudo.conf
1789   by omitting the path name.
1790
1791 * The sudoedit_checkdir Defaults option is now enabled by default
1792   and has been extended.  When editing files with sudoedit, each
1793   directory in the path to be edited is now checked.  If a directory
1794   is writable by the invoking user, symbolic links will not be
1795   followed.  If the parent directory of the file to be edited is
1796   writable, sudoedit will refuse to edit it.
1797   Bug #707.
1798
1799 * The netgroup_tuple Defaults option has been added to enable matching
1800   of the entire netgroup tuple, not just the host or user portion.
1801   Bug #717.
1802
1803 * When matching commands based on the SHA2 digest, sudo will now
1804   use fexecve(2) to execute the command if it is available.  This
1805   fixes a time of check versus time of use race condition when the
1806   directory holding the command is writable by the invoking user.
1807
1808 * On AIX systems, sudo now caches the auth registry string along
1809   with password and group information.  This fixes a potential
1810   problem when a user or group of the same name exists in multiple
1811   auth registries.  For example, local and LDAP.
1812
1813 * Fixed a crash in the SSSD back-end when the invoking user is not
1814   found.  Bug #732.
1815
1816 * Added the --enable-asan configure flag to enable address sanitizer
1817   support.  A few minor memory leaks have been plugged to quiet
1818   the ASAN leak detector.
1819
1820 * The value of _PATH_SUDO_CONF may once again be overridden via
1821   the Makefile.  Bug #735.
1822
1823 * The sudoers2ldif script now handles multiple roles with same name.
1824
1825 * Fixed a compilation error on systems that have the posix_spawn()
1826   and posix_spawnp() functions but an unusable spawn.h header.
1827   Bug #730.
1828
1829 * Fixed support for negating character classes in sudo's version
1830   of the fnmatch() function.
1831
1832 * Fixed a bug in the LDAP and SSSD back-ends that could allow an
1833   unauthorized user to list another user's privileges.  Bug #738.
1834
1835 * The PAM conversation function now works around an ambiguity in the
1836   PAM spec with respect to multiple messages.  Bug #726.
1837
1838What's new in Sudo 1.8.15
1839
1840 * Fixed a bug that prevented sudo from building outside the source tree
1841   on some platforms.  Bug #708.
1842
1843 * Fixed the location of the sssd library in the RHEL/Centos packages.
1844   Bug #710.
1845
1846 * Fixed a build problem on systems that don't implicitly include
1847   sys/types.h from other header files.  Bug #711.
1848
1849 * Fixed a problem on Linux using containers where sudo would ignore
1850   signals sent by a process in a different container.
1851
1852 * Sudo now refuses to run a command if the PAM session module
1853   returns an error.
1854
1855 * When editing files with sudoedit, symbolic links will no longer
1856   be followed by default.  The old behavior can be restored by
1857   enabling the sudoedit_follow option in sudoers or on a per-command
1858   basis with the FOLLOW and NOFOLLOW tags.  Bug #707.
1859
1860 * Fixed a bug introduced in version 1.8.14 that caused the last
1861   valid editor in the sudoers "editor" list to be used by visudo
1862   and sudoedit instead of the first.  Bug #714.
1863
1864 * Fixed a bug in visudo that prevented the addition of a final
1865   newline to edited files without one.
1866
1867 * Fixed a bug decoding certain base64 digests in sudoers when the
1868   intermediate format included a '=' character.
1869
1870 * Individual records are now locked in the time stamp file instead
1871   of the entire file.  This allows sudo to avoid prompting for a
1872   password multiple times on the same terminal when used in a
1873   pipeline.  In other words, "sudo cat foo | sudo grep bar" now
1874   only prompts for the password once.  Previously, both sudo
1875   processes would prompt for a password, often making it impossible
1876   to enter.
1877
1878 * Fixed a bug where sudo would fail to run commands as a non-root
1879   user on systems that lack both setresuid() and setreuid().
1880   Bug #713.
1881
1882 * Fixed a bug introduced in sudo 1.8.14 that prevented visudo from
1883   re-editing the correct file when a syntax error was detected.
1884
1885 * Fixed a bug where sudo would not relay a SIGHUP signal to the
1886   command when the terminal is closed and the command is not run
1887   in its own pseudo-tty.  Bug #719
1888
1889 * If some, but not all, of the LOGNAME, USER or USERNAME environment
1890   variables have been preserved from the invoking user's environment,
1891   sudo will now use the preserved value to set the remaining variables
1892   instead of using the runas user.  This ensures that if, for example,
1893   only LOGNAME is present in the env_keep list, that sudo will not
1894   set USER and USERNAME to the runas user.
1895
1896*  When the command sudo is running dies due to a signal, sudo will
1897   now send itself that same signal with the default signal handler
1898   installed instead of exiting.  The bash shell appears to ignore
1899   some signals, e.g. SIGINT, unless the command being run is killed
1900   by that signal.  This makes the behavior of commands run under
1901   sudo the same as without sudo when bash is the shell.  Bug #722
1902
1903 * Slovak translation for sudo from translationproject.org.
1904
1905 * Hungarian and Slovak translations for sudoers from translationproject.org.
1906
1907 * Previously, when env_reset was enabled (the default) and the -s
1908   option was not used, the SHELL environment variable was set to the
1909   shell of the invoking user.  Now, when env_reset is enabled and
1910   the -s option is not used, SHELL is set based on the target user.
1911
1912 * Fixed challenge/response style BSD authentication.
1913
1914 * Added the sudoedit_checkdir Defaults option to prevent sudoedit
1915   from editing files located in a directory that is writable by
1916   the invoking user.
1917
1918 * Added the always_query_group_plugin Defaults option to control
1919   whether groups not found in the system group database are passed
1920   to the group plugin.  Previously, unknown system groups were
1921   always passed to the group plugin.
1922
1923 * When creating a new file, sudoedit will now check that the file's
1924   parent directory exists before running the editor.
1925
1926 * Fixed the compiler stack protector test in configure for compilers
1927   that support -fstack-protector but don't actually have the ssp
1928   library available.
1929
1930What's new in Sudo 1.8.14p3
1931
1932 * Fixed a bug introduced in sudo 1.8.14p2 that prevented sudo
1933   from working when no tty was present.
1934
1935 * Fixed tty detection on newer AIX systems where dev_t is 64-bit.
1936
1937What's new in Sudo 1.8.14p2
1938
1939 * Fixed a bug introduced in sudo 1.8.14 that prevented the lecture
1940   file from being created.  Bug #704.
1941
1942What's new in Sudo 1.8.14p1
1943
1944 * Fixed a bug introduced in sudo 1.8.14 that prevented the sssd
1945   back-end from working.  Bug #703.
1946
1947What's new in Sudo 1.8.14
1948
1949 * Log messages on Mac OS X now respect sudoers_locale when sudo
1950   is build with NLS support.
1951
1952 * The sudo manual pages now pass "mandoc -Tlint" with no warnings.
1953
1954 * Fixed a compilation problem on systems with the sig2str() function
1955   that do not define SIG2STR_MAX in signal.h.
1956
1957 * Worked around a compiler bug that resulted in unexpected behavior
1958   when returning an int from a function declared to return bool
1959   without an explicit cast.
1960
1961 * Worked around a bug in Mac OS X 10.10 BSD auditing where the
1962   au_preselect() fails for AUE_sudo events but succeeds for
1963   AUE_DARWIN_sudo.
1964
1965 * Fixed a hang on Linux systems with glibc when sudo is linked with
1966   jemalloc.
1967
1968 * When the user runs a command as a user ID that is not present in
1969   the password database via the -u flag, the command is now run
1970   with the group ID of the invoking user instead of group ID 0.
1971
1972 * Fixed a compilation problem on systems that don't pull in
1973   definitions of uid_t and gid_t without sys/types.h or unistd.h.
1974
1975 * Fixed a compilation problem on newer AIX systems which use a
1976   struct st_timespec for time stamps in struct stat that differs
1977   from struct timespec.  Bug #702.
1978
1979 * The example directory is now configurable via --with-exampledir
1980   and defaults to DATAROOTDIR/examples/sudo on BSD systems.
1981
1982 * The /usr/lib/tmpfiles.d/sudo.conf file is now installed as part
1983   of "make install" when systemd is in use.
1984
1985 * Fixed a linker problem on some systems with libintl.  Bug #690.
1986
1987 * Fixed compilation with compilers that don't support __func__
1988   or __FUNCTION__.
1989
1990 * Sudo no longer needs to uses weak symbols to support localization
1991   in the warning functions.  A registration function is used instead.
1992
1993 * Fixed a setresuid() failure in sudoers on Linux kernels where
1994   uid changes take the nproc resource limit into account.
1995
1996 * Fixed LDAP netgroup queries on AIX.
1997
1998 * Sudo will now display the custom prompt on Linux systems with PAM
1999   even if the "Password: " prompt is not localized by the PAM module.
2000   Bug #701.
2001
2002 * Double-quoted values in an LDAP sudoOption are now supported
2003   for consistency with file-based sudoers.
2004
2005 * Fixed a bug that prevented the btime entry in /proc/stat from
2006   being parsed on Linux.
2007
2008What's new in Sudo 1.8.13
2009
2010 * The examples directory is now a subdirectory of the doc dir to
2011   conform to Debian guidelines.  Bug #682.
2012
2013 * Fixed a compilation error for siglist.c and signame.c on some
2014   systems.  Bug #686
2015
2016 * Weak symbols are now used for sudo_warn_gettext() and
2017   sudo_warn_strerror() in libsudo_util to avoid link errors when
2018   -Wl,--no-undefined is used in LDFLAGS.  The --disable-weak-symbols
2019   configure option can be used to disable the user of weak symbols.
2020
2021 * Fixed a bug in sudo's mkstemps() replacement function that
2022   prevented the file extension from being preserved in sudoedit.
2023
2024 * A new mail_all_cmnds sudoers flag will send mail when a user runs
2025   a command (or tries to). The behavior of the mail_always flag has
2026   been restored to always send mail when sudo is run.
2027
2028 * New "MAIL" and "NOMAIL" command tags have been added to toggle
2029   mail sending behavior on a per-command (or Cmnd_Alias) basis.
2030
2031 * Fixed matching of empty passwords when sudo is configured to
2032   use passwd (or shadow) file authentication on systems where the
2033   crypt() function returns NULL for invalid salts.
2034
2035 * On AIX, sudo now uses the value of the auth_type setting in
2036   /etc/security/login.cfg to determine whether to use LAM or PAM
2037   for user authentication.
2038
2039 * The "all" setting for listpw and verifypw now works correctly
2040   with LDAP and sssd sudoers.
2041
2042 * The sudo timestamp directory is now created at boot time on
2043   platforms that use systemd.
2044
2045 * Sudo will now restore the value of the SIGPIPE handler before
2046   executing the command.
2047
2048 * Sudo now uses "struct timespec" instead of "struct timeval" for
2049   time keeping when possible.  If supported, sudoedit and visudo
2050   now use nanosecond granularity time stamps.
2051
2052 * Fixed a symbol name collision with systems that have their own
2053   SHA2 implementation.  This fixes a problem where PAM could use
2054   the wrong SHA2 implementation on Solaris 10 systems configured
2055   to use SHA512 for passwords.
2056
2057 * The editor invoked by sudoedit once again uses an unmodified
2058   copy of the user's environment as per the documentation.  This
2059   was inadvertently changed in sudo 1.8.0.  Bug #688.
2060
2061What's new in Sudo 1.8.12
2062
2063 * The embedded copy of zlib has been upgraded to version 1.2.8 and
2064   is now installed as a shared library where supported.
2065
2066 * Debug settings for the sudo front end and sudoers plugin are now
2067   configured separately.
2068
2069 * Multiple sudo.conf Debug entries may now be specified per program
2070   (or plugin).
2071
2072 * The plugin API has been extended such that the path to the plugin
2073   that was loaded is now included in the settings array.  This
2074   path can be used to register with the debugging subsystem.  The
2075   debug_flags setting is now prefixed with a file name and may be
2076   specified multiple times if there is more than one matching Debug
2077   setting in sudo.conf.
2078
2079 * The sudoers regression tests now run with the locale set to C
2080   since some of the tests compare output that includes locale-specific
2081   messages.  Bug #672
2082
2083 * Fixed a bug where sudo would not run commands on Linux when
2084   compiled with audit support if audit is disabled.  Bug #671
2085
2086 * Added __BASH_FUNC<* to the environment blacklist to match
2087   Apple's syntax for newer-style bash functions.
2088
2089 * The default password prompt now includes a trailing space after
2090   "Password:" for consistency with su(1) on most systems.
2091   Bug #663
2092
2093 * Fixed a problem on DragonFly BSD where SIGCHLD could be ignored,
2094   preventing sudo from exiting.  Bug #676
2095
2096 * Visudo will now use the optional sudoers_file, sudoers_mode,
2097   sudoers_uid and sudoers_gid arguments if specified on the
2098   sudoers.so Plugin line in the sudo.conf file.
2099
2100 * Fixed a problem introduced in sudo 1.8.8 that prevented the full
2101   host name from being used when the "fqdn" sudoers option is used.
2102   Bug #678
2103
2104 * French and Russian translations for sudoers from translationproject.org.
2105
2106 * Sudo now installs a handler for SIGCHLD signal handler immediately
2107   before stating the process that will execute the command (or
2108   start the monitor).  The handler used to be installed earlier
2109   but this causes problems with poorly behaved PAM modules that
2110   install their own SIGCHLD signal handler and neglect to restore
2111   sudo's original handler.  Bug #657
2112
2113 * Removed a limit on the length of command line arguments expanded
2114   by a wild card using sudo's version of the fnmatch() function.
2115   This limit was introduced when sudo's version of fnmatch()
2116   was replaced in sudo 1.8.4.
2117
2118 * LDAP-based sudoers can now query an LDAP server for a user's
2119   netgroups directly.  This is often much faster than fetching
2120   every sudoRole object containing a sudoUser that begins with a
2121   `+' prefix and checking whether the user is a member of any of
2122   the returned netgroups.
2123
2124 * The mail_always sudoers option no longer sends mail for "sudo -l"
2125   or "sudo -v" unless the user is unable to authenticate themselves.
2126
2127 * Fixed a crash when sudo is run with an empty argument vector.
2128
2129 * Fixed two potential crashes when sudo is run with very low
2130   resource limits.
2131
2132 * The TZ environment variable is now checked for safety instead
2133   of simply being copied to the environment of the command.
2134
2135What's new in Sudo 1.8.11p2
2136
2137 * Fixed a bug where dynamic shared objects loaded from a plugin
2138   could use the hooked version of getenv() but not the hooked
2139   versions of putenv(), setenv() or unsetenv().  This can cause
2140   problems for PAM modules that use those functions.
2141
2142What's new in Sudo 1.8.11p1
2143
2144 * Fixed a compilation problem on some systems when the
2145   --disable-shared-libutil configure option was specified.
2146
2147 * The user can no longer interrupt the sleep after an incorrect
2148   password on PAM systems using pam_unix.
2149   Bug #666
2150
2151 * Fixed a compilation problem on Linux systems that do not use PAM.
2152   Bug #667
2153
2154 * "make install" will now work with the stock GNU autotools
2155   install-sh script.  Bug #669
2156
2157 * Fixed a crash with "sudo -i" when the current working directory
2158   does not exist.  Bug #670
2159
2160 * Fixed a potential crash in the debug subsystem when logging a message
2161   larger that 1024 bytes.
2162
2163 * Fixed a "make check" failure for ttyname when stdin is closed and
2164   stdout and stderr are redirected to a different tty.  Bug #643
2165
2166 * Added BASH_FUNC_* to the environment blacklist to match newer-style
2167   bash functions.
2168
2169What's new in Sudo 1.8.11
2170
2171 * The sudoers plugin no longer uses setjmp/longjmp to recover
2172   from fatal errors.  All errors are now propagated to the caller
2173   via return codes.
2174
2175 * When running a command in the background, sudo will now forward
2176   SIGINFO to the command (if supported).
2177
2178 * Sudo will now use the system versions of the sha2 functions from
2179   libc or libmd if available.
2180
2181 * Visudo now works correctly on GNU Hurd.  Bug #647
2182
2183 * Fixed suspend and resume of curses programs on some system when
2184   the command is not being run in a pseudo-terminal.  Bug #649
2185
2186 * Fixed a crash with LDAP-based sudoers on some systems when
2187   Kerberos was enabled.
2188
2189 * Sudo now includes optional Solaris audit support.
2190
2191 * Catalan translation for sudoers from translationproject.org.
2192
2193 * Norwegian Bokmaal translation for sudo from translationproject.org.
2194
2195 * Greek translation for sudoers from translationproject.org
2196
2197 * The sudo source tree has been reorganized to more closely resemble
2198   that of other gettext-enabled packages.
2199
2200 * Sudo and its associated programs now link against a shared version
2201   of libsudo_util.  The --disable-shared-libutil configure option
2202   may be used to force static linking if the --enable-static-sudoers
2203   option is also specified.
2204
2205 * The passwords in ldap.conf and ldap.secret may now be encoded
2206   in base64.
2207
2208 * Audit updates.  SELinux role changes are now audited.  For
2209   sudoedit, we now audit the actual editor being run, instead of
2210   just the sudoedit command.
2211
2212 * Fixed bugs in the man page post-processing that could cause
2213   portions of the manuals to be removed.
2214
2215 * Fixed a crash in the system_group plugin.  Bug #653.
2216
2217 * Fixed sudoedit on platforms without a system version of the
2218   getprogname() function.  Bug #654.
2219
2220 * Fixed compilation problems with some pre-C99 compilers.
2221
2222 * Fixed sudo's -C option which was broken in version 1.8.9.
2223
2224 * It is now possible to match an environment variable's value as
2225   well as its name using env_keep and env_check.  This can be used
2226   to preserve bash functions which would otherwise be removed from
2227   the environment.
2228
2229 * New files created via sudoedit as a non-root user now have the
2230   proper group id.  Bug #656
2231
2232 * Sudoedit now works correctly in conjunction with sudo's SELinux
2233   RBAC support.  Temporary files are now created with the proper
2234   security context.
2235
2236 * The sudo I/O logging plugin API has been updated.  If a logging
2237   function returns an error, the command will be terminated and
2238   all of the plugin's logging functions will be disabled.  If a
2239   logging function rejects the command's output it will no longer
2240   be displayed to the user's terminal.
2241
2242 * Fixed a compilation error on systems that lack openpty(), _getpty()
2243   and grantpt(). Bug #660
2244
2245 * Fixed a hang when a sudoers source is listed more than once in
2246   a single sudoers nsswitch.conf entry.
2247
2248 * On AIX, shell scripts without a #! magic number are now passed to
2249   /usr/bin/sh, not /usr/bin/bsh.  This is consistent with what the
2250   execvp() function on AIX does and matches historic sudo behavior.
2251   Bug #661
2252
2253 * Fixed a cross-compilation problem building mksiglist and mksigname.
2254   Bug #662
2255
2256What's new in Sudo 1.8.10p3?
2257
2258 * Fixed expansion of %p in the prompt for "sudo -l" when rootpw,
2259   runaspw or targetpw is set.  Bug #639
2260
2261 * Fixed matching of UIDs and GIDs which was broken in version 1.8.9.
2262   Bug #640
2263
2264 * PAM credential initialization has been re-enabled.  It was
2265   unintentionally disabled by default in version 1.8.8.  The way
2266   credentials are initialized has also been fixed.  Bug #642.
2267
2268 * Fixed a descriptor leak on Linux when determining boot time.  Sudo
2269   normally closes extra descriptors before running a command so
2270   the impact is limited.  Bug #645
2271
2272 * Fixed flushing of the last buffer of data when I/O logging is
2273   enabled.  This bug, introduced in version 1.8.9, could cause
2274   incomplete command output on some systems.  Bug #646
2275
2276What's new in Sudo 1.8.10p2?
2277
2278 * Fixed a hang introduced in sudo 1.8.10 when timestamp_timeout
2279   is set to zero.
2280
2281What's new in Sudo 1.8.10p1?
2282
2283 * Fixed a bug introduced in sudo 1.8.10 that prevented the disabling
2284   of tty-based tickets.
2285
2286 * Fixed a bug with negated commands in "sudo -l command" that
2287   could cause the command to be listed even when it was explicitly
2288   denied.  This only affected list mode when a command was specified.
2289   Bug #636
2290
2291What's new in Sudo 1.8.10?
2292
2293 * It is now possible to disable network interface probing in
2294   sudo.conf by changing the value of the probe_interfaces
2295   setting.
2296
2297 * When listing a user's privileges (sudo -l), the sudoers plugin
2298   will now prompt for the user's password even if the targetpw,
2299   rootpw or runaspw options are set.
2300
2301 * The sudoers plugin uses a new format for its time stamp files.
2302   Each user now has a single file which may contain multiple records
2303   when per-tty time stamps are in use (the default).  The time
2304   stamps use a monotonic timer where available and are once again
2305   located in a directory under /var/run.  The lecture status is
2306   now stored separately from the time stamps in a different directory.
2307   Bug #616
2308
2309 * sudo's -K option will now remove all of the user's time stamps,
2310   not just the time stamp for the current terminal.  The -k option
2311   can be used to only disable time stamps for the current terminal.
2312
2313 * If sudo was started in the background and needed to prompt for
2314   a password, it was not possible to suspend it at the password
2315   prompt.  This now works properly.
2316
2317 * LDAP-based sudoers now uses a default search filter of
2318   (objectClass=sudoRole) for more efficient queries.  The netgroup
2319   query has been modified to avoid falling below the minimum length
2320   for OpenLDAP substring indices.
2321
2322 * The new "use_netgroups" sudoers option can be used to explicitly
2323   enable or disable netgroups support.  For LDAP-based sudoers,
2324   netgroup support requires an expensive substring match on the
2325   server.  If netgroups are not needed, this option can be disabled
2326   to reduce the load on the LDAP server.
2327
2328 * Sudo is once again able to open the sudoers file when the group
2329   on sudoers doesn't match the expected value, so long as the file
2330   is not group writable.
2331
2332 * Sudo now installs an init.d script to clear the time stamp
2333   directory at boot time on AIX and HP-UX systems.  These systems
2334   either lack /var/run or do not clear it on boot.
2335
2336 * The JSON format used by "visudo -x" now properly supports the
2337   negation operator.  In addition, the Options object is now the
2338   same for both Defaults and Cmnd_Specs.
2339
2340 * Czech and Serbian translations for sudoers from translationproject.org.
2341
2342 * Catalan translation for sudo from translationproject.org.
2343
2344What's new in Sudo 1.8.9p5?
2345
2346 * Fixed a compilation error on AIX when LDAP support is enabled.
2347
2348 * Fixed parsing of the "umask" defaults setting in sudoers.  Bug #632.
2349
2350 * Fixed a failed assertion when the "closefrom_override" defaults
2351   setting is enabled in sudoers and sudo's -C flag is used.  Bug #633.
2352
2353What's new in Sudo 1.8.9p4?
2354
2355 * Fixed a bug where sudo could consume large amounts of CPU while
2356   the command was running when I/O logging is not enabled.  Bug #631
2357
2358 * Fixed a bug where sudo would exit with an error when the debug
2359   level is set to util@debug or all@debug and I/O logging is not
2360   enabled.  The command would continue running after sudo exited.
2361
2362What's new in Sudo 1.8.9p3?
2363
2364 * Fixed a bug introduced in sudo 1.8.9 that prevented the tty name
2365   from being resolved properly on Linux systems.  Bug #630.
2366
2367What's new in Sudo 1.8.9p2?
2368
2369 * Updated config.guess, config.sub and libtool to support the ppc64le
2370   architecture (IBM PowerPC Little Endian).
2371
2372What's new in Sudo 1.8.9p1?
2373
2374 * Fixed a problem with gcc 4.8's handling of bit fields that could
2375   lead to the noexec flag being enabled even when it was not
2376   explicitly set.
2377
2378What's new in Sudo 1.8.9?
2379
2380 * Reworked sudo's main event loop to use a simple event subsystem
2381   using poll(2) or select(2) as the back end.
2382
2383 * It is now possible to statically compile the sudoers plugin into
2384   the sudo binary without disabling shared library support.  The
2385   sudo.conf file may still be used to configure other plugins.
2386
2387 * Sudo can now be compiled again with a C preprocessor that does
2388   not support variadic macros.
2389
2390 * Visudo can now export a sudoers file in JSON format using the
2391   new -x flag.
2392
2393 * The locale is now set correctly again for visudo and sudoreplay.
2394
2395 * The plugin API has been extended to allow the plugin to exclude
2396   specific file descriptors from the "closefrom" range.
2397
2398 * There is now a workaround for a Solaris-specific problem where
2399   NOEXEC was overriding traditional root DAC behavior.
2400
2401 * Add user netgroup filtering for SSSD. Previously, rules for
2402   a netgroup were applied to all even when they did not belong
2403   to the specified netgroup.
2404
2405 * On systems with BSD login classes, if the user specified a group
2406   (not a user) to run the command as, it was possible to specify
2407   a different login class even when the command was not run as the
2408   super user.
2409
2410 * The closefrom() emulation on Mac OS X now uses /dev/fd if possible.
2411
2412 * Fixed a bug where sudoedit would not update the original file
2413   from the temporary when PAM or I/O logging is not enabled.
2414
2415 * When recycling I/O logs, the log files are now truncated properly.
2416
2417 * Fixes bugs #617, #621, #622, #623, #624, #625, #626
2418
2419What's new in Sudo 1.8.8?
2420
2421 * Removed a warning on PAM systems with stacked auth modules
2422   where the first module on the stack does not succeed.
2423
2424 * Sudo, sudoreplay and visudo now support GNU-style long options.
2425
2426 * The -h (--host) option may now be used to specify a host name.
2427   This is currently only used by the sudoers plugin in conjunction
2428   with the -l (--list) option.
2429
2430 * Program usage messages and manual SYNOPSIS sections have been
2431   simplified.
2432
2433 * Sudo's LDAP SASL support now works properly with Kerberos.
2434   Previously, the SASL library was unable to locate the user's
2435   credential cache.
2436
2437 * It is now possible to set the nproc resource limit to unlimited
2438   via pam_limits on Linux (bug #565).
2439
2440 * New "pam_service" and "pam_login_service" sudoers options
2441   that can be used to specify the PAM service name to use.
2442
2443 * New "pam_session" and "pam_setcred" sudoers options that
2444   can be used to disable PAM session and credential support.
2445
2446 * The sudoers plugin now properly supports UIDs and GIDs
2447   that are larger than 0x7fffffff on 32-bit platforms.
2448
2449 * Fixed a visudo bug introduced in sudo 1.8.7 where per-group
2450   Defaults entries would cause an internal error.
2451
2452 * If the "tty_tickets" sudoers option is enabled (the default),
2453   but there is no tty present, sudo will now use a ticket file
2454   based on the parent process ID.  This makes it possible to support
2455   the normal timeout behavior for the session.
2456
2457 * Fixed a problem running commands that change their process
2458   group and then attempt to change the terminal settings when not
2459   running the command in a pseudo-terminal.  Previously, the process
2460   would receive SIGTTOU since it was effectively a background
2461   process.  Sudo will now grant the child the controlling tty and
2462   continue it when this happens.
2463
2464 * The "closefrom_override" sudoers option may now be used in
2465   a command-specified Defaults entry (bug #610).
2466
2467 * Sudo's BSM audit support now works on Solaris 11.
2468
2469 * Brazilian Portuguese translation for sudo and sudoers from
2470   translationproject.org.
2471
2472 * Czech translation for sudo from translationproject.org.
2473
2474 * French translation for sudo from translationproject.org.
2475
2476 * Sudo's noexec support on Mac OS X 10.4 and above now uses dynamic
2477   symbol interposition instead of setting DYLD_FORCE_FLAT_NAMESPACE=1
2478   which causes issues with some programs.
2479
2480 * Fixed visudo's -q (--quiet) flag, broken in sudo 1.8.6.
2481
2482 * Root may no longer change its SELinux role without entering
2483   a password.
2484
2485 * Fixed a bug introduced in Sudo 1.8.7 where the indexes written
2486   to the I/O log timing file are two greater than they should be.
2487   Sudoreplay now contains a work-around to parse those files.
2488
2489 * In sudoreplay's list mode, the "this" qualifier in "fromdate"
2490   or "todate" expressions now behaves more sensibly.  Previously,
2491   it would often match a date that was "one more" than expected.
2492   For example, "this week" now matches the current week instead
2493   of the following week.
2494
2495What's new in Sudo 1.8.7?
2496
2497 * The non-Unix group plugin is now supported when sudoers data
2498   is stored in LDAP.
2499
2500 * Sudo now uses a workaround for a locale bug on Solaris 11.0
2501   that prevents setuid programs like sudo from fully using locales.
2502
2503 * User messages are now always displayed in the user's locale,
2504   even when the same message is being logged or mailed in a
2505   different locale.
2506
2507 * Log files created by sudo now explicitly have the group set
2508   to group ID 0 rather than relying on BSD group semantics (which
2509   may not be the default).
2510
2511 * A new "exec_background" sudoers option can be used to initially
2512   run the command without read access to the terminal when running
2513   a command in a pseudo-tty.  If the command tries to read from
2514   the terminal it will be stopped by the kernel (via SIGTTIN or
2515   SIGTTOU) and sudo will immediately restart it as the foreground
2516   process (if possible).  This allows sudo to only pass terminal
2517   input to the program if the program actually is expecting it.
2518   Unfortunately, a few poorly-behaved programs (like "su" on most
2519   Linux systems) do not handle SIGTTIN and SIGTTOU properly.
2520
2521 * Sudo now uses an efficient group query to get all the groups
2522   for a user instead of iterating over every record in the group
2523   database on HP-UX and Solaris.
2524
2525 * Sudo now produces better error messages when there is an error
2526   in the sudo.conf file.
2527
2528 * Two new settings have been added to sudo.conf to give the admin
2529   better control of how group database queries are performed.  The
2530   "group_source" specifies how the group list for a user will be
2531   determined.  Legal values are "static" (use the kernel groups
2532   list), "dynamic" (perform a group database query) and "adaptive"
2533   (only perform a group database query if the kernel list is full).
2534   The "max_groups" setting specifies the maximum number of groups
2535   a user may belong to when performing a group database query.
2536
2537 * The sudo.conf file now supports line continuation by using a
2538   backslash as the last character on the line.
2539
2540 * There is now a standalone sudo.conf manual page.
2541
2542 * Sudo now stores its libexec files in a "sudo" sub-directory instead
2543   of in libexec itself. For backward compatibility, if the plugin
2544   is not found in the default plugin directory, sudo will check
2545   the parent directory if the default directory ends in "/sudo".
2546
2547 * The sudoers I/O logging plugin now logs the terminal size.
2548
2549 * A new sudoers option "maxseq" can be used to limit the number of
2550   I/O log entries that are stored.
2551
2552 * The "system_group" and "group_file" sudoers group provider plugins
2553   are now installed by default.
2554
2555 * The list output (sudo -l) output from the sudoers plugin is now
2556   less ambiguous when an entry includes different runas users.
2557   The long list output (sudo -ll) for file-based sudoers is now
2558   more consistent with the format of LDAP-based sudoers.
2559
2560 * A UID may now be used in the sudoRunAsUser attributes for LDAP
2561   sudoers.
2562
2563 * Minor plugin API change: the close and version functions are now
2564   optional.  If the policy plugin does not provide a close function
2565   and the command is not being run in a new pseudo-tty, sudo may
2566   now execute the command directly instead of in a child process.
2567
2568 * A new sudoers option "pam_session" can be used to disable sudo's
2569   PAM session support.
2570
2571 * On HP-UX systems, sudo will now use the pstat() function to
2572   determine the tty instead of ttyname().
2573
2574 * Turkish translation for sudo and sudoers from translationproject.org.
2575
2576 * Dutch translation for sudo and sudoers from translationproject.org.
2577
2578 * Tivoli Directory Server client libraries may now be used with
2579   HP-UX where libibmldap has a hidden dependency on libCsup.
2580
2581 * The sudoers plugin will now ignore invalid domain names when
2582   checking netgroup membership.  Most Linux systems use the string
2583   "(none)" for the NIS-style domain name instead of an empty string.
2584
2585 * New support for specifying a SHA-2 digest along with the command
2586   in sudoers.  Supported hash types are sha224, sha256, sha384 and
2587   sha512.  See the description of Digest_Spec in the sudoers manual
2588   or the description of sudoCommand in the sudoers.ldap manual for
2589   details.
2590
2591 * The paths to ldap.conf and ldap.secret may now be specified as
2592   arguments to the sudoers plugin in the sudo.conf file.
2593
2594 * Fixed potential false positives in visudo's alias cycle detection.
2595
2596 * Fixed a problem where the time stamp file was being treated
2597   as out of date on Linux systems where the change time on the
2598   pseudo-tty device node can change after it is allocated.
2599
2600 * Sudo now only builds Position Independent Executables (PIE)
2601   by default on Linux systems and verifies that a trivial test
2602   program builds and runs.
2603
2604 * On Solaris 11.1 and higher, sudo binaries will now have the
2605   ASLR tag enabled if supported by the linker.
2606
2607What's new in Sudo 1.8.6p8?
2608
2609 * Terminal detection now works properly on 64-bit AIX kernels.
2610   This was broken by the removal of the ttyname() fallback in Sudo
2611   1.8.6p6.  Sudo is now able to map an AIX 64-bit device number
2612   to the corresponding device file in /dev.
2613
2614 * Sudo now checks for crypt() returning NULL when performing
2615   passwd-based authentication.
2616
2617What's new in Sudo 1.8.6p7?
2618
2619 * A time stamp file with the date set to the epoch by "sudo -k"
2620   is now completely ignored regardless of what the local clock is
2621   set to.  Previously, if the local clock was set to a value between
2622   the epoch and the time stamp timeout value, a time stamp reset
2623   by "sudo -k" would be considered current.
2624
2625 * The tty-specific time stamp file now includes the session ID
2626   of the sudo process that created it.  If a process with the same
2627   tty but a different session ID runs sudo, the user will now be
2628   prompted for a password (assuming authentication is required for
2629   the command).
2630
2631What's new in Sudo 1.8.6p6?
2632
2633 * On systems where the controlling tty can be determined via /proc
2634   or sysctl(), sudo will no longer fall back to using ttyname()
2635   if the process has no controlling tty.  This prevents sudo from
2636   using a non-controlling tty for logging and time stamp purposes.
2637
2638What's new in Sudo 1.8.6p5?
2639
2640 * Fixed a potential crash in visudo's alias cycle detection.
2641
2642 * Improved performance on Solaris when retrieving the group list
2643   for the target user.  On systems with a large number of groups
2644   where the group database is not local (NIS, LDAP, AD), fetching
2645   the group list could take a minute or more.
2646
2647What's new in Sudo 1.8.6p4?
2648
2649 * The -fstack-protector is now used when linking visudo, sudoreplay
2650   and testsudoers.
2651
2652 * Avoid building PIE binaries on FreeBSD/ia64 as they don't run
2653   properly.
2654
2655 * Fixed a crash in visudo strict mode when an unknown Defaults
2656   setting is encountered.
2657
2658 * Do not inform the user that the command was not permitted by the
2659   policy if they do not successfully authenticate. This is a
2660   regression introduced in sudo 1.8.6.
2661
2662 * Allow sudo to be build with sss support without also including
2663   ldap support.
2664
2665 * Fixed running commands that need the terminal in the background
2666   when I/O logging is enabled. E.g. "sudo vi &". When the command
2667   is foregrounded, it will now resume properly.
2668
2669What's new in Sudo 1.8.6p3?
2670
2671 * Fixed post-processing of the man pages on systems with legacy
2672   versions of sed.
2673
2674 * Fixed "sudoreplay -l" on Linux systems with file systems that
2675   set DT_UNKNOWN in the d_type field of struct dirent.
2676
2677What's new in Sudo 1.8.6p2?
2678
2679 * Fixed suspending a command after it has already been resumed
2680   once when I/O logging (or use_pty) is not enabled.
2681   This was a regression introduced in version 1.8.6.
2682
2683What's new in Sudo 1.8.6p1?
2684
2685 * Fixed the setting of LOGNAME, USER and USERNAME variables in the
2686   command's environment when env_reset is enabled (the default).
2687   This was a regression introduced in version 1.8.6.
2688
2689 * Sudo now honors SUCCESS=return in /etc/nsswitch.conf.
2690
2691What's new in Sudo 1.8.6?
2692
2693 * Sudo is now built with the -fstack-protector flag if the the
2694   compiler supports it.  Also, the -zrelro linker flag is used if
2695   supported.  The --disable-hardening configure option can be used
2696   to build sudo without stack smashing protection.
2697
2698 * Sudo is now built as a Position Independent Executable (PIE)
2699   if supported by the compiler and linker.
2700
2701 * If the user is a member of the "exempt" group in sudoers, they
2702   will no longer be prompted for a password even if the -k flag
2703   is specified with the command.  This makes "sudo -k command"
2704   consistent with the behavior one would get if the user ran "sudo
2705   -k" immediately before running the command.
2706
2707 * The sudoers file may now be a symbolic link.  Previously, sudo
2708   would refuse to read sudoers unless it was a regular file.
2709
2710 * The sudoreplay command can now properly replay sessions where
2711   no tty was present.
2712
2713 * The sudoers plugin now takes advantage of symbol visibility
2714   controls when supported by the compiler or linker.  As a result,
2715   only a small number of symbols are exported which significantly
2716   reduces the chances of a conflict with other shared objects.
2717
2718 * Improved support for the Tivoli Directory Server LDAP client
2719   libraries.  This includes support for using LDAP over SSL (ldaps)
2720   as well as support for the BIND_TIMELIMIT, TLS_KEY and TLS_CIPHERS
2721   ldap.conf options.  A new ldap.conf option, TLS_KEYPW can be
2722   used to specify a password to decrypt the key database.
2723
2724 * When constructing a time filter for use with LDAP sudoNotBefore
2725   and sudoNotAfter attributes, the current time now includes tenths
2726   of a second.  This fixes a problem with timed entries on Active
2727   Directory.
2728
2729 * If a user fails to authenticate and the command would be rejected
2730   by sudoers, it is now logged with "command not allowed" instead
2731   of "N incorrect password attempts".  Likewise, the "mail_no_perms"
2732   sudoers option now takes precedence over "mail_badpass".
2733
2734 * The sudo manuals are now formatted using the mdoc macros.  Versions
2735   using the legacy man macros are provided for systems that lack mdoc.
2736
2737 * New support for Solaris privilege sets.  This makes it possible
2738   to specify fine-grained privileges in the sudoers file on Solaris
2739   10 and above.  A Runas_Spec that contains no Runas_Lists can be
2740   used to give a user the ability to run a command as themselves
2741   but with an expanded privilege set.
2742
2743 * Fixed a problem with the reboot and shutdown commands on some
2744   systems (such as HP-UX and BSD).  On these systems, reboot sends
2745   all processes (except itself) SIGTERM.  When sudo received
2746   SIGTERM, it would relay it to the reboot process, thus killing
2747   reboot before it had a chance to actually reboot the system.
2748
2749 * Support for using the System Security Services Daemon (SSSD) as
2750   a source of sudoers data.
2751
2752 * Slovenian translation for sudo and sudoers from translationproject.org.
2753
2754 * Visudo will now warn about unknown Defaults entries that are
2755   per-host, per-user, per-runas or per-command.
2756
2757 * Fixed a race condition that could cause sudo to receive SIGTTOU
2758   (and stop) when resuming a shell that was run via sudo when I/O
2759   logging (and use_pty) is not enabled.
2760
2761 * Sending SIGTSTP directly to the sudo process will now suspend the
2762   running command when I/O logging (and use_pty) is not enabled.
2763
2764What's new in Sudo 1.8.5p3?
2765
2766 * Fixed the loading of I/O plugins that conform to a plugin API
2767   version older than 1.2.
2768
2769What's new in Sudo 1.8.5p2?
2770
2771 * Fixed use of the SUDO_ASKPASS environment variable which was
2772   broken in Sudo 1.8.5.
2773
2774 * Fixed a problem reading the sudoers file when the file mode is
2775   more restrictive than the expected mode.  For example, when the
2776   expected sudoers file mode is 0440 but the actual mode is 0400.
2777
2778What's new in Sudo 1.8.5p1?
2779
2780 * Fixed a bug that prevented files in an include directory from
2781   being evaluated.
2782
2783What's new in Sudo 1.8.5?
2784
2785 * When "noexec" is enabled, sudo_noexec.so will now be prepended
2786   to any existing LD_PRELOAD variable instead of replacing it.
2787
2788 * The sudo_noexec.so shared library now wraps the execvpe(),
2789   exect(), posix_spawn() and posix_spawnp() functions.
2790
2791 * The user/group/mode checks on sudoers files have been relaxed.
2792   As long as the file is owned by the sudoers UID, not world-writable
2793   and not writable by a group other than the sudoers GID, the file
2794   is considered OK.  Note that visudo will still set the mode to
2795   the value specified at configure time.
2796
2797 * It is now possible to specify the sudoers path, UID, GID and
2798   file mode as options to the plugin in the sudo.conf file.
2799
2800 * Croatian, Galician, German, Lithuanian, Swedish and Vietnamese
2801   translations from translationproject.org.
2802
2803 * /etc/environment is no longer read directly on Linux systems
2804   when PAM is used.  Sudo now merges the PAM environment into the
2805   user's environment which is typically set by the pam_env module.
2806
2807 * The initial environment created when env_reset is in effect now
2808   includes the contents of /etc/environment on AIX systems and the
2809   "setenv" and "path" entries from /etc/login.conf on BSD systems.
2810
2811 * The plugin API has been extended in three ways.  First, options
2812   specified in sudo.conf after the plugin pathname are passed to
2813   the plugin's open function.  Second, sudo has limited support
2814   for hooks that can be used by plugins.  Currently, the hooks are
2815   limited to environment handling functions.  Third, the init_session
2816   policy plugin function is passed a pointer to the user environment
2817   which can be updated during session setup.  The plugin API version
2818   has been incremented to version 1.2.  See the sudo_plugin manual
2819   for more information.
2820
2821 * The policy plugin's init_session function is now called by the
2822   parent sudo process, not the child process that executes the
2823   command.  This allows the PAM session to be open and closed in
2824   the same process, which some PAM modules require.
2825
2826 * Fixed parsing of "Path askpass" and "Path noexec" in sudo.conf,
2827   which was broken in version 1.8.4.
2828
2829 * On systems with an SVR4-style /proc file system, the /proc/pid/psinfo
2830   file is now uses to determine the controlling terminal, if possible.
2831   This allows tty-based tickets to work properly even when, e.g.
2832   standard input, output and error are redirected to /dev/null.
2833
2834 * The output of "sudoreplay -l" is now sorted by file name (or
2835   sequence number).  Previously, entries were displayed in the
2836   order in which they were found on the file system.
2837
2838 * Sudo now behaves properly when I/O logging is enabled and the
2839   controlling terminal is revoked (e.g. the running sshd is killed).
2840   Previously, sudo may have exited without calling the I/O plugin's
2841   close function which can lead to an incomplete I/O log.
2842
2843 * Sudo can now detect when a user has logged out and back in again
2844   on Solaris 11, just like it can on Solaris 10.
2845
2846 * The built-in zlib included with Sudo has been upgraded to version
2847   1.2.6.
2848
2849 * Setting the SSL parameter to start_tls in ldap.conf now works
2850   properly when using Mozilla-based SDKs that support the
2851   ldap_start_tls_s() function.
2852
2853 * The TLS_CHECKPEER parameter in ldap.conf now works when the
2854   Mozilla NSS crypto back-end is used with OpenLDAP.
2855
2856 * A new group provider plugin, system_group, is included which
2857   performs group look ups by name using the system groups database.
2858   This can be used to restore the pre-1.7.3 sudo group lookup
2859   behavior.
2860
2861What's new in Sudo 1.8.4p5?
2862
2863 * Fixed a bug when matching against an IP address with an associated
2864   netmask in the sudoers file.  In certain circumstances, this
2865   could allow users to run commands on hosts they are not authorized
2866   for.
2867
2868What's new in Sudo 1.8.4p4?
2869
2870 * Fixed a bug introduced in Sudo 1.8.4 which prevented "sudo -v"
2871   from working.
2872
2873What's new in Sudo 1.8.4p3?
2874
2875 * Fixed a crash on FreeBSD when no tty is present.
2876
2877 * Fixed a bug introduced in Sudo 1.8.4 that allowed users to
2878   specify environment variables to set on the command line without
2879   having sudo "ALL" permissions or the "SETENV" tag.
2880
2881 * When visudo is run with the -c (check) option, the sudoers
2882   file(s) owner and mode are now also checked unless the -f option
2883   was specified.
2884
2885What's new in Sudo 1.8.4p2?
2886
2887 * Fixed a bug introduced in Sudo 1.8.4 where insufficient space
2888   was allocated for group IDs in the LDAP filter.
2889
2890 * Fixed a bug introduced in Sudo 1.8.4 where the path to sudo.conf
2891   was "/sudo.conf" instead of "/etc/sudo.conf".
2892
2893 * Fixed a bug introduced in Sudo 1.8.4 which could cause a hang
2894   when I/O logging is enabled and input is from a pipe or file.
2895
2896What's new in Sudo 1.8.4p1?
2897
2898 * Fixed a bug introduced in sudo 1.8.4 that broke adding to or
2899   deleting from the env_keep, env_check and env_delete lists in
2900   sudoers on some platforms.
2901
2902What's new in Sudo 1.8.4?
2903
2904 * The -D flag in sudo has been replaced with a more general debugging
2905   framework that is configured in sudo.conf.
2906
2907 * Fixed a false positive in visudo strict mode when aliases are
2908   in use.
2909
2910 * Fixed a crash with "sudo -i" when a runas group was specified
2911   without a runas user.
2912
2913 * The line on which a syntax error is reported in the sudoers file
2914   is now more accurate.  Previously it was often off by a line.
2915
2916 * Fixed a bug where stack garbage could be printed at the end of
2917   the lecture when the "lecture_file" option was enabled.
2918
2919 * "make install" now honors the LINGUAS environment variable.
2920
2921 * The #include and #includedir directives in sudoers now support
2922   relative paths.  If the path is not fully qualified it is expected
2923   to be located in the same directory of the sudoers file that is
2924   including it.
2925
2926 * Serbian and Spanish translations for sudo from translationproject.org.
2927
2928 * LDAP-based sudoers may now access by group ID in addition to
2929   group name.
2930
2931 * visudo will now fix the mode on the sudoers file even if no changes
2932   are made unless the -f option is specified.
2933
2934 * The "use_loginclass" sudoers option works properly again.
2935
2936 * On systems that use login.conf, "sudo -i" now sets environment
2937   variables based on login.conf.
2938
2939 * For LDAP-based sudoers, values in the search expression are now
2940   escaped as per RFC 4515.
2941
2942 * The plugin close function is now properly called when a login
2943   session is killed (as opposed to the actual command being killed).
2944   This can happen when an ssh session is disconnected or the
2945   terminal window is closed.
2946
2947 * The deprecated "noexec_file" sudoers option is no longer supported.
2948
2949 * Fixed a race condition when I/O logging is not enabled that could
2950   result in tty-generated signals (e.g. control-C) being received
2951   by the command twice.
2952
2953 * If none of the standard input, output or error are connected to
2954   a tty device, sudo will now check its parent's standard input,
2955   output or error for the tty name on systems with /proc and BSD
2956   systems that support the KERN_PROC_PID sysctl.  This allows
2957   tty-based tickets to work properly even when, e.g. standard
2958   input, output and error are redirected to /dev/null.
2959
2960 * Added the --enable-kerb5-instance configure option to allow
2961   people using Kerberos V authentication to specify a custom
2962   instance so the principal name can be, e.g. "username/sudo"
2963   similar to how ksu uses "username/root".
2964
2965 * Fixed a bug where a pattern like "/usr/*" included /usr/bin/ in
2966   the results, which would be incorrectly be interpreted as if the
2967   sudoers file had specified a directory.
2968
2969 * "visudo -c" will now list any include files that were checked
2970   in addition to the main sudoers file when everything parses OK.
2971
2972 * Users that only have read-only access to the sudoers file may
2973   now run "visudo -c".  Previously, write permissions were required
2974   even though no writing is down in check-only mode.
2975
2976 * It is now possible to prevent the disabling of core dumps from
2977   within sudo itself by adding a line to the sudo.conf file like
2978   "Set disable_coredump false".
2979
2980What's new in Sudo 1.8.3p2?
2981
2982 * Fixed a format string vulnerability when the sudo binary (or a
2983   symbolic link to the sudo binary) contains printf format escapes
2984   and the -D (debugging) flag is used.
2985
2986What's new in Sudo 1.8.3p1?
2987
2988 * Fixed a crash in the monitor process on Solaris when NOPASSWD
2989   was specified or when authentication was disabled.
2990
2991 * Fixed matching of a Runas_Alias in the group section of a
2992   Runas_Spec.
2993
2994What's new in Sudo 1.8.3?
2995
2996 * Fixed expansion of strftime() escape sequences in the "log_dir"
2997   sudoers setting.
2998
2999 * Esperanto, Italian and Japanese translations from translationproject.org.
3000
3001 * Sudo will now use PAM by default on AIX 6 and higher.
3002
3003 * Added --enable-werror configure option for gcc's -Werror flag.
3004
3005 * Visudo no longer assumes all editors support the +linenumber
3006   command line argument.  It now uses a allowlist of editors known
3007   to support the option.
3008
3009 * Fixed matching of network addresses when a netmask is specified
3010   but the address is not the first one in the CIDR block.
3011
3012 * The configure script now check whether or not errno.h declares
3013   the errno variable.  Previously, sudo would always declare errno
3014   itself for older systems that don't declare it in errno.h.
3015
3016 * The NOPASSWD tag is now honored for denied commands too, which
3017   matches historic sudo behavior (prior to sudo 1.7.0).
3018
3019 * Sudo now honors the "DEREF" setting in ldap.conf which controls
3020   how alias dereferencing is done during an LDAP search.
3021
3022 * A symbol conflict with the pam_ssh_agent_auth PAM module that
3023   would cause a crash been resolved.
3024
3025 * The inability to load a group provider plugin is no longer
3026   a fatal error.
3027
3028 * A potential crash in the utmp handling code has been fixed.
3029
3030 * Two PAM session issues have been resolved.  In previous versions
3031   of sudo, the PAM session was opened as one user and closed as
3032   another.  Additionally, if no authentication was performed, the
3033   PAM session would never be closed.
3034
3035 * Sudo will now work correctly with LDAP-based sudoers using TLS
3036   or SSL on Debian systems.
3037
3038 * The LOGNAME, USER and USERNAME environment variables are preserved
3039   correctly again in sudoedit mode.
3040
3041What's new in Sudo 1.8.2?
3042
3043 * Sudo, visudo, sudoreplay and the sudoers plug-in now have natural
3044   language support (NLS). This can be disabled by passing configure
3045   the --disable-nls option.  Sudo will use gettext(), if available,
3046   to display translated messages.  All translations are coordinated
3047   via The Translation Project, http://translationproject.org/.
3048
3049 * Plug-ins are now loaded with the RTLD_GLOBAL flag instead of
3050   RTLD_LOCAL.  This fixes missing symbol problems in PAM modules
3051   on certain platforms, such as FreeBSD and SuSE Linux Enterprise.
3052
3053 * I/O logging is now supported for commands run in background mode
3054   (using sudo's -b flag).
3055
3056 * Group ownership of the sudoers file is now only enforced when
3057   the file mode on sudoers allows group readability or writability.
3058
3059 * Visudo now checks the contents of an alias and warns about cycles
3060   when the alias is expanded.
3061
3062 * If the user specifies a group via sudo's -g option that matches
3063   the target user's group in the password database, it is now
3064   allowed even if no groups are present in the Runas_Spec.
3065
3066 * The sudo Makefiles now have more complete dependencies which are
3067   automatically generated instead of being maintained manually.
3068
3069 * The "use_pty" sudoers option is now correctly passed back to the
3070   sudo front end.  This was missing in previous versions of sudo
3071   1.8 which prevented "use_pty" from being honored.
3072
3073 * "sudo -i command" now works correctly with the bash version
3074   2.0 and higher.  Previously, the .bash_profile would not be
3075   sourced prior to running the command unless bash was built with
3076   NON_INTERACTIVE_LOGIN_SHELLS defined.
3077
3078 * When matching groups in the sudoers file, sudo will now match
3079   based on the name of the group instead of the group ID. This can
3080   substantially reduce the number of group lookups for sudoers
3081   files that contain a large number of groups.
3082
3083 * Multi-factor authentication is now supported on AIX.
3084
3085 * Added support for non-RFC 4517 compliant LDAP servers that require
3086   that seconds be present in a timestamp, such as Tivoli Directory Server.
3087
3088 * If the group vector is to be preserved, the PATH search for the
3089   command is now done with the user's original group vector.
3090
3091 * For LDAP-based sudoers, the "runas_default" sudoOption now works
3092   properly in a sudoRole that contains a sudoCommand.
3093
3094 * Spaces in command line arguments for "sudo -s" and "sudo -i" are
3095   now escaped with a backslash when checking the security policy.
3096
3097What's new in Sudo 1.8.1p2?
3098
3099 * Two-character CIDR-style IPv4 netmasks are now matched correctly
3100   in the sudoers file.
3101
3102 * A build error with MIT Kerberos V has been resolved.
3103
3104 * A crash on HP-UX in the sudoers plugin when wildcards are
3105   present in the sudoers file has been resolved.
3106
3107 * Sudo now works correctly on Tru64 Unix again.
3108
3109What's new in Sudo 1.8.1p1?
3110
3111 * Fixed a problem on AIX where sudo was unable to set the final
3112   UID if the PAM module modified the effective UID.
3113
3114 * A non-existent includedir is now treated the same as an empty
3115   directory and not reported as an error.
3116
3117 * Removed extraneous parens in LDAP filter when sudoers_search_filter
3118   is enabled that can cause an LDAP search error.
3119
3120 * Fixed a "make -j" problem for "make install".
3121
3122What's new in Sudo 1.8.1?
3123
3124 * A new LDAP setting, sudoers_search_filter, has been added to
3125   ldap.conf.  This setting can be used to restrict the set of
3126   records returned by the LDAP query.  Based on changes from Matthew
3127   Thomas.
3128
3129 * White space is now permitted within a User_List when used in
3130   conjunction with a per-user Defaults definition.
3131
3132 * A group ID (%#GID) may now be specified in a User_List or Runas_List.
3133   Likewise, for non-Unix groups the syntax is %:#GID.
3134
3135 * Support for double-quoted words in the sudoers file has been fixed.
3136   The change in 1.7.5 for escaping the double quote character
3137   caused the double quoting to only be available at the beginning
3138   of an entry.
3139
3140 * The fix for resuming a suspended shell in 1.7.5 caused problems
3141   with resuming non-shells on Linux.  Sudo will now save the process
3142   group ID of the program it is running on suspend and restore it
3143   when resuming, which fixes both problems.
3144
3145 * A bug that could result in corrupted output in "sudo -l" has been
3146   fixed.
3147
3148 * Sudo will now create an entry in the utmp (or utmpx) file when
3149   allocating a pseudo-tty (e.g. when logging I/O).  The "set_utmp"
3150   and "utmp_runas" sudoers file options can be used to control this.
3151   Other policy plugins may use the "set_utmp" and "utmp_user"
3152   entries in the command_info list.
3153
3154 * The sudoers policy now stores the TSID field in the logs
3155   even when the "iolog_file" sudoers option is defined to a value
3156   other than %{sessid}.  Previously, the TSID field was only
3157   included in the log file when the "iolog_file" option was set
3158   to its default value.
3159
3160 * The sudoreplay utility now supports arbitrary session IDs.
3161   Previously, it would only work with the base-36 session IDs
3162   that the sudoers plugin uses by default.
3163
3164 * Sudo now passes "run_shell=true" to the policy plugin in the
3165   settings list when sudo's -s command line option is specified.
3166   The sudoers policy plugin uses this to implement the "set_home"
3167   sudoers option which was missing from sudo 1.8.0.
3168
3169 * The "noexec" functionality has been moved out of the sudoers
3170   policy plugin and into the sudo front-end, which matches the
3171   behavior documented in the plugin writer's guide.  As a result,
3172   the path to the noexec file is now specified in the sudo.conf
3173   file instead of the sudoers file.
3174
3175 * On Solaris 10, the PRIV_PROC_EXEC privilege is now used to
3176   implement the "noexec" feature.  Previously, this was implemented
3177   via the LD_PRELOAD environment variable.
3178
3179 * The exit values for "sudo -l", "sudo -v" and "sudo -l command"
3180   have been fixed in the sudoers policy plugin.
3181
3182 * The sudoers policy plugin now passes the login class, if any,
3183   back to the sudo front-end.
3184
3185 * The sudoers policy plugin was not being linked with requisite
3186   libraries in certain configurations.
3187
3188 * Sudo now parses command line arguments before loading any plugins.
3189   This allows "sudo -V" or "sudo -h" to work even if there is a problem
3190   with sudo.conf
3191
3192 * Plugins are now linked with the static version of libgcc to allow
3193   the plugin to run on a system where no shared libgcc is installed,
3194   or where it is installed in a different location.
3195
3196What's new in Sudo 1.8.0?
3197
3198 * Sudo has been refactored to use a modular framework that can
3199   support third-party policy and I/O logging plugins.  The default
3200   plugin is "sudoers" which provides the traditional sudo functionality.
3201   See the sudo_plugin manual for details on the plugin API and the
3202   sample in the plugins directory for a simple example.
3203
3204What's new in Sudo 1.7.5?
3205
3206 * When using visudo in check mode, a file named "-" may be used to
3207   check sudoers data on the standard input.
3208
3209 * Sudo now only fetches shadow password entries when using the
3210   password database directly for authentication.
3211
3212 * Password and group entries are now cached using the same key
3213   that was used to look them up.  This fixes a problem when looking
3214   up entries by name if the name in the retrieved entry does not
3215   match the name used to look it up.  This may happen on some systems
3216   that do case insensitive lookups or that truncate long names.
3217
3218 * GCC will no longer display warnings on glibc systems that use
3219   the warn_unused_result attribute for write(2) and other system calls.
3220
3221 * If a PAM account management module denies access, sudo now prints
3222   a more useful error message and stops trying to validate the user.
3223
3224 * Fixed a potential hang on idle systems when the sudo-run process
3225   exits immediately.
3226
3227 * Sudo now includes a copy of zlib that will be used on systems
3228   that do not have zlib installed.
3229
3230 * The --with-umask-override configure flag has been added to enable
3231   the "umask_override" sudoers Defaults option at build time.
3232
3233 * Sudo now unblocks all signals on startup to avoid problems caused
3234   by the parent process changing the default signal mask.
3235
3236 * LDAP Sudoers entries may now specify a time period for which
3237   the entry is valid.  This requires an updated sudoers schema
3238   that includes the sudoNotBefore and sudoNotAfter attributes.
3239   Support for timed entries must be explicitly enabled in the
3240   ldap.conf file.  Based on changes from Andreas Mueller.
3241
3242 * LDAP Sudoers entries may now specify a sudoOrder attribute that
3243   determines the order in which matching entries are applied.  The
3244   last matching entry is used, just like file-based sudoers.  This
3245   requires an updated sudoers schema that includes the sudoOrder
3246   attribute.  Based on changes from Andreas Mueller.
3247
3248 * When run as sudoedit, or when given the -e flag, sudo now treats
3249   command line arguments as pathnames.  This means that slashes
3250   in the sudoers file entry must explicitly match slashes in
3251   the command line arguments.  As a result, and entry such as:
3252	user ALL = sudoedit /etc/*
3253   will allow editing of /etc/motd but not /etc/security/default.
3254
3255 * NETWORK_TIMEOUT is now an alias for BIND_TIMELIMIT in ldap.conf for
3256   compatibility with OpenLDAP configuration files.
3257
3258 * The LDAP API TIMEOUT parameter is now honored in ldap.conf.
3259
3260 * The I/O log directory may now be specified in the sudoers file.
3261
3262 * Sudo will no longer refuse to run if the sudoers file is writable
3263   by root.
3264
3265 * Sudo now performs command line escaping for "sudo -s" and "sudo -i"
3266   after validating the command so the sudoers entries do not need
3267   to include the backslashes.
3268
3269 * Logging and email sending are now done in the locale specified
3270   by the "sudoers_locale" setting ("C" by default).  Email send by
3271   sudo now includes MIME headers when "sudoers_locale" is not "C".
3272
3273 * The configure script has a new option, --disable-env-reset, to
3274   allow one to change the default for the sudoers Default setting
3275   "env_reset" at compile time.
3276
3277 * When logging "sudo -l command", sudo will now prepend "list "
3278   to the command in the log line to distinguish between an
3279   actual command invocation in the logs.
3280
3281 * Double-quoted group and user names may now include escaped double
3282   quotes as part of the name.  Previously this was a parse error.
3283
3284 * Sudo once again restores the state of the signal handlers it
3285   modifies before executing the command.  This allows sudo to be
3286   used with the nohup command.
3287
3288 * Resuming a suspended shell now works properly when I/O logging
3289   is not enabled (the I/O logging case was already correct).
3290
3291What's new in Sudo 1.7.4p6?
3292
3293 * A bug has been fixed in the I/O logging support that could cause
3294   visual artifacts in full-screen programs such as text editors.
3295
3296What's new in Sudo 1.7.4p5?
3297
3298 * A bug has been fixed that would allow a command to be run without the
3299   user entering a password when sudo's -g flag is used without the -u flag.
3300
3301 * If user has no supplementary groups, sudo will now fall back on checking
3302   the group file explicitly, which restores historic sudo behavior.
3303
3304 * A crash has been fixed when sudo's -g flag is used without the -u flag
3305   and the sudoers file contains an entry with no runas user or group listed.
3306
3307 * A crash has been fixed when the Solaris project support is enabled
3308   and sudo's -g flag is used without the -u flag.
3309
3310 * Sudo no longer exits with an error when support for auditing is
3311   compiled in but auditing is not enabled.
3312
3313 * Fixed a bug introduced in sudo 1.7.3 where the ticket file was not
3314   being honored when the "targetpw" sudoers Defaults option was enabled.
3315
3316 * The LOG_INPUT and LOG_OUTPUT tags in sudoers are now parsed correctly.
3317
3318 * A crash has been fixed in "sudo -l" when sudo is built with auditing
3319   support and the user is not allowed to run any commands on the host.
3320
3321What's new in Sudo 1.7.4p4?
3322
3323 * A potential security issue has been fixed with respect to the handling
3324   of sudo's -g command line option when -u is also specified.  The flaw
3325   may allow an attacker to run commands as a user that is not authorized
3326   by the sudoers file.
3327
3328 * A bug has been fixed where "sudo -l" output was incomplete if multiple
3329   sudoers sources were defined in nsswitch.conf and there was an error
3330   querying one of the sources.
3331
3332 * The log_input, log_output, and use_pty sudoers options now work correctly
3333   on AIX.  Previously, sudo would hang if they were enabled.
3334
3335 * The "make install" target now works correctly when sudo is built in a
3336   directory other than the source directory.
3337
3338 * The "runas_default" sudoers setting now works properly in a per-command
3339   Defaults line.
3340
3341 * Suspending and resuming the bash shell when PAM is in use now works
3342   correctly.  The SIGCONT signal was not propagated to the child process.
3343
3344What's new in Sudo 1.7.4p3?
3345
3346 * A bug has been fixed where duplicate HOME environment variables could be
3347   present when the env_reset setting was disabled and the always_set_home
3348   setting was enabled in sudoers.
3349
3350 * The value of sysconfdir is now substituted into the path to the sudoers.d
3351   directory in the installed sudoers file.
3352
3353 * Compilation problems on IRIX and other platforms have been fixed.
3354
3355 * If multiple PAM "auth" actions are specified and the user enters ^C at
3356   the password prompt, sudo will no longer prompt for a password for any
3357   subsequent "auth" actions.  Previously it was necessary to enter ^C for
3358   each "auth" action.
3359
3360What's new in Sudo 1.7.4p2?
3361
3362 * A bug where sudo could spin in a busy loop waiting for the child process
3363   has been fixed.
3364
3365What's new in Sudo 1.7.4p1?
3366
3367 * A bug introduced in sudo 1.7.3 that prevented the -k and -K options from
3368   functioning when the tty_tickets sudoers option is enabled has been fixed.
3369
3370 * Sudo no longer prints a warning when the -k or -K options are specified
3371   and the ticket file does not exist.
3372
3373 * It is now easier to cross-compile sudo.
3374
3375What's new in Sudo 1.7.4?
3376
3377 * Sudoedit will now preserve the file extension in the name of the
3378   temporary file being edited.  The extension is used by some
3379   editors (such as emacs) to choose the editing mode.
3380
3381 * Time stamp files have moved from /var/run/sudo to either /var/db/sudo,
3382   /var/lib/sudo or /var/adm/sudo.  The directories are checked for
3383   existence in that order.  This prevents users from receiving the
3384   sudo lecture every time the system reboots.  Time stamp files older
3385   than the boot time are ignored on systems where it is possible to
3386   determine this.
3387
3388 * The tty_tickets sudoers option is now enabled by default.
3389
3390 * Ancillary documentation (README files, LICENSE, etc) is now installed
3391   in a sudo documentation directory.
3392
3393 * Sudo now recognizes "tls_cacert" as an alias for "tls_cacertfile"
3394   in ldap.conf.
3395
3396 * Defaults settings that are tied to a user, host or command may
3397   now include the negation operator.  For example:
3398	Defaults:!millert lecture
3399   will match any user but millert.
3400
3401 * The default PATH environment variable, used when no PATH variable
3402    exists, now includes /usr/sbin and /sbin.
3403
3404 * Sudo now uses polypkg (http://rc.quest.com/topics/polypkg/)
3405   for cross-platform packing.
3406
3407 * On Linux, sudo will now restore the nproc resource limit before
3408   executing a command, unless the limit appears to have been modified
3409   by pam_limits.  This avoids a problem with bash scripts that open
3410   more than 32 descriptors on SuSE Linux, where sysconf(_SC_CHILD_MAX)
3411   will return -1 when RLIMIT_NPROC is set to RLIMIT_UNLIMITED (-1).
3412
3413 * The HOME and MAIL environment variables are now reset based on the
3414   target user's password database entry when the env_reset sudoers option
3415   is enabled (which is the case in the default configuration).  Users
3416   wishing to preserve the original values should use a sudoers entry like:
3417	Defaults env_keep += HOME
3418   to preserve the old value of HOME and
3419	Defaults env_keep += MAIL
3420   to preserve the old value of MAIL.
3421
3422 * Fixed a problem in the restoration of the AIX authdb registry setting.
3423
3424 * Sudo will now fork(2) and wait until the command has completed before
3425   calling pam_close_session().
3426
3427 * The default syslog facility is now "authpriv" if the operating system
3428   supports it, else "auth".
3429
3430What's new in Sudo 1.7.3?
3431
3432 * Support for logging I/O for the command being run.
3433   For more information, see the documentation for the "log_input"
3434   and "log_output" Defaults options in the sudoers manual.  Also
3435   see the sudoreplay manual for how to replay I/O log sessions.
3436
3437 * The use_pty sudoers option can be used to force a command to be
3438   run in a pseudo-pty, even when I/O logging is not enabled.
3439
3440 * On some systems, sudo can now detect when a user has logged out
3441   and back in again when tty-based time stamps are in use.  Supported
3442   systems include Solaris systems with the devices file system,
3443   Mac OS X, and Linux systems with the devpts filesystem (pseudo-ttys
3444   only).
3445
3446 * On AIX systems, the registry setting in /etc/security/user is
3447   now taken into account when looking up users and groups.  Sudo
3448   now applies the correct the user and group ids when running a
3449   command as a user whose account details come from a different
3450   source (e.g. LDAP or DCE vs.  local files).
3451
3452 * Support for multiple 'sudoers_base' and 'uri' entries in ldap.conf.
3453   When multiple entries are listed, sudo will try each one in the
3454   order in which they are specified.
3455
3456 * Sudo's SELinux support should now function correctly when running
3457   commands as a non-root user and when one of stdin, stdout or stderr
3458   is not a terminal.
3459
3460 * Sudo will now use the Linux audit system with configure with
3461   the --with-linux-audit flag.
3462
3463 * Sudo now uses mbr_check_membership() on systems that support it
3464   to determine group membership.  Currently, only Darwin (Mac OS X)
3465   supports this.
3466
3467 * When the tty_tickets sudoers option is enabled but there is no
3468   terminal device, sudo will no longer use or create a tty-based
3469   ticket file.  Previously, sudo would use a tty name of "unknown".
3470   As a consequence, if a user has no terminal device, sudo will
3471   now always prompt for a password.
3472
3473 * The passwd_timeout and timestamp_timeout options may now be
3474   specified as floating point numbers for more granular timeout
3475   values.
3476
3477 * Negating the fqdn option in sudoers now works correctly when sudo
3478   is configured with the --with-fqdn option.  In previous versions
3479   of sudo the fqdn was set before sudoers was parsed.
3480
3481What's new in Sudo 1.7.2?
3482
3483 * A new #includedir directive is available in sudoers.  This can be
3484   used to implement an /etc/sudo.d directory.  Files in an includedir
3485   are not edited by visudo unless they contain a syntax error.
3486
3487 * The -g option did not work properly when only setting the group
3488   (and not the user).  Also, in -l mode the wrong user was displayed
3489   for sudoers entries where only the group was allowed to be set.
3490
3491 * Fixed a problem with the alias checking in visudo which
3492   could prevent visudo from exiting.
3493
3494 * Sudo will now correctly parse the shell-style /etc/environment
3495   file format used by pam_env on Linux.
3496
3497 * When doing password and group database lookups, sudo will only
3498   cache an entry by name or by id, depending on how the entry was
3499   looked up.  Previously, sudo would cache by both name and id
3500   from a single lookup, but this breaks sites that have multiple
3501   password or group database names that map to the same UID or
3502   GID.
3503
3504 * User and group names in sudoers may now be enclosed in double
3505   quotes to avoid having to escape special characters.
3506
3507 * BSM audit fixes when changing to a non-root UID.
3508
3509 * Experimental non-Unix group support.  Currently only works with
3510   Quest Authorization Services and allows Active Directory groups
3511   fixes for Minix-3.
3512
3513 * For Netscape/Mozilla-derived LDAP SDKs the certificate and key
3514   paths may be specified as a directory or a file.  However, version
3515   5.0 of the SDK only appears to support using a directory (despite
3516   documentation to the contrary).  If SSL client initialization
3517   fails and the certificate or key paths look like they could be
3518   default file name, strip off the last path element and try again.
3519
3520 * A setenv() compatibility fix for Linux systems, where a NULL
3521   value is treated the same as an empty string and the variable
3522   name is checked against the NULL pointer.
3523
3524What's new in Sudo 1.7.1?
3525
3526 * A new Defaults option "pwfeedback" will cause sudo to provide visual
3527   feedback when the user is entering a password.
3528
3529 * A new Defaults option "fast_glob" will cause sudo to use the fnmatch()
3530   function for file name globbing instead of glob().  When this option
3531   is enabled, sudo will not check the file system when expanding wildcards.
3532   This is faster but a side effect is that relative paths with wildcard
3533   will no longer work.
3534
3535 * New BSM audit support for systems that support it such as FreeBSD
3536   and Mac OS X.
3537
3538 * The file name specified with the #include directive may now include
3539   a %h escape which is expanded to the short form of hostname.
3540
3541 * The -k flag may now be specified along with a command, causing the
3542   user's timestamp file to be ignored.
3543
3544 * New support for Tivoli-based LDAP START_TLS, present in AIX.
3545
3546 * New support for /etc/netsvc.conf on AIX.
3547
3548 * The unused alias checks in visudo now handle the case of an alias
3549   referring to another alias.
3550
3551What's new in Sudo 1.7.0?
3552
3553 * Rewritten parser that converts sudoers into a set of data structures.
3554   This eliminates a number of ordering issues and makes it possible to
3555   apply sudoers Defaults entries before searching for the command.
3556   It also adds support for per-command Defaults specifications.
3557
3558 * Sudoers now supports a #include facility to allow the inclusion of other
3559   sudoers-format files.
3560
3561 * Sudo's -l (list) flag has been enhanced:
3562    o applicable Defaults options are now listed
3563    o a command argument can be specified for testing whether a user
3564      may run a specific command.
3565    o a new -U flag can be used in conjunction with "sudo -l" to allow
3566      root (or a user with "sudo ALL") list another user's privileges.
3567
3568 * A new -g flag has been added to allow the user to specify a
3569   primary group to run the command as.  The sudoers syntax has been
3570   extended to include a group section in the Runas specification.
3571
3572 * A UID may now be used anywhere a username is valid.
3573
3574 * The "secure_path" run-time Defaults option has been restored.
3575
3576 * Password and group data is now cached for fast lookups.
3577
3578 * The file descriptor at which sudo starts closing all open files is now
3579   configurable via sudoers and, optionally, the command line.
3580
3581 * Visudo will now warn about aliases that are defined but not used.
3582
3583 * The -i and -s command line flags now take an optional command
3584   to be run via the shell.  Previously, the argument was passed
3585   to the shell as a script to run.
3586
3587 * Improved LDAP support.  SASL authentication may now be used in
3588   conjunction when connecting to an LDAP server.  The krb5_ccname
3589   parameter in ldap.conf may be used to enable Kerberos.
3590
3591 * Support for /etc/nsswitch.conf.  LDAP users may now use nsswitch.conf
3592   to specify the sudoers order.  E.g.:
3593	sudoers: ldap files
3594   to check LDAP, then /etc/sudoers.  The default is "files", even
3595   when LDAP support is compiled in.  This differs from sudo 1.6
3596   where LDAP was always consulted first.
3597
3598 * Support for /etc/environment on AIX and Linux.  If sudo is run
3599   with the -i flag, the contents of /etc/environment are used to
3600   populate the new environment that is passed to the command being
3601   run.
3602
3603 * If no terminal is available or if the new -A flag is specified,
3604   sudo will use a helper program to read the password if one is
3605   configured.  Typically, this is a graphical password prompter
3606   such as ssh-askpass.
3607
3608 * A new Defaults option, "mailfrom" that sets the value of the
3609   "From:" field in the warning/error mail.  If unspecified, the
3610   login name of the invoking user is used.
3611
3612 * A new Defaults option, "env_file" that refers to a file containing
3613   environment variables to be set in the command being run.
3614
3615 * A new flag, -n, may be used to indicate that sudo should not
3616   prompt the user for a password and, instead, exit with an error
3617   if authentication is required.
3618
3619 * If sudo needs to prompt for a password and it is unable to disable
3620   echo (and no askpass program is defined), it will refuse to run
3621   unless the "visiblepw" Defaults option has been specified.
3622
3623 * Prior to version 1.7.0, hitting enter/return at the Password: prompt
3624   would exit sudo.  In sudo 1.7.0 and beyond, this is treated as
3625   an empty password.  To exit sudo, the user must press ^C or ^D
3626   at the prompt.
3627
3628 * visudo will now check the sudoers file owner and mode in -c (check)
3629   mode when the -s (strict) flag is specified.
3630
3631 * A new Defaults option "umask_override" will cause sudo to set the
3632   umask specified in sudoers even if it is more permissive than the
3633   invoking user's umask.
3634