[go: up one dir, main page]

File: sudo.cat

package info (click to toggle)
sudo 1.6.6-1.3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 1,648 kB
  • ctags: 1,106
  • sloc: ansic: 10,310; sh: 2,549; makefile: 309; perl: 102
file content (462 lines) | stat: -rw-r--r-- 19,070 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462



sudo(1m)               MAINTENANCE COMMANDS              sudo(1m)


NNNNAAAAMMMMEEEE
       sudo - execute a command as another user

SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
       ssssuuuuddddoooo ----VVVV | ----hhhh | ----llll | ----LLLL | ----vvvv | ----kkkk | ----KKKK | ----ssss | [ ----HHHH ] [----PPPP ]
       [----SSSS ] [ ----bbbb ] | [ ----pppp _p_r_o_m_p_t ] [ ----cccc _c_l_a_s_s|_- ] [ ----aaaa _a_u_t_h___t_y_p_e
       ] [ ----uuuu _u_s_e_r_n_a_m_e|_#_u_i_d ] _c_o_m_m_a_n_d

DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
       ssssuuuuddddoooo allows a permitted user to execute a _c_o_m_m_a_n_d as the
       superuser or another user, as specified in the _s_u_d_o_e_r_s
       file.  The real and effective uid and gid are set to match
       those of the target user as specified in the passwd file
       (the group vector is also initialized when the target user
       is not root).  By default, ssssuuuuddddoooo requires that users
       authenticate themselves with a password (NOTE: by default
       this is the user's password, not the root password).  Once
       a user has been authenticated, a timestamp is updated and
       the user may then use sudo without a password for a short
       period of time (5 minutes unless overridden in _s_u_d_o_e_r_s).

       ssssuuuuddddoooo determines who is an authorized user by consulting
       the file _/_e_t_c_/_s_u_d_o_e_r_s.  By giving ssssuuuuddddoooo the ----vvvv flag a user
       can update the time stamp without running a _c_o_m_m_a_n_d_. The
       password prompt itself will also time out if the user's
       password is not entered within 5 minutes (unless overrid
       den via _s_u_d_o_e_r_s).

       If a user who is not listed in the _s_u_d_o_e_r_s file tries to
       run a command via ssssuuuuddddoooo, mail is sent to the proper author
       ities, as defined at configure time or the _s_u_d_o_e_r_s file
       (defaults to root).  Note that the mail will not be sent
       if an unauthorized user tries to run sudo with the ----llll or
       ----vvvv flags.  This allows users to determine for themselves
       whether or not they are allowed to use ssssuuuuddddoooo.

       ssssuuuuddddoooo can log both successful and unsuccessful attempts (as
       well as errors) to _s_y_s_l_o_g(3), a log file, or both.  By
       default ssssuuuuddddoooo will log via _s_y_s_l_o_g(3) but this is changeable
       at configure time or via the _s_u_d_o_e_r_s file.

OOOOPPPPTTTTIIIIOOOONNNNSSSS
       ssssuuuuddddoooo accepts the following command line options:

       -V  The ----VVVV (_v_e_r_s_i_o_n) option causes ssssuuuuddddoooo to print the ver
           sion number and exit.  If the invoking user is already
           root the ----VVVV option will print out a list of the
           defaults ssssuuuuddddoooo was compiled with as well as the
           machine's local network addresses.

       -l  The ----llll (_l_i_s_t) option will list out the allowed (and
           forbidden) commands for the user on the current host.





April 25, 2002                1.6.6                             1





sudo(1m)               MAINTENANCE COMMANDS              sudo(1m)


       -L  The ----LLLL (_l_i_s_t defaults) option will list out the param
           eters that may be set in a _D_e_f_a_u_l_t_s line along with a
           short description for each.  This option is useful in
           conjunction with _g_r_e_p(1).

       -h  The ----hhhh (_h_e_l_p) option causes ssssuuuuddddoooo to print a usage mes
           sage and exit.

       -v  If given the ----vvvv (_v_a_l_i_d_a_t_e) option, ssssuuuuddddoooo will update
           the user's timestamp, prompting for the user's pass
           word if necessary.  This extends the ssssuuuuddddoooo timeout for
           another 5 minutes (or whatever the timeout is set to
           in _s_u_d_o_e_r_s) but does not run a command.

       -k  The ----kkkk (_k_i_l_l) option to ssssuuuuddddoooo invalidates the user's
           timestamp by setting the time on it to the epoch.  The
           next time ssssuuuuddddoooo is run a password will be required.
           This option does not require a password and was added
           to allow a user to revoke ssssuuuuddddoooo permissions from a
           .logout file.

       -K  The ----KKKK (sure _k_i_l_l) option to ssssuuuuddddoooo removes the user's
           timestamp entirely.  Likewise, this option does not
           require a password.

       -b  The ----bbbb (_b_a_c_k_g_r_o_u_n_d) option tells ssssuuuuddddoooo to run the given
           command in the background.  Note that if you use the
           ----bbbb option you cannot use shell job control to manipu
           late the process.

       -p  The ----pppp (_p_r_o_m_p_t) option allows you to override the
           default password prompt and use a custom one.  If the
           password prompt contains the %u escape, %u will be
           replaced with the user's login name.  Similarly, %h
           will be replaced with the local hostname.

       -c  The ----cccc (_c_l_a_s_s) option causes ssssuuuuddddoooo to run the specified
           command with resources limited by the specified login
           class.  The _c_l_a_s_s argument can be either a class name
           as defined in /etc/login.conf, or a single '-' charac
           ter.  Specifying a _c_l_a_s_s of - indicates that the com
           mand should be run restricted by the default login
           capabilities for the user the command is run as.  If
           the _c_l_a_s_s argument specifies an existing user class,
           the command must be run as root, or the ssssuuuuddddoooo command
           must be run from a shell that is already root.  This
           option is only available on systems with BSD login
           classes where ssssuuuuddddoooo has been configured with the
           --with-logincap option.

       -a  The ----aaaa (_a_u_t_h_e_n_t_i_c_a_t_i_o_n _t_y_p_e) option causes ssssuuuuddddoooo to use
           the specified authentication type when validating the
           user, as allowed by /etc/login.conf.  The system
           administrator may specify a list of sudo-specific



April 25, 2002                1.6.6                             2





sudo(1m)               MAINTENANCE COMMANDS              sudo(1m)


           authentication methods by adding an "auth-sudo" entry
           in /etc/login.conf.  This option is only available on
           systems that support BSD authentication where ssssuuuuddddoooo has
           been configured with the --with-bsdauth option.

       -u  The ----uuuu (_u_s_e_r) option causes ssssuuuuddddoooo to run the specified
           command as a user other than _r_o_o_t.  To specify a _u_i_d
           instead of a _u_s_e_r_n_a_m_e, use _#_u_i_d.

       -s  The ----ssss (_s_h_e_l_l) option runs the shell specified by the
           _S_H_E_L_L environment variable if it is set or the shell
           as specified in _p_a_s_s_w_d(4).

       -H  The ----HHHH (_H_O_M_E) option sets the HOME environment vari
           able to the homedir of the target user (root by
           default) as specified in _p_a_s_s_w_d(4).  By default, ssssuuuuddddoooo
           does not modify HOME.

       -P  The ----PPPP (_p_r_e_s_e_r_v_e _g_r_o_u_p _v_e_c_t_o_r) option causes ssssuuuuddddoooo to
           preserve the user's group vector unaltered.  By
           default, ssssuuuuddddoooo will initialize the group vector to the
           list of groups the target user is in.  The real and
           effective group IDs, however, are still set to match
           the target user.

       -S  The ----SSSS (_s_t_d_i_n) option causes ssssuuuuddddoooo to read the password
           from standard input instead of the terminal device.

       --  The -------- flag indicates that ssssuuuuddddoooo should stop processing
           command line arguments.  It is most useful in conjunc
           tion with the ----ssss flag.

RRRREEEETTTTUUUURRRRNNNN VVVVAAAALLLLUUUUEEEESSSS
       Upon successful execution of a program, the return value
       from ssssuuuuddddoooo will simply be the return value of the program
       that was executed.

       Otherwise, ssssuuuuddddoooo quits with an exit value of 1 if there is
       a configuration/permission problem or if ssssuuuuddddoooo cannot exe
       cute the given command.  In the latter case the error
       string is printed to stderr.  If ssssuuuuddddoooo cannot _s_t_a_t(2) one
       or more entries in the user's PATH an error is printed on
       stderr.  (If the directory does not exist or if it is not
       really a directory, the entry is ignored and no error is
       printed.)  This should not happen under normal circum
       stances.  The most common reason for _s_t_a_t(2) to return
       "permission denied" is if you are running an automounter
       and one of the directories in your PATH is on a machine
       that is currently unreachable.

SSSSEEEECCCCUUUURRRRIIIITTTTYYYY NNNNOOOOTTTTEEEESSSS
       ssssuuuuddddoooo tries to be safe when executing external commands.
       Variables that control how dynamic loading and binding is
       done can be used to subvert the program that ssssuuuuddddoooo runs.



April 25, 2002                1.6.6                             3





sudo(1m)               MAINTENANCE COMMANDS              sudo(1m)


       To combat this the LD_*, _RLD_*, SHLIB_PATH (HP-UX only),
       and LIBPATH (AIX only) environment variables are removed
       from the environment passed on to all commands executed.
       ssssuuuuddddoooo will also remove the IFS, ENV, BASH_ENV, KRB_CONF,
       KRBCONFDIR, KRBTKFILE, KRB5_CONFIG, LOCALDOMAIN,
       RES_OPTIONS, HOSTALIASES, NLSPATH, PATH_LOCALE, TERMINFO,
       TERMINFO_DIRS and TERMPATH variables as they too can pose
       a threat.  If the TERMCAP variable is set and is a path
       name, it too is ignored.  Additionally, if the LC_* or
       LANGUAGE variables contain the / or % characters, they are
       ignored.  If ssssuuuuddddoooo has been compiled with SecurID support,
       the VAR_ACE, USR_ACE and DLC_ACE variables are cleared as
       well.  The list of environment variables that ssssuuuuddddoooo clears
       is contained in the output of sudo -V when run as root.

       To prevent command spoofing, ssssuuuuddddoooo checks "." and "" (both
       denoting current directory) last when searching for a com
       mand in the user's PATH (if one or both are in the PATH).
       Note, however, that the actual PATH environment variable
       is _n_o_t modified and is passed unchanged to the program
       that ssssuuuuddddoooo executes.

       For security reasons, if your OS supports shared libraries
       and does not disable user-defined library search paths for
       setuid programs (most do), you should either use a linker
       option that disables this behavior or link ssssuuuuddddoooo stati
       cally.

       ssssuuuuddddoooo will check the ownership of its timestamp directory
       (_/_v_a_r_/_r_u_n_/_s_u_d_o by default) and ignore the directory's con
       tents if it is not owned by root and only writable by
       root.  On systems that allow non-root users to give away
       files via _c_h_o_w_n(2), if the timestamp directory is located
       in a directory writable by anyone (e.g.: _/_t_m_p), it is pos
       sible for a user to create the timestamp directory before
       ssssuuuuddddoooo is run.  However, because ssssuuuuddddoooo checks the ownership
       and mode of the directory and its contents, the only dam
       age that can be done is to "hide" files by putting them in
       the timestamp dir.  This is unlikely to happen since once
       the timestamp dir is owned by root and inaccessible by any
       other user the user placing files there would be unable to
       get them back out.  To get around this issue you can use a
       directory that is not world-writable for the timestamps
       (_/_v_a_r_/_a_d_m_/_s_u_d_o for instance) or create _/_v_a_r_/_r_u_n_/_s_u_d_o with
       the appropriate owner (root) and permissions (0700) in the
       system startup files.

       ssssuuuuddddoooo will not honor timestamps set far in the future.
       Timestamps with a date greater than current_time + 2 *
       TIMEOUT will be ignored and sudo will log and complain.
       This is done to keep a user from creating his/her own
       timestamp with a bogus date on systems that allow users to
       give away files.




April 25, 2002                1.6.6                             4





sudo(1m)               MAINTENANCE COMMANDS              sudo(1m)


       Please note that ssssuuuuddddoooo will only log the command it explic
       itly runs.  If a user runs a command such as sudo su or
       sudo sh, subsequent commands run from that shell will _n_o_t
       be logged, nor will ssssuuuuddddoooo's access control affect them.
       The same is true for commands that offer shell escapes
       (including most editors).  Because of this, care must be
       taken when giving users access to commands via ssssuuuuddddoooo to
       verify that the command does not inadvertantly give the
       user an effective root shell.

EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
       Note: the following examples assume suitable _s_u_d_o_e_r_s(4)
       entries.

       To get a file listing of an unreadable directory:

        % sudo ls /usr/local/protected

       To list the home directory of user yazza on a machine
       where the filesystem holding ~yazza is not exported as
       root:

        % sudo -u yazza ls ~yazza

       To edit the _i_n_d_e_x_._h_t_m_l file as user www:

        % sudo -u www vi ~www/htdocs/index.html

       To shutdown a machine:

        % sudo shutdown -r +15 "quick reboot"

       To make a usage listing of the directories in the /home
       partition.  Note that this runs the commands in a sub-
       shell to make the cd and file redirection work.

        % sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"


EEEENNNNVVVVIIIIRRRROOOONNNNMMMMEEEENNNNTTTT
       ssssuuuuddddoooo utilizes the following environment variables:
















April 25, 2002                1.6.6                             5





sudo(1m)               MAINTENANCE COMMANDS              sudo(1m)


        PATH                   Set to a sane value if SECURE_PATH is set
        SHELL                  Used to determine shell to run with -s option
        USER                   Set to the target user (root unless the -u option
                               is specified)
        HOME                   In -s or -H mode (or if sudo was configured with
                               the --enable-shell-sets-home option), set to
                               homedir of the target user.
        SUDO_PROMPT            Used as the default password prompt
        SUDO_COMMAND           Set to the command run by sudo
        SUDO_USER              Set to the login of the user who invoked sudo
        SUDO_UID               Set to the uid of the user who invoked sudo
        SUDO_GID               Set to the gid of the user who invoked sudo
        SUDO_PS1               If set, PS1 will be set to its value


FFFFIIIILLLLEEEESSSS
        /etc/sudoers           List of who can run what
        /var/run/sudo              Directory containing timestamps


AAAAUUUUTTTTHHHHOOOORRRRSSSS
       Many people have worked on ssssuuuuddddoooo over the years; this ver
       sion consists of code written primarily by:

               Todd Miller
               Chris Jepeway

       See the HISTORY file in the ssssuuuuddddoooo distribution or visit
       http://www.sudo.ws/sudo/history.html for a short history
       of ssssuuuuddddoooo.

BBBBUUUUGGGGSSSS
       If you feel you have found a bug in sudo, please submit a
       bug report at http://www.sudo.ws/sudo/bugs/

DDDDIIIISSSSCCCCLLLLAAAAIIIIMMMMEEEERRRR
       SSSSuuuuddddoooo is provided ``AS IS'' and any express or implied war
       ranties, including, but not limited to, the implied war
       ranties of merchantability and fitness for a particular
       purpose are disclaimed.  See the LICENSE file distributed
       with ssssuuuuddddoooo for complete details.

CCCCAAAAVVVVEEEEAAAATTTTSSSS
       There is no easy way to prevent a user from gaining a root
       shell if that user has access to commands allowing shell
       escapes.

       If users have sudo ALL there is nothing to prevent them
       from creating their own program that gives them a root
       shell regardless of any '!'  elements in the user specifi
       cation.

       Running shell scripts via ssssuuuuddddoooo can expose the same kernel
       bugs that make setuid shell scripts unsafe on some



April 25, 2002                1.6.6                             6





sudo(1m)               MAINTENANCE COMMANDS              sudo(1m)


       operating systems (if your OS supports the /dev/fd/ direc
       tory, setuid shell scripts are generally safe).

SSSSEEEEEEEE AAAALLLLSSSSOOOO
       _s_t_a_t(2), _l_o_g_i_n___c_a_p(3), _s_u_d_o_e_r_s(4), _p_a_s_s_w_d(5), _v_i_s_u_d_o(1m),
       _g_r_e_p(1), _s_u(1).



















































April 25, 2002                1.6.6                             7