abcbcc9ea1b8e19525711a2fdebb48833777c8a1
[debian/sudo] / NEWS
1 What's new in Sudo 1.8.2?
2
3  * Sudo, visudo, sudoreplay and the sudoers plug-in now have natural
4    language support (NLS). This can be disabled by passing configure
5    the --disable-nls option.  Sudo will use gettext(), if available,
6    to display translated messages.  All translations are coordinated
7    via The Translation Project, http://translationproject.org/.
8
9  * Plug-ins are now loaded with the RTLD_GLOBAL flag instead of
10    RTLD_LOCAL.  This fixes missing symbol problems in PAM modules
11    on certain platforms, such as FreeBSD and SuSE Linux Enterprise.
12
13  * I/O logging is now supported for commands run in background mode
14    (using sudo's -b flag).
15
16  * Group ownership of the sudoers file is now only enforced when
17    the file mode on sudoers allows group readability or writability.
18
19  * Visudo now checks the contents of an alias and warns about cycles
20    when the alias is expanded.
21
22  * If the user specifes a group via sudo's -g option that matches
23    the target user's group in the password database, it is now
24    allowed even if no groups are present in the Runas_Spec.
25
26  * The sudo Makefiles now have more complete dependencies which are
27    automatically generated instead of being maintained manually.
28
29  * The "use_pty" sudoers option is now correctly passed back to the
30    sudo front end.  This was missing in previous versions of sudo
31    1.8 which prevented "use_pty" from being honored.
32
33  * "sudo -i command" now works correctly with the bash version
34    2.0 and higher.  Previously, the .bash_profile would not be
35    sourced prior to running the command unless bash was built with
36    NON_INTERACTIVE_LOGIN_SHELLS defined.
37
38  * When matching groups in the sudoers file, sudo will now match
39    based on the name of the group instead of the group ID. This can
40    substantially reduce the number of group lookups for sudoers
41    files that contain a large number of groups.
42
43  * Multi-factor authentication is now supported on AIX.
44
45  * Added support for non-RFC 4517 compliant LDAP servers that require
46    that seconds be present in a timestamp, such as Tivoli Directory Server.
47
48  * If the group vector is to be preserved, the PATH search for the
49    command is now done with the user's original group vector.
50
51  * For LDAP-based sudoers, the "runas_default" sudoOption now works
52    properly in a sudoRole that contains a sudoCommand.
53
54  * Spaces in command line arguments for "sudo -s" and "sudo -i" are
55    now escaped with a backslash when checking the security policy.
56
57 What's new in Sudo 1.8.1p2?
58
59  * Two-character CIDR-style IPv4 netmasks are now matched correctly
60    in the sudoers file.
61
62  * A build error with MIT Kerberos V has been resolved.
63
64  * A crash on HP-UX in the sudoers plugin when wildcards are
65    present in the sudoers file has been resolved.
66
67  * Sudo now works correctly on Tru64 Unix again.
68
69 What's new in Sudo 1.8.1p1?
70
71  * Fixed a problem on AIX where sudo was unable to set the final
72    uid if the PAM module modified the effective uid.
73
74  * A non-existent includedir is now treated the same as an empty
75    directory and not reported as an error.
76
77  * Removed extraneous parens in LDAP filter when sudoers_search_filter
78    is enabled that can cause an LDAP search error.
79
80  * Fixed a "make -j" problem for "make install".
81
82 What's new in Sudo 1.8.1?
83
84  * A new LDAP setting, sudoers_search_filter, has been added to
85    ldap.conf.  This setting can be used to restrict the set of
86    records returned by the LDAP query.  Based on changes from Matthew
87    Thomas.
88
89  * White space is now permitted within a User_List when used in
90    conjunction with a per-user Defaults definition.
91
92  * A group ID (%#gid) may now be specified in a User_List or Runas_List.
93    Likewise, for non-Unix groups the syntax is %:#gid.
94
95  * Support for double-quoted words in the sudoers file has been fixed.
96    The change in 1.7.5 for escaping the double quote character
97    caused the double quoting to only be available at the beginning
98    of an entry.
99
100  * The fix for resuming a suspended shell in 1.7.5 caused problems
101    with resuming non-shells on Linux.  Sudo will now save the process
102    group ID of the program it is running on suspend and restore it
103    when resuming, which fixes both problems.
104
105  * A bug that could result in corrupted output in "sudo -l" has been
106    fixed.
107
108  * Sudo will now create an entry in the utmp (or utmpx) file when
109    allocating a pseudo-tty (e.g. when logging I/O).  The "set_utmp"
110    and "utmp_runas" sudoers file options can be used to control this.
111    Other policy plugins may use the "set_utmp" and "utmp_user"
112    entries in the command_info list.
113
114  * The sudoers policy now stores the TSID field in the logs
115    even when the "iolog_file" sudoers option is defined to a value
116    other than %{sessid}.  Previously, the TSID field was only
117    included in the log file when the "iolog_file" option was set
118    to its default value.
119
120  * The sudoreplay utility now supports arbitrary session IDs.
121    Previously, it would only work with the base-36 session IDs
122    that the sudoers plugin uses by default.
123
124  * Sudo now passes "run_shell=true" to the policy plugin in the
125    settings list when sudo's -s command line option is specified.
126    The sudoers policy plugin uses this to implement the "set_home"
127    sudoers option which was missing from sudo 1.8.0.
128
129  * The "noexec" functionality has been moved out of the sudoers
130    policy plugin and into the sudo front-end, which matches the
131    behavior documented in the plugin writer's guide.  As a result,
132    the path to the noexec file is now specified in the sudo.conf
133    file instead of the sudoers file.
134
135  * On Solaris 10, the PRIV_PROC_EXEC privilege is now used to
136    implement the "noexec" feature.  Previously, this was implemented
137    via the LD_PRELOAD environment variable.
138
139  * The exit values for "sudo -l", "sudo -v" and "sudo -l command"
140    have been fixed in the sudoers policy plugin.
141
142  * The sudoers policy plugin now passes the login class, if any,
143    back to the sudo front-end.
144
145  * The sudoers policy plugin was not being linked with requisite
146    libraries in certain configurations.
147
148  * Sudo now parses command line arguments before loading any plugins.
149    This allows "sudo -V" or "sudo -h" to work even if there is a problem
150    with sudo.conf
151
152  * Plugins are now linked with the static version of libgcc to allow
153    the plugin to run on a system where no shared libgcc is installed,
154    or where it is installed in a different location.
155
156 What's new in Sudo 1.8.0?
157
158  * Sudo has been refactored to use a modular framework that can
159    support third-party policy and I/O logging plugins.  The default
160    plugin is "sudoers" which provides the traditional sudo functionality.
161    See the sudo_plugin manual for details on the plugin API and the
162    sample in the plugins directory for a simple example.
163
164 What's new in Sudo 1.7.5?
165
166  * When using visudo in check mode, a file named "-" may be used to
167    check sudoers data on the standard input.
168
169  * Sudo now only fetches shadow password entries when using the
170    password database directly for authentication.
171
172  * Password and group entries are now cached using the same key
173    that was used to look them up.  This fixes a problem when looking
174    up entries by name if the name in the retrieved entry does not
175    match the name used to look it up.  This may happen on some systems
176    that do case insensitive lookups or that truncate long names.
177
178  * GCC will no longer display warnings on glibc systems that use
179    the warn_unused_result attribute for write(2) and other system calls.
180
181  * If a PAM account management module denies access, sudo now prints
182    a more useful error message and stops trying to validate the user.
183
184  * Fixed a potential hang on idle systems when the sudo-run process
185    exits immediately.
186
187  * Sudo now includes a copy of zlib that will be used on systems
188    that do not have zlib installed.
189
190  * The --with-umask-override configure flag has been added to enable
191    the "umask_override" sudoers Defaults option at build time.
192
193  * Sudo now unblocks all signals on startup to avoid problems caused
194    by the parent process changing the default signal mask.
195
196  * LDAP Sudoers entries may now specify a time period for which
197    the entry is valid.  This requires an updated sudoers schema
198    that includes the sudoNotBefore and sudoNotAfter attributes.
199    Support for timed entries must be explicitly enabled in the
200    ldap.conf file.  Based on changes from Andreas Mueller.
201
202  * LDAP Sudoers entries may now specify a sudoOrder attribute that
203    determines the order in which matching entries are applied.  The
204    last matching entry is used, just like file-based sudoers.  This
205    requires an updated sudoers schema that includes the sudoOrder
206    attribute.  Based on changes from Andreas Mueller.
207
208  * When run as sudoedit, or when given the -e flag, sudo now treats
209    command line arguments as pathnames.  This means that slashes
210    in the sudoers file entry must explicitly match slashes in
211    the command line arguments.  As a result, and entry such as:
212         user ALL = sudoedit /etc/*
213    will allow editing of /etc/motd but not /etc/security/default.
214
215  * NETWORK_TIMEOUT is now an alias for BIND_TIMELIMIT in ldap.conf for
216    compatibility with OpenLDAP configuration files.
217
218  * The LDAP API TIMEOUT parameter is now honored in ldap.conf.
219
220  * The I/O log directory may now be specified in the sudoers file.
221
222  * Sudo will no longer refuse to run if the sudoers file is writable
223    by root.
224
225  * Sudo now performs command line escaping for "sudo -s" and "sudo -i"
226    after validating the command so the sudoers entries do not need
227    to include the backslashes.
228
229  * Logging and email sending are now done in the locale specified
230    by the "sudoers_locale" setting ("C" by default).  Email send by
231    sudo now includes MIME headers when "sudoers_locale" is not "C".
232
233  * The configure script has a new option, --disable-env-reset, to
234    allow one to change the default for the sudoers Default setting
235    "env_reset" at compile time.
236
237  * When logging "sudo -l command", sudo will now prepend "list "
238    to the command in the log line to distinguish between an
239    actual command invocation in the logs.
240
241  * Double-quoted group and user names may now include escaped double
242    quotes as part of the name.  Previously this was a parse error.
243
244  * Sudo once again restores the state of the signal handlers it
245    modifies before executing the command.  This allows sudo to be
246    used with the nohup command.
247
248  * Resuming a suspended shell now works properly when I/O logging
249    is not enabled (the I/O logging case was already correct).
250
251 What's new in Sudo 1.7.4p6?
252
253  * A bug has been fixed in the I/O logging support that could cause
254    visual artifacts in full-screen programs such as text editors.
255
256 What's new in Sudo 1.7.4p5?
257
258  * A bug has been fixed that would allow a command to be run without the
259    user entering a password when sudo's -g flag is used without the -u flag.
260
261  * If user has no supplementary groups, sudo will now fall back on checking
262    the group file explicitly, which restores historic sudo behavior.
263
264  * A crash has been fixed when sudo's -g flag is used without the -u flag
265    and the sudoers file contains an entry with no runas user or group listed.
266
267  * A crash has been fixed when the Solaris project support is enabled
268    and sudo's -g flag is used without the -u flag.
269
270  * Sudo no longer exits with an error when support for auditing is
271    compiled in but auditing is not enabled.
272
273  * Fixed a bug introduced in sudo 1.7.3 where the ticket file was not
274    being honored when the "targetpw" sudoers Defaults option was enabled.
275
276  * The LOG_INPUT and LOG_OUTPUT tags in sudoers are now parsed correctly.
277
278  * A crash has been fixed in "sudo -l" when sudo is built with auditing
279    support and the user is not allowed to run any commands on the host.
280
281 What's new in Sudo 1.7.4p4?
282
283  * A potential security issue has been fixed with respect to the handling
284    of sudo's -g command line option when -u is also specified.  The flaw
285    may allow an attacker to run commands as a user that is not authorized
286    by the sudoers file.
287
288  * A bug has been fixed where "sudo -l" output was incomplete if multiple
289    sudoers sources were defined in nsswitch.conf and there was an error
290    querying one of the sources.
291
292  * The log_input, log_output, and use_pty sudoers options now work correctly
293    on AIX.  Previously, sudo would hang if they were enabled.
294
295  * The "make install" target now works correctly when sudo is built in a
296    directory other than the source directory.
297
298  * The "runas_default" sudoers setting now works properly in a per-command
299    Defaults line.
300
301  * Suspending and resuming the bash shell when PAM is in use now works
302    correctly.  The SIGCONT signal was not propagated to the child process.
303
304 What's new in Sudo 1.7.4p3?
305
306  * A bug has been fixed where duplicate HOME environment variables could be
307    present when the env_reset setting was disabled and the always_set_home
308    setting was enabled in sudoers.
309
310  * The value of sysconfdir is now substituted into the path to the sudoers.d
311    directory in the installed sudoers file.
312
313  * Compilation problems on IRIX and other platforms have been fixed.
314
315  * If multiple PAM "auth" actions are specified and the user enters ^C at
316    the password prompt, sudo will no longer prompt for a password for any
317    subsequent "auth" actions.  Previously it was necessary to enter ^C for
318    each "auth" action.
319
320 What's new in Sudo 1.7.4p2?
321
322  * A bug where sudo could spin in a busy loop waiting for the child process
323    has been fixed.
324
325 What's new in Sudo 1.7.4p1?
326
327  * A bug introduced in sudo 1.7.3 that prevented the -k and -K options from
328    functioning when the tty_tickets sudoers option is enabled has been fixed.
329
330  * Sudo no longer prints a warning when the -k or -K options are specified
331    and the ticket file does not exist.
332
333  * It is now easier to cross-compile sudo.
334
335 What's new in Sudo 1.7.4?
336
337  * Sudoedit will now preserve the file extension in the name of the
338    temporary file being edited.  The extension is used by some
339    editors (such as emacs) to choose the editing mode.
340
341  * Time stamp files have moved from /var/run/sudo to either /var/db/sudo,
342    /var/lib/sudo or /var/adm/sudo.  The directories are checked for
343    existence in that order.  This prevents users from receiving the
344    sudo lecture every time the system reboots.  Time stamp files older
345    than the boot time are ignored on systems where it is possible to
346    determine this.
347
348  * The tty_tickets sudoers option is now enabled by default.
349
350  * Ancillary documentation (README files, LICENSE, etc) is now installed
351    in a sudo documentation directory.
352
353  * Sudo now recognizes "tls_cacert" as an alias for "tls_cacertfile"
354    in ldap.conf.
355
356  * Defaults settings that are tied to a user, host or command may
357    now include the negation operator.  For example:
358         Defaults:!millert lecture
359    will match any user but millert.
360
361  * The default PATH environment variable, used when no PATH variable
362     exists, now includes /usr/sbin and /sbin.
363
364  * Sudo now uses polypkg (http://rc.quest.com/topics/polypkg/)
365    for cross-platform packing.
366
367  * On Linux, sudo will now restore the nproc resource limit before
368    executing a command, unless the limit appears to have been modified
369    by pam_limits.  This avoids a problem with bash scripts that open
370    more than 32 descriptors on SuSE Linux, where sysconf(_SC_CHILD_MAX)
371    will return -1 when RLIMIT_NPROC is set to RLIMIT_UNLIMITED (-1).
372
373  * The HOME and MAIL environment variables are now reset based on the
374    target user's password database entry when the env_reset sudoers option
375    is enabled (which is the case in the default configuration).  Users
376    wishing to preserve the original values should use a sudoers entry like:
377         Defaults env_keep += HOME
378    to preserve the old value of HOME and
379         Defaults env_keep += MAIL
380    to preserve the old value of MAIL.
381
382  * Fixed a problem in the restoration of the AIX authdb registry setting.
383
384  * Sudo will now fork(2) and wait until the command has completed before
385    calling pam_close_session().
386
387  * The default syslog facility is now "authpriv" if the operating system
388    supports it, else "auth".
389
390 What's new in Sudo 1.7.3?
391
392  * Support for logging I/O for the command being run.
393    For more information, see the documentation for the "log_input"
394    and "log_output" Defaults options in the sudoers manual.  Also
395    see the sudoreplay manual for how to replay I/O log sessions.
396
397  * The use_pty sudoers option can be used to force a command to be
398    run in a pseudo-pty, even when I/O logging is not enabled.
399
400  * On some systems, sudo can now detect when a user has logged out
401    and back in again when tty-based time stamps are in use.  Supported
402    systems include Solaris systems with the devices file system,
403    Mac OS X, and Linux systems with the devpts filesystem (pseudo-ttys
404    only).
405
406  * On AIX systems, the registry setting in /etc/security/user is
407    now taken into account when looking up users and groups.  Sudo
408    now applies the correct the user and group ids when running a
409    command as a user whose account details come from a different
410    source (e.g. LDAP or DCE vs.  local files).
411
412  * Support for multiple 'sudoers_base' and 'uri' entries in ldap.conf.
413    When multiple entries are listed, sudo will try each one in the
414    order in which they are specified.
415
416  * Sudo's SELinux support should now function correctly when running
417    commands as a non-root user and when one of stdin, stdout or stderr
418    is not a terminal.
419
420  * Sudo will now use the Linux audit system with configure with
421    the --with-linux-audit flag.
422
423  * Sudo now uses mbr_check_membership() on systems that support it
424    to determine group membership.  Currently, only Darwin (Mac OS X)
425    supports this.
426
427  * When the tty_tickets sudoers option is enabled but there is no
428    terminal device, sudo will no longer use or create a tty-based
429    ticket file.  Previously, sudo would use a tty name of "unknown".
430    As a consequence, if a user has no terminal device, sudo will
431    now always prompt for a password.
432
433  * The passwd_timeout and timestamp_timeout options may now be
434    specified as floating point numbers for more granular timeout
435    values.
436
437  * Negating the fqdn option in sudoers now works correctly when sudo
438    is configured with the --with-fqdn option.  In previous versions
439    of sudo the fqdn was set before sudoers was parsed.
440
441 What's new in Sudo 1.7.2?
442
443  * A new #includedir directive is available in sudoers.  This can be
444    used to implement an /etc/sudo.d directory.  Files in an includedir
445    are not edited by visudo unless they contain a syntax error.
446
447  * The -g option did not work properly when only setting the group
448    (and not the user).  Also, in -l mode the wrong user was displayed
449    for sudoers entries where only the group was allowed to be set.
450
451  * Fixed a problem with the alias checking in visudo which
452    could prevent visudo from exiting.
453
454  * Sudo will now correctly parse the shell-style /etc/environment
455    file format used by pam_env on Linux.
456
457  * When doing password and group database lookups, sudo will only
458    cache an entry by name or by id, depending on how the entry was
459    looked up.  Previously, sudo would cache by both name and id
460    from a single lookup, but this breaks sites that have multiple
461    password or group database names that map to the same uid or
462    gid.
463
464  * User and group names in sudoers may now be enclosed in double
465    quotes to avoid having to escape special characters.
466
467  * BSM audit fixes when changing to a non-root uid.
468
469  * Experimental non-Unix group support.  Currently only works with
470    Quest Authorization Services and allows Active Directory groups
471    fixes for Minix-3.
472
473  * For Netscape/Mozilla-derived LDAP SDKs the certificate and key
474    paths may be specified as a directory or a file.  However, version
475    5.0 of the SDK only appears to support using a directory (despite
476    documentation to the contrary).  If SSL client initialization
477    fails and the certificate or key paths look like they could be
478    default file name, strip off the last path element and try again.
479
480  * A setenv() compatibility fix for Linux systems, where a NULL
481    value is treated the same as an empty string and the variable
482    name is checked against the NULL pointer.
483
484 What's new in Sudo 1.7.1?
485
486  * A new Defaults option "pwfeedback" will cause sudo to provide visual
487    feedback when the user is entering a password.
488
489  * A new Defaults option "fast_glob" will cause sudo to use the fnmatch()
490    function for file name globbing instead of glob().  When this option
491    is enabled, sudo will not check the file system when expanding wildcards.
492    This is faster but a side effect is that relative paths with wildcard
493    will no longer work.
494
495  * New BSM audit support for systems that support it such as FreeBSD
496    and Mac OS X.
497
498  * The file name specified with the #include directive may now include
499    a %h escape which is expanded to the short form of hostname.
500
501  * The -k flag may now be specified along with a command, causing the
502    user's timestamp file to be ignored.
503
504  * New support for Tivoli-based LDAP START_TLS, present in AIX.
505
506  * New support for /etc/netsvc.conf on AIX.
507
508  * The unused alias checks in visudo now handle the case of an alias
509    referring to another alias.
510
511 What's new in Sudo 1.7.0?
512
513  * Rewritten parser that converts sudoers into a set of data structures.
514    This eliminates a number of ordering issues and makes it possible to
515    apply sudoers Defaults entries before searching for the command.
516    It also adds support for per-command Defaults specifications.
517
518  * Sudoers now supports a #include facility to allow the inclusion of other
519    sudoers-format files.
520
521  * Sudo's -l (list) flag has been enhanced:
522     o applicable Defaults options are now listed
523     o a command argument can be specified for testing whether a user
524       may run a specific command.
525     o a new -U flag can be used in conjunction with "sudo -l" to allow
526       root (or a user with "sudo ALL") list another user's privileges.
527
528  * A new -g flag has been added to allow the user to specify a
529    primary group to run the command as.  The sudoers syntax has been
530    extended to include a group section in the Runas specification.
531
532  * A uid may now be used anywhere a username is valid.
533
534  * The "secure_path" run-time Defaults option has been restored.
535
536  * Password and group data is now cached for fast lookups.
537
538  * The file descriptor at which sudo starts closing all open files is now
539    configurable via sudoers and, optionally, the command line.
540
541  * Visudo will now warn about aliases that are defined but not used.
542
543  * The -i and -s command line flags now take an optional command
544    to be run via the shell.  Previously, the argument was passed
545    to the shell as a script to run.
546
547  * Improved LDAP support.  SASL authentication may now be used in
548    conjunction when connecting to an LDAP server.  The krb5_ccname
549    parameter in ldap.conf may be used to enable Kerberos.
550
551  * Support for /etc/nsswitch.conf.  LDAP users may now use nsswitch.conf
552    to specify the sudoers order.  E.g.:
553         sudoers: ldap files
554    to check LDAP, then /etc/sudoers.  The default is "files", even
555    when LDAP support is compiled in.  This differs from sudo 1.6
556    where LDAP was always consulted first.
557
558  * Support for /etc/environment on AIX and Linux.  If sudo is run
559    with the -i flag, the contents of /etc/environment are used to
560    populate the new environment that is passed to the command being
561    run.
562
563  * If no terminal is available or if the new -A flag is specified,
564    sudo will use a helper program to read the password if one is
565    configured.  Typically, this is a graphical password prompter
566    such as ssh-askpass.
567
568  * A new Defaults option, "mailfrom" that sets the value of the
569    "From:" field in the warning/error mail.  If unspecified, the
570    login name of the invoking user is used.
571
572  * A new Defaults option, "env_file" that refers to a file containing
573    environment variables to be set in the command being run.
574
575  * A new flag, -n, may be used to indicate that sudo should not
576    prompt the user for a password and, instead, exit with an error
577    if authentication is required.
578
579  * If sudo needs to prompt for a password and it is unable to disable
580    echo (and no askpass program is defined), it will refuse to run
581    unless the "visiblepw" Defaults option has been specified.
582
583  * Prior to version 1.7.0, hitting enter/return at the Password: prompt
584    would exit sudo.  In sudo 1.7.0 and beyond, this is treated as
585    an empty password.  To exit sudo, the user must press ^C or ^D
586    at the prompt.
587
588  * visudo will now check the sudoers file owner and mode in -c (check)
589    mode when the -s (strict) flag is specified.
590
591  * A new Defaults option "umask_override" will cause sudo to set the
592    umask specified in sudoers even if it is more permissive than the
593    invoking user's umask.