mo docs
[debian/sudo] / INSTALL
1 Installation instructions for Sudo 1.8
2 ======================================
3
4 Sudo uses a `configure' script to probe the capabilities and type
5 of the system in question.  In this release, `configure' takes many
6 more options than it did before.  Please read this document fully
7 before configuring and building sudo.  You may also wish to read the
8 file INSTALL.configure which explains more about the `configure' script.
9
10 Simple sudo installation
11 ========================
12
13 For most systems and configurations it is possible simply to:
14
15     0) If you are upgrading from a previous version of sudo
16        please read the info in the UPGRADE file before proceeding.
17
18     1) Read the `OS dependent notes' section for any particular
19        "gotchas" relating to your operating system.
20
21     2) `cd' to the source or build directory and type `./configure'
22        to generate a Makefile and config.h file suitable for
23        building sudo.  Before you actually run configure you
24        should read the `Available configure options' section
25        to see if there are any special options you may want
26        or need.
27
28     3) Edit the configure-generated Makefile if you wish to
29        change any of the default paths (alternatively, you could
30        have changed the paths via options to `configure'.
31
32     5) Type `make' to compile sudo.  If you are building sudo
33        in a separate build tree (apart from the sudo source) GNU
34        make will probably be required.  If `configure' did its job
35        properly (and you have a supported configuration) there won't
36        be any problems.  If this doesn't work, take a look at the
37        TROUBLESHOOTING file for tips on what might have gone wrong.
38        Please mail us if you have a fix or if you are unable to
39        come up with a fix (address at EOF).
40
41     6) Type `make install' (as root) to install sudo, visudo, the
42        man pages, and a skeleton sudoers file.  Note that the install
43        will not overwrite an existing sudoers file.  You can also
44        install various pieces the package via the install-binaries,
45        install-doc, and install-sudoers make targets.
46
47     7) Edit the sudoers file with `visudo' as necessary for your
48        site.  You will probably want to refer the sample.sudoers
49        file and sudoers man page included with the sudo package.
50
51     8) If you want to use syslogd(8) to do the logging, you'll need
52        to update your /etc/syslog.conf file.  See the sample.syslog.conf
53        file included in the distribution for an example.
54
55 Available configure options
56 ===========================
57
58 This section describes flags accepted by the sudo's `configure' script.
59 Defaults are listed in brackets after the description.
60
61 Configuration:
62   --cache-file=FILE
63         Cache test results in FILE
64
65   --config-cache, -C
66         Alias for `--cache-file=config.cache'
67
68   --help, -h
69         Print the usage/help info
70
71   --no-create, -n
72         Do not create output files
73
74   --quiet, --silent, -q
75         Do not print `checking...' messages
76
77 Directory and file names:
78   --prefix=PREFIX
79         Install architecture-independent files in PREFIX This really only
80         applies to man pages.  [/usr/local]
81
82   --exec-prefix=EPREFIX
83         Install architecture-dependent files in EPREFIX This includes the
84         sudo and visudo executables.  [same as prefix]
85
86   --bindir=DIR
87         Install `sudo' in DIR [EPREFIX/bin]
88
89   --sbindir=DIR
90         Install `visudo' in DIR [EPREFIX/sbin]
91
92   --sysconfdir=DIR
93         Install `sudoers' file in DIR [/etc]
94
95   --mandir=DIR
96         Install man pages in DIR [PREFIX/man]
97
98   --srcdir=DIR
99         Find the sources in DIR [configure dir or ..]
100
101 Special features/options:
102   --with-CC=PATH
103         Specifies path to C compiler you wish to use.
104
105   --with-incpath=DIR
106         Adds the specified directory (or directories) to CPPFLAGS
107         so configure and the compiler will look there for include
108         files.  Multiple directories may be specified as long as
109         they are space separated.
110         Eg: --with-incpath="/usr/local/include /opt/include"
111
112   --with-libpath=DIR
113         Adds the specified directory (or directories) to LDFLAGS
114         so configure and the compiler will look there for libraries.
115         Multiple directories may be specified as with --with-incpath.
116
117   --with-rpath
118         Tells configure to use -Rpath in addition to -Lpath when
119         passing library paths to the loader.  This option is on
120         by default for Solaris and SVR4.
121
122   --with-blibpath[=PATH]
123         Tells configure to construct a -blibpath argument to the
124         loader.  If a PATH is specified, it will be used as the
125         base.  Otherwise, "/usr/lib:/lib:/usr/local/lib" will be
126         used for gcc and "/usr/lib:/lib" for non-gcc.  Additional
127         library paths will be appended as needed by configure.
128         This option is only valid for AIX where it is on by default.
129
130   --with-libraries=LIBRARY
131         Adds the specified library (or libaries) to SUDO_LIBS and
132         and VISUDO_LIBS so sudo will link against them.  If the
133         library doesn't start with `-l' or end in `.a' or `.o' a
134         `-l' will be prepended to it.  Multiple libraries may be
135         specified as long as they are space separated.
136
137   --with-plugindir=PATH
138         Set the directory that sudo looks in to find the policy and I/O
139         logging plugins.  Defaults to the libexec dir used by configure.
140
141   --with-efence
142         Link with the "electric fence" debugging malloc.
143
144   --with-bsm-audit
145         Enable support for sudo BSM audit logs on systems that support
146         it.  Currently only supported under FreeBSD and Mac OS X.
147
148   --with-csops
149         Add CSOps standard options.  You probably aren't interested in this.
150
151   --with-devel
152         Configure development options.  This will enable compiler warnings
153         and set the Makefile to be able to regenerate the sudoers parser
154         as well as the manual pages.
155
156   --with-linux-audit
157         Enable audit support for Linux systems.  Audits attempts
158         to run a command as well as SELinux role changes.
159
160   --with-skey[=DIR]
161         Enable S/Key OTP (One Time Password) support.  If specified,
162         DIR should contain include and lib directories with skey.h
163         and libskey.a respectively.
164
165   --with-opie[=DIR]
166         Enable NRL OPIE OTP (One Time Password) support.  If specified,
167         DIR should contain include and lib directories with opie.h
168         and libopie.a respectively.
169
170   --with-SecurID[=DIR]
171         Enable SecurID support.  If specified, DIR is directory containing
172         sdiclient.a, sdi_athd.h, sdconf.h, and sdacmvls.h.
173
174   --with-fwtk[=DIR]
175         Enable TIS Firewall Toolkit (FWTK) 'authsrv' support. If specified,
176         DIR is the base directory containing the compiled FWTK package
177         (or at least the library and header files).
178
179   --with-kerb4[=DIR]
180         Enable Kerberos IV support.  If specified, DIR is the base
181         directory containing the Kerberos IV include and lib dirs.
182         This uses Kerberos passphrases for authentication but does
183         not use the Kerberos cookie scheme.
184
185   --with-kerb5[=DIR]
186         Enable Kerberos V support.  If specified, DIR is the base
187         directory containing the Kerberos V include and lib dirs.
188         This This uses Kerberos passphrases for authentication but
189         does not use the Kerberos cookie scheme.  Will not work for
190         Kerberos V older than version 1.1.
191
192   --with-ldap[=DIR]
193         Enable LDAP support.  If specified, DIR is the base directory
194         containing the LDAP include and lib directories.  Please see
195         README.LDAP for more information.
196
197   --with-ldap-conf-file=PATH
198         Path to LDAP configuration file.  If specified, sudo reads
199         this file instead of /etc/ldap.conf to locate the LDAP server.
200
201   --with-ldap-secret-file=PATH
202         Path to LDAP secret password file.  If specified, sudo uses
203         this file instead of /etc/ldap.secret to read the secret password
204         when rootbinddn is specified in the ldap config file.
205
206   --with-nsswitch[=PATH]
207         Path to nsswitch.conf or "no" to disable nsswitch support.
208         If specified, sudo uses this file instead of /etc/nsswitch.conf.
209         If nsswitch is disabled but LDAP is enabled, sudo will check
210         LDAP first, then the sudoers file.
211
212   --with-netsvc[=PATH]
213         Path to netsvc.conf or "no" to disable netsvc.conf support.
214         If specified, sudo uses this file instead of /etc/netsvc.conf
215         on AIX systems.
216
217   --with-aixauth
218         Enable support for the AIX 4.x general authentication function.
219         This will use the authentication scheme specified for the user
220         on the machine.  It is on by default for AIX systems that
221         support it.
222
223   --with-pam
224         Enable PAM support.  This is on by default for Darwin, FreeBSD,
225         Linux, Solaris and HP-UX (version 11 and higher).
226
227         NOTE: on RedHat Linux and Fedora you *must* have an /etc/pam.d/sudo
228         file install.  You may either use the sample.pam file included with
229         sudo or use /etc/pam.d/su as a reference.  The sample.pam file
230         included with sudo may or may not work with other Linux distributions.
231         On Solaris and HP-UX 11 systems you should check (and understand)
232         the contents of /etc/pam.conf.  Do a "man pam.conf" for more
233         information and consider using the "debug" option, if available,
234         with your PAM libraries in /etc/pam.conf to obtain syslog output
235         for debugging purposes.
236
237   --with-pam-login
238         Enable a specific PAM session when sudo is given the -i option.
239         This changes the PAM service name when sudo is run with the -i
240         option from "sudo" to "sudo-i", allowing for a separate pam
241         configuration for sudo's initial login mode.
242
243   --with-AFS
244         Enable AFS support with Kerberos authentication.  Should work under
245         AFS 3.3.  If your AFS doesn't have -laudit you should be able to
246         link without it.
247
248   --with-DCE
249         Enable DCE support for systems without PAM.  Known to work on
250         HP-UX 9.X, 10.X, and 11.0; other systems may require source
251         code and/or `configure' changes.  On systems with PAM support
252         (such as HP-UX 11.0 and higher, Solaris, FreeBSD and Linux), the
253         DCE PAM module (usually libpam_dce) should be used instead.
254
255   --with-logincap
256         This adds support for login classes specified in /etc/login.conf.
257         It is enabled by default on BSD/OS, Darwin, FreeBSD, OpenBSD and
258         NetBSD (where available).  By default, a login class is not applied
259         unless the 'use_loginclass' option is defined in sudoers or the user
260         specifies a class on the command line.
261
262   --with-bsdauth
263         Enable support for BSD authentication.  This is the default
264         for BSD/OS and OpenBSD systems that support it.
265         It is not possible to mix BSD authentication with other
266         authentication methods (and there really should be no need
267         to do so).  Note that only the newer BSD authentication API
268         is supported.  If you don't have /usr/include/bsd_auth.h
269         then you cannot use this.
270
271   --with-project
272         Enable support for Solaris project resource limits.
273         This option is only available on Solaris 9 and above.
274
275   --with-noexec[=PATH]
276         Enable support for the "noexec" functionality which prevents
277         a dynamically-linked program being run by sudo from executing
278         another program (think shell escapes).  Please see the
279         "PREVENTING SHELL ESCAPES" section in the sudoers man page
280         for details.  If specified, PATH should be a fully qualified
281         path name, e.g. /usr/local/libexec/sudo_noexec.so.  If PATH
282         is "no", noexec support will not be compiled in.  The default
283         is to compile noexec support if libtool supports building
284         shared objects on your OS.
285
286   --disable-pam-session
287         Disable sudo's PAM session support.  This may be needed on
288         older PAM implementations or on operating systems where
289         opening a PAM session changes the utmp or wtmp files.  If
290         PAM session support is disabled, resource limits may not
291         be updatedin for command being run.
292
293   --disable-root-mailer
294         By default sudo will run the mailer as root when tattling
295         on a user so as to prevent that user from killing the mailer.
296         With this option, sudo will run the mailer as the invoking
297         user which some people consider to be safer.
298
299   --disable-setreuid
300         Disable use of the setreuid() function for operating systems
301         where it is broken.  Mac OS X has setreuid() but it doesn't
302         really work.
303
304   --disable-setresuid
305         Disable use of the setresuid() function for operating systems
306         where it is broken (none currently known).
307
308   --disable-sia
309         Disable SIA support.  This is the "Security Integration
310         Architecture" on Digital UNIX. If you disable SIA sudo will
311         use its own authentication routines.
312
313   --disable-shadow
314         Disable shadow password support.  Normally, sudo will compile
315         in shadow password support and use a shadow password if it
316         exists.
317
318   --with-sudoers-mode=MODE
319         File mode for the sudoers file (octal).  Note that if you
320         wish to NFS-mount the sudoers file this must be group
321         readable.  Also note that this is actually set in the
322         Makefile.  The default mode is 0440.
323
324   --with-sudoers-uid=UID
325         User id that "owns" the sudoers file.  Note that this is
326         the numeric id, *not* the symbolic name.  Also note that
327         this is actually set in the Makefile.  The default is 0.
328
329   --with-sudoers-gid=GID
330         Group id that "owns" the sudoers file.  Note that this is
331         the numeric id, *not* the symbolic name.  Also note that
332         this is actually set in the Makefile.  The default is 0.
333
334   --without-interfaces
335         This option keeps sudo from trying to glean the ip address
336         from each attached ethernet interface.  It is only useful
337         on a machine where sudo's interface reading support does
338         not work, which may be the case on some SysV-based OS's
339         using STREAMS.
340
341   --without-passwd
342         This option excludes authentication via the passwd (or
343         shadow) file.  It should only be used when another, alternative,
344         authentication scheme is in use.
345
346   --with-otp-only
347         This option is now just an alias for --without-passwd.
348
349   --with-stow
350         Properly handle GNU stow packaging.  The sudoers file will
351         physically live in ${prefix}/etc and /etc/sudoers will be
352         a symbolic link.
353
354   --with-selinux 
355         Enable support for role based access control (RBAC) on
356         systems that support SELinux.
357
358 The following options are also configurable at runtime:
359
360   --with-long-otp-prompt
361         When validating with a One Time Password scheme (S/Key or
362         OPIE), a two-line prompt is used to make it easier to cut
363         and paste the challenge to a local window.  It's not as
364         pretty as the default but some people find it more convenient.
365
366   --with-logging=TYPE
367         How you want to do your logging.  You may choose "syslog",
368         "file", or "both".  Setting this to "syslog" is nice because
369         you can keep all of your sudo logs in one place (see the
370         sample.syslog.conf file).  The default is "syslog".
371
372   --with-logfac=FACILITY
373         Determines which syslog facility to log to.  This requires
374         a 4.3BSD or later version of syslog.  You can still set
375         this for ancient syslogs but it will have no effect.  The
376         following facilities are supported: authpriv (if your OS
377         supports it), auth, daemon, user, local0, local1, local2,
378         local3, local4, local5, local6, and local7.
379
380   --with-goodpri=PRIORITY
381         Determines which syslog priority to log successfully
382         authenticated commands.  The following priorities are
383         supported: alert, crit, debug, emerg, err, info, notice,
384         and warning.
385
386   --with-badpri=PRIORITY
387         Determines which syslog priority to log unauthenticated
388         commands and errors.  The following priorities are supported:
389         alert, crit, debug, emerg, err, info, notice, and warning.
390
391   --with-logpath=PATH
392         Override the default location of the sudo log file and use
393         "path" instead.  By default will use /var/log/sudo.log if
394         there is a /var/log dir, falling back to /var/adm/sudo.log
395         or /usr/adm/sudo.log if not.
396
397   --with-loglen=NUMBER
398         Number of characters per line for the file log.  This is only used if
399         you are to "file" or "both".  This value is used to decide when to wrap
400         lines for nicer log files.  The default is 80.  Setting this to 0
401         will disable the wrapping.
402
403   --with-ignore-dot
404         If set, sudo will ignore '.' or '' (current dir) in $PATH.
405         The $PATH itself is not modified.
406
407   --with-mailto=USER|MAIL_ALIAS
408         User (or mail alias) that mail from sudo is sent to.
409         This should go to a sysadmin at your site.  The default is "root".
410
411   --with-mailsubject="SUBJECT OF MAIL"
412         Subject of the mail sent to the "mailto" user. The token "%h"
413         will expand to the hostname of the machine.
414         Default is "*** SECURITY information for %h ***".
415
416   --without-mail-if-no-user
417         Normally, sudo will mail to the "alertmail" user if the user invoking
418         sudo is not in the sudoers file.  This option disables that behavior.
419
420   --with-mail-if-no-host
421         Send mail to the "alermail" user if the user exists in the sudoers
422         file, but is not allowed to run commands on the current host.
423
424   --with-mail-if-noperms
425         Send mail to the "alermail" user if the user is allowed to use sudo but
426         the command they are trying is not listed in their sudoers file entry.
427
428   --with-passprompt="PASSWORD PROMPT"
429         Default prompt to use when asking for a password; can be overridden
430         via the -p option and the SUDO_PROMPT environment variable. Supports
431         the "%H", "%h", "%U" and "%u" escapes as documented in the sudo
432         manual page.  The default value is "Password:".
433
434   --with-badpass-message="BAD PASSWORD MESSAGE"
435         Message that is displayed if a user enters an incorrect password.
436         The default is "Sorry, try again." unless insults are turned on.
437
438   --with-fqdn
439         Define this if you want to put fully qualified hostnames in the sudoers
440         file.  Ie: instead of myhost you would use myhost.mydomain.edu.  You may
441         still use the short form if you wish (and even mix the two).  Beware
442         that turning FQDN on requires sudo to make DNS lookups which may make
443         sudo unusable if your DNS is totally hosed.  Also note that you must
444         use the host's official name as DNS knows it.  That is, you may not use
445         a host alias (CNAME entry) due to performance issues and the fact that
446         there is no way to get all aliases from DNS.
447
448   --with-timedir=PATH
449         Override the default location of the sudo timestamp directory and
450         use "path" instead.
451
452   --with-sendmail=PATH
453         Override configure's guess as to the location of sendmail.
454
455   --without-sendmail
456         Do not use sendmail to mail messages to the "mailto" user.
457         Use only if don't run sendmail or the equivalent.
458
459   --with-umask=MASK
460         Umask to use when running the root command.  The default is 0022.
461
462   --without-umask
463         Preserves the umask of the user invoking sudo.
464
465   --with-umask-override
466         Use the umask specified in sudoers even if it is less restrictive
467         than the user's.  The default is to use the intersection of the
468         user's umask and the umask specified in sudoers.
469
470   --with-runas-default=USER
471         The default user to run commands as if the -u flag is not specified
472         on the command line.  This defaults to "root".
473
474   --with-exempt=GROUP
475         Users in the specified group don't need to enter a password when
476         running sudo.  This may be useful for sites that don't want their
477         "core" sysadmins to have to enter a password but where Jr. sysadmins
478         need to.  You should probably use NOPASSWD in sudoers instead.
479
480   --with-passwd-tries=NUMBER
481         Number of tries a user gets to enter his/her password before sudo logs
482         the failure and exits.  The default is 3.
483
484   --with-timeout=NUMBER
485         Number of minutes that can elapse before sudo will ask for a passwd
486         again.  The default is 5, set this to 0 to always prompt for a password.
487
488   --with-password-timeout=NUMBER
489         Number of minutes before the sudo password prompt times out.
490         The default is 5, set this to 0 for no password timeout.
491
492   --without-tty-tickets
493         By default, sudo uses a different ticket file for each user/tty combo.
494         With this option disabled, a single ticket will be used for all
495         of a user's login sessions.
496
497   --with-insults
498         Define this if you want to be insulted for typing an incorrect password
499         just like the original sudo(8).  This is off by default.
500
501   --with-insults=disabled
502         Include support for insults but disable them unless explicitly
503         enabled in sudoers.
504
505   --with-all-insults
506         Include all the insult sets listed below.  You must either specify
507         --with-insults or enable insults in the sudoers file for this to
508         have any effect.
509
510   --with-classic-insults
511         Uses insults from sudo "classic."  If you just specify --with-insults
512         you will get the classic and CSOps insults.  This is on by default if
513         --with-insults is given.
514
515   --with-csops-insults
516         Insults the user with an extra set of insults (some quotes, some
517         original) from a sysadmin group at CU (CSOps).  You must specify
518         --with-insults as well for this to have any effect.  This is on by
519         default if --with-insults is given.
520
521   --with-hal-insults
522         Uses 2001-like insults when an incorrect password is entered.
523         You must either specify --with-insults or enable insults in the
524         sudoers file for this to have any effect.
525
526   --with-goons-insults
527         Insults the user with lines from the "Goon Show" when an incorrect
528         password is entered.  You must either specify --with-insults or
529         enable insults in the sudoers file for this to have any effect.
530
531   --with-pc-insults
532         Replace politically incorrect insults with less objectionable ones.
533
534   --with-secure-path[=PATH]
535         Path used for every command run from sudo(8).  If you don't trust the
536         people running sudo to have a sane PATH environment variable you may
537         want to use this.  Another use is if you want to have the "root path"
538         be separate from the "user path."  You will need to customize the path
539         for your site.  NOTE: this is not applied to users in the group
540         specified by --with-exemptgroup.  If you do not specify a path,
541         "/bin:/usr/ucb:/usr/bin:/usr/sbin:/sbin:/usr/etc:/etc" is used.
542
543   --without-lecture
544         Don't print the lecture the first time a user runs sudo.
545
546   --with-editor=PATH
547         Specify the default editor path for use by visudo.  This may be a
548         single path name or a colon-separated list of editors.  In the latter
549         case, visudo will choose the editor that matches the user's VISUAL
550         or EDITOR environment variables or the first editor in the list that
551         exists.  The default is the path to vi on your system.
552
553   --with-env-editor
554         Makes visudo consult the VISUAL and EDITOR environment variables before
555         falling back on the default editor list (as specified by --with-editor).
556         Note that this may create a security hole as it allows the user to
557         run any arbitrary command as root without logging.  A safer alternative
558         is to use a colon-separated list of editors with the --with-editor
559         option.  visudo will then only use the VISUAL or EDITOR variables
560         if they match a value specified via --with-editor.
561
562   --with-askpass=PATH
563         Set PATH as the "askpass" program to use when no tty is
564         available.  Typically, this is a graphical password prompter,
565         similar to the one used by ssh.  The program must take a
566         prompt as an argument and print the received password to
567         the standard output.
568
569   --with-iologdir[=DIR]
570         By default, sudo stores I/O log files in either /var/log/sudo-io,
571         /var/adm/sudo-io, or /usr/log/sudo-io.  If this option is
572         specified, I/O logs will be stored in the indicated directory
573         instead.
574
575   --disable-authentication
576         By default, sudo requires the user to authenticate via a
577         password or similar means.  This options causes sudo to
578         *not* require authentication.  It is possible to turn
579         authentication back on in sudoers via the PASSWD attribute.
580
581   --disable-root-sudo
582         Don't let root run sudo.  This can be used to prevent people from
583         "chaining" sudo commands to get a root shell by doing something
584         like "sudo sudo /bin/sh".
585
586   --enable-gss-krb5-ccache-name
587         Use the gss_krb5_ccache_name() function to set the Kerberos
588         V credential cache file name.  By default, sudo will use
589         the KRB5CCNAME environment variable to set this.  While
590         gss_krb5_ccache_name() provides a better API to do this it
591         is not supported by all Kerberos V and SASL combinations.
592
593   --enable-log-host
594         Log the hostname in the log file.
595
596   --enable-noargs-shell
597         If sudo is invoked with no arguments it acts as if the "-s" flag had
598         been given.  That is, it runs a shell as root (the shell is determined
599         by the SHELL environment variable, falling back on the shell listed
600         in the invoking user's /etc/passwd entry).
601
602   --enable-shell-sets-home
603         If sudo is invoked with the "-s" flag the HOME environment variable
604         will be set to the home directory of the target user (which is root
605         unless the "-u" option is used).  This option effectively makes the
606         "-s" flag imply "-H".
607
608   --disable-path-info
609         Normally, sudo will tell the user when a command could not be found
610         in their $PATH.  Some sites may wish to disable this as it could
611         be used to gather information on the location of executables that
612         the normal user does not have access to.  The disadvantage is that
613         if the executable is simply not in the user's path, sudo will tell
614         the user that they are not allowed to run it, which can be confusing.
615
616   --enable-zlib[=location]
617         Enable the use of the zlib compress library when storing
618         I/O log files.  If specified, location is the base directory
619         containing the zlib include and lib directories.  The special
620         values "system" and "builtin" can be used to indicate that
621         the system version of zlib should be used or that the version
622         of zlib shipped with sudo should be used instead.
623         If this option is not specified, configure will use the
624         system zlib if it is present.
625
626   --disable-zlib
627         Disable the use of the zlib compress library when storing
628         I/O log files.
629
630   --enable-warnings
631         Enable compiler warnings when building sudo with gcc.
632
633   --enable-admin-flag
634         Enable the creation of an Ubuntu-style admin flag file
635         the first time sudo is run.
636
637   --disable-env-reset
638         Disable environment resetting.  This sets the default value
639         of the "env_reset" Defaults option in sudoers to false.
640
641 Shadow password and C2 support
642 ==============================
643
644 Shadow passwords (also included with most C2 security packages) are
645 supported on most major platforms for which they exist.  The
646 `configure' script will attempt to determine if your system can use
647 shadow passwords and include support for them if so.  Shadow password
648 support is now compiled in by default (it doesn't hurt anything if you
649 don't have them configured).  To disable the shadow password support,
650 use the --disable-shadow option to configure.
651
652 Shadow passwords are known to work on the following platforms:
653
654     SunOS 4.x
655     Solaris 2.x
656     HP-UX >= 9.x
657     Ultrix 4.x
658     Digital UNIX
659     IRIX >= 5.x
660     AIX >= 3.2.x
661     Linux
662     SCO >= 3.2.2
663     Pyramid DC/OSx
664     UnixWare
665     SVR4 (and variants using standard SVR4 shadow passwords)
666     4.4BSD based systems (including OpenBSD, NetBSD, FreeBSD, and Mac OS X)
667     Systems using SecureWare's C2 security.
668
669 OS dependent notes
670 ==================
671
672 Linux:
673     PAM and LDAP headers are not installed by default on most Linux
674     systems.  You will need to install the "pam-dev" package if
675     /usr/include/security/pam_appl.h is not present on your system.
676     If you wish to build with LDAP support you will also need the
677     openldap-devel package.
678
679     Versions of glibc 2.x previous to 2.0.7 have a broken lsearch().
680     You will need to either upgrade to glibc-2.0.7 or use sudo's
681     version of lsearch().  To use sudo's lsearch(), comment out
682     the "#define HAVE_LSEARCH 1" line in config.h and add lsearch.o
683     to the LIBOBJS line in the Makefile.
684
685     If you are using a Linux kernel older than 2.4 it is not possible
686     to access the sudoers file via NFS.  This is due to a bug in
687     the Linux client-side NFS implementation that has since been
688     fixed.  There is a workaround on the sudo ftp site, linux_nfs.patch,
689     if you need to NFS-mount sudoers on older Linux kernels.
690
691 Solaris 2.x:
692     You need to have a C compiler in order to build sudo.  Since
693     Solaris 2.x does not come with one by default this means that
694     you either need to install the Sun Studio compiler suite,
695     available for free from www.sun.com, or have a copy of the GNU
696     C compiler (gcc) which is distributed on the Solaris Companion
697     CD.  You can also get them from various places on the net,
698     including http://www.sunfreeware.com/
699     NOTE: sudo will *not* build with the sun C compiler in BSD
700           compatibility mode (/usr/ucb/cc).  Sudo is designed to
701           compile with the standard C compiler (or gcc) and will
702           not build correctly with /usr/ucb/cc.  You can use the
703           `--with-CC' option to point `configure' to the non-ucb
704           compiler if it is not the first cc in your path.  Some
705           sites link /usr/ucb/cc to gcc; configure will not notice
706           this and still refuse to use /usr/ucb/cc, so make sure gcc
707           is also in your path if your site is setup this way.
708     Also: Older versions of Solaris come with a broken syslogd.
709           If you have having problems with sudo logging you should
710           make sure you have the latest syslogd patch installed.
711           This is a problem for Solaris 2.4 and 2.5 at least.
712
713 Mac OS X:
714     The pseudo-tty support in the Mac OS X kernel has bugs related
715     to its handling of the SIGTSTP, SIGTTIN and SIGTTOU signals.
716     It does not restart reads and writes when those signals are
717     delivered.  This may cause problems for some commands when I/O
718     logging is enabled.  The issue has been reported to Apple and
719     is bug id #7952709.
720
721 HP-UX:
722     The default C compiler shipped with HP-UX is not an ANSI compiler.
723     You must use either the HP ANSI C compiler or gcc to build sudo.
724     Binary packages of gcc are available from http://hpux.connect.org.uk/.
725
726     To prevent PAM from overriding the value of umask on HP-UX 11,
727     you will need to add a line like the following to /etc/pam.conf:
728
729     sudo        session required        libpam_hpsec.so.1 bypass_umask
730
731 Digital UNIX:
732     By default, sudo will use SIA (Security Integration Architecture)
733     to validate a user.  If you want to use an alternative authentication
734     method that does not go through SIA, you need to use the
735     --disable-sia option to configure.  If you use gcc to compile
736     you will get warnings when building interfaces.c.  These are
737     harmless but if they really bug you, you can edit
738     /usr/include/net/if.h around line 123, right after the comment:
739         /* forward decls for C++ */
740     change the line:
741         #ifdef __cplusplus
742     to:
743         #if defined(__cplusplus) || defined(__GNUC__)
744     If you don't like the idea of editing the system header file
745     you can just make a copy in gcc's private include tree and
746     edit that.
747
748 AIX 3.2.x:
749     I've had various problems with the AIX C compiler producing
750     incorrect code when the -O flag was used.  When optimization
751     is not used, the problems go away.  Gcc does not appear
752     to have this problem.
753
754 SCO ODT:
755     You'll probably need libcrypt_i.a available via anonymous ftp
756     from sosco.sco.com.  The necessary files are /SLS/lng225b.Z
757     and /SLS/lng225b.ltr.Z.
758
759 SunOS 4.x:
760     SunOS does not ship with an ANSI C compiler.  You will need to
761     install an ANSI compiler such as gcc to build sudo.
762
763     The /bin/sh shipped with SunOS blows up while running configure.
764     You can work around this by installing bash or zsh.  If you
765     have bash or zsh in your path, configure will use it instead
766     automatically.
767
768 ULTRIX 4.x:
769     ULTRIX does not ship with an ANSI C compiler.  You will need to
770     install an ANSI compiler such as gcc to build sudo.
771
772     The /bin/sh shipped with ULTRIX blows up while running configure.
773     You can work around this by installing bash or zsh.  If you
774     have bash or zsh in your path, configure will use it instead
775     automatically.
776
777     ULTRIX ships with the 4.2BSD syslog(3) which does not
778     allow things like logging different facilities to different
779     files, redirecting logs to a single loghost and other niceties.
780     You may want to just grab and install:
781         ftp://www.sudo.ws/pub/sudo/misc/jtkohl-syslog-complete.tar.gz
782     (available via anonymous ftp) which is a port if the 4.3BSD
783     syslog/syslogd that is backwards compatible with the Ultrix version.
784     I recommend it highly.  If you do not do this you probably want
785     to run configure with --with-logging=file