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