summaryrefslogtreecommitdiff
path: root/usr.bin/sudo/INSTALL
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>1999-11-18 16:29:02 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>1999-11-18 16:29:02 +0000
commitfb80ef71abd0dd6084c3019b48dac8f8875e56c0 (patch)
tree4539c778e73c91703e2f3f76360d2533b49f5ac6 /usr.bin/sudo/INSTALL
parent0c0a1b78c4dcea75d3af81ff0cfc60a948a7ef39 (diff)
sudo 1.6, now with a BSD license
Diffstat (limited to 'usr.bin/sudo/INSTALL')
-rw-r--r--usr.bin/sudo/INSTALL563
1 files changed, 563 insertions, 0 deletions
diff --git a/usr.bin/sudo/INSTALL b/usr.bin/sudo/INSTALL
new file mode 100644
index 00000000000..a80ff09ea1e
--- /dev/null
+++ b/usr.bin/sudo/INSTALL
@@ -0,0 +1,563 @@
+Installation instructions for Sudo 1.6
+======================================
+
+Sudo uses a `configure' script to probe the capabilities and type
+of the system in question. In this release, `configure' takes many
+more options than it did before. Please read this document fully
+before configuring and building sudo. You may also wish to read the
+file INSTALL.configure which explains more about the `configure' script.
+
+Simple sudo installation
+========================
+
+For most systems and configurations it is possible simply to:
+
+ 0) If you are upgrading from a previous version of sudo
+ please read the info in the UPGRADE file before proceeding.
+
+ 1) If you previously ran `configure' on a different host
+ you will probably want to do a `make distclean' to remove
+ the old `config.cache' file. Otherwise, `configure'
+ will complain and refuse to run. Alternately, one can
+ simply `rm config.cache'.
+
+ 2) Read the `OS dependent notes' section for any particular
+ "gotchas" relating to your operating system.
+
+ 3) `cd' to the source or build directory and type `./configure'
+ to generate a Makefile and config.h file suitable for
+ building sudo. Before you actually run configure you
+ should read the `Available configure options' section
+ to see if there are any special options you may want
+ or need. Also of interest may be the section on
+ `Mixing password authentication schemes'.
+
+ 4) Edit the configure-generated Makefile if you wish to
+ change any of the default paths (alternately you could
+ have changed the paths via options to `configure'.
+
+ 5) Type `make' to compile sudo. If you are building sudo
+ in a separate build tree (apart from the sudo source)
+ GNU make will probably be required. If `configure' did
+ its job properly (and you have a supported configuration)
+ there won't be any problems. If this doesn't work, take
+ a look at the files TROUBLESHOOTING and PORTING for tips
+ on what might have gone wrong. Please mail us if you have a
+ fix or if you are unable to come up with a fix (address at EOF).
+
+ 6) Type `make install' (as root) to install sudo, visudo, the
+ man pages, and a skeleton sudoers file. Note that the install
+ will not overwrite an existing sudoers file. You can also
+ install various pieces the package via the install-binaries,
+ install-man, and install-sudoers make targets.
+
+ 7) Edit the sudoers file with `visudo' as necessary for your
+ site. You will probably want to refer the sample.sudoers
+ file and sudoers man page included with the sudo package.
+
+ 8) If you want to use syslogd(8) to do the logging, you'll need
+ to update your /etc/syslog.conf file. See the sample.syslog.conf
+ file included in the distribution for an example.
+
+Available configure options
+===========================
+
+This section describes flags accepted by the sudo's `configure' script.
+Defaults are listed in brackets after the description.
+
+Configuration:
+ --cache-file=FILE
+ Cache test results in FILE
+
+ --help
+ Print the usage/help info
+
+ --no-create
+ Do not create output files
+
+ --quiet, --silent
+ Do not print `checking...' messages
+
+Directory and file names:
+ --prefix=PREFIX
+ Install architecture-independent files in PREFIX This really only
+ applies to man pages. [/usr/local]
+
+ --exec-prefix=EPREFIX
+ Install architecture-dependent files in EPREFIX This includes the
+ sudo and visudo executables. [same as prefix]
+
+ --bindir=DIR
+ Install `sudo' in DIR [EPREFIX/bin]
+
+ --sbindir=DIR
+ Install `visudo' in DIR [EPREFIX/sbin]
+
+ --sysconfdir=DIR
+ Install `sudoers' file in DIR [/etc]
+
+ --mandir=DIR
+ Install man pages in DIR [PREFIX/man]
+
+ --srcdir=DIR
+ Find the sources in DIR [configure dir or ..]
+
+Special features/options:
+ --with-CC=path
+ Specifies path to C compiler you wish to use.
+
+ --with-incpath
+ Adds the specified directories to CPPFLAGS so configure and the
+ compiler will look there for include files. Multiple directories
+ may be specified as long as they are space separated.
+ Eg: --with-incpath="/usr/local/include /opt/include"
+
+ --with-libpath
+ Adds the specified directories to SUDO_LDFLAGS and VISUDO_LDFLAGS so
+ configure and the compiler will look there for libraries. Multiple
+ directories may be specified as with --with-incpath.
+
+ --with-libraries
+ Adds the specified libaries to SUDO_LIBS and and VISUDO_LIBS so sudo
+ will link against them. If the library doesn't start with `-l' or end
+ in `.a' or `.o' a `-l' will be prepended to it. Multiple libraries may
+ be specified as long as they are space separated.
+
+ --with-csops
+ Add CSOps standard options. You probably aren't interested in this.
+
+ --with-skey
+ Enable S/Key OTP (One Time Password) support.
+
+ --with-opie
+ Enable NRL OPIE OTP (One Time Password) support.
+
+ --with-SecurID=DIR
+ Enable SecurID support. If specified, DIR is directory containing
+ sdiclient.a, sdi_athd.h, sdconf.h, and sdacmvls.h.
+
+ --with-fwtk=DIR
+ Enable TIS Firewall Toolkit (FWTK) 'authsrv' support. If specified,
+ DIR is the base directory containing the compiled FWTK package
+ (or at least the library and header files).
+
+ --with-kerb4
+ Enable kerberos v4 support. Tested only with the Cygnus Network
+ Security package (CNS). This uses kerberos passphrases for
+ authentication but does not use the kerberos cookie scheme.
+
+ --with-kerb5
+ Enable kerberos v5 support. Tested against MIT Kerberos V,
+ release 1.1, although also expected to work against CNS. This
+ This uses kerberos passphrases for authentication but does not
+ use the kerberos cookie scheme. Will not work for Kerberos V
+ older than version 1.1.
+
+ --with-authenticate
+ Enable support for the AIX 4.x general authentication function.
+ This will use the authentication scheme specified for the user
+ on the machine.
+
+ --with-pam
+ Enable PAM support. Tested on Redhat Linux 5.x and Solaris 2.6.
+
+ --with-AFS
+ Enable AFS support with kerberos authentication. Should work under
+ AFS 3.3. If your AFS doesn't have -laudit you should be able to
+ link without it.
+
+ --with-DCE
+ Enable DCE support. Known to work on HP-UX 9.X and 10.0. Other
+ platforms may require source code and/or `configure' changes.
+
+ --disable-sia
+ Disable SIA support. This is the "Security Integration Architecture"
+ on Digital UNIX. If you disable SIA sudo will use its own
+ authentication routines.
+
+ --disable-shadow
+ Disable shadow password support. Normally, sudo will compile in shadow
+ password support and use a shadow password if it exists.
+
+ --with-sudoers-mode=mode
+ File mode for the sudoers file (octal). Note that if you wish to
+ NFS-mount the sudoers file this must be group readable. Also note
+ that this is actually set in the Makefile. The default mode is 0440.
+
+ --with-sudoers-uid
+ User id that "owns" the sudoers file. Note that this is the numeric
+ id, *not* the symbolic name. Also note that this is actually set in
+ the Makefile. The default is 0.
+
+ --with-sudoers-gid
+ Group id that "owns" the sudoers file. Note that this is the numeric
+ id, *not* the symbolic name. Also note that this is actually set in
+ the Makefile. The default is 0.
+
+ --with-execv
+ Use execv() to exec the command instead of execvp(). I can't think of
+ a reason to actually do this since execvp() is passed a fully qualified
+ pathname but someone might thoroughly distrust execvp(). Note that if
+ you define this you lose the ability to exec scripts that are missing
+ the '#!/bin/sh' cookie (like /bin/kill on SunOS and /etc/fastboot on
+ 4.3BSD). This is off by default.
+
+ --without-interfaces
+ This option keeps sudo from trying to glean the ip address from each
+ attached ethernet interface. It is only useful on a machine where
+ sudo's interface reading support does not work, which may be the case
+ on some SysV-based OS's using STREAMS.
+
+ --without-passwd
+ This option authentication via the passwd (or shadow) file.
+ It should only be used when another, alternate, authentication
+ scheme is in use.
+
+ --with-editor=path
+ Specify the default editor used by visudo (and the only editor used
+ unless --with-env-editor is specified). The default is the path
+ to vi on your system.
+
+ --with-env-editor
+ Makes visudo consult the EDITOR and VISUAL environment variables before
+ falling back on the default editor. Note that this may create a
+ security hole as most editors allow a user to get a shell (which would
+ be a root shell and hence, no logging).
+
+The following options are also configurable at runtime:
+
+ --with-otp-only
+ This option is now just an alias for --without-passwd.
+
+ --with-long-otp-prompt
+ When validating with a One Time Password scheme (S/Key or OPIE), a
+ two-line prompt is used to make it easier to cut and paste the
+ challenge to a local window. It's not as pretty as the default but
+ some people find it more convenient.
+
+ --with-logging=TYPE
+ How you want to do your logging. You may choose "syslog", "file",
+ or "both". Setting this to "syslog" is nice because you can keep all
+ of your sudo logs in one place (see the FAQ). The default is "syslog".
+
+ --with-logfac=FACILITY
+ Determines which syslog facility to log to. This requires a 4.3BSD
+ or later version of syslog. You can still set this for ancient
+ syslogs but it will have no effect. The following facilities are
+ supported: authpriv (if your OS supports it), auth, daemon, user,
+ local0, local1, local2, local3, local4, local5, local6, and local7.
+
+ --with-goodpri=PRIORITY
+ Determines which syslog priority to log successfully authenticated
+ commands. The following priorities are supported: alert, crit,
+ debug, emerg, err, info, notice, and warning.
+
+ --with-badpri=PRIORITY
+ Determines which syslog priority to log unauthenticated commands
+ and errors. The following priorities are supported: alert, crit,
+ debug, emerg, err, info, notice, and warning.
+
+ --with-logpath=path
+ Override the default location of the sudo log file and use "path"
+ instead. By default will use /var/log/sudo.log if there is a /var/log
+ dir, falling back to /var/adm/sudo.log or /usr/adm/sudo.log if not.
+
+ --with-loglen
+ Number of characters per line for the file log. This is only used if
+ you are to "file" or "both". This value is used to decide when to wrap
+ lines for nicer log files. The default is 80. Setting this to 0
+ will disable the wrapping.
+
+ --with-ignore-dot
+ If set, sudo will ignore '.' or '' (current dir) in $PATH.
+ The $PATH itself is not modified.
+
+ --with-mailto
+ User that mail from sudo is sent to. This should go to a sysadmin at
+ your site. The default is "root".
+
+ --with-mailsubject
+ Subject of the mail sent to the "mailto" user. The token "%h"
+ will expand to the hostname of the machine.
+ Default is "*** SECURITY information for %h ***".
+
+ --without-mail-if-no-user
+ Normally, sudo will mail to the "alermail" user if the user invoking
+ sudo is not in the sudoers file. This option disables that behavior.
+
+ --with-mail-if-no-host
+ Send mail to the "alermail" user if the user exists in the sudoers
+ file, but is not allowed to run commands on the current host.
+
+ --with-mail-if-noperms
+ Send mail to the "alermail" user if the user is allowed to use sudo but
+ the command they are trying is not listed in their sudoers file entry.
+
+ --with-passprompt
+ Default prompt to use when asking for a password; can be overridden
+ via the -p option and the SUDO_PROMPT environment variable. Supports
+ two escapes: "%u" expands to the user's login name and "%h" expands
+ to the local hostname. Default is "Password:".
+
+ --with-badpass-message
+ Message that is displayed if a user enters an incorrect password.
+ The default is "Sorry, try again." unless insults are turned on.
+
+ --with-fqdn
+ Define this if you want to put fully qualified hostnames in the sudoers
+ file. Ie: instead of myhost you would use myhost.mydomain.edu. You may
+ still use the short form if you wish (and even mix the two). Beware
+ that turning FQDN on requires sudo to make DNS lookups which may make
+ sudo unusable if your DNS is totally hosed. Also note that you must
+ use the host's official name as DNS knows it. That is, you may not use
+ a host alias (CNAME entry) due to performance issues and the fact that
+ there is no way to get all aliases from DNS.
+
+ --with-timedir=path
+ Override the default location of the sudo timestamp directory and
+ use "path" instead.
+
+ --with-sendmail=path
+ Override configure's guess as to the location of sendmail.
+
+ --without-sendmail
+ Do not use sendmail to mail messages to the "mailto" user.
+ Use only if don't run sendmail or the equivalent.
+
+ --with-umask
+ Umask to use when running the root command. The default is 0022.
+
+ --without-umask
+ Preserves the umask of the user invoking sudo.
+
+ --with-runas-default=user
+ The default user to run commands as if the -u flag is not specified
+ on the command line. This defaults to "root".
+
+ --with-exempt=group
+ Users in the specified group don't need to enter a password when
+ running sudo. This may be useful for sites that don't want their
+ "core" sysadmins to have to enter a password but where Jr. sysadmins
+ need to. You should probably use NOPASSWD in sudoers instead.
+
+ --with-passwd-tries=tries
+ Number of tries a user gets to enter his/her password before sudo logs
+ the failure and exits. The default is 3.
+
+ --with-timeout=minutes
+ Number of minutes that can elapse before sudo will ask for a passwd
+ again. The default is 5, set this to 0 to always prompt for a password.
+
+ --with-password-timeout=minutes
+ Number of minutes before the sudo password prompt times out.
+ The default is 5, set this to 0 for no password timeout.
+
+ --with-tty-tickets
+ This makes sudo use a different ticket file for each tty (per user).
+ Ie: instead of the ticket file being "username" it is "username:tty".
+ This is useful for "shared" accounts like "operator". Note that this
+ means that there will be more files in the timestamp dir. This is not
+ a problem if your system has a cron job to remove of files from /tmp
+ (or wherever you specified the timestamp dir to be).
+
+ --with-insults
+ Define this if you want to be insulted for typing an incorrect password
+ just like the original sudo(8). This is off by default.
+
+ --with-all-insults
+ Include all the insult sets listed below.
+
+ --with-classic-insults
+ Uses insults from sudo "classic." If you just specify --with-insults
+ you will get the classic and CSOps insults. This is on by default if
+ --with-insults is given.
+
+ --with-csops-insults
+ Insults the user with an extra set of insults (some quotes, some
+ original) from a sysadmin group at CU (CSOps). You must specify
+ --with-insults as well for this to have any effect. This is on by
+ default if --with-insults is given.
+
+ --with-hal-insults
+ Uses 2001-like insults when an incorrect password is entered.
+ You must specify --with-insults as well for this to have any effect.
+
+ --with-goons-insults
+ Insults the user with lines from the "Goon Show" when an incorrect
+ password is entered. You must specify --with-insults as well for
+ this to have any effect.
+
+ --with-secure-path[=path]
+ Path used for every command run from sudo(8). If you don't trust the
+ people running sudo to have a sane PATH environment variable you may
+ want to use this. Another use is if you want to have the "root path"
+ be separate from the "user path." You will need to customize the path
+ for your site. NOTE: this is not applied to users in the group
+ specified by --with-exemptgroup. If you do not specify a path,
+ "/bin:/usr/ucb:/usr/bin:/usr/sbin:/sbin:/usr/etc:/etc" is used.
+
+ --without-lecture
+ Don't print the lecture the first time a user runs sudo.
+
+ --disable-authentication
+ By default, sudo requires the user to authenticate via a
+ password or similar means. This options causes sudo to
+ *not* require authentication. It is possible to turn
+ authentication back on in sudoers via the PASSWD attribute.
+
+ --disable-root-sudo
+ Don't let root run sudo. This can be used to prevent people from
+ "chaining" sudo commands to get a root shell by doing something
+ like "sudo sudo /bin/sh".
+
+ --enable-log-host
+ Log the hostname in the log file.
+
+ --enable-noargs-shell
+ If sudo is invoked with no arguments it acts as if the "-s" flag had
+ been given. That is, it runs a shell as root (the shell is determined
+ by the SHELL environment variable, falling back on the shell listed
+ in the invoking user's /etc/passwd entry).
+
+ --enable-shell-sets-home
+ If sudo is invoked with the "-s" flag the HOME environment variable
+ will be set to the home directory of the target user (which is root
+ unless the "-u" option is used). This option effectively makes the
+ "-s" flag imply "-H".
+
+ --disable-path-info
+ Normally, sudo will tell the user when a command could not be found
+ in their $PATH. Some sites may wish to disable this as it could
+ be used to gather information on the location of executables that
+ the normal user does not have access to. The disadvantage is that
+ if the executable is simply not in the user's path, sudo will tell
+ the user that they are not allowed to run it, which can be confusing.
+
+Shadow password and C2 support
+==============================
+
+Shadow passwords (also included with most C2 security packages) are
+supported on most major platforms for which they exist. The
+`configure' script will attempt to determine if your system can use
+shadow passwords and include support for them if so. Shadow password
+support is now compiled in by default (it doesn't hurt anything if you
+don't have them configured). To disable the shadow password support,
+use the --disable-shadow option to configure.
+
+Shadow passwords are known to work on the following platforms:
+
+ SunOS 4.x
+ Solaris 2.x
+ HP-UX >= 9.x
+ Ultrix 4.x
+ Digital UNIX
+ IRIX >= 5.x
+ AIX >= 3.2.x
+ ConvexOS with C2 security (not tested recently)
+ Linux
+ SCO >= 3.2.2
+ Pyramid DC/OSx
+ UnixWare
+ SVR4 (and variants using standard SVR4 shadow passwords)
+ 4.4BSD based systems (including OpenBSD, NetBSD, FreeBSD, and BSD/OS)
+ OS's using SecureWare's C2 security.
+
+OS dependent notes
+==================
+
+OpenBSD < 2.2 and NetBSD < 1.2.1:
+ The fdesc filesystem has a bug wrt /dev/tty handling that
+ causes sudo to hang at the password prompt. The workaround
+ is to run configure with --with-password-timeout=0
+
+Solaris 2.x:
+ You need to have a C compiler in order to build sudo.
+ Since Solaris 2.x does not come with one by default this
+ means that you either need to have purchased the unbundled Sun
+ C compiler or have a copy of the GNU C compiler (gcc).
+ The SunSoft Catalyst CD should contain gcc binaries for
+ Solaris. You can also get them from various places on the
+ net, including http://www.sunfreeware.com/
+ NOTE: sudo will *not* build with the sun C compiler in BSD
+ compatibility mode (/usr/ucb/cc). Sudo is designed to
+ compile with the standard C compiler (or gcc) and will
+ not build correctly with /usr/ucb/cc. You can use the
+ `--with-CC' option to point `configure' to the non-ucb
+ compiler if it is not the first cc in your path. Some
+ sites link /usr/ucb/cc to gcc; configure will not notice
+ this an still refuse to use /usr/ucb/cc, so make sure gcc
+ is also in your path if your site is setup this way.
+ Also: Many versions of Solaris come with a broken syslogd.
+ If you have having problems with sudo logging you should
+ make sure you have the latest syslogd patch installed.
+ This is a problem for Solaris 2.4 and 2.5 at least.
+
+AIX 3.2.x:
+ I've had various problems with the AIX C compiler producing
+ incorrect code when the -O flag was used. When optimization
+ is not used, the problems go away. Gcc does not appear
+ to have this problem.
+
+ Also, the AIX 3.2.x lex will not work with sudo's parse.lex.
+ This should not be a problem as sudo comes shipped with
+ a pre-generated lex.yy.c (created by flex). If you want
+ to modify the lex tokenizer, make sure you grab a copy of
+ flex from ftp.ee.lbl.gov (also available on most GNU mirrors)
+ and sudo will use that instead.
+
+Ultrix 4.x:
+ Ultrix still ships with the 4.2BSD syslog(3) which does not
+ allow things like logging different facilities to different
+ files, redirecting logs to a single loghost and other niceties.
+ You may want to just grab and install:
+ ftp://gatekeeper.dec.com/pub/DEC/jtkohl-syslog-complete.tar.Z
+ (available via anonymous ftp) which is a port if the 4.3BSD
+ syslog/syslogd that is backwards compatible with the Ultrix version.
+ I recommend it highly. If you do not do this you probably want
+ to run configure with --with-logging=file
+
+Digital UNIX:
+ By default, sudo will use SIA (Security Integration Architecture)
+ to validate a user. If you want to use an alternate authentication
+ method that does not go through SIA, you need to use the
+ --disable-sia option to configure. If you use gcc to compile
+ you will get warnings when building interfaces.c. These are
+ harmless but if they really bug you, you can edit
+ /usr/include/net/if.h around line 123, right after the comment:
+ /* forward decls for C++ */
+ change the line:
+ #ifdef __cplusplus
+ to:
+ #if defined(__cplusplus) || defined(__GNUC__)
+ If you don't like the idea of editing the system header file
+ you can just make a copy in gcc's private include tree and
+ edit that.
+
+Linux:
+ NOTE: Reportedly, Linux's execvp(3) doesn't always execute
+ scripts that lack the "#!/some/shell" header correctly.
+ The workaround is to give all your scripts a proper
+ header.
+ Versions of glibc 2.x previous to 2.0.7 have a broken lsearch().
+ You will need to either upgrade to glibc-2.0.7 or use sudo's
+ version of lsearch(). To use sudo's lsearch(), comment out
+ the "#define HAVE_LSEARCH 1" line in config.h and add lsearch.o
+ to the LIBOBJS line in the Makefile.
+
+ It is not possible to access the sudoers file via NFS on Linux.
+ This is due to a bug in the Linux client-side NFS implementation.
+ It has been fixed in the developement kernel but, as of Aug 27, 1999,
+ the fixes have not made it into the mainstream kernel.
+
+Mac OS X:
+ It has been reported that for sudo to work on Mac OS X it must
+ either be built with the --with-password-timeout=0 option or the
+ password timeout must be disabled in the Defaults line in the
+ sudoers file. If sudo just hangs when you try to enter a password,
+ you need to disable the password timeout (Note: this is not a bug
+ in sudo).
+
+SCO ODT:
+ You'll probably need libcrypt_i.a available via anonymous ftp
+ from sosco.sco.com. The necessary files are /SLS/lng225b.Z
+ and /SLS/lng225b.ltr.Z.