This commit is contained in:
Todd C. Miller
2004-11-16 21:10:22 +00:00
parent 900db20f7a
commit cfbf7768ff
2 changed files with 67 additions and 69 deletions

31
CHANGES
View File

@@ -1734,38 +1734,43 @@ Sudo 1.6.8 released.
Sudo 1.6.8p1 released. Sudo 1.6.8p1 released.
549) Bash exported functions and the CDPATH variable are now stripped from 549) Bash exported functions are now stripped from the environment passed
the environment passed to the program to be executed. to the program to be executed.
Sudo 1.6.8p2 released. Sudo 1.6.8p2 released.
550) New monitor functionality for systems with systrace(4). When tracing 550) The CDPATH variable is now stripped from the environment passed
to the program to be executed.
Sudo 1.6.8p3 released.
551) New monitor functionality for systems with systrace(4). When tracing
is enabled sudo will fork a daemon that traces the command and is enabled sudo will fork a daemon that traces the command and
intercepts and execve() calls and allows/denies the call based on intercepts and execve() calls and allows/denies the call based on
a sudoers lookup. Also updates the command's environment with a sudoers lookup. Also updates the command's environment with
the SUDO_* variables if supported by the version of systrace(4). the SUDO_* variables if supported by the version of systrace(4).
551) Added support for multiple sudoers file via #include. 552) Added support for multiple sudoers file via #include.
552) An empty sudoers file is no longer a parse error. 553) An empty sudoers file is no longer a parse error.
553) Fixed error handling if the lexer runs out of memory. 554) Fixed error handling if the lexer runs out of memory.
554) Optimized lexer slightly by removing use of unput() and removing 555) Optimized lexer slightly by removing use of unput() and removing
some ambiguity with the Default keyword. some ambiguity with the Default keyword.
555) Wildcard matches on commands now use glob() and stat() so 556) Wildcard matches on commands now use glob() and stat() so
that relative paths work correctly in conjunction with wildcards. that relative paths work correctly in conjunction with wildcards.
556) Rewritten parser that converts sudoers into a set of data structures. 557) Rewritten parser that converts sudoers into a set of data structures.
This eliminates ordering issues and makes it possible to apply This eliminates ordering issues and makes it possible to apply
sudoers Defaults entries before searching for the command. sudoers Defaults entries before searching for the command.
557) Visudo will now warn about aliases that are defined but not used. 558) Visudo will now warn about aliases that are defined but not used.
558) "sudo -l" now takes an optional username which lets root see other 559) "sudo -l" now takes an optional username which lets root see other
users' privs. users' privs.
559) The "secure_path" run-time Defaults option has been restored. 560) The "secure_path" run-time Defaults option has been restored.
560) Password data is now cached for fast lookup. 561) Password and group data is now cached for fast lookup.

105
TODO
View File

