1 Troubleshooting tips and FAQ for Sudo
2 =====================================
4 Q) When I run configure, it says "C compiler cannot create executables".
5 A) This usually means you either don't have a working compiler. This
6 could be due to the lack of a license or that some component of the
7 compiler suite could not be found. Check config.log for clues as
8 to why this is happening. On many systems, compiler components live
9 in /usr/ccs/bin which may not be in your PATH environment variable.
11 Q) When I run configure, it says "sudo requires the 'ar' utility to build".
12 A) As part of the build process, sudo creates a temporary library containing
13 objects that are shared amongst the different sudo executables.
14 On Unix systems, the "ar" utility is used to do this. This error
15 indicates that "ar" is missing on your system. On Solaris systems,
16 you may need to install the SUNWbtool package. On other systems
17 "ar" may be included in the GNU binutils package.
19 Q) Sudo compiles but when I run it I get "Sorry, sudo must be setuid root."
21 A) Sudo must be setuid root to do its work. You need to do something like
22 `chmod 4111 /usr/local/bin/sudo'. Also, the file system sudo resides
23 on must *not* be mounted (or exported) with the nosuid option or sudo
24 will not be able to work. Another possibility is you may have '.' in
25 your $PATH before the directory containing sudo. If you are going
26 to have '.' in your path you should make sure it is at the end.
28 Q) Sudo never gives me a chance to enter a password using PAM, it just
29 says 'Sorry, try again.' three times and exits.
30 A) You didn't setup PAM to work with sudo. On Redhat Linux or Fedora
31 Core this generally means installing sample.pam as /etc/pam.d/sudo.
32 See the sample.pam file for hints on what to use for other Linux
35 Q) Sudo says 'Account expired or PAM config lacks an "account"
36 section for sudo, contact your system administrator' and exits
37 but I know my account has not expired.
38 A) Your PAM config lacks an "account" specification. On Linux this
39 usually means you are missing a line like:
40 account required pam_unix.so
43 Q) Sudo is setup to log via syslog(3) but I'm not getting any log
45 A) Make sure you have an entry in your syslog.conf file to save
46 the sudo messages (see the sample.syslog.conf file). The default
47 log facility is authpriv (changeable via configure or in sudoers).
48 Don't forget to send a SIGHUP to your syslogd so that it re-reads
49 its conf file. Also, remember that syslogd does *not* create
50 log files, you need to create the file before syslogd will log
51 to it (ie: touch /var/log/sudo).
52 Note: the facility (e.g. "auth.debug") must be separated from the
53 destination (e.g. "/var/log/auth" or "@loghost") by
54 tabs, *not* spaces. This is a common error.
56 Q) When sudo asks me for my password it never accepts what I enter even
57 though I know I entered my password correctly.
58 A) If your system uses shadow passwords, it is possible that sudo
59 didn't detect this. Take a look at the generated config.h file
60 and verify that the C function used for shadow password lookups
61 was detected. For instance, for SVR4-style shadow passwords,
62 HAVE_GETSPNAM should be defined (you can search for the string
63 "shadow passwords" in config.h with your editor). Note that
64 there is no define for 4.4BSD-based shadow passwords since that
65 just uses the standard getpw* routines.
67 Q) I don't want the sudoers file in /etc, how can I specify where it
69 A) Use the --sysconfdir option to configure. Ie:
70 configure --sysconfdir=/dir/you/want/sudoers/in
72 Q) Can I put the sudoers file in NIS/NIS+ or do I have to have a
74 A) There is no support for making an NIS/NIS+ map/table out of
75 the sudoers file at this time. A good way to distribute the
76 sudoers file is via rdist(1). It is also possible to NFS-mount
79 Q) I don't run sendmail on my machine. Does this mean that I cannot
81 A) No, you just need to run use the --without-sendmail argument to configure
82 or add "!mailerpath" to the Defaults line in /etc/sudoers.
84 Q) When I run visudo it uses vi as the editor and I hate vi. How
85 can I make it use another editor?
86 A) Your best bet is to run configure with the --with-env-editor switch.
87 This will make visudo use the editor specified by the user's
88 EDITOR environment variable. Alternately, you can run configure
89 with the --with-editor=/path/to/another/editor.
91 Q) Sudo appears to be removing some variables from my environment, why?
92 A) Sudo removes the following "dangerous" environment variables
93 to guard against shared library spoofing, shell voodoo, and
94 kerberos server spoofing.
107 LC_ (if it contains a '/' or '%')
108 LANG (if it contains a '/' or '%')
109 LANGUAGE (if it contains a '/' or '%')
112 SHLIB_PATH (HP-UX only)
114 KRB_CONF (kerb4 only)
115 KRBCONFDIR (kerb4 only)
116 KRBTKFILE (kerb4 only)
117 KRB5_CONFIG (kerb5 only)
118 VAR_ACE (SecurID only)
119 USR_ACE (SecurID only)
120 DLC_ACE (SecurID only)
122 Q) How can I keep sudo from asking for a password?
123 A) To specify this on a per-user (and per-command) basis, use the 'NOPASSWD'
124 tag right before the command list in sudoers. See the sudoers man page
125 and sample.sudoers for details. To disable passwords completely,
126 run configure with the --without-passwd option or add "!authenticate"
127 to the Defaults line in /etc/sudoers. You can also turn off authentication
128 on a per-user or per-host basis using a user or host-specific Defaults
131 Q) When I run configure, it dies with the following error:
132 "no acceptable cc found in $PATH".
133 A) /usr/ucb/cc was the only C compiler that configure could find.
134 You need to tell configure the path to the "real" C compiler
135 via the --with-CC option. On Solaris, the path is probably
136 something like "/opt/SUNWspro/SC4.0/bin/cc". If you have gcc
139 Q) When I run configure, it dies with the following error:
140 Fatal Error: config.cache exists from another platform!
141 Please remove it and re-run configure.
142 A) configure caches the results of its tests in a file called
143 config.cache to make re-running configure speedy. However,
144 if you are building sudo for a different platform the results
145 in config.cache will be wrong so you need to remove config.cache.
146 You can do this by "rm config.cache" or "make realclean".
147 Note that "make realclean" will also remove any object files
148 and configure temp files that are laying around as well.
150 Q) I built sudo on a Solaris >= 2.6 machine but the resulting binary
151 doesn't work on Solaris <= 2.5.1. Why?
152 A) Starting with Solaris 2.6, snprintf(3) is included in the standard
153 C library. To build a version of sudo on a >= 2.6 machine that
154 will run on a <= 2.5.1 machine, edit config.h and comment out the lines:
155 #define HAVE_SNPRINTF 1
156 #define HAVE_VSNPRINTF 1
159 Q) When I run "visudo" it says "sudoers file busy, try again later."
160 and doesn't do anything.
161 A) Someone else is currently editing the sudoers file with visudo.
163 Q) When I try to use "cd" with sudo it says "cd: command not found".
164 A) "cd" is a shell built-in command, you can't run it as a command
165 since a child process (sudo) cannot affect the current working
166 directory of the parent (your shell).
168 Q) When I try to use "cd" with sudo the command completes without
169 errors but nothing happens.
170 A) Even though "cd" is a shell built-in command, some operating systems
171 include a /usr/bin/cd command for some reason. A standalone
172 "cd" command is totally useless since a child process (cd) cannot
173 affect the current working directory of the parent (your shell).
174 Thus, "sudo cd /foo" will start a child process, change the
175 directory and immediately exit without doing anything useful.
177 Q) When I run sudo it says I am not allowed to run the command as root
178 but I don't want to run it as root, I want to run it as another user.
179 My sudoers file entry looks like:
181 A) The default user sudo tries to run things as is always root, even if
182 the invoking user can only run commands as a single, specific user.
183 This may change in the future but at the present time you have to
184 work around this using the 'runas_default' option in sudoers.
186 Defaults:bob runas_default=oracle
187 would achieve the desired result ofr the preceding sudoers fragment.
189 Q) When I try to run sudo via ssh, I get the error:
190 sudo: no tty present and no askpass program specified
191 A) ssh does not allocate a tty by default when running a remote command.
192 Without a tty, sudo cannot disable echo when prompting for a password.
193 You can use ssh's "-t" option to force it to allocate a tty.
194 Alternately, if you do not mind your password being echoed to the
195 screen, you can use the "visiblepw" sudoers option to allow this.
197 Q) How do you pronounce `sudo'?
198 A) The official pronunciation is soo-doo (for su "do"). However, an
199 alternate pronunciation, a homophone of "pseudo", is also common.