@@ -20,130 +20,123 @@ TODO list (most will be addressed in sudo 2.0)
after doing the stat to guard against spoofing. This should avoid after doing the stat to guard against spoofing. This should avoid
the race condition caused by going through namei() twice... the race condition caused by going through namei() twice...
09) Overhaul testsudoers to use things from parse.o so we don't reimplement 09) Make runas_user a struct "runas" with user and group components.
things.
10) Make runas_user a struct "runas" with user and group components.
(maybe uid and gid too???) (maybe uid and gid too???)
11) Add -g group/gid option. 10) Add -g group/gid option.
12) Should be able to mix Cmnd_Alias's and command args. Ie: 11) Should be able to mix Cmnd_Alias's and command args. Ie:
pete ALL=PASSWD [A-z]*,!PASSWD root pete ALL=PASSWD [A-z]*,!PASSWD root
where PASSWD was defined to be /usr/bin/passwd. where PASSWD was defined to be /usr/bin/passwd.
This requires the arg parsing to happen in the yacc grammer. This requires the arg parsing to happen in the yacc grammer.
At the very least, commands and args have to become separate At the very least, commands and args have to become separate
tokens in the lexer. tokens in the lexer.
13) Add a per-tty restriction? Ie: only can run foo from /dev/console. 12) Add a per-tty restriction? Ie: only can run foo from /dev/console.
14) Add test for how to read ether interfaces in configure script 13) Add test for how to read ether interfaces in configure script
15) Add configure option to enable old behavior of visudo (O_EXCL)? 14) Add configure option to enable old behavior of visudo (O_EXCL)?
--without-sudoers-lock? --without-sudoers-lock?
16) Profile sudo again (is the yacc grammar optimal?) 15) Make 'sudo -l user' if run as root do a "sudo -l" output for the specified
17) Zero out encrypted passwords after use. Use an Exit function or
some such (have to hook in to emalloc() and friends).
Hard (impossible?) to be thorough w/ atexit/on_exit.
18) Make 'sudo -l user' if run as root do a "sudo -l" output for the specified
user. user.
19) Use strtol() and strtoul(), not atoi() 16) Use strtol() and strtoul(), not atoi()
20) Look into %e, %p, %k in parse.lex 17) Look into %e, %p, %k in parse.lex
21) Make syslog stuff work on vanilla ultrix 18) Make syslog stuff work on vanilla ultrix
22) Implement date_format and log_format options. 19) Implement date_format and log_format options.
23) Add support for: Default:user@host 20) Add support for: Default:user@host
24) Make visudo rcs-aware 21) Make visudo rcs-aware
25) Some people want to be able to specify a special password in sudoers 22) Some people want to be able to specify a special password in sudoers
in addition or instead of the normal one. The best argument for in addition or instead of the normal one. The best argument for
this so far is to be able to use separate passwords for the this so far is to be able to use separate passwords for the
target users that are not the passwd file ones. target users that are not the passwd file ones.
26) Add support for trusted users. E.g. allow user to run a certain 23) Add support for trusted users. E.g. allow user to run a certain
command regardless of what dir it is in if it is owned by the command regardless of what dir it is in if it is owned by the
trusted user. trusted user.
27) Split the parser into two stages. The first parse checks for 24) Add a flag similar to '-l' but that spits out sudo commands in
syntax and sets the Defaults options and sets up the
data structures to check a user. The second stage does
the actual user check.
28) Add a flag similar to '-l' but that spits out sudo commands in
a format suitable for cut & paste into sudoers. a format suitable for cut & paste into sudoers.
29) Someone wants a recursive version of the dir specifier. Ie: 25) Someone wants a recursive version of the dir specifier. Ie:
SOME_MODIFIER:/usr/local/ to allow anything under /usr/local to be run. SOME_MODIFIER:/usr/local/ to allow anything under /usr/local to be run.
29) An option to set the shell to the target user would make sense. 25) An option to set the shell to the target user would make sense.
See other target user-related issues above. See other target user-related issues above.
31) Add an option (-D) to dump the defaults after the sudoers file 27) Add an option (-D) to dump the defaults after the sudoers file
has been parsed. Should only be available to root and should has been parsed. Should only be available to root and should
allow a -u user modifier. allow a -u user modifier.
32) For sudo 1.7 wipe out the environment by default. 28) For sudo 1.7 wipe out the environment by default.
33) Allow /etc/sudoers to be a symlink but require the parent dir to 29) Allow /etc/sudoers to be a symlink but require the parent dir to
be root-owned and not writable by anything else. Should really be root-owned and not writable by anything else. Should really
traverse the tree to the root doing this. traverse the tree to the root doing this.
34) Improve interfaces.c STREAMS code (see ntpd's ntp_io.c for hints) 30) Improve interfaces.c STREAMS code (see ntpd's ntp_io.c for hints)
35) Wildcard support for user and group names? (netgroup too?) 31) Wildcard support for user and group names? (netgroup too?)
36) If root_sudo is off, still allow sudo -u to non-root users? 32) If root_sudo is off, still allow sudo -u to non-root users?
37) Add configure option to id user based on euid not ruid? 33) Add configure option to id user based on euid not ruid?
38) Split $EDITOR/$VISUAL in visudo into an argument vector based on whitespace 34) Split $EDITOR/$VISUAL in visudo into an argument vector based on whitespace
39) Use proper links in .pod files 35) Use proper links in .pod files
40) Parse gids like %#0 36) Parse gids like %#0
41) For AIX, call getuserattr() to get resource limits and set them 37) For AIX, call getuserattr() to get resource limits and set them
as appropriate, see: as appropriate, see:
http://nscp.upenn.edu/aix4.3html/libs/basetrf1/getuserattr.htm#A16691a89 http://nscp.upenn.edu/aix4.3html/libs/basetrf1/getuserattr.htm#A16691a89
42) Add an insult_path variable that is intialized to "builtin" but that 38) Add an insult_path variable that is intialized to "builtin" but that
can point to other files containing an insult count as the first can point to other files containing an insult count as the first
line and that have a constant record length (sparse files) for line and that have a constant record length (sparse files) for
easy seeking. easy seeking.
43) Some way of using a new pty for the program run via sudo would prevent 39) Some way of using a new pty for the program run via sudo would prevent
access to the caller's /dev/tty (but probably makes job control tricky). access to the caller's /dev/tty (but probably makes job control tricky).
44) Maybe have a database of checksums that commands are verified against. 40) Maybe have a database of checksums that commands are verified against.
Basically replace the st_ino/st_dev check with a checksum lookup. Basically replace the st_ino/st_dev check with a checksum lookup.
45) Look into testing writability of a file via sudoedit *before* doing 41) Look into testing writability of a file via sudoedit *before* doing
the edit; e.g., try opening with O_APPEND. the edit; e.g., try opening with O_APPEND.
46) Add Makefile.in bits to autogenerate Solaris and Irix packages 42) Add Makefile.in bits to autogenerate Solaris and Irix packages
47) Add support for Solaris 10 dtrace ala systrace support 43) Add monitor support for Solaris using /proc/$$/ctl w/ PCSENTRY
or use /proc/$$/ctl w/ PCSENTRY (use PRSABORT flag to indicate failure). (use PRSABORT flag to indicate failure).
48) Add a session mode where sudo allocates a pty and logs everything 44) Add a session mode where sudo allocates a pty and logs everything
that occurs ala script(1). that occurs ala script(1).
49) Use pam_open_session() and pam_close_session() (requires a persistent 45) Use pam_open_session() and pam_close_session() (requires a persistent
sudo process to call pam_close_session()). Maybe add xauth support for sudo process to call pam_close_session()). Maybe add xauth support for
the non-pam case? the non-pam case?
50) Should "monitor" and MONITOR/NOMONITOR be disabled for non-systrace? 46) Should "monitor" and MONITOR/NOMONITOR be disabled for non-systrace?
51) Add substitution mechanism in sudoers to subst, e.g. editors for sudoedit 47) Add substitution mechanism in sudoers to subst, e.g. editors for sudoedit
52) Move prototypes to extern.h 48) Move prototypes to extern.h
53) Get rid of VALIDATE_NOT_OK and just set/clear VALIDATE_OK 49) Get rid of VALIDATE_NOT_OK and just set/clear VALIDATE_OK
50) visudo -c should also sanity check aliases
51) Make testsudoers stat files? Needed to deal with glob() in parser.
52) Allow arguments to the -l flag so users can check to see if they can
run specific commands.