~ubuntu-branches/ubuntu/saucy/sudo/saucy

« back to all changes in this revision

Viewing changes to doc/sudoers.mdoc.in

  • Committer: Package Import Robot
  • Author(s): Stéphane Graber
  • Date: 2012-11-16 09:31:32 UTC
  • mfrom: (1.4.13)
  • Revision ID: package-import@ubuntu.com-20121116093132-ptext55adlzbrq6y
Tags: 1.8.6p3-0ubuntu1
* New upstream release (1.8.6p3).
* Add patch to fix building with sssd when ldap is disabled.
* Drop sudo.manpages and sudo-ldap.manpages as the upstream build system
  now does the right thing here.
* Build the main sudo package with support for sssd, this doesn't add any
  additional build time or runtime dependency. sudo will dynamically load
  the sssd library if 'sss' is listed for the 'sudoers' nss service.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
.\"
 
2
.\" Copyright (c) 1994-1996, 1998-2005, 2007-2012
 
3
.\" Todd C. Miller <Todd.Miller@courtesan.com>
 
4
.\"
 
5
.\" Permission to use, copy, modify, and distribute this software for any
 
6
.\" purpose with or without fee is hereby granted, provided that the above
 
7
.\" copyright notice and this permission notice appear in all copies.
 
8
.\"
 
9
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 
10
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 
11
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 
12
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 
13
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 
14
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 
15
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
16
.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
17
.\"
 
18
.\" Sponsored in part by the Defense Advanced Research Projects
 
19
.\" Agency (DARPA) and Air Force Research Laboratory, Air Force
 
20
.\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
 
21
.\"
 
22
.Dd July 16, 2012
 
23
.Dt SUDOERS @mansectform@
 
24
.Os Sudo @PACKAGE_VERSION@
 
25
.Sh NAME
 
26
.Nm sudoers
 
27
.Nd default sudo security policy module
 
28
.Sh DESCRIPTION
 
29
The
 
30
.Em sudoers
 
31
policy module determines a user's
 
32
.Nm sudo
 
33
privileges.
 
34
It is the default
 
35
.Nm sudo
 
36
policy plugin.
 
37
The policy is driven by
 
38
the
 
39
.Pa @sysconfdir@/sudoers
 
40
file or, optionally in LDAP.
 
41
The policy format is described in detail in the
 
42
.Sx SUDOERS FILE FORMAT
 
43
section.
 
44
For information on storing
 
45
.Em sudoers
 
46
policy information
 
47
in LDAP, please see
 
48
.Xr sudoers.ldap @mansectform@ .
 
49
.Ss Authentication and logging
 
50
The
 
51
.Em sudoers
 
52
security policy requires that most users authenticate
 
53
themselves before they can use
 
54
.Nm sudo .
 
55
A password is not required
 
56
if the invoking user is root, if the target user is the same as the
 
57
invoking user, or if the policy has disabled authentication for the
 
58
user or command.
 
59
Unlike
 
60
.Xr su 1 ,
 
61
when
 
62
.Em sudoers
 
63
requires
 
64
authentication, it validates the invoking user's credentials, not
 
65
the target user's (or root's) credentials.
 
66
This can be changed via
 
67
the
 
68
.Em rootpw ,
 
69
.Em targetpw
 
70
and
 
71
.Em runaspw
 
72
flags, described later.
 
73
.Pp
 
74
If a user who is not listed in the policy tries to run a command
 
75
via
 
76
.Nm sudo ,
 
77
mail is sent to the proper authorities.
 
78
The address
 
79
used for such mail is configurable via the
 
80
.Em mailto
 
81
Defaults entry
 
82
(described later) and defaults to
 
83
.Li @mailto@ .
 
84
.Pp
 
85
Note that mail will not be sent if an unauthorized user tries to
 
86
run
 
87
.Nm sudo
 
88
with the
 
89
.Fl l
 
90
or
 
91
.Fl v
 
92
option.
 
93
This allows users to
 
94
determine for themselves whether or not they are allowed to use
 
95
.Nm sudo .
 
96
.Pp
 
97
If
 
98
.Nm sudo
 
99
is run by root and the
 
100
.Ev SUDO_USER
 
101
environment variable
 
102
is set, the
 
103
.Em sudoers
 
104
policy will use this value to determine who
 
105
the actual user is.
 
106
This can be used by a user to log commands
 
107
through sudo even when a root shell has been invoked.
 
108
It also
 
109
allows the
 
110
.Fl e
 
111
option to remain useful even when invoked via a
 
112
sudo-run script or program.
 
113
Note, however, that the
 
114
.Em sudoers
 
115
lookup is still done for root, not the user specified by
 
116
.Ev SUDO_USER .
 
117
.Pp
 
118
.Em sudoers
 
119
uses time stamp files for credential caching.
 
120
Once a
 
121
user has been authenticated, the time stamp is updated and the user
 
122
may then use sudo without a password for a short period of time
 
123
.Po
 
124
.Li @timeout@
 
125
minutes unless overridden by the
 
126
.Em timeout
 
127
option
 
128
.Pc .
 
129
By default,
 
130
.Em sudoers
 
131
uses a tty-based time stamp which means that
 
132
there is a separate time stamp for each of a user's login sessions.
 
133
The
 
134
.Em tty_tickets
 
135
option can be disabled to force the use of a
 
136
single time stamp for all of a user's sessions.
 
137
.Pp
 
138
.Em sudoers
 
139
can log both successful and unsuccessful attempts (as well
 
140
as errors) to
 
141
.Xr syslog 3 ,
 
142
a log file, or both.
 
143
By default,
 
144
.Em sudoers
 
145
will log via
 
146
.Xr syslog 3
 
147
but this is changeable via the
 
148
.Em syslog
 
149
and
 
150
.Em logfile
 
151
Defaults settings.
 
152
.Pp
 
153
.Em sudoers
 
154
also supports logging a command's input and output
 
155
streams.
 
156
I/O logging is not on by default but can be enabled using
 
157
the
 
158
.Em log_input
 
159
and
 
160
.Em log_output
 
161
Defaults flags as well as the
 
162
.Li LOG_INPUT
 
163
and
 
164
.Li LOG_OUTPUT
 
165
command tags.
 
166
.Ss Command environment
 
167
Since environment variables can influence program behavior,
 
168
.Em sudoers
 
169
provides a means to restrict which variables from the user's
 
170
environment are inherited by the command to be run.
 
171
There are two
 
172
distinct ways
 
173
.Em sudoers
 
174
can deal with environment variables.
 
175
.Pp
 
176
By default, the
 
177
.Em env_reset
 
178
option is enabled.
 
179
This causes commands
 
180
to be executed with a new, minimal environment.
 
181
On AIX (and Linux
 
182
systems without PAM), the environment is initialized with the
 
183
contents of the
 
184
.Pa /etc/environment
 
185
file.
 
186
On BSD systems, if the
 
187
.Em use_loginclass
 
188
option is enabled, the environment is initialized
 
189
based on the
 
190
.Em path
 
191
and
 
192
.Em setenv
 
193
settings in
 
194
.Pa /etc/login.conf .
 
195
The new environment contains the
 
196
.Ev TERM ,
 
197
.Ev PATH ,
 
198
.Ev HOME ,
 
199
.Ev MAIL ,
 
200
.Ev SHELL ,
 
201
.Ev LOGNAME ,
 
202
.Ev USER ,
 
203
.Ev USERNAME
 
204
and
 
205
.Ev SUDO_*
 
206
variables
 
207
in addition to variables from the invoking process permitted by the
 
208
.Em env_check
 
209
and
 
210
.Em env_keep
 
211
options.
 
212
This is effectively a whitelist
 
213
for environment variables.
 
214
.Pp
 
215
If, however, the
 
216
.Em env_reset
 
217
option is disabled, any variables not
 
218
explicitly denied by the
 
219
.Em env_check
 
220
and
 
221
.Em env_delete
 
222
options are
 
223
inherited from the invoking process.
 
224
In this case,
 
225
.Em env_check
 
226
and
 
227
.Em env_delete
 
228
behave like a blacklist.
 
229
Since it is not possible
 
230
to blacklist all potentially dangerous environment variables, use
 
231
of the default
 
232
.Em env_reset
 
233
behavior is encouraged.
 
234
.Pp
 
235
In all cases, environment variables with a value beginning with
 
236
.Li ()
 
237
are removed as they could be interpreted as
 
238
.Sy bash
 
239
functions.
 
240
The list of environment variables that
 
241
.Nm sudo
 
242
allows or denies is
 
243
contained in the output of
 
244
.Dq Li sudo -V
 
245
when run as root.
 
246
.Pp
 
247
Note that the dynamic linker on most operating systems will remove
 
248
variables that can control dynamic linking from the environment of
 
249
setuid executables, including
 
250
.Nm sudo .
 
251
Depending on the operating
 
252
system this may include
 
253
.Ev _RLD* ,
 
254
.Ev DYLD_* ,
 
255
.Ev LD_* ,
 
256
.Ev LDR_* ,
 
257
.Ev LIBPATH ,
 
258
.Ev SHLIB_PATH ,
 
259
and others.
 
260
These type of variables are
 
261
removed from the environment before
 
262
.Nm sudo
 
263
even begins execution
 
264
and, as such, it is not possible for
 
265
.Nm sudo
 
266
to preserve them.
 
267
.Pp
 
268
As a special case, if
 
269
.Nm sudo Ns No 's
 
270
.Fl i
 
271
option (initial login) is
 
272
specified,
 
273
.Em sudoers
 
274
will initialize the environment regardless
 
275
of the value of
 
276
.Em env_reset .
 
277
The
 
278
.Ev DISPLAY ,
 
279
.Ev PATH
 
280
and
 
281
.Ev TERM
 
282
variables remain unchanged;
 
283
.Ev HOME ,
 
284
.Ev MAIL ,
 
285
.Ev SHELL ,
 
286
.Ev USER ,
 
287
and
 
288
.Ev LOGNAME
 
289
are set based on the target user.
 
290
On AIX (and Linux
 
291
systems without PAM), the contents of
 
292
.Pa /etc/environment
 
293
are also
 
294
included.
 
295
On BSD systems, if the
 
296
.Em use_loginclass
 
297
option is
 
298
enabled, the
 
299
.Em path
 
300
and
 
301
.Em setenv
 
302
variables in
 
303
.Pa /etc/login.conf
 
304
are also applied.
 
305
All other environment variables are removed.
 
306
.Pp
 
307
Finally, if the
 
308
.Em env_file
 
309
option is defined, any variables present
 
310
in that file will be set to their specified values as long as they
 
311
would not conflict with an existing environment variable.
 
312
.Sh SUDOERS FILE FORMAT
 
313
The
 
314
.Em sudoers
 
315
file is composed of two types of entries: aliases
 
316
(basically variables) and user specifications (which specify who
 
317
may run what).
 
318
.Pp
 
319
When multiple entries match for a user, they are applied in order.
 
320
Where there are multiple matches, the last match is used (which is
 
321
not necessarily the most specific match).
 
322
.Pp
 
323
The
 
324
.Em sudoers
 
325
grammar will be described below in Extended Backus-Naur
 
326
Form (EBNF).
 
327
Don't despair if you are unfamiliar with EBNF; it is fairly simple,
 
328
and the definitions below are annotated.
 
329
.Ss Quick guide to EBNF
 
330
EBNF is a concise and exact way of describing the grammar of a language.
 
331
Each EBNF definition is made up of
 
332
.Em production rules .
 
333
E.g.,
 
334
.Pp
 
335
.Li  symbol ::= definition | alternate1 | alternate2 ...
 
336
.Pp
 
337
Each
 
338
.Em production rule
 
339
references others and thus makes up a
 
340
grammar for the language.
 
341
EBNF also contains the following
 
342
operators, which many readers will recognize from regular
 
343
expressions.
 
344
Do not, however, confuse them with
 
345
.Dq wildcard
 
346
characters, which have different meanings.
 
347
.Bl -tag -width 4n
 
348
.It Li \&?
 
349
Means that the preceding symbol (or group of symbols) is optional.
 
350
That is, it may appear once or not at all.
 
351
.It Li *
 
352
Means that the preceding symbol (or group of symbols) may appear
 
353
zero or more times.
 
354
.It Li +
 
355
Means that the preceding symbol (or group of symbols) may appear
 
356
one or more times.
 
357
.El
 
358
.Pp
 
359
Parentheses may be used to group symbols together.
 
360
For clarity,
 
361
we will use single quotes
 
362
.Pq ''
 
363
to designate what is a verbatim character string (as opposed to a symbol name).
 
364
.Ss Aliases
 
365
There are four kinds of aliases:
 
366
.Li User_Alias ,
 
367
.Li Runas_Alias ,
 
368
.Li Host_Alias
 
369
and
 
370
.Li Cmnd_Alias .
 
371
.Bd -literal
 
372
Alias ::= 'User_Alias'  User_Alias (':' User_Alias)* |
 
373
          'Runas_Alias' Runas_Alias (':' Runas_Alias)* |
 
374
          'Host_Alias'  Host_Alias (':' Host_Alias)* |
 
375
          'Cmnd_Alias'  Cmnd_Alias (':' Cmnd_Alias)*
 
376
 
 
377
User_Alias ::= NAME '=' User_List
 
378
 
 
379
Runas_Alias ::= NAME '=' Runas_List
 
380
 
 
381
Host_Alias ::= NAME '=' Host_List
 
382
 
 
383
Cmnd_Alias ::= NAME '=' Cmnd_List
 
384
 
 
385
NAME ::= [A-Z]([A-Z][0-9]_)*
 
386
.Ed
 
387
.Pp
 
388
Each
 
389
.Em alias
 
390
definition is of the form
 
391
.Bd -literal
 
392
Alias_Type NAME = item1, item2, ...
 
393
.Ed
 
394
.Pp
 
395
where
 
396
.Em Alias_Type
 
397
is one of
 
398
.Li User_Alias ,
 
399
.Li Runas_Alias ,
 
400
.Li Host_Alias ,
 
401
or
 
402
.Li Cmnd_Alias .
 
403
A
 
404
.Li NAME
 
405
is a string of uppercase letters, numbers,
 
406
and underscore characters
 
407
.Pq Ql _ .
 
408
A
 
409
.Li NAME
 
410
.Sy must
 
411
start with an
 
412
uppercase letter.
 
413
It is possible to put several alias definitions
 
414
of the same type on a single line, joined by a colon
 
415
.Pq Ql :\& .
 
416
E.g.,
 
417
.Bd -literal
 
418
Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
 
419
.Ed
 
420
.Pp
 
421
The definitions of what constitutes a valid
 
422
.Em alias
 
423
member follow.
 
424
.Bd -literal
 
425
User_List ::= User |
 
426
              User ',' User_List
 
427
 
 
428
User ::= '!'* user name |
 
429
         '!'* #uid |
 
430
         '!'* %group |
 
431
         '!'* %#gid |
 
432
         '!'* +netgroup |
 
433
         '!'* %:nonunix_group |
 
434
         '!'* %:#nonunix_gid |
 
435
         '!'* User_Alias
 
436
.Ed
 
437
.Pp
 
438
A
 
439
.Li User_List
 
440
is made up of one or more user names, user ids
 
441
(prefixed with
 
442
.Ql # ) ,
 
443
system group names and ids (prefixed with
 
444
.Ql %
 
445
and
 
446
.Ql %#
 
447
respectively), netgroups (prefixed with
 
448
.Ql + ) ,
 
449
non-Unix group names and IDs (prefixed with
 
450
.Ql %:
 
451
and
 
452
.Ql %:#
 
453
respectively) and
 
454
.Li User_Alias Ns No es.
 
455
Each list item may be prefixed with zero or more
 
456
.Ql \&!
 
457
operators.
 
458
An odd number of
 
459
.Ql \&!
 
460
operators negate the value of
 
461
the item; an even number just cancel each other out.
 
462
.Pp
 
463
A
 
464
.Li user name ,
 
465
.Li uid ,
 
466
.Li group ,
 
467
.Li gid ,
 
468
.Li netgroup ,
 
469
.Li nonunix_group
 
470
or
 
471
.Li nonunix_gid
 
472
may be enclosed in double quotes to avoid the
 
473
need for escaping special characters.
 
474
Alternately, special characters
 
475
may be specified in escaped hex mode, e.g.\& \ex20 for space.
 
476
When
 
477
using double quotes, any prefix characters must be included inside
 
478
the quotes.
 
479
.Pp
 
480
The actual
 
481
.Li nonunix_group
 
482
and
 
483
.Li nonunix_gid
 
484
syntax depends on
 
485
the underlying group provider plugin (see the
 
486
.Em group_plugin
 
487
description below).
 
488
For instance, the QAS AD plugin supports the following formats:
 
489
.Bl -bullet -width 4n
 
490
.It
 
491
Group in the same domain: "%:Group Name"
 
492
.It
 
493
Group in any domain: "%:Group Name@FULLY.QUALIFIED.DOMAIN"
 
494
.It
 
495
Group SID: "%:S-1-2-34-5678901234-5678901234-5678901234-567"
 
496
.El
 
497
.Pp
 
498
Note that quotes around group names are optional.
 
499
Unquoted strings must use a backslash
 
500
.Pq Ql \e
 
501
to escape spaces and special characters.
 
502
See
 
503
.Sx Other special characters and reserved words
 
504
for a list of
 
505
characters that need to be escaped.
 
506
.Bd -literal
 
507
Runas_List ::= Runas_Member |
 
508
               Runas_Member ',' Runas_List
 
509
 
 
510
Runas_Member ::= '!'* user name |
 
511
                 '!'* #uid |
 
512
                 '!'* %group |
 
513
                 '!'* %#gid |
 
514
                 '!'* %:nonunix_group |
 
515
                 '!'* %:#nonunix_gid |
 
516
                 '!'* +netgroup |
 
517
                 '!'* Runas_Alias
 
518
.Ed
 
519
.Pp
 
520
A
 
521
.Li Runas_List
 
522
is similar to a
 
523
.Li User_List
 
524
except that instead
 
525
of
 
526
.Li User_Alias Ns No es
 
527
it can contain
 
528
.Li Runas_Alias Ns No es .
 
529
Note that
 
530
user names and groups are matched as strings.
 
531
In other words, two
 
532
users (groups) with the same uid (gid) are considered to be distinct.
 
533
If you wish to match all user names with the same uid (e.g.\&
 
534
root and toor), you can use a uid instead (#0 in the example given).
 
535
.Bd -literal
 
536
Host_List ::= Host |
 
537
              Host ',' Host_List
 
538
 
 
539
Host ::= '!'* host name |
 
540
         '!'* ip_addr |
 
541
         '!'* network(/netmask)? |
 
542
         '!'* +netgroup |
 
543
         '!'* Host_Alias
 
544
.Ed
 
545
.Pp
 
546
A
 
547
.Li Host_List
 
548
is made up of one or more host names, IP addresses,
 
549
network numbers, netgroups (prefixed with
 
550
.Ql + )
 
551
and other aliases.
 
552
Again, the value of an item may be negated with the
 
553
.Ql \&!
 
554
operator.
 
555
If you do not specify a netmask along with the network number,
 
556
.Nm sudo
 
557
will query each of the local host's network interfaces and,
 
558
if the network number corresponds to one of the hosts's network
 
559
interfaces, the corresponding netmask will be used.
 
560
The netmask
 
561
may be specified either in standard IP address notation
 
562
(e.g.\& 255.255.255.0 or ffff:ffff:ffff:ffff::),
 
563
or CIDR notation (number of bits, e.g.\& 24 or 64).
 
564
A host name may include shell-style wildcards (see the
 
565
.Sx Wildcards
 
566
section below),
 
567
but unless the
 
568
.Li host name
 
569
command on your machine returns the fully
 
570
qualified host name, you'll need to use the
 
571
.Em fqdn
 
572
option for wildcards to be useful.
 
573
Note that
 
574
.Nm sudo
 
575
only inspects actual network interfaces; this means that IP address
 
576
127.0.0.1 (localhost) will never match.
 
577
Also, the host name
 
578
.Dq localhost
 
579
will only match if that is the actual host name, which is usually
 
580
only the case for non-networked systems.
 
581
.Bd -literal
 
582
Cmnd_List ::= Cmnd |
 
583
              Cmnd ',' Cmnd_List
 
584
 
 
585
command name ::= file name |
 
586
                 file name args |
 
587
                 file name '""'
 
588
 
 
589
Cmnd ::= '!'* command name |
 
590
         '!'* directory |
 
591
         '!'* "sudoedit" |
 
592
         '!'* Cmnd_Alias
 
593
.Ed
 
594
.Pp
 
595
A
 
596
.Li Cmnd_List
 
597
is a list of one or more command names, directories, and other aliases.
 
598
A command name is a fully qualified file name which may include
 
599
shell-style wildcards (see the
 
600
.Sx Wildcards
 
601
section below).
 
602
A simple file name allows the user to run the command with any
 
603
arguments he/she wishes.
 
604
However, you may also specify command line arguments (including
 
605
wildcards).
 
606
Alternately, you can specify
 
607
.Li \&""
 
608
to indicate that the command
 
609
may only be run
 
610
.Sy without
 
611
command line arguments.
 
612
A directory is a
 
613
fully qualified path name ending in a
 
614
.Ql / .
 
615
When you specify a directory in a
 
616
.Li Cmnd_List ,
 
617
the user will be able to run any file within that directory
 
618
(but not in any sub-directories therein).
 
619
.Pp
 
620
If a
 
621
.Li Cmnd
 
622
has associated command line arguments, then the arguments
 
623
in the
 
624
.Li Cmnd
 
625
must match exactly those given by the user on the command line
 
626
(or match the wildcards if there are any).
 
627
Note that the following characters must be escaped with a
 
628
.Ql \e
 
629
if they are used in command arguments:
 
630
.Ql ,\& ,
 
631
.Ql :\& ,
 
632
.Ql =\& ,
 
633
.Ql \e .
 
634
The special command
 
635
.Dq Li sudoedit
 
636
is used to permit a user to run
 
637
.Nm sudo
 
638
with the
 
639
.Fl e
 
640
option (or as
 
641
.Nm sudoedit ) .
 
642
It may take command line arguments just as a normal command does.
 
643
.Ss Defaults
 
644
Certain configuration options may be changed from their default
 
645
values at run-time via one or more
 
646
.Li Default_Entry
 
647
lines.
 
648
These may affect all users on any host, all users on a specific host, a
 
649
specific user, a specific command, or commands being run as a specific user.
 
650
Note that per-command entries may not include command line arguments.
 
651
If you need to specify arguments, define a
 
652
.Li Cmnd_Alias
 
653
and reference
 
654
that instead.
 
655
.Bd -literal
 
656
Default_Type ::= 'Defaults' |
 
657
                 'Defaults' '@' Host_List |
 
658
                 'Defaults' ':' User_List |
 
659
                 'Defaults' '!' Cmnd_List |
 
660
                 'Defaults' '>' Runas_List
 
661
 
 
662
Default_Entry ::= Default_Type Parameter_List
 
663
 
 
664
Parameter_List ::= Parameter |
 
665
                   Parameter ',' Parameter_List
 
666
 
 
667
Parameter ::= Parameter '=' Value |
 
668
              Parameter '+=' Value |
 
669
              Parameter '-=' Value |
 
670
              '!'* Parameter
 
671
.Ed
 
672
.Pp
 
673
Parameters may be
 
674
.Sy flags ,
 
675
.Sy integer
 
676
values,
 
677
.Sy strings ,
 
678
or
 
679
.Sy lists .
 
680
Flags are implicitly boolean and can be turned off via the
 
681
.Ql \&!
 
682
operator.
 
683
Some integer, string and list parameters may also be
 
684
used in a boolean context to disable them.
 
685
Values may be enclosed
 
686
in double quotes
 
687
.Pq \&""
 
688
when they contain multiple words.
 
689
Special characters may be escaped with a backslash
 
690
.Pq Ql \e .
 
691
.Pp
 
692
Lists have two additional assignment operators,
 
693
.Li +=
 
694
and
 
695
.Li -= .
 
696
These operators are used to add to and delete from a list respectively.
 
697
It is not an error to use the
 
698
.Li -=
 
699
operator to remove an element
 
700
that does not exist in a list.
 
701
.Pp
 
702
Defaults entries are parsed in the following order: generic, host
 
703
and user Defaults first, then runas Defaults and finally command
 
704
defaults.
 
705
.Pp
 
706
See
 
707
.Sx SUDOERS OPTIONS
 
708
for a list of supported Defaults parameters.
 
709
.Ss User specification
 
710
.Bd -literal
 
711
User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \e
 
712
              (':' Host_List '=' Cmnd_Spec_List)*
 
713
 
 
714
Cmnd_Spec_List ::= Cmnd_Spec |
 
715
                   Cmnd_Spec ',' Cmnd_Spec_List
 
716
 
 
717
Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Solaris_Priv_Spec? Tag_Spec* Cmnd
 
718
 
 
719
Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')'
 
720
 
 
721
SELinux_Spec ::= ('ROLE=role' | 'TYPE=type')
 
722
 
 
723
Solaris_Priv_Spec ::= ('PRIVS=privset' | 'LIMITPRIVS=privset')
 
724
 
 
725
Tag_Spec ::= ('NOPASSWD:' | 'PASSWD:' | 'NOEXEC:' | 'EXEC:' |
 
726
              'SETENV:' | 'NOSETENV:' | 'LOG_INPUT:' | 'NOLOG_INPUT:' |
 
727
              'LOG_OUTPUT:' | 'NOLOG_OUTPUT:')
 
728
.Ed
 
729
.Pp
 
730
A
 
731
.Sy user specification
 
732
determines which commands a user may run
 
733
(and as what user) on specified hosts.
 
734
By default, commands are
 
735
run as
 
736
.Sy root ,
 
737
but this can be changed on a per-command basis.
 
738
.Pp
 
739
The basic structure of a user specification is
 
740
.Dq who where = (as_whom) what .
 
741
Let's break that down into its constituent parts:
 
742
.Ss Runas_Spec
 
743
A
 
744
.Li Runas_Spec
 
745
determines the user and/or the group that a command
 
746
may be run as.
 
747
A fully-specified
 
748
.Li Runas_Spec
 
749
consists of two
 
750
.Li Runas_List Ns No s
 
751
(as defined above) separated by a colon
 
752
.Pq Ql :\&
 
753
and enclosed in a set of parentheses.
 
754
The first
 
755
.Li Runas_List
 
756
indicates
 
757
which users the command may be run as via
 
758
.Nm sudo Ns No 's
 
759
.Fl u
 
760
option.
 
761
The second defines a list of groups that can be specified via
 
762
.Nm sudo Ns No 's
 
763
.Fl g
 
764
option.
 
765
If both
 
766
.Li Runas_List Ns No s
 
767
are specified, the command may be run with any combination of users
 
768
and groups listed in their respective
 
769
.Li Runas_List Ns No s.
 
770
If only the first is specified, the command may be run as any user
 
771
in the list but no
 
772
.Fl g
 
773
option
 
774
may be specified.
 
775
If the first
 
776
.Li Runas_List
 
777
is empty but the
 
778
second is specified, the command may be run as the invoking user
 
779
with the group set to any listed in the
 
780
.Li Runas_List .
 
781
If both
 
782
.Li Runas_List Ns No s
 
783
are empty, the command may only be run as the invoking user.
 
784
If no
 
785
.Li Runas_Spec
 
786
is specified the command may be run as
 
787
.Sy root
 
788
and
 
789
no group may be specified.
 
790
.Pp
 
791
A
 
792
.Li Runas_Spec
 
793
sets the default for the commands that follow it.
 
794
What this means is that for the entry:
 
795
.Bd -literal
 
796
dgb     boulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm
 
797
.Ed
 
798
.Pp
 
799
The user
 
800
.Sy dgb
 
801
may run
 
802
.Pa /bin/ls ,
 
803
.Pa /bin/kill ,
 
804
and
 
805
.Pa /usr/bin/lprm Ns No \(em Ns but
 
806
only as
 
807
.Sy operator .
 
808
E.g.,
 
809
.Bd -literal
 
810
$ sudo -u operator /bin/ls
 
811
.Ed
 
812
.Pp
 
813
It is also possible to override a
 
814
.Li Runas_Spec
 
815
later on in an entry.
 
816
If we modify the entry like so:
 
817
.Bd -literal
 
818
dgb     boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
 
819
.Ed
 
820
.Pp
 
821
Then user
 
822
.Sy dgb
 
823
is now allowed to run
 
824
.Pa /bin/ls
 
825
as
 
826
.Sy operator ,
 
827
but
 
828
.Pa /bin/kill
 
829
and
 
830
.Pa /usr/bin/lprm
 
831
as
 
832
.Sy root .
 
833
.Pp
 
834
We can extend this to allow
 
835
.Sy dgb
 
836
to run
 
837
.Li /bin/ls
 
838
with either
 
839
the user or group set to
 
840
.Sy operator :
 
841
.Bd -literal
 
842
dgb     boulder = (operator : operator) /bin/ls, (root) /bin/kill,\e
 
843
        /usr/bin/lprm
 
844
.Ed
 
845
.Pp
 
846
Note that while the group portion of the
 
847
.Li Runas_Spec
 
848
permits the
 
849
user to run as command with that group, it does not force the user
 
850
to do so.
 
851
If no group is specified on the command line, the command
 
852
will run with the group listed in the target user's password database
 
853
entry.
 
854
The following would all be permitted by the sudoers entry above:
 
855
.Bd -literal
 
856
$ sudo -u operator /bin/ls
 
857
$ sudo -u operator -g operator /bin/ls
 
858
$ sudo -g operator /bin/ls
 
859
.Ed
 
860
.Pp
 
861
In the following example, user
 
862
.Sy tcm
 
863
may run commands that access
 
864
a modem device file with the dialer group.
 
865
.Bd -literal
 
866
tcm     boulder = (:dialer) /usr/bin/tip, /usr/bin/cu,\e
 
867
        /usr/local/bin/minicom
 
868
.Ed
 
869
.Pp
 
870
Note that in this example only the group will be set, the command
 
871
still runs as user
 
872
.Sy tcm .
 
873
E.g.\&
 
874
.Bd -literal
 
875
$ sudo -g dialer /usr/bin/cu
 
876
.Ed
 
877
.Pp
 
878
Multiple users and groups may be present in a
 
879
.Li Runas_Spec ,
 
880
in which case the user may select any combination of users and groups via the
 
881
.Fl u
 
882
and
 
883
.Fl g
 
884
options.
 
885
In this example:
 
886
.Bd -literal
 
887
alan    ALL = (root, bin : operator, system) ALL
 
888
.Ed
 
889
.Pp
 
890
user
 
891
.Sy alan
 
892
may run any command as either user root or bin,
 
893
optionally setting the group to operator or system.
 
894
.Ss SELinux_Spec
 
895
On systems with SELinux support,
 
896
.Em sudoers
 
897
entries may optionally have an SELinux role and/or type associated
 
898
with a command.
 
899
If a role or
 
900
type is specified with the command it will override any default values
 
901
specified in
 
902
.Em sudoers .
 
903
A role or type specified on the command line,
 
904
however, will supersede the values in
 
905
.Em sudoers .
 
906
.Ss Solaris_Priv_Spec
 
907
On Solaris systems,
 
908
.Em sudoers
 
909
entries may optionally specify Solaris privilege set and/or limit
 
910
privilege set associated with a command.
 
911
If privileges or limit privileges are specified with the command
 
912
it will override any default values specified in
 
913
.Em sudoers .
 
914
.Pp
 
915
A privilege set is a comma-separated list of privilege names.
 
916
The
 
917
.Xr ppriv 1
 
918
command can be used to list all privileges known to the system.
 
919
For example:
 
920
.Bd -literal
 
921
$ ppriv -l
 
922
.Ed
 
923
.Pp
 
924
In addition, there are several
 
925
.Dq special
 
926
privilege strings:
 
927
.Bl -tag -width 8n
 
928
.It none
 
929
the empty set
 
930
.It all
 
931
the set of all privileges
 
932
.It zone
 
933
the set of all privileges available in the current zone
 
934
.It basic
 
935
the default set of privileges normal users are granted at login time
 
936
.El
 
937
.Pp
 
938
Privileges can be excluded from a set by prefixing the privilege
 
939
name with either an
 
940
.Ql \&!
 
941
or
 
942
.Ql \-
 
943
character.
 
944
.Ss Tag_Spec
 
945
A command may have zero or more tags associated with it.
 
946
There are
 
947
ten possible tag values:
 
948
.Li NOPASSWD ,
 
949
.Li PASSWD ,
 
950
.Li NOEXEC ,
 
951
.Li EXEC ,
 
952
.Li SETENV ,
 
953
.Li NOSETENV ,
 
954
.Li LOG_INPUT ,
 
955
.Li NOLOG_INPUT ,
 
956
.Li LOG_OUTPUT
 
957
and
 
958
.Li NOLOG_OUTPUT .
 
959
Once a tag is set on a
 
960
.Li Cmnd ,
 
961
subsequent
 
962
.Li Cmnd Ns No s
 
963
in the
 
964
.Li Cmnd_Spec_List ,
 
965
inherit the tag unless it is overridden by the opposite tag (in other words,
 
966
.Li PASSWD
 
967
overrides
 
968
.Li NOPASSWD
 
969
and
 
970
.Li NOEXEC
 
971
overrides
 
972
.Li EXEC ) .
 
973
.Pp
 
974
.Em NOPASSWD and PASSWD
 
975
.Pp
 
976
By default,
 
977
.Nm sudo
 
978
requires that a user authenticate him or herself
 
979
before running a command.
 
980
This behavior can be modified via the
 
981
.Li NOPASSWD
 
982
tag.
 
983
Like a
 
984
.Li Runas_Spec ,
 
985
the
 
986
.Li NOPASSWD
 
987
tag sets
 
988
a default for the commands that follow it in the
 
989
.Li Cmnd_Spec_List .
 
990
Conversely, the
 
991
.Li PASSWD
 
992
tag can be used to reverse things.
 
993
For example:
 
994
.Bd -literal
 
995
ray     rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm
 
996
.Ed
 
997
.Pp
 
998
would allow the user
 
999
.Sy ray
 
1000
to run
 
1001
.Pa /bin/kill ,
 
1002
.Pa /bin/ls ,
 
1003
and
 
1004
.Pa /usr/bin/lprm
 
1005
as
 
1006
.Sy root
 
1007
on the machine rushmore without authenticating himself.
 
1008
If we only want
 
1009
.Sy ray
 
1010
to be able to
 
1011
run
 
1012
.Pa /bin/kill
 
1013
without a password the entry would be:
 
1014
.Bd -literal
 
1015
ray     rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm
 
1016
.Ed
 
1017
.Pp
 
1018
Note, however, that the
 
1019
.Li PASSWD
 
1020
tag has no effect on users who are in the group specified by the
 
1021
.Em exempt_group
 
1022
option.
 
1023
.Pp
 
1024
By default, if the
 
1025
.Li NOPASSWD
 
1026
tag is applied to any of the entries for a user on the current host,
 
1027
he or she will be able to run
 
1028
.Dq Li sudo -l
 
1029
without a password.
 
1030
Additionally, a user may only run
 
1031
.Dq Li sudo -v
 
1032
without a password if the
 
1033
.Li NOPASSWD
 
1034
tag is present for all a user's entries that pertain to the current host.
 
1035
This behavior may be overridden via the
 
1036
.Em verifypw
 
1037
and
 
1038
.Em listpw
 
1039
options.
 
1040
.Pp
 
1041
.Em NOEXEC and EXEC
 
1042
.Pp
 
1043
If
 
1044
.Nm sudo
 
1045
has been compiled with
 
1046
.Em noexec
 
1047
support and the underlying operating system supports it, the
 
1048
.Li NOEXEC
 
1049
tag can be used to prevent a dynamically-linked executable from
 
1050
running further commands itself.
 
1051
.Pp
 
1052
In the following example, user
 
1053
.Sy aaron
 
1054
may run
 
1055
.Pa /usr/bin/more
 
1056
and
 
1057
.Pa /usr/bin/vi
 
1058
but shell escapes will be disabled.
 
1059
.Bd -literal
 
1060
aaron   shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
 
1061
.Ed
 
1062
.Pp
 
1063
See the
 
1064
.Sx Preventing shell escapes
 
1065
section below for more details on how
 
1066
.Li NOEXEC
 
1067
works and whether or not it will work on your system.
 
1068
.Pp
 
1069
.Em SETENV and NOSETENV
 
1070
.Pp
 
1071
These tags override the value of the
 
1072
.Em setenv
 
1073
option on a per-command basis.
 
1074
Note that if
 
1075
.Li SETENV
 
1076
has been set for a command, the user may disable the
 
1077
.Em env_reset
 
1078
option from the command line via the
 
1079
.Fl E
 
1080
option.
 
1081
Additionally, environment variables set on the command
 
1082
line are not subject to the restrictions imposed by
 
1083
.Em env_check ,
 
1084
.Em env_delete ,
 
1085
or
 
1086
.Em env_keep .
 
1087
As such, only trusted users should be allowed to set variables in this manner.
 
1088
If the command matched is
 
1089
.Sy ALL ,
 
1090
the
 
1091
.Li SETENV
 
1092
tag is implied for that command; this default may be overridden by use of the
 
1093
.Li NOSETENV
 
1094
tag.
 
1095
.Pp
 
1096
.Em LOG_INPUT and NOLOG_INPUT
 
1097
.Pp
 
1098
These tags override the value of the
 
1099
.Em log_input
 
1100
option on a per-command basis.
 
1101
For more information, see the description of
 
1102
.Em log_input
 
1103
in the
 
1104
.Sx SUDOERS OPTIONS
 
1105
section below.
 
1106
.Pp
 
1107
.Em LOG_OUTPUT and NOLOG_OUTPUT
 
1108
.Pp
 
1109
These tags override the value of the
 
1110
.Em log_output
 
1111
option on a per-command basis.
 
1112
For more information, see the description of
 
1113
.Em log_output
 
1114
in the
 
1115
.Sx SUDOERS OPTIONS
 
1116
section below.
 
1117
.Ss Wildcards
 
1118
.Nm sudo
 
1119
allows shell-style
 
1120
.Em wildcards
 
1121
(aka meta or glob characters)
 
1122
to be used in host names, path names and command line arguments in the
 
1123
.Em sudoers
 
1124
file.
 
1125
Wildcard matching is done via the
 
1126
.Sy POSIX
 
1127
.Xr glob 3
 
1128
and
 
1129
.Xr fnmatch 3
 
1130
routines.
 
1131
Note that these are
 
1132
.Em not
 
1133
regular expressions.
 
1134
.Bl -tag -width 8n
 
1135
.It Li *
 
1136
Matches any set of zero or more characters.
 
1137
.It Li \&?
 
1138
Matches any single character.
 
1139
.It Li [...]
 
1140
Matches any character in the specified range.
 
1141
.It Li [!...]
 
1142
Matches any character
 
1143
.Sy not
 
1144
in the specified range.
 
1145
.It Li \ex
 
1146
For any character
 
1147
.Sq x ,
 
1148
evaluates to
 
1149
.Sq x .
 
1150
This is used to escape special characters such as:
 
1151
.Ql * ,
 
1152
.Ql \&? ,
 
1153
.Ql [\& ,
 
1154
and
 
1155
.Ql ]\& .
 
1156
.El
 
1157
.Pp
 
1158
POSIX character classes may also be used if your system's
 
1159
.Xr glob 3
 
1160
and
 
1161
.Xr fnmatch 3
 
1162
functions support them.
 
1163
However, because the
 
1164
.Ql :\&
 
1165
character has special meaning in
 
1166
.Em sudoers ,
 
1167
it must be
 
1168
escaped.
 
1169
For example:
 
1170
.Bd -literal -offset 4n
 
1171
/bin/ls [[\:alpha\:]]*
 
1172
.Ed
 
1173
.Pp
 
1174
Would match any file name beginning with a letter.
 
1175
.Pp
 
1176
Note that a forward slash
 
1177
.Pq Ql /
 
1178
will
 
1179
.Sy not
 
1180
be matched by
 
1181
wildcards used in the path name.
 
1182
This is to make a path like:
 
1183
.Bd -literal -offset 4n
 
1184
/usr/bin/*
 
1185
.Ed
 
1186
.Pp
 
1187
match
 
1188
.Pa /usr/bin/who
 
1189
but not
 
1190
.Pa /usr/bin/X11/xterm .
 
1191
.Pp
 
1192
When matching the command line arguments, however, a slash
 
1193
.Sy does
 
1194
get matched by wildcards since command line arguments may contain
 
1195
arbitrary strings and not just path names.
 
1196
.Pp
 
1197
Wildcards in command line arguments should be used with care.
 
1198
Because command line arguments are matched as a single, concatenated
 
1199
string, a wildcard such as
 
1200
.Ql \&?
 
1201
or
 
1202
.Ql *
 
1203
can match multiple words.
 
1204
For example, while a sudoers entry like:
 
1205
.Bd -literal -offset 4n
 
1206
%operator ALL = /bin/cat /var/log/messages*
 
1207
.Ed
 
1208
.Pp
 
1209
will allow command like:
 
1210
.Bd -literal -offset 4n
 
1211
$ sudo cat /var/log/messages.1
 
1212
.Ed
 
1213
.Pp
 
1214
It will also allow:
 
1215
.Bd -literal -offset 4n
 
1216
$ sudo cat /var/log/messages /etc/shadow
 
1217
.Ed
 
1218
.Pp
 
1219
which is probably not what was intended.
 
1220
.Ss Exceptions to wildcard rules
 
1221
The following exceptions apply to the above rules:
 
1222
.Bl -tag -width 8n
 
1223
.It Li \&""
 
1224
If the empty string
 
1225
.Li \&""
 
1226
is the only command line argument in the
 
1227
.Em sudoers
 
1228
entry it means that command is not allowed to be run with
 
1229
.Sy any
 
1230
arguments.
 
1231
.It sudoedit
 
1232
Command line arguments to the
 
1233
.Em sudoedit
 
1234
built-in command should always be path names, so a forward slash
 
1235
.Pq Ql /
 
1236
will not be matched by a wildcard.
 
1237
.El
 
1238
.Ss Including other files from within sudoers
 
1239
It is possible to include other
 
1240
.Em sudoers
 
1241
files from within the
 
1242
.Em sudoers
 
1243
file currently being parsed using the
 
1244
.Li #include
 
1245
and
 
1246
.Li #includedir
 
1247
directives.
 
1248
.Pp
 
1249
This can be used, for example, to keep a site-wide
 
1250
.Em sudoers
 
1251
file in addition to a local, per-machine file.
 
1252
For the sake of this example the site-wide
 
1253
.Em sudoers
 
1254
will be
 
1255
.Pa /etc/sudoers
 
1256
and the per-machine one will be
 
1257
.Pa /etc/sudoers.local .
 
1258
To include
 
1259
.Pa /etc/sudoers.local
 
1260
from within
 
1261
.Pa /etc/sudoers
 
1262
we would use the
 
1263
following line in
 
1264
.Pa /etc/sudoers :
 
1265
.Bd -literal -offset 4n
 
1266
#include /etc/sudoers.local
 
1267
.Ed
 
1268
.Pp
 
1269
When
 
1270
.Nm sudo
 
1271
reaches this line it will suspend processing of the current file
 
1272
.Pq Pa /etc/sudoers
 
1273
and switch to
 
1274
.Pa /etc/sudoers.local .
 
1275
Upon reaching the end of
 
1276
.Pa /etc/sudoers.local ,
 
1277
the rest of
 
1278
.Pa /etc/sudoers
 
1279
will be processed.
 
1280
Files that are included may themselves include other files.
 
1281
A hard limit of 128 nested include files is enforced to prevent include
 
1282
file loops.
 
1283
.Pp
 
1284
If the path to the include file is not fully-qualified (does not
 
1285
begin with a
 
1286
.Ql / ,
 
1287
it must be located in the same directory as the sudoers file it was
 
1288
included from.
 
1289
For example, if
 
1290
.Pa /etc/sudoers
 
1291
contains the line:
 
1292
.Bd -literal -offset 4n
 
1293
.Li #include sudoers.local
 
1294
.Ed
 
1295
.Pp
 
1296
the file that will be included is
 
1297
.Pa /etc/sudoers.local .
 
1298
.Pp
 
1299
The file name may also include the
 
1300
.Li %h
 
1301
escape, signifying the short form of the host name.
 
1302
In other words, if the machine's host name is
 
1303
.Dq xerxes ,
 
1304
then
 
1305
.Bd -literal -offset 4n
 
1306
#include /etc/sudoers.%h
 
1307
.Ed
 
1308
.Pp
 
1309
will cause
 
1310
.Nm sudo
 
1311
to include the file
 
1312
.Pa /etc/sudoers.xerxes .
 
1313
.Pp
 
1314
The
 
1315
.Li #includedir
 
1316
directive can be used to create a
 
1317
.Pa sudo.d
 
1318
directory that the system package manager can drop
 
1319
.Em sudoers
 
1320
rules
 
1321
into as part of package installation.
 
1322
For example, given:
 
1323
.Bd -literal -offset 4n
 
1324
#includedir /etc/sudoers.d
 
1325
.Ed
 
1326
.Pp
 
1327
.Nm sudo
 
1328
will read each file in
 
1329
.Pa /etc/sudoers.d ,
 
1330
skipping file names that end in
 
1331
.Ql ~
 
1332
or contain a
 
1333
.Ql .\&
 
1334
character to avoid causing problems with package manager or editor
 
1335
temporary/backup files.
 
1336
Files are parsed in sorted lexical order.
 
1337
That is,
 
1338
.Pa /etc/sudoers.d/01_first
 
1339
will be parsed before
 
1340
.Pa /etc/sudoers.d/10_second .
 
1341
Be aware that because the sorting is lexical, not numeric,
 
1342
.Pa /etc/sudoers.d/1_whoops
 
1343
would be loaded
 
1344
.Sy after
 
1345
.Pa /etc/sudoers.d/10_second .
 
1346
Using a consistent number of leading zeroes in the file names can be used
 
1347
to avoid such problems.
 
1348
.Pp
 
1349
Note that unlike files included via
 
1350
.Li #include ,
 
1351
.Nm visudo
 
1352
will not edit the files in a
 
1353
.Li #includedir
 
1354
directory unless one of them contains a syntax error.
 
1355
It is still possible to run
 
1356
.Nm visudo
 
1357
with the
 
1358
.Fl f
 
1359
flag to edit the files directly.
 
1360
.Ss Other special characters and reserved words
 
1361
The pound sign
 
1362
.Pq Ql #
 
1363
is used to indicate a comment (unless it is part of a #include
 
1364
directive or unless it occurs in the context of a user name and is
 
1365
followed by one or more digits, in which case it is treated as a
 
1366
uid).
 
1367
Both the comment character and any text after it, up to the end of
 
1368
the line, are ignored.
 
1369
.Pp
 
1370
The reserved word
 
1371
.Sy ALL
 
1372
is a built-in
 
1373
.Em alias
 
1374
that always causes a match to succeed.
 
1375
It can be used wherever one might otherwise use a
 
1376
.Li Cmnd_Alias ,
 
1377
.Li User_Alias ,
 
1378
.Li Runas_Alias ,
 
1379
or
 
1380
.Li Host_Alias .
 
1381
You should not try to define your own
 
1382
.Em alias
 
1383
called
 
1384
.Sy ALL
 
1385
as the built-in alias will be used in preference to your own.
 
1386
Please note that using
 
1387
.Sy ALL
 
1388
can be dangerous since in a command context, it allows the user to run
 
1389
.Sy any
 
1390
command on the system.
 
1391
.Pp
 
1392
An exclamation point
 
1393
.Pq Ql \&!
 
1394
can be used as a logical
 
1395
.Em not
 
1396
operator both in an
 
1397
.Em alias
 
1398
and in front of a
 
1399
.Li Cmnd .
 
1400
This allows one to exclude certain values.
 
1401
Note, however, that using a
 
1402
.Ql \&!
 
1403
in conjunction with the built-in
 
1404
.Sy ALL
 
1405
alias to allow a user to run
 
1406
.Dq all but a few
 
1407
commands rarely works as intended (see
 
1408
.Sx SECURITY NOTES
 
1409
below).
 
1410
.Pp
 
1411
Long lines can be continued with a backslash
 
1412
.Pq Ql \e
 
1413
as the last character on the line.
 
1414
.Pp
 
1415
White space between elements in a list as well as special syntactic
 
1416
characters in a
 
1417
.Em User Specification
 
1418
.Po
 
1419
.Ql =\& ,
 
1420
.Ql :\& ,
 
1421
.Ql (\& ,
 
1422
.Ql )\&
 
1423
.Pc
 
1424
is optional.
 
1425
.Pp
 
1426
The following characters must be escaped with a backslash
 
1427
.Pq Ql \e
 
1428
when used as part of a word (e.g.\& a user name or host name):
 
1429
.Ql \&! ,
 
1430
.Ql =\& ,
 
1431
.Ql :\& ,
 
1432
.Ql ,\& ,
 
1433
.Ql (\& ,
 
1434
.Ql )\& ,
 
1435
.Ql \e .
 
1436
.Sh SUDOERS OPTIONS
 
1437
.Nm sudo Ns No 's
 
1438
behavior can be modified by
 
1439
.Li Default_Entry
 
1440
lines, as explained earlier.
 
1441
A list of all supported Defaults parameters, grouped by type, are listed below.
 
1442
.Pp
 
1443
.Sy Boolean Flags :
 
1444
.Bl -tag -width 16n
 
1445
.It always_set_home
 
1446
If enabled,
 
1447
.Nm sudo
 
1448
will set the
 
1449
.Ev HOME
 
1450
environment variable to the home directory of the target user
 
1451
(which is root unless the
 
1452
.Fl u
 
1453
option is used).
 
1454
This effectively means that the
 
1455
.Fl H
 
1456
option is always implied.
 
1457
Note that
 
1458
.Ev HOME
 
1459
is already set when the the
 
1460
.Em env_reset
 
1461
option is enabled, so
 
1462
.Em always_set_home
 
1463
is only effective for configurations where either
 
1464
.Em env_reset
 
1465
is disabled or
 
1466
.Ev HOME
 
1467
is present in the
 
1468
.Em env_keep
 
1469
list.
 
1470
This flag is
 
1471
.Em off
 
1472
by default.
 
1473
.It authenticate
 
1474
If set, users must authenticate themselves via a password (or other
 
1475
means of authentication) before they may run commands.
 
1476
This default may be overridden via the
 
1477
.Li PASSWD
 
1478
and
 
1479
.Li NOPASSWD
 
1480
tags.
 
1481
This flag is
 
1482
.Em on
 
1483
by default.
 
1484
.It closefrom_override
 
1485
If set, the user may use
 
1486
.Nm sudo Ns No 's
 
1487
.Fl C
 
1488
option which overrides the default starting point at which
 
1489
.Nm sudo
 
1490
begins closing open file descriptors.
 
1491
This flag is
 
1492
.Em off
 
1493
by default.
 
1494
.It compress_io
 
1495
If set, and
 
1496
.Nm sudo
 
1497
is configured to log a command's input or output,
 
1498
the I/O logs will be compressed using
 
1499
.Sy zlib .
 
1500
This flag is
 
1501
.Em on
 
1502
by default when
 
1503
.Nm sudo
 
1504
is compiled with
 
1505
.Sy zlib
 
1506
support.
 
1507
.It env_editor
 
1508
If set,
 
1509
.Nm visudo
 
1510
will use the value of the
 
1511
.Ev EDITOR
 
1512
or
 
1513
.Ev VISUAL
 
1514
environment variables before falling back on the default editor list.
 
1515
Note that this may create a security hole as it allows the user to
 
1516
run any arbitrary command as root without logging.
 
1517
A safer alternative is to place a colon-separated list of editors
 
1518
in the
 
1519
.Li editor
 
1520
variable.
 
1521
.Nm visudo
 
1522
will then only use the
 
1523
.Ev EDITOR
 
1524
or
 
1525
.Ev VISUAL
 
1526
if they match a value specified in
 
1527
.Li editor .
 
1528
This flag is
 
1529
.Em @env_editor@
 
1530
by
 
1531
default.
 
1532
.It env_reset
 
1533
If set,
 
1534
.Nm sudo
 
1535
will run the command in a minimal environment containing the
 
1536
.Ev TERM ,
 
1537
.Ev PATH ,
 
1538
.Ev HOME ,
 
1539
.Ev MAIL ,
 
1540
.Ev SHELL ,
 
1541
.Ev LOGNAME ,
 
1542
.Ev USER ,
 
1543
.Ev USERNAME
 
1544
and
 
1545
.Ev SUDO_*
 
1546
variables.
 
1547
Any
 
1548
variables in the caller's environment that match the
 
1549
.Li env_keep
 
1550
and
 
1551
.Li env_check
 
1552
lists are then added, followed by any variables present in the file
 
1553
specified by the
 
1554
.Em env_file
 
1555
option (if any).
 
1556
The default contents of the
 
1557
.Li env_keep
 
1558
and
 
1559
.Li env_check
 
1560
lists are displayed when
 
1561
.Nm sudo
 
1562
is run by root with the
 
1563
.Fl V
 
1564
option.
 
1565
If the
 
1566
.Em secure_path
 
1567
option is set, its value will be used for the
 
1568
.Ev PATH
 
1569
environment variable.
 
1570
This flag is
 
1571
.Em @env_reset@
 
1572
by default.
 
1573
.It fast_glob
 
1574
Normally,
 
1575
.Nm sudo
 
1576
uses the
 
1577
.Xr glob 3
 
1578
function to do shell-style globbing when matching path names.
 
1579
However, since it accesses the file system,
 
1580
.Xr glob 3
 
1581
can take a long time to complete for some patterns, especially
 
1582
when the pattern references a network file system that is mounted
 
1583
on demand (auto mounted).
 
1584
The
 
1585
.Em fast_glob
 
1586
option causes
 
1587
.Nm sudo
 
1588
to use the
 
1589
.Xr fnmatch 3
 
1590
function, which does not access the file system to do its matching.
 
1591
The disadvantage of
 
1592
.Em fast_glob
 
1593
is that it is unable to match relative path names such as
 
1594
.Pa ./ls
 
1595
or
 
1596
.Pa ../bin/ls .
 
1597
This has security implications when path names that include globbing
 
1598
characters are used with the negation operator,
 
1599
.Ql !\& ,
 
1600
as such rules can be trivially bypassed.
 
1601
As such, this option should not be used when
 
1602
.Em sudoers
 
1603
contains rules that contain negated path names which include globbing
 
1604
characters.
 
1605
This flag is
 
1606
.Em off
 
1607
by default.
 
1608
.It fqdn
 
1609
Set this flag if you want to put fully qualified host names in the
 
1610
.Em sudoers
 
1611
file when the local host name (as returned by the
 
1612
.Li hostname
 
1613
command) does not contain the domain name.
 
1614
In other words, instead of myhost you would use myhost.mydomain.edu.
 
1615
You may still use the short form if you wish (and even mix the two).
 
1616
This option is only effective when the
 
1617
.Dq canonical
 
1618
host name, as returned by the
 
1619
.Fn getaddrinfo
 
1620
or
 
1621
.Fn gethostbyname
 
1622
function, is a fully-qualified domain name.
 
1623
This is usually the case when the system is configured to use DNS
 
1624
for host name resolution.
 
1625
.Pp
 
1626
If the system is configured to use the
 
1627
.Pa /etc/hosts
 
1628
file in preference to DNS, the
 
1629
.Dq canonical
 
1630
host name may not be fully-qualified.
 
1631
The order that sources are queried for hosts name resolution
 
1632
is usually specified in the
 
1633
.Pa @nsswitch_conf@ ,
 
1634
.Pa @netsvc_conf@ ,
 
1635
.Pa /etc/host.conf ,
 
1636
or, in some cases,
 
1637
.Pa /etc/resolv.conf
 
1638
file.
 
1639
In the
 
1640
.Pa /etc/hosts
 
1641
file, the first host name of the entry is considered to be the
 
1642
.Dq canonical
 
1643
name; subsequent names are aliases that are not used by
 
1644
.Nm sudoers .
 
1645
For example, the following hosts file line for the machine
 
1646
.Dq xyzzy
 
1647
has the fully-qualified domain name as the
 
1648
.Dq canonical
 
1649
host name, and the short version as an alias.
 
1650
.sp
 
1651
.Dl 192.168.1.1 xyzzy.sudo.ws xyzzy
 
1652
.sp
 
1653
If the machine's hosts file entry is not formatted properly, the
 
1654
.Em fqdn
 
1655
option will not be effective if it is queried before DNS.
 
1656
.Pp
 
1657
Beware that when using DNS for host name resolution, turning on
 
1658
.Em fqdn
 
1659
requires
 
1660
.Nm sudoers
 
1661
to make DNS lookups which renders
 
1662
.Nm sudo
 
1663
unusable if DNS stops working (for example if the machine is disconnected
 
1664
from the network).
 
1665
Also note that just like with the hosts file, you must use the
 
1666
.Dq canonical
 
1667
name as DNS knows it.
 
1668
That is, you may not use a host alias
 
1669
.Po
 
1670
.Li CNAME
 
1671
entry
 
1672
.Pc
 
1673
due to performance issues and the fact that there is no way to get all
 
1674
aliases from DNS.
 
1675
.Pp
 
1676
This flag is
 
1677
.Em @fqdn@
 
1678
by default.
 
1679
.It ignore_dot
 
1680
If set,
 
1681
.Nm sudo
 
1682
will ignore "." or "" (both denoting current directory) in the
 
1683
.Ev PATH
 
1684
environment variable; the
 
1685
.Ev PATH
 
1686
itself is not modified.
 
1687
This flag is
 
1688
.Em @ignore_dot@
 
1689
by default.
 
1690
.It ignore_local_sudoers
 
1691
If set via LDAP, parsing of
 
1692
.Pa @sysconfdir@/sudoers
 
1693
will be skipped.
 
1694
This is intended for Enterprises that wish to prevent the usage of local
 
1695
sudoers files so that only LDAP is used.
 
1696
This thwarts the efforts of rogue operators who would attempt to add roles to
 
1697
.Pa @sysconfdir@/sudoers .
 
1698
When this option is present,
 
1699
.Pa @sysconfdir@/sudoers
 
1700
does not even need to exist.
 
1701
Since this option tells
 
1702
.Nm sudo
 
1703
how to behave when no specific LDAP entries have been matched, this
 
1704
sudoOption is only meaningful for the
 
1705
.Li cn=defaults
 
1706
section.
 
1707
This flag is
 
1708
.Em off
 
1709
by default.
 
1710
.It insults
 
1711
If set,
 
1712
.Nm sudo
 
1713
will insult users when they enter an incorrect password.
 
1714
This flag is
 
1715
.Em @insults@
 
1716
by default.
 
1717
.It log_host
 
1718
If set, the host name will be logged in the (non-syslog)
 
1719
.Nm sudo
 
1720
log file.
 
1721
This flag is
 
1722
.Em off
 
1723
by default.
 
1724
.It log_input
 
1725
If set,
 
1726
.Nm sudo
 
1727
will run the command in a
 
1728
.Em pseudo tty
 
1729
and log all user input.
 
1730
If the standard input is not connected to the user's tty, due to
 
1731
I/O redirection or because the command is part of a pipeline, that
 
1732
input is also captured and stored in a separate log file.
 
1733
.Pp
 
1734
Input is logged to the directory specified by the
 
1735
.Em iolog_dir
 
1736
option
 
1737
.Po
 
1738
.Pa @iolog_dir@
 
1739
by default
 
1740
.Pc
 
1741
using a unique session ID that is included in the normal
 
1742
.Nm sudo
 
1743
log line, prefixed with
 
1744
.Dq Li TSID= .
 
1745
The
 
1746
.Em iolog_file
 
1747
option may be used to control the format of the session ID.
 
1748
.Pp
 
1749
Note that user input may contain sensitive information such as
 
1750
passwords (even if they are not echoed to the screen), which will
 
1751
be stored in the log file unencrypted.
 
1752
In most cases, logging the command output via
 
1753
.Em log_output
 
1754
is all that is required.
 
1755
.It log_output
 
1756
If set,
 
1757
.Nm sudo
 
1758
will run the command in a
 
1759
.Em pseudo tty
 
1760
and log all output that is sent to the screen, similar to the
 
1761
.Xr script 1
 
1762
command.
 
1763
If the standard output or standard error is not connected to the
 
1764
user's tty, due to I/O redirection or because the command is part
 
1765
of a pipeline, that output is also captured and stored in separate
 
1766
log files.
 
1767
.Pp
 
1768
Output is logged to the directory specified by the
 
1769
.Em iolog_dir
 
1770
option
 
1771
.Po
 
1772
.Pa @iolog_dir@
 
1773
by default
 
1774
.Pc
 
1775
using a unique session ID that is included in the normal
 
1776
.Nm sudo
 
1777
log line, prefixed with
 
1778
.Dq Li TSID= .
 
1779
The
 
1780
.Em iolog_file
 
1781
option may be used to control the format of the session ID.
 
1782
.Pp
 
1783
Output logs may be viewed with the
 
1784
.Xr sudoreplay @mansectsu@
 
1785
utility, which can also be used to list or search the available logs.
 
1786
.It log_year
 
1787
If set, the four-digit year will be logged in the (non-syslog)
 
1788
.Nm sudo
 
1789
log file.
 
1790
This flag is
 
1791
.Em off
 
1792
by default.
 
1793
.It long_otp_prompt
 
1794
When validating with a One Time Password (OTP) scheme such as
 
1795
.Sy S/Key
 
1796
or
 
1797
.Sy OPIE ,
 
1798
a two-line prompt is used to make it easier
 
1799
to cut and paste the challenge to a local window.
 
1800
It's not as pretty as the default but some people find it more convenient.
 
1801
This flag is
 
1802
.Em @long_otp_prompt@
 
1803
by default.
 
1804
.It mail_always
 
1805
Send mail to the
 
1806
.Em mailto
 
1807
user every time a users runs
 
1808
.Nm sudo .
 
1809
This flag is
 
1810
.Em off
 
1811
by default.
 
1812
.It mail_badpass
 
1813
Send mail to the
 
1814
.Em mailto
 
1815
user if the user running
 
1816
.Nm sudo
 
1817
does not enter the correct password.
 
1818
If the command the user is attempting to run is not permitted by
 
1819
.Em sudoers
 
1820
and one of the
 
1821
.Em mail_always ,
 
1822
.Em mail_no_host ,
 
1823
.Em mail_no_perms
 
1824
or
 
1825
.Em mail_no_user
 
1826
flags are set, this flag will have no effect.
 
1827
This flag is
 
1828
.Em off
 
1829
by default.
 
1830
.It mail_no_host
 
1831
If set, mail will be sent to the
 
1832
.Em mailto
 
1833
user if the invoking user exists in the
 
1834
.Em sudoers
 
1835
file, but is not allowed to run commands on the current host.
 
1836
This flag is
 
1837
.Em @mail_no_host@
 
1838
by default.
 
1839
.It mail_no_perms
 
1840
If set, mail will be sent to the
 
1841
.Em mailto
 
1842
user if the invoking user is allowed to use
 
1843
.Nm sudo
 
1844
but the command they are trying is not listed in their
 
1845
.Em sudoers
 
1846
file entry or is explicitly denied.
 
1847
This flag is
 
1848
.Em @mail_no_perms@
 
1849
by default.
 
1850
.It mail_no_user
 
1851
If set, mail will be sent to the
 
1852
.Em mailto
 
1853
user if the invoking user is not in the
 
1854
.Em sudoers
 
1855
file.
 
1856
This flag is
 
1857
.Em @mail_no_user@
 
1858
by default.
 
1859
.It noexec
 
1860
If set, all commands run via
 
1861
.Nm sudo
 
1862
will behave as if the
 
1863
.Li NOEXEC
 
1864
tag has been set, unless overridden by a
 
1865
.Li EXEC
 
1866
tag.
 
1867
See the description of
 
1868
.Em NOEXEC and EXEC
 
1869
below as well as the
 
1870
.Sx Preventing shell escapes
 
1871
section at the end of this manual.
 
1872
This flag is
 
1873
.Em off
 
1874
by default.
 
1875
.It path_info
 
1876
Normally,
 
1877
.Nm sudo
 
1878
will tell the user when a command could not be
 
1879
found in their
 
1880
.Ev PATH
 
1881
environment variable.
 
1882
Some sites may wish to disable this as it could be used to gather
 
1883
information on the location of executables that the normal user does
 
1884
not have access to.
 
1885
The disadvantage is that if the executable is simply not in the user's
 
1886
.Ev PATH ,
 
1887
.Nm sudo
 
1888
will tell the user that they are not allowed to run it, which can be confusing.
 
1889
This flag is
 
1890
.Em @path_info@
 
1891
by default.
 
1892
.It passprompt_override
 
1893
The password prompt specified by
 
1894
.Em passprompt
 
1895
will normally only be used if the password prompt provided by systems
 
1896
such as PAM matches the string
 
1897
.Dq Password: .
 
1898
If
 
1899
.Em passprompt_override
 
1900
is set,
 
1901
.Em passprompt
 
1902
will always be used.
 
1903
This flag is
 
1904
.Em off
 
1905
by default.
 
1906
.It preserve_groups
 
1907
By default,
 
1908
.Nm sudo
 
1909
will initialize the group vector to the list of groups the target user is in.
 
1910
When
 
1911
.Em preserve_groups
 
1912
is set, the user's existing group vector is left unaltered.
 
1913
The real and effective group IDs, however, are still set to match the
 
1914
target user.
 
1915
This flag is
 
1916
.Em off
 
1917
by default.
 
1918
.It pwfeedback
 
1919
By default,
 
1920
.Nm sudo
 
1921
reads the password like most other Unix programs,
 
1922
by turning off echo until the user hits the return (or enter) key.
 
1923
Some users become confused by this as it appears to them that
 
1924
.Nm sudo
 
1925
has hung at this point.
 
1926
When
 
1927
.Em pwfeedback
 
1928
is set,
 
1929
.Nm sudo
 
1930
will provide visual feedback when the user presses a key.
 
1931
Note that this does have a security impact as an onlooker may be able to
 
1932
determine the length of the password being entered.
 
1933
This flag is
 
1934
.Em off
 
1935
by default.
 
1936
.It requiretty
 
1937
If set,
 
1938
.Nm sudo
 
1939
will only run when the user is logged in to a real tty.
 
1940
When this flag is set,
 
1941
.Nm sudo
 
1942
can only be run from a login session and not via other means such as
 
1943
.Xr cron @mansectsu@
 
1944
or cgi-bin scripts.
 
1945
This flag is
 
1946
.Em off
 
1947
by default.
 
1948
.It root_sudo
 
1949
If set, root is allowed to run
 
1950
.Nm sudo
 
1951
too.
 
1952
Disabling this prevents users from
 
1953
.Dq chaining
 
1954
.Nm sudo
 
1955
commands to get a root shell by doing something like
 
1956
.Dq Li sudo sudo /bin/sh .
 
1957
Note, however, that turning off
 
1958
.Em root_sudo
 
1959
will also prevent root from running
 
1960
.Nm sudoedit .
 
1961
Disabling
 
1962
.Em root_sudo
 
1963
provides no real additional security; it exists purely for historical reasons.
 
1964
This flag is
 
1965
.Em @root_sudo@
 
1966
by default.
 
1967
.It rootpw
 
1968
If set,
 
1969
.Nm sudo
 
1970
will prompt for the root password instead of the password of the invoking user.
 
1971
This flag is
 
1972
.Em off
 
1973
by default.
 
1974
.It runaspw
 
1975
If set,
 
1976
.Nm sudo
 
1977
will prompt for the password of the user defined by the
 
1978
.Em runas_default
 
1979
option (defaults to
 
1980
.Li @runas_default@ )
 
1981
instead of the password of the invoking user.
 
1982
This flag is
 
1983
.Em off
 
1984
by default.
 
1985
.It set_home
 
1986
If enabled and
 
1987
.Nm sudo
 
1988
is invoked with the
 
1989
.Fl s
 
1990
option the
 
1991
.Ev HOME
 
1992
environment variable will be set to the home directory of the target
 
1993
user (which is root unless the
 
1994
.Fl u
 
1995
option is used).
 
1996
This effectively makes the
 
1997
.Fl s
 
1998
option imply
 
1999
.Fl H .
 
2000
Note that
 
2001
.Ev HOME
 
2002
is already set when the the
 
2003
.Em env_reset
 
2004
option is enabled, so
 
2005
.Em set_home
 
2006
is only effective for configurations where either
 
2007
.Em env_reset
 
2008
is disabled
 
2009
or
 
2010
.Ev HOME
 
2011
is present in the
 
2012
.Em env_keep
 
2013
list.
 
2014
This flag is
 
2015
.Em off
 
2016
by default.
 
2017
.It set_logname
 
2018
Normally,
 
2019
.Nm sudo
 
2020
will set the
 
2021
.Ev LOGNAME ,
 
2022
.Ev USER
 
2023
and
 
2024
.Ev USERNAME
 
2025
environment variables to the name of the target user (usually root unless the
 
2026
.Fl u
 
2027
option is given).
 
2028
However, since some programs (including the RCS revision control system) use
 
2029
.Ev LOGNAME
 
2030
to determine the real identity of the user, it may be desirable to
 
2031
change this behavior.
 
2032
This can be done by negating the set_logname option.
 
2033
Note that if the
 
2034
.Em env_reset
 
2035
option has not been disabled, entries in the
 
2036
.Em env_keep
 
2037
list will override the value of
 
2038
.Em set_logname .
 
2039
This flag is
 
2040
.Em on
 
2041
by default.
 
2042
.It set_utmp
 
2043
When enabled,
 
2044
.Nm sudo
 
2045
will create an entry in the utmp (or utmpx) file when a pseudo-tty
 
2046
is allocated.
 
2047
A pseudo-tty is allocated by
 
2048
.Nm sudo
 
2049
when the
 
2050
.Em log_input ,
 
2051
.Em log_output
 
2052
or
 
2053
.Em use_pty
 
2054
flags are enabled.
 
2055
By default, the new entry will be a copy of the user's existing utmp
 
2056
entry (if any), with the tty, time, type and pid fields updated.
 
2057
This flag is
 
2058
.Em on
 
2059
by default.
 
2060
.It setenv
 
2061
Allow the user to disable the
 
2062
.Em env_reset
 
2063
option from the command line via the
 
2064
.Fl E
 
2065
option.
 
2066
Additionally, environment variables set via the command line are
 
2067
not subject to the restrictions imposed by
 
2068
.Em env_check ,
 
2069
.Em env_delete ,
 
2070
or
 
2071
.Em env_keep .
 
2072
As such, only trusted users should be allowed to set variables in this manner.
 
2073
This flag is
 
2074
.Em off
 
2075
by default.
 
2076
.It shell_noargs
 
2077
If set and
 
2078
.Nm sudo
 
2079
is invoked with no arguments it acts as if the
 
2080
.Fl s
 
2081
option had been given.
 
2082
That is, it runs a shell as root (the shell is determined by the
 
2083
.Ev SHELL
 
2084
environment variable if it is set, falling back on the shell listed
 
2085
in the invoking user's /etc/passwd entry if not).
 
2086
This flag is
 
2087
.Em off
 
2088
by default.
 
2089
.It stay_setuid
 
2090
Normally, when
 
2091
.Nm sudo
 
2092
executes a command the real and effective UIDs are set to the target
 
2093
user (root by default).
 
2094
This option changes that behavior such that the real UID is left
 
2095
as the invoking user's UID.
 
2096
In other words, this makes
 
2097
.Nm sudo
 
2098
act as a setuid wrapper.
 
2099
This can be useful on systems that disable some potentially
 
2100
dangerous functionality when a program is run setuid.
 
2101
This option is only effective on systems that support either the
 
2102
.Xr setreuid 2
 
2103
or
 
2104
.Xr setresuid 2
 
2105
system call.
 
2106
This flag is
 
2107
.Em off
 
2108
by default.
 
2109
.It targetpw
 
2110
If set,
 
2111
.Nm sudo
 
2112
will prompt for the password of the user specified
 
2113
by the
 
2114
.Fl u
 
2115
option (defaults to
 
2116
.Li root )
 
2117
instead of the password of the invoking user.
 
2118
In addition, the time stamp file name will include the target user's name.
 
2119
Note that this flag precludes the use of a uid not listed in the passwd
 
2120
database as an argument to the
 
2121
.Fl u
 
2122
option.
 
2123
This flag is
 
2124
.Em off
 
2125
by default.
 
2126
.It tty_tickets
 
2127
If set, users must authenticate on a per-tty basis.
 
2128
With this flag enabled,
 
2129
.Nm sudo
 
2130
will use a file named for the tty the user is
 
2131
logged in on in the user's time stamp directory.
 
2132
If disabled, the time stamp of the directory is used instead.
 
2133
This flag is
 
2134
.Em @tty_tickets@
 
2135
by default.
 
2136
.It umask_override
 
2137
If set,
 
2138
.Nm sudo
 
2139
will set the umask as specified by
 
2140
.Em sudoers
 
2141
without modification.
 
2142
This makes it possible to specify a more permissive umask in
 
2143
.Em sudoers
 
2144
than the user's own umask and matches historical behavior.
 
2145
If
 
2146
.Em umask_override
 
2147
is not set,
 
2148
.Nm sudo
 
2149
will set the umask to be the union of the user's umask and what is specified in
 
2150
.Em sudoers .
 
2151
This flag is
 
2152
.Em @umask_override@
 
2153
by default.
 
2154
.It use_loginclass
 
2155
If set,
 
2156
.Nm sudo
 
2157
will apply the defaults specified for the target user's login class
 
2158
if one exists.
 
2159
Only available if
 
2160
.Nm sudo
 
2161
is configured with the
 
2162
.Li --with-logincap
 
2163
option.
 
2164
This flag is
 
2165
.Em off
 
2166
by default.
 
2167
.It use_pty
 
2168
If set,
 
2169
.Nm sudo
 
2170
will run the command in a pseudo-pty even if no I/O logging is being gone.
 
2171
A malicious program run under
 
2172
.Nm sudo
 
2173
could conceivably fork a background process that retains to the user's
 
2174
terminal device after the main program has finished executing.
 
2175
Use of this option will make that impossible.
 
2176
This flag is
 
2177
.Em off
 
2178
by default.
 
2179
.It utmp_runas
 
2180
If set,
 
2181
.Nm sudo
 
2182
will store the name of the runas user when updating the utmp (or utmpx) file.
 
2183
By default,
 
2184
.Nm sudo
 
2185
stores the name of the invoking user.
 
2186
This flag is
 
2187
.Em off
 
2188
by default.
 
2189
.It visiblepw
 
2190
By default,
 
2191
.Nm sudo
 
2192
will refuse to run if the user must enter a password but it is not
 
2193
possible to disable echo on the terminal.
 
2194
If the
 
2195
.Em visiblepw
 
2196
flag is set,
 
2197
.Nm sudo
 
2198
will prompt for a password even when it would be visible on the screen.
 
2199
This makes it possible to run things like
 
2200
.Dq Li ssh somehost sudo ls
 
2201
since by default,
 
2202
.Xr ssh 1
 
2203
does
 
2204
not allocate a tty when running a command.
 
2205
This flag is
 
2206
.Em off
 
2207
by default.
 
2208
.El
 
2209
.Pp
 
2210
.Sy Integers :
 
2211
.Bl -tag -width 16n
 
2212
.It closefrom
 
2213
Before it executes a command,
 
2214
.Nm sudo
 
2215
will close all open file descriptors other than standard input,
 
2216
standard output and standard error (ie: file descriptors 0-2).
 
2217
The
 
2218
.Em closefrom
 
2219
option can be used to specify a different file descriptor at which
 
2220
to start closing.
 
2221
The default is
 
2222
.Li 3 .
 
2223
.It passwd_tries
 
2224
The number of tries a user gets to enter his/her password before
 
2225
.Nm sudo
 
2226
logs the failure and exits.
 
2227
The default is
 
2228
.Li @passwd_tries@ .
 
2229
.El
 
2230
.Pp
 
2231
.Sy Integers that can be used in a boolean context :
 
2232
.Bl -tag -width 16n
 
2233
.It loglinelen
 
2234
Number of characters per line for the file log.
 
2235
This value is used to decide when to wrap lines for nicer log files.
 
2236
This has no effect on the syslog log file, only the file log.
 
2237
The default is
 
2238
.Li @loglen@
 
2239
(use 0 or negate the option to disable word wrap).
 
2240
.It passwd_timeout
 
2241
Number of minutes before the
 
2242
.Nm sudo
 
2243
password prompt times out, or
 
2244
.Li 0
 
2245
for no timeout.
 
2246
The timeout may include a fractional component
 
2247
if minute granularity is insufficient, for example
 
2248
.Li 2.5 .
 
2249
The
 
2250
default is
 
2251
.Li @password_timeout@ .
 
2252
.It timestamp_timeout
 
2253
Number of minutes that can elapse before
 
2254
.Nm sudo
 
2255
will ask for a passwd again.
 
2256
The timeout may include a fractional component if
 
2257
minute granularity is insufficient, for example
 
2258
.Li 2.5 .
 
2259
The default is
 
2260
.Li @timeout@ .
 
2261
Set this to
 
2262
.Li 0
 
2263
to always prompt for a password.
 
2264
If set to a value less than
 
2265
.Li 0
 
2266
the user's time stamp will never expire.
 
2267
This can be used to allow users to create or delete their own time stamps via
 
2268
.Dq Li sudo -v
 
2269
and
 
2270
.Dq Li sudo -k
 
2271
respectively.
 
2272
.It umask
 
2273
Umask to use when running the command.
 
2274
Negate this option or set it to 0777 to preserve the user's umask.
 
2275
The actual umask that is used will be the union of the user's umask
 
2276
and the value of the
 
2277
.Em umask
 
2278
option, which defaults to
 
2279
.Li @sudo_umask@ .
 
2280
This guarantees
 
2281
that
 
2282
.Nm sudo
 
2283
never lowers the umask when running a command.
 
2284
Note: on systems that use PAM, the default PAM configuration may specify
 
2285
its own umask which will override the value set in
 
2286
.Em sudoers .
 
2287
.El
 
2288
.Pp
 
2289
.Sy Strings :
 
2290
.Bl -tag -width 16n
 
2291
.It badpass_message
 
2292
Message that is displayed if a user enters an incorrect password.
 
2293
The default is
 
2294
.Li @badpass_message@
 
2295
unless insults are enabled.
 
2296
.It editor
 
2297
A colon
 
2298
.Pq Ql :\&
 
2299
separated list of editors allowed to be used with
 
2300
.Nm visudo .
 
2301
.Nm visudo
 
2302
will choose the editor that matches the user's
 
2303
.Ev EDITOR
 
2304
environment variable if possible, or the first editor in the
 
2305
list that exists and is executable.
 
2306
The default is
 
2307
.Pa @editor@ .
 
2308
.It iolog_dir
 
2309
The top-level directory to use when constructing the path name for
 
2310
the input/output log directory.
 
2311
Only used if the
 
2312
.Em log_input
 
2313
or
 
2314
.Em log_output
 
2315
options are enabled or when the
 
2316
.Li LOG_INPUT
 
2317
or
 
2318
.Li LOG_OUTPUT
 
2319
tags are present for a command.
 
2320
The session sequence number, if any, is stored in the directory.
 
2321
The default is
 
2322
.Pa @iolog_dir@ .
 
2323
.Pp
 
2324
The following percent
 
2325
.Pq Ql %
 
2326
escape sequences are supported:
 
2327
.Bl -tag -width 4n
 
2328
.It Li %{seq}
 
2329
expanded to a monotonically increasing base-36 sequence number, such as 0100A5,
 
2330
where every two digits are used to form a new directory, e.g.\&
 
2331
.Pa 01/00/A5
 
2332
.It Li %{user}
 
2333
expanded to the invoking user's login name
 
2334
.It Li %{group}
 
2335
expanded to the name of the invoking user's real group ID
 
2336
.It Li %{runas_user}
 
2337
expanded to the login name of the user the command will
 
2338
be run as (e.g.\& root)
 
2339
.It Li %{runas_group}
 
2340
expanded to the group name of the user the command will
 
2341
be run as (e.g.\& wheel)
 
2342
.It Li %{hostname}
 
2343
expanded to the local host name without the domain name
 
2344
.It Li %{command}
 
2345
expanded to the base name of the command being run
 
2346
.El
 
2347
.Pp
 
2348
In addition, any escape sequences supported by the system's
 
2349
.Xr strftime 3
 
2350
function will be expanded.
 
2351
.Pp
 
2352
To include a literal
 
2353
.Ql %
 
2354
character, the string
 
2355
.Ql %%
 
2356
should be used.
 
2357
.It iolog_file
 
2358
The path name, relative to
 
2359
.Em iolog_dir ,
 
2360
in which to store input/output logs when the
 
2361
.Em log_input
 
2362
or
 
2363
.Em log_output
 
2364
options are enabled or when the
 
2365
.Li LOG_INPUT
 
2366
or
 
2367
.Li LOG_OUTPUT
 
2368
tags are present for a command.
 
2369
Note that
 
2370
.Em iolog_file
 
2371
may contain directory components.
 
2372
The default is
 
2373
.Dq Li %{seq} .
 
2374
.Pp
 
2375
See the
 
2376
.Em iolog_dir
 
2377
option above for a list of supported percent
 
2378
.Pq Ql %
 
2379
escape sequences.
 
2380
.Pp
 
2381
In addition to the escape sequences, path names that end in six or
 
2382
more
 
2383
.Li X Ns No s
 
2384
will have the
 
2385
.Li X Ns No s
 
2386
replaced with a unique combination of digits and letters, similar to the
 
2387
.Xr mktemp 3
 
2388
function.
 
2389
.It limitprivs
 
2390
The default Solaris limit privileges to use when constructing a new
 
2391
privilege set for a command.
 
2392
This bounds all privileges of the executing process.
 
2393
The default limit privileges may be overridden on a per-command basis in
 
2394
.Em sudoers .
 
2395
This option is only available if
 
2396
.Nm
 
2397
is built on Solaris 10 or higher.
 
2398
.It mailsub
 
2399
Subject of the mail sent to the
 
2400
.Em mailto
 
2401
user.
 
2402
The escape
 
2403
.Li %h
 
2404
will expand to the host name of the machine.
 
2405
Default is
 
2406
.Dq Li @mailsub@ .
 
2407
.It noexec_file
 
2408
This option is no longer supported.
 
2409
The path to the noexec file should now be set in the
 
2410
.Pa @sysconfdir@/sudo.conf
 
2411
file.
 
2412
.It passprompt
 
2413
The default prompt to use when asking for a password; can be overridden via the
 
2414
.Fl p
 
2415
option or the
 
2416
.Ev SUDO_PROMPT
 
2417
environment variable.
 
2418
The following percent
 
2419
.Pq Ql %
 
2420
escape sequences are supported:
 
2421
.Bl -tag -width 4n
 
2422
.It Li %H
 
2423
expanded to the local host name including the domain name
 
2424
(only if the machine's host name is fully qualified or the
 
2425
.Em fqdn
 
2426
option is set)
 
2427
.It Li %h
 
2428
expanded to the local host name without the domain name
 
2429
.It Li %p
 
2430
expanded to the user whose password is being asked for (respects the
 
2431
.Em rootpw ,
 
2432
.Em targetpw
 
2433
and
 
2434
.Em runaspw
 
2435
flags in
 
2436
.Em sudoers )
 
2437
.It Li \&%U
 
2438
expanded to the login name of the user the command will
 
2439
be run as (defaults to root)
 
2440
.It Li %u
 
2441
expanded to the invoking user's login name
 
2442
.It Li %%
 
2443
two consecutive
 
2444
.Li %
 
2445
characters are collapsed into a single
 
2446
.Li %
 
2447
character
 
2448
.El
 
2449
.Pp
 
2450
The default value is
 
2451
.Dq Li @passprompt@ .
 
2452
.It privs
 
2453
The default Solaris privileges to use when constructing a new
 
2454
privilege set for a command.
 
2455
This is passed to the executing process via the inherited privilege set,
 
2456
but is bounded by the limit privileges.
 
2457
If the
 
2458
.Em privs
 
2459
option is specified but the
 
2460
.Em limitprivs
 
2461
option is not, the limit privileges of the executing process is set to
 
2462
.Em privs .
 
2463
The default privileges may be overridden on a per-command basis in
 
2464
.Em sudoers .
 
2465
This option is only available if
 
2466
.Nm
 
2467
is built on Solaris 10 or higher.
 
2468
.It role
 
2469
The default SELinux role to use when constructing a new security
 
2470
context to run the command.
 
2471
The default role may be overridden on a per-command basis in
 
2472
.Em sudoers
 
2473
or via command line options.
 
2474
This option is only available when
 
2475
.Nm sudo
 
2476
is built with SELinux support.
 
2477
.It runas_default
 
2478
The default user to run commands as if the
 
2479
.Fl u
 
2480
option is not specified on the command line.
 
2481
This defaults to
 
2482
.Li @runas_default@ .
 
2483
.It syslog_badpri
 
2484
Syslog priority to use when user authenticates unsuccessfully.
 
2485
Defaults to
 
2486
.Li @badpri@ .
 
2487
.Pp
 
2488
The following syslog priorities are supported:
 
2489
.Sy alert ,
 
2490
.Sy crit ,
 
2491
.Sy debug ,
 
2492
.Sy emerg ,
 
2493
.Sy err ,
 
2494
.Sy info ,
 
2495
.Sy notice ,
 
2496
and
 
2497
.Sy warning .
 
2498
.It syslog_goodpri
 
2499
Syslog priority to use when user authenticates successfully.
 
2500
Defaults to
 
2501
.Li @goodpri@ .
 
2502
.Pp
 
2503
See
 
2504
.Sx syslog_badpri
 
2505
for the list of supported syslog priorities.
 
2506
.It sudoers_locale
 
2507
Locale to use when parsing the sudoers file, logging commands, and
 
2508
sending email.
 
2509
Note that changing the locale may affect how sudoers is interpreted.
 
2510
Defaults to
 
2511
.Dq Li C .
 
2512
.It timestampdir
 
2513
The directory in which
 
2514
.Nm sudo
 
2515
stores its time stamp files.
 
2516
The default is
 
2517
.Pa @timedir@ .
 
2518
.It timestampowner
 
2519
The owner of the time stamp directory and the time stamps stored therein.
 
2520
The default is
 
2521
.Li root .
 
2522
.It type
 
2523
The default SELinux type to use when constructing a new security
 
2524
context to run the command.
 
2525
The default type may be overridden on a per-command basis in
 
2526
.Em sudoers
 
2527
or via command line options.
 
2528
This option is only available when
 
2529
.Nm sudo
 
2530
is built with SELinux support.
 
2531
.El
 
2532
.Pp
 
2533
.Sy Strings that can be used in a boolean context :
 
2534
.Bl -tag -width 12n
 
2535
.It env_file
 
2536
The
 
2537
.Em env_file
 
2538
option specifies the fully qualified path to a file containing variables
 
2539
to be set in the environment of the program being run.
 
2540
Entries in this file should either be of the form
 
2541
.Dq Li VARIABLE=value
 
2542
or
 
2543
.Dq Li export VARIABLE=value .
 
2544
The value may optionally be surrounded by single or double quotes.
 
2545
Variables in this file are subject to other
 
2546
.Nm sudo
 
2547
environment settings such as
 
2548
.Em env_keep
 
2549
and
 
2550
.Em env_check .
 
2551
.It exempt_group
 
2552
Users in this group are exempt from password and PATH requirements.
 
2553
The group name specified should not include a
 
2554
.Li %
 
2555
prefix.
 
2556
This is not set by default.
 
2557
.It group_plugin
 
2558
A string containing a
 
2559
.Em sudoers
 
2560
group plugin with optional arguments.
 
2561
This can be used to implement support for the
 
2562
.Li nonunix_group
 
2563
syntax described earlier.
 
2564
The string should consist of the plugin
 
2565
path, either fully-qualified or relative to the
 
2566
.Pa @prefix@/libexec
 
2567
directory, followed by any configuration arguments the plugin requires.
 
2568
These arguments (if any) will be passed to the plugin's initialization function.
 
2569
If arguments are present, the string must be enclosed in double quotes
 
2570
.Pq \&"" .
 
2571
.Pp
 
2572
For example, given
 
2573
.Pa /etc/sudo-group ,
 
2574
a group file in Unix group format, the sample group plugin can be used:
 
2575
.Bd -literal
 
2576
Defaults group_plugin="sample_group.so /etc/sudo-group"
 
2577
.Ed
 
2578
.Pp
 
2579
For more information see
 
2580
.Xr sudo_plugin @mansectform@ .
 
2581
.It lecture
 
2582
This option controls when a short lecture will be printed along with
 
2583
the password prompt.
 
2584
It has the following possible values:
 
2585
.Bl -tag -width 6n
 
2586
.It always
 
2587
Always lecture the user.
 
2588
.It never
 
2589
Never lecture the user.
 
2590
.It once
 
2591
Only lecture the user the first time they run
 
2592
.Nm sudo .
 
2593
.El
 
2594
.Pp
 
2595
If no value is specified, a value of
 
2596
.Em once
 
2597
is implied.
 
2598
Negating the option results in a value of
 
2599
.Em never
 
2600
being used.
 
2601
The default value is
 
2602
.Em @lecture@ .
 
2603
.It lecture_file
 
2604
Path to a file containing an alternate
 
2605
.Nm sudo
 
2606
lecture that will be used in place of the standard lecture if the named
 
2607
file exists.
 
2608
By default,
 
2609
.Nm sudo
 
2610
uses a built-in lecture.
 
2611
.It listpw
 
2612
This option controls when a password will be required when a user runs
 
2613
.Nm sudo
 
2614
with the
 
2615
.Fl l
 
2616
option.
 
2617
It has the following possible values:
 
2618
.Bl -tag -width 8n
 
2619
.It all
 
2620
All the user's
 
2621
.Em sudoers
 
2622
entries for the current host must have
 
2623
the
 
2624
.Li NOPASSWD
 
2625
flag set to avoid entering a password.
 
2626
.It always
 
2627
The user must always enter a password to use the
 
2628
.Fl l
 
2629
option.
 
2630
.It any
 
2631
At least one of the user's
 
2632
.Em sudoers
 
2633
entries for the current host
 
2634
must have the
 
2635
.Li NOPASSWD
 
2636
flag set to avoid entering a password.
 
2637
.It never
 
2638
The user need never enter a password to use the
 
2639
.Fl l
 
2640
option.
 
2641
.El
 
2642
.Pp
 
2643
If no value is specified, a value of
 
2644
.Em any
 
2645
is implied.
 
2646
Negating the option results in a value of
 
2647
.Em never
 
2648
being used.
 
2649
The default value is
 
2650
.Em any .
 
2651
.It logfile
 
2652
Path to the
 
2653
.Nm sudo
 
2654
log file (not the syslog log file).
 
2655
Setting a path turns on logging to a file;
 
2656
negating this option turns it off.
 
2657
By default,
 
2658
.Nm sudo
 
2659
logs via syslog.
 
2660
.It mailerflags
 
2661
Flags to use when invoking mailer. Defaults to
 
2662
.Fl t .
 
2663
.It mailerpath
 
2664
Path to mail program used to send warning mail.
 
2665
Defaults to the path to sendmail found at configure time.
 
2666
.It mailfrom
 
2667
Address to use for the
 
2668
.Dq from
 
2669
address when sending warning and error mail.
 
2670
The address should be enclosed in double quotes
 
2671
.Pq \&""
 
2672
to protect against
 
2673
.Nm sudo
 
2674
interpreting the
 
2675
.Li @
 
2676
sign.
 
2677
Defaults to the name of the user running
 
2678
.Nm sudo .
 
2679
.It mailto
 
2680
Address to send warning and error mail to.
 
2681
The address should be enclosed in double quotes
 
2682
.Pq \&""
 
2683
to protect against
 
2684
.Nm sudo
 
2685
interpreting the
 
2686
.Li @
 
2687
sign.
 
2688
Defaults to
 
2689
.Li @mailto@ .
 
2690
.It secure_path
 
2691
Path used for every command run from
 
2692
.Nm sudo .
 
2693
If you don't trust the
 
2694
people running
 
2695
.Nm sudo
 
2696
to have a sane
 
2697
.Ev PATH
 
2698
environment variable you may want to use this.
 
2699
Another use is if you want to have the
 
2700
.Dq root path
 
2701
be separate from the
 
2702
.Dq user path .
 
2703
Users in the group specified by the
 
2704
.Em exempt_group
 
2705
option are not affected by
 
2706
.Em secure_path .
 
2707
This option is @secure_path@ by default.
 
2708
.It syslog
 
2709
Syslog facility if syslog is being used for logging (negate to
 
2710
disable syslog logging).
 
2711
Defaults to
 
2712
.Li @logfac@ .
 
2713
.Pp
 
2714
The following syslog facilities are supported:
 
2715
.Sy authpriv
 
2716
(if your
 
2717
OS supports it),
 
2718
.Sy auth ,
 
2719
.Sy daemon ,
 
2720
.Sy user ,
 
2721
.Sy local0 ,
 
2722
.Sy local1 ,
 
2723
.Sy local2 ,
 
2724
.Sy local3 ,
 
2725
.Sy local4 ,
 
2726
.Sy local5 ,
 
2727
.Sy local6 ,
 
2728
and
 
2729
.Sy local7 .
 
2730
.It verifypw
 
2731
This option controls when a password will be required when a user runs
 
2732
.Nm sudo
 
2733
with the
 
2734
.Fl v
 
2735
option.
 
2736
It has the following possible values:
 
2737
.Bl -tag -width 6n
 
2738
.It all
 
2739
All the user's
 
2740
.Em sudoers
 
2741
entries for the current host must have the
 
2742
.Li NOPASSWD
 
2743
flag set to avoid entering a password.
 
2744
.It always
 
2745
The user must always enter a password to use the
 
2746
.Fl v
 
2747
option.
 
2748
.It any
 
2749
At least one of the user's
 
2750
.Em sudoers
 
2751
entries for the current host must have the
 
2752
.Li NOPASSWD
 
2753
flag set to avoid entering a password.
 
2754
.It never
 
2755
The user need never enter a password to use the
 
2756
.Fl v
 
2757
option.
 
2758
.El
 
2759
.Pp
 
2760
If no value is specified, a value of
 
2761
.Em all
 
2762
is implied.
 
2763
Negating the option results in a value of
 
2764
.Em never
 
2765
being used.
 
2766
The default value is
 
2767
.Em all .
 
2768
.El
 
2769
.Pp
 
2770
.Sy Lists that can be used in a boolean context :
 
2771
.Bl -tag -width 16n
 
2772
.It env_check
 
2773
Environment variables to be removed from the user's environment if
 
2774
the variable's value contains
 
2775
.Ql %
 
2776
or
 
2777
.Ql /
 
2778
characters.
 
2779
This can be used to guard against printf-style format vulnerabilities
 
2780
in poorly-written programs.
 
2781
The argument may be a double-quoted, space-separated list or a
 
2782
single value without double-quotes.
 
2783
The list can be replaced, added to, deleted from, or disabled by using
 
2784
the
 
2785
.Li = ,
 
2786
.Li += ,
 
2787
.Li -= ,
 
2788
and
 
2789
.Li \&!
 
2790
operators respectively.
 
2791
Regardless of whether the
 
2792
.Li env_reset
 
2793
option is enabled or disabled, variables specified by
 
2794
.Li env_check
 
2795
will be preserved in the environment if they pass the aforementioned check.
 
2796
The default list of environment variables to check is displayed when
 
2797
.Nm sudo
 
2798
is run by root with
 
2799
the
 
2800
.Fl V
 
2801
option.
 
2802
.It env_delete
 
2803
Environment variables to be removed from the user's environment when the
 
2804
.Em env_reset
 
2805
option is not in effect.
 
2806
The argument may be a double-quoted, space-separated list or a
 
2807
single value without double-quotes.
 
2808
The list can be replaced, added to, deleted from, or disabled by using the
 
2809
.Li = ,
 
2810
.Li += ,
 
2811
.Li -= ,
 
2812
and
 
2813
.Li \&!
 
2814
operators respectively.
 
2815
The default list of environment variables to remove is displayed when
 
2816
.Nm sudo
 
2817
is run by root with the
 
2818
.Fl V
 
2819
option.
 
2820
Note that many operating systems will remove potentially dangerous
 
2821
variables from the environment of any setuid process (such as
 
2822
.Nm sudo ) .
 
2823
.It env_keep
 
2824
Environment variables to be preserved in the user's environment when the
 
2825
.Em env_reset
 
2826
option is in effect.
 
2827
This allows fine-grained control over the environment
 
2828
.Nm sudo Ns No -spawned
 
2829
processes will receive.
 
2830
The argument may be a double-quoted, space-separated list or a
 
2831
single value without double-quotes.
 
2832
The list can be replaced, added to, deleted from, or disabled by using the
 
2833
.Li = ,
 
2834
.Li += ,
 
2835
.Li -= ,
 
2836
and
 
2837
.Li \&!
 
2838
operators respectively.
 
2839
The default list of variables to keep
 
2840
is displayed when
 
2841
.Nm sudo
 
2842
is run by root with the
 
2843
.Fl V
 
2844
option.
 
2845
.El
 
2846
.Sh LOG FORMAT
 
2847
.Nm sudoers
 
2848
can log events using either
 
2849
.Xr syslog 3
 
2850
or a simple log file.
 
2851
In each case the log format is almost identical.
 
2852
.Ss Accepted command log entries
 
2853
Commands that sudo runs are logged using the following format (split
 
2854
into multiple lines for readability):
 
2855
.Bd -literal -offset 4n
 
2856
date hostname progname: username : TTY=ttyname ; PWD=cwd ; \e
 
2857
    USER=runasuser ; GROUP=runasgroup ; TSID=logid ; \e
 
2858
    ENV=env_vars COMMAND=command
 
2859
.Ed
 
2860
.Pp
 
2861
Where the fields are as follows:
 
2862
.Bl -tag -width 12n
 
2863
.It date
 
2864
The date the command was run.
 
2865
Typically, this is in the format
 
2866
.Dq MMM, DD, HH:MM:SS .
 
2867
If logging via
 
2868
.Xr syslog 3 ,
 
2869
the actual date format is controlled by the syslog daemon.
 
2870
If logging to a file and the
 
2871
.Em log_year
 
2872
option is enabled,
 
2873
the date will also include the year.
 
2874
.It hostname
 
2875
The name of the host
 
2876
.Nm sudo
 
2877
was run on.
 
2878
This field is only present when logging via
 
2879
.Xr syslog 3 .
 
2880
.It progname
 
2881
The name of the program, usually
 
2882
.Em sudo
 
2883
or
 
2884
.Em sudoedit .
 
2885
This field is only present when logging via
 
2886
.Xr syslog 3 .
 
2887
.It username
 
2888
The login name of the user who ran
 
2889
.Nm sudo .
 
2890
.It ttyname
 
2891
The short name of the terminal (e.g.\&
 
2892
.Dq console ,
 
2893
.Dq tty01 ,
 
2894
or
 
2895
.Dq pts/0 )
 
2896
.Nm sudo
 
2897
was run on, or
 
2898
.Dq unknown
 
2899
if there was no terminal present.
 
2900
.It cwd
 
2901
The current working directory that
 
2902
.Nm sudo
 
2903
was run in.
 
2904
.It runasuser
 
2905
The user the command was run as.
 
2906
.It runasgroup
 
2907
The group the command was run as if one was specified on the command line.
 
2908
.It logid
 
2909
An I/O log identifier that can be used to replay the command's output.
 
2910
This is only present when the
 
2911
.Em log_input
 
2912
or
 
2913
.Em log_output
 
2914
option is enabled.
 
2915
.It env_vars
 
2916
A list of environment variables specified on the command line,
 
2917
if specified.
 
2918
.It command
 
2919
The actual command that was executed.
 
2920
.El
 
2921
.Pp
 
2922
Messages are logged using the locale specified by
 
2923
.Em sudoers_locale ,
 
2924
which defaults to the
 
2925
.Dq Li C
 
2926
locale.
 
2927
.Ss Denied command log entries
 
2928
If the user is not allowed to run the command, the reason for the denial
 
2929
will follow the user name.
 
2930
Possible reasons include:
 
2931
.Bl -tag -width 4
 
2932
.It user NOT in sudoers
 
2933
The user is not listed in the
 
2934
.Em sudoers
 
2935
file.
 
2936
.It user NOT authorized on host
 
2937
The user is listed in the
 
2938
.Em sudoers
 
2939
file but is not allowed to run commands on the host.
 
2940
.It command not allowed
 
2941
The user is listed in the
 
2942
.Em sudoers
 
2943
file for the host but they are not allowed to run the specified command.
 
2944
.It 3 incorrect password attempts
 
2945
The user failed to enter their password after 3 tries.
 
2946
The actual number of tries will vary based on the number of
 
2947
failed attempts and the value of the
 
2948
.Em passwd_tries
 
2949
option.
 
2950
.It a password is required
 
2951
.Nm sudo Ns No 's
 
2952
.Fl n
 
2953
option was specified but a password was required.
 
2954
.It sorry, you are not allowed to set the following environment variables
 
2955
The user specified environment variables on the command line that
 
2956
were not allowed by
 
2957
.Em sudoers .
 
2958
.El
 
2959
.Ss Error log entries
 
2960
If an error occurs,
 
2961
.Nm sudoers
 
2962
will log a message and, in most cases, send a message to the
 
2963
administrator via email.
 
2964
Possible errors include:
 
2965
.Bl -tag -width 4
 
2966
.It parse error in @sysconfdir@/sudoers near line N
 
2967
.Nm sudoers
 
2968
encountered an error when parsing the specified file.
 
2969
In some cases, the actual error may be one line above or below the
 
2970
line number listed, depending on the type of error.
 
2971
.It problem with defaults entries
 
2972
The
 
2973
.Em sudoers
 
2974
file contains one or more unknown Defaults settings.
 
2975
This does not prevent
 
2976
.Nm sudo
 
2977
from running, but the
 
2978
.Em sudoers
 
2979
file should be checked using
 
2980
.Nm visudo .
 
2981
.It timestamp owner (username): \&No such user
 
2982
The time stamp directory owner, as specified by the
 
2983
.Em timestampowner
 
2984
setting, could not be found in the password database.
 
2985
.It unable to open/read @sysconfdir@/sudoers
 
2986
The
 
2987
.Em sudoers
 
2988
file could not be opened for reading.
 
2989
This can happen when the
 
2990
.Em sudoers
 
2991
file is located on a remote file system that maps user ID 0 to
 
2992
a different value.
 
2993
Normally,
 
2994
.Nm sudoers
 
2995
tries to open
 
2996
.Em sudoers
 
2997
using group permissions to avoid this problem.
 
2998
Consider changing the ownership of
 
2999
.Pa @sysconfdir@/sudoers
 
3000
by adding an option like
 
3001
.Dq sudoers_uid=N
 
3002
(where
 
3003
.Sq N
 
3004
is the user ID that owns the
 
3005
.Em sudoers
 
3006
file) to the
 
3007
.Nm sudoers
 
3008
plugin line in the
 
3009
.Pa @sysconfdir@/sudo.conf
 
3010
file.
 
3011
.It unable to stat @sysconfdir@/sudoers
 
3012
The
 
3013
.Pa @sysconfdir@/sudoers
 
3014
file is missing.
 
3015
.It @sysconfdir@/sudoers is not a regular file
 
3016
The
 
3017
.Pa @sysconfdir@/sudoers
 
3018
file exists but is not a regular file or symbolic link.
 
3019
.It @sysconfdir@/sudoers is owned by uid N, should be 0
 
3020
The
 
3021
.Em sudoers
 
3022
file has the wrong owner.
 
3023
If you wish to change the
 
3024
.Em sudoers
 
3025
file owner, please add
 
3026
.Dq sudoers_uid=N
 
3027
(where
 
3028
.Sq N
 
3029
is the user ID that owns the
 
3030
.Em sudoers
 
3031
file) to the
 
3032
.Nm sudoers
 
3033
plugin line in the
 
3034
.Pa @sysconfdir@/sudo.conf
 
3035
file.
 
3036
.It @sysconfdir@/sudoers is world writable
 
3037
The permissions on the
 
3038
.Em sudoers
 
3039
file allow all users to write to it.
 
3040
The
 
3041
.Em sudoers
 
3042
file must not be world-writable, the default file mode
 
3043
is 0440 (readable by owner and group, writable by none).
 
3044
The default mode may be changed via the
 
3045
.Dq sudoers_mode
 
3046
option to the
 
3047
.Nm sudoers
 
3048
plugin line in the
 
3049
.Pa @sysconfdir@/sudo.conf
 
3050
file.
 
3051
.It @sysconfdir@/sudoers is owned by gid N, should be 1
 
3052
The
 
3053
.Em sudoers
 
3054
file has the wrong group ownership.
 
3055
If you wish to change the
 
3056
.Em sudoers
 
3057
file group ownership, please add
 
3058
.Dq sudoers_gid=N
 
3059
(where
 
3060
.Sq N
 
3061
is the group ID that owns the
 
3062
.Em sudoers
 
3063
file) to the
 
3064
.Nm sudoers
 
3065
plugin line in the
 
3066
.Pa @sysconfdir@/sudo.conf
 
3067
file.
 
3068
.It unable to open @timedir@/username/ttyname
 
3069
.Em sudoers
 
3070
was unable to read or create the user's time stamp file.
 
3071
.It unable to write to @timedir@/username/ttyname
 
3072
.Em sudoers
 
3073
was unable to write to the user's time stamp file.
 
3074
.It unable to mkdir to @timedir@/username
 
3075
.Em sudoers
 
3076
was unable to create the user's time stamp directory.
 
3077
.El
 
3078
.Ss Notes on logging via syslog
 
3079
By default,
 
3080
.Em sudoers
 
3081
logs messages via
 
3082
.Xr syslog 3 .
 
3083
The
 
3084
.Em date ,
 
3085
.Em hostname ,
 
3086
and
 
3087
.Em progname
 
3088
fields are added by the syslog daemon, not
 
3089
.Em sudoers
 
3090
itself.
 
3091
As such, they may vary in format on different systems.
 
3092
.Pp
 
3093
On most systems,
 
3094
.Xr syslog 3
 
3095
has a relatively small log buffer.
 
3096
To prevent the command line arguments from being truncated,
 
3097
.Nm sudoers
 
3098
will split up log messages that are larger than 960 characters
 
3099
(not including the date, hostname, and the string
 
3100
.Dq sudo ) .
 
3101
When a message is split, additional parts will include the string
 
3102
.Dq Pq command continued
 
3103
after the user name and before the continued command line arguments.
 
3104
.Ss Notes on logging to a file
 
3105
If the
 
3106
.Em logfile
 
3107
option is set,
 
3108
.Em sudoers
 
3109
will log to a local file, such as
 
3110
.Pa /var/log/sudo .
 
3111
When logging to a file,
 
3112
.Em sudoers
 
3113
uses a format similar to
 
3114
.Xr syslog 3 ,
 
3115
with a few important differences:
 
3116
.Bl -enum
 
3117
.It
 
3118
The
 
3119
.Em progname
 
3120
and
 
3121
.Em hostname
 
3122
fields are not present.
 
3123
.It
 
3124
If the
 
3125
.Em log_year
 
3126
option is enabled,
 
3127
the date will also include the year.
 
3128
.It
 
3129
Lines that are longer than
 
3130
.Em loglinelen
 
3131
characters (80 by default) are word-wrapped and continued on the
 
3132
next line with a four character indent.
 
3133
This makes entries easier to read for a human being, but makes it
 
3134
more difficult to use
 
3135
.Xr grep 1
 
3136
on the log files.
 
3137
If the
 
3138
.Em loglinelen
 
3139
option is set to 0 (or negated with a
 
3140
.Ql \&! ) ,
 
3141
word wrap will be disabled.
 
3142
.El
 
3143
.Sh SUDO.CONF
 
3144
The
 
3145
.Pa @sysconfdir@/sudo.conf
 
3146
file determines which plugins the
 
3147
.Nm sudo
 
3148
front end will load.
 
3149
If no
 
3150
.Pa @sysconfdir@/sudo.conf
 
3151
file
 
3152
is present, or it contains no
 
3153
.Li Plugin
 
3154
lines,
 
3155
.Nm sudo
 
3156
will use the
 
3157
.Em sudoers
 
3158
security policy and I/O logging, which corresponds to the following
 
3159
.Pa @sysconfdir@/sudo.conf
 
3160
file.
 
3161
.Bd -literal
 
3162
#
 
3163
# Default @sysconfdir@/sudo.conf file
 
3164
#
 
3165
# Format:
 
3166
#   Plugin plugin_name plugin_path plugin_options ...
 
3167
#   Path askpass /path/to/askpass
 
3168
#   Path noexec /path/to/sudo_noexec.so
 
3169
#   Debug sudo /var/log/sudo_debug all@warn
 
3170
#   Set disable_coredump true
 
3171
#
 
3172
# The plugin_path is relative to @prefix@/libexec unless
 
3173
#   fully qualified.
 
3174
# The plugin_name corresponds to a global symbol in the plugin
 
3175
#   that contains the plugin interface structure.
 
3176
# The plugin_options are optional.
 
3177
#
 
3178
Plugin policy_plugin sudoers.so
 
3179
Plugin io_plugin sudoers.so
 
3180
.Ed
 
3181
.Ss Plugin options
 
3182
Starting with
 
3183
.Nm sudo
 
3184
1.8.5, it is possible to pass options to the
 
3185
.Em sudoers
 
3186
plugin.
 
3187
Options may be listed after the path to the plugin (i.e.\& after
 
3188
.Pa sudoers.so ) ;
 
3189
multiple options should be space-separated.
 
3190
For example:
 
3191
.Bd -literal
 
3192
Plugin sudoers_policy sudoers.so sudoers_file=/etc/sudoers sudoers_uid=0 sudoers_gid=0 sudoers_mode=0440
 
3193
.Ed
 
3194
.Pp
 
3195
The following plugin options are supported:
 
3196
.Bl -tag -width 8n
 
3197
.It sudoers_file=pathname
 
3198
The
 
3199
.Em sudoers_file
 
3200
option can be used to override the default path
 
3201
to the
 
3202
.Em sudoers
 
3203
file.
 
3204
.It sudoers_uid=uid
 
3205
The
 
3206
.Em sudoers_uid
 
3207
option can be used to override the default owner of the sudoers file.
 
3208
It should be specified as a numeric user ID.
 
3209
.It sudoers_gid=gid
 
3210
The
 
3211
.Em sudoers_gid
 
3212
option can be used to override the default group of the sudoers file.
 
3213
It should be specified as a numeric group ID.
 
3214
.It sudoers_mode=mode
 
3215
The
 
3216
.Em sudoers_mode
 
3217
option can be used to override the default file mode for the sudoers file.
 
3218
It should be specified as an octal value.
 
3219
.El
 
3220
.Ss Debug flags
 
3221
Versions 1.8.4 and higher of the
 
3222
.Em sudoers
 
3223
plugin supports a debugging framework that can help track down what the
 
3224
plugin is doing internally if there is a problem.
 
3225
This can be configured in the
 
3226
.Pa @sysconfdir@/sudo.conf
 
3227
file as described in
 
3228
.Xr sudo @mansectsu@ .
 
3229
.Pp
 
3230
The
 
3231
.Em sudoers
 
3232
plugin uses the same debug flag format as the
 
3233
.Nm sudo
 
3234
front-end:
 
3235
.Em subsystem Ns No @ Ns Em priority .
 
3236
.Pp
 
3237
The priorities used by
 
3238
.Em sudoers ,
 
3239
in order of decreasing severity,
 
3240
are:
 
3241
.Em crit ,
 
3242
.Em err ,
 
3243
.Em warn ,
 
3244
.Em notice ,
 
3245
.Em diag ,
 
3246
.Em info ,
 
3247
.Em trace
 
3248
and
 
3249
.Em debug .
 
3250
Each priority, when specified, also includes all priorities higher than it.
 
3251
For example, a priority of
 
3252
.Em notice
 
3253
would include debug messages logged at
 
3254
.Em notice
 
3255
and higher.
 
3256
.Pp
 
3257
The following subsystems are used by
 
3258
.Em sudoers :
 
3259
.Bl -tag -width 8n
 
3260
.It Em alias
 
3261
.Li User_Alias ,
 
3262
.Li Runas_Alias ,
 
3263
.Li Host_Alias
 
3264
and
 
3265
.Li Cmnd_Alias
 
3266
processing
 
3267
.It Em all
 
3268
matches every subsystem
 
3269
.It Em audit
 
3270
BSM and Linux audit code
 
3271
.It Em auth
 
3272
user authentication
 
3273
.It Em defaults
 
3274
.Em sudoers
 
3275
.Em Defaults
 
3276
settings
 
3277
.It Em env
 
3278
environment handling
 
3279
.It Em ldap
 
3280
LDAP-based sudoers
 
3281
.It Em logging
 
3282
logging support
 
3283
.It Em match
 
3284
matching of users, groups, hosts and netgroups in
 
3285
.Em sudoers
 
3286
.It Em netif
 
3287
network interface handling
 
3288
.It Em nss
 
3289
network service switch handling in
 
3290
.Em sudoers
 
3291
.It Em parser
 
3292
.Em sudoers
 
3293
file parsing
 
3294
.It Em perms
 
3295
permission setting
 
3296
.It Em plugin
 
3297
The equivalent of
 
3298
.Em main
 
3299
for the plugin.
 
3300
.It Em pty
 
3301
pseudo-tty related code
 
3302
.It Em rbtree
 
3303
redblack tree internals
 
3304
.It Em util
 
3305
utility functions
 
3306
.El
 
3307
.Sh FILES
 
3308
.Bl -tag -width 24n
 
3309
.It Pa @sysconfdir@/sudo.conf
 
3310
Sudo front end configuration
 
3311
.It Pa @sysconfdir@/sudoers
 
3312
List of who can run what
 
3313
.It Pa /etc/group
 
3314
Local groups file
 
3315
.It Pa /etc/netgroup
 
3316
List of network groups
 
3317
.It Pa @iolog_dir@
 
3318
I/O log files
 
3319
.It Pa @timedir@
 
3320
Directory containing time stamps for the
 
3321
.Em sudoers
 
3322
security policy
 
3323
.It Pa /etc/environment
 
3324
Initial environment for
 
3325
.Fl i
 
3326
mode on AIX and Linux systems
 
3327
.El
 
3328
.Sh EXAMPLES
 
3329
Below are example
 
3330
.Em sudoers
 
3331
entries.
 
3332
Admittedly, some of these are a bit contrived.
 
3333
First, we allow a few environment variables to pass and then define our
 
3334
.Em aliases :
 
3335
.Bd -literal
 
3336
# Run X applications through sudo; HOME is used to find the
 
3337
# .Xauthority file.  Note that other programs use HOME to find
 
3338
# configuration files and this may lead to privilege escalation!
 
3339
Defaults env_keep += "DISPLAY HOME"
 
3340
 
 
3341
# User alias specification
 
3342
User_Alias      FULLTIMERS = millert, mikef, dowdy
 
3343
User_Alias      PARTTIMERS = bostley, jwfox, crawl
 
3344
User_Alias      WEBMASTERS = will, wendy, wim
 
3345
 
 
3346
# Runas alias specification
 
3347
Runas_Alias     OP = root, operator
 
3348
Runas_Alias     DB = oracle, sybase
 
3349
Runas_Alias     ADMINGRP = adm, oper
 
3350
 
 
3351
# Host alias specification
 
3352
Host_Alias      SPARC = bigtime, eclipse, moet, anchor :\e
 
3353
                SGI = grolsch, dandelion, black :\e
 
3354
                ALPHA = widget, thalamus, foobar :\e
 
3355
                HPPA = boa, nag, python
 
3356
Host_Alias      CUNETS = 128.138.0.0/255.255.0.0
 
3357
Host_Alias      CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
 
3358
Host_Alias      SERVERS = master, mail, www, ns
 
3359
Host_Alias      CDROM = orion, perseus, hercules
 
3360
 
 
3361
# Cmnd alias specification
 
3362
Cmnd_Alias      DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\e
 
3363
                        /usr/sbin/restore, /usr/sbin/rrestore
 
3364
Cmnd_Alias      KILL = /usr/bin/kill
 
3365
Cmnd_Alias      PRINTING = /usr/sbin/lpc, /usr/bin/lprm
 
3366
Cmnd_Alias      SHUTDOWN = /usr/sbin/shutdown
 
3367
Cmnd_Alias      HALT = /usr/sbin/halt
 
3368
Cmnd_Alias      REBOOT = /usr/sbin/reboot
 
3369
Cmnd_Alias      SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh,\e
 
3370
                         /usr/local/bin/tcsh, /usr/bin/rsh,\e
 
3371
                         /usr/local/bin/zsh
 
3372
Cmnd_Alias      SU = /usr/bin/su
 
3373
Cmnd_Alias      PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less
 
3374
.Ed
 
3375
.Pp
 
3376
Here we override some of the compiled in default values.
 
3377
We want
 
3378
.Nm sudo
 
3379
to log via
 
3380
.Xr syslog 3
 
3381
using the
 
3382
.Em auth
 
3383
facility in all cases.
 
3384
We don't want to subject the full time staff to the
 
3385
.Nm sudo
 
3386
lecture, user
 
3387
.Sy millert
 
3388
need not give a password, and we don't want to reset the
 
3389
.Ev LOGNAME ,
 
3390
.Ev USER
 
3391
or
 
3392
.Ev USERNAME
 
3393
environment variables when running commands as root.
 
3394
Additionally, on the machines in the
 
3395
.Em SERVERS
 
3396
.Li Host_Alias ,
 
3397
we keep an additional local log file and make sure we log the year
 
3398
in each log line since the log entries will be kept around for several years.
 
3399
Lastly, we disable shell escapes for the commands in the PAGERS
 
3400
.Li Cmnd_Alias
 
3401
.Po
 
3402
.Pa /usr/bin/more ,
 
3403
.Pa /usr/bin/pg
 
3404
and
 
3405
.Pa /usr/bin/less
 
3406
.Pc .
 
3407
.Bd -literal
 
3408
# Override built-in defaults
 
3409
Defaults                syslog=auth
 
3410
Defaults>root           !set_logname
 
3411
Defaults:FULLTIMERS     !lecture
 
3412
Defaults:millert        !authenticate
 
3413
Defaults@SERVERS        log_year, logfile=/var/log/sudo.log
 
3414
Defaults!PAGERS         noexec
 
3415
.Ed
 
3416
.Pp
 
3417
The
 
3418
.Em User specification
 
3419
is the part that actually determines who may run what.
 
3420
.Bd -literal
 
3421
root            ALL = (ALL) ALL
 
3422
%wheel          ALL = (ALL) ALL
 
3423
.Ed
 
3424
.Pp
 
3425
We let
 
3426
.Sy root
 
3427
and any user in group
 
3428
.Sy wheel
 
3429
run any command on any host as any user.
 
3430
.Bd -literal
 
3431
FULLTIMERS      ALL = NOPASSWD: ALL
 
3432
.Ed
 
3433
.Pp
 
3434
Full time sysadmins
 
3435
.Po
 
3436
.Sy millert ,
 
3437
.Sy mikef ,
 
3438
and
 
3439
.Sy dowdy
 
3440
.Pc
 
3441
may run any command on any host without authenticating themselves.
 
3442
.Bd -literal
 
3443
PARTTIMERS      ALL = ALL
 
3444
.Ed
 
3445
.Pp
 
3446
Part time sysadmins
 
3447
.Sy bostley ,
 
3448
.Sy jwfox ,
 
3449
and
 
3450
.Sy crawl )
 
3451
may run any command on any host but they must authenticate themselves
 
3452
first (since the entry lacks the
 
3453
.Li NOPASSWD
 
3454
tag).
 
3455
.Bd -literal
 
3456
jack            CSNETS = ALL
 
3457
.Ed
 
3458
.Pp
 
3459
The user
 
3460
.Sy jack
 
3461
may run any command on the machines in the
 
3462
.Em CSNETS
 
3463
alias (the networks
 
3464
.Li 128.138.243.0 ,
 
3465
.Li 128.138.204.0 ,
 
3466
and
 
3467
.Li 128.138.242.0 ) .
 
3468
Of those networks, only
 
3469
.Li 128.138.204.0
 
3470
has an explicit netmask (in CIDR notation) indicating it is a class C network.
 
3471
For the other networks in
 
3472
.Em CSNETS ,
 
3473
the local machine's netmask will be used during matching.
 
3474
.Bd -literal
 
3475
lisa            CUNETS = ALL
 
3476
.Ed
 
3477
.Pp
 
3478
The user
 
3479
.Sy lisa
 
3480
may run any command on any host in the
 
3481
.Em CUNETS
 
3482
alias (the class B network
 
3483
.Li 128.138.0.0 ) .
 
3484
.Bd -literal
 
3485
operator        ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\e
 
3486
                sudoedit /etc/printcap, /usr/oper/bin/
 
3487
.Ed
 
3488
.Pp
 
3489
The
 
3490
.Sy operator
 
3491
user may run commands limited to simple maintenance.
 
3492
Here, those are commands related to backups, killing processes, the
 
3493
printing system, shutting down the system, and any commands in the
 
3494
directory
 
3495
.Pa /usr/oper/bin/ .
 
3496
.Bd -literal
 
3497
joe             ALL = /usr/bin/su operator
 
3498
.Ed
 
3499
.Pp
 
3500
The user
 
3501
.Sy joe
 
3502
may only
 
3503
.Xr su 1
 
3504
to operator.
 
3505
.Bd -literal
 
3506
pete            HPPA = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
 
3507
 
 
3508
%opers          ALL = (: ADMINGRP) /usr/sbin/
 
3509
.Ed
 
3510
.Pp
 
3511
Users in the
 
3512
.Sy opers
 
3513
group may run commands in
 
3514
.Pa /usr/sbin/
 
3515
as themselves
 
3516
with any group in the
 
3517
.Em ADMINGRP
 
3518
.Li Runas_Alias
 
3519
(the
 
3520
.Sy adm
 
3521
and
 
3522
.Sy oper
 
3523
groups).
 
3524
.Pp
 
3525
The user
 
3526
.Sy pete
 
3527
is allowed to change anyone's password except for
 
3528
root on the
 
3529
.Em HPPA
 
3530
machines.
 
3531
Note that this assumes
 
3532
.Xr passwd 1
 
3533
does not take multiple user names on the command line.
 
3534
.Bd -literal
 
3535
bob             SPARC = (OP) ALL : SGI = (OP) ALL
 
3536
.Ed
 
3537
.Pp
 
3538
The user
 
3539
.Sy bob
 
3540
may run anything on the
 
3541
.Em SPARC
 
3542
and
 
3543
.Em SGI
 
3544
machines as any user listed in the
 
3545
.Em OP
 
3546
.Li Runas_Alias
 
3547
.Po
 
3548
.Sy root
 
3549
and
 
3550
.Sy operator .
 
3551
.Pc
 
3552
.Bd -literal
 
3553
jim             +biglab = ALL
 
3554
.Ed
 
3555
.Pp
 
3556
The user
 
3557
.Sy jim
 
3558
may run any command on machines in the
 
3559
.Em biglab
 
3560
netgroup.
 
3561
.Nm sudo
 
3562
knows that
 
3563
.Dq biglab
 
3564
is a netgroup due to the
 
3565
.Ql +
 
3566
prefix.
 
3567
.Bd -literal
 
3568
+secretaries    ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
 
3569
.Ed
 
3570
.Pp
 
3571
Users in the
 
3572
.Sy secretaries
 
3573
netgroup need to help manage the printers as well as add and remove users,
 
3574
so they are allowed to run those commands on all machines.
 
3575
.Bd -literal
 
3576
fred            ALL = (DB) NOPASSWD: ALL
 
3577
.Ed
 
3578
.Pp
 
3579
The user
 
3580
.Sy fred
 
3581
can run commands as any user in the
 
3582
.Em DB
 
3583
.Li Runas_Alias
 
3584
.Po
 
3585
.Sy oracle
 
3586
or
 
3587
.Sy sybase
 
3588
.Pc
 
3589
without giving a password.
 
3590
.Bd -literal
 
3591
john            ALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*
 
3592
.Ed
 
3593
.Pp
 
3594
On the
 
3595
.Em ALPHA
 
3596
machines, user
 
3597
.Sy john
 
3598
may su to anyone except root but he is not allowed to specify any options
 
3599
to the
 
3600
.Xr su 1
 
3601
command.
 
3602
.Bd -literal
 
3603
jen             ALL, !SERVERS = ALL
 
3604
.Ed
 
3605
.Pp
 
3606
The user
 
3607
.Sy jen
 
3608
may run any command on any machine except for those in the
 
3609
.Em SERVERS
 
3610
.Li Host_Alias
 
3611
(master, mail, www and ns).
 
3612
.Bd -literal
 
3613
jill            SERVERS = /usr/bin/, !SU, !SHELLS
 
3614
.Ed
 
3615
.Pp
 
3616
For any machine in the
 
3617
.Em SERVERS
 
3618
.Li Host_Alias ,
 
3619
.Sy jill
 
3620
may run
 
3621
any commands in the directory
 
3622
.Pa /usr/bin/
 
3623
except for those commands
 
3624
belonging to the
 
3625
.Em SU
 
3626
and
 
3627
.Em SHELLS
 
3628
.Li Cmnd_Aliases .
 
3629
.Bd -literal
 
3630
steve           CSNETS = (operator) /usr/local/op_commands/
 
3631
.Ed
 
3632
.Pp
 
3633
The user
 
3634
.Sy steve
 
3635
may run any command in the directory /usr/local/op_commands/
 
3636
but only as user operator.
 
3637
.Bd -literal
 
3638
matt            valkyrie = KILL
 
3639
.Ed
 
3640
.Pp
 
3641
On his personal workstation, valkyrie,
 
3642
.Sy matt
 
3643
needs to be able to kill hung processes.
 
3644
.Bd -literal
 
3645
WEBMASTERS      www = (www) ALL, (root) /usr/bin/su www
 
3646
.Ed
 
3647
.Pp
 
3648
On the host www, any user in the
 
3649
.Em WEBMASTERS
 
3650
.Li User_Alias
 
3651
(will, wendy, and wim), may run any command as user www (which owns the
 
3652
web pages) or simply
 
3653
.Xr su 1
 
3654
to www.
 
3655
.Bd -literal
 
3656
ALL             CDROM = NOPASSWD: /sbin/umount /CDROM,\e
 
3657
                /sbin/mount -o nosuid\,nodev /dev/cd0a /CDROM
 
3658
.Ed
 
3659
.Pp
 
3660
Any user may mount or unmount a CD-ROM on the machines in the CDROM
 
3661
.Li Host_Alias
 
3662
(orion, perseus, hercules) without entering a password.
 
3663
This is a bit tedious for users to type, so it is a prime candidate
 
3664
for encapsulating in a shell script.
 
3665
.Sh SECURITY NOTES
 
3666
.Ss Limitations of the So !\& Sc operator
 
3667
It is generally not effective to
 
3668
.Dq subtract
 
3669
commands from
 
3670
.Sy ALL
 
3671
using the
 
3672
.Ql !\&
 
3673
operator.
 
3674
A user can trivially circumvent this by copying the desired command
 
3675
to a different name and then executing that.
 
3676
For example:
 
3677
.Bd -literal
 
3678
bill    ALL = ALL, !SU, !SHELLS
 
3679
.Ed
 
3680
.Pp
 
3681
Doesn't really prevent
 
3682
.Sy bill
 
3683
from running the commands listed in
 
3684
.Em SU
 
3685
or
 
3686
.Em SHELLS
 
3687
since he can simply copy those commands to a different name, or use
 
3688
a shell escape from an editor or other program.
 
3689
Therefore, these kind of restrictions should be considered
 
3690
advisory at best (and reinforced by policy).
 
3691
.Pp
 
3692
In general, if a user has sudo
 
3693
.Sy ALL
 
3694
there is nothing to prevent them from creating their own program that gives
 
3695
them a root shell (or making their own copy of a shell) regardless of any
 
3696
.Ql !\&
 
3697
elements in the user specification.
 
3698
.Ss Security implications of Em fast_glob
 
3699
If the
 
3700
.Em fast_glob
 
3701
option is in use, it is not possible to reliably negate commands where the
 
3702
path name includes globbing (aka wildcard) characters.
 
3703
This is because the C library's
 
3704
.Xr fnmatch 3
 
3705
function cannot resolve relative paths.
 
3706
While this is typically only an inconvenience for rules that grant privileges,
 
3707
it can result in a security issue for rules that subtract or revoke privileges.
 
3708
.Pp
 
3709
For example, given the following
 
3710
.Em sudoers
 
3711
entry:
 
3712
.Bd -literal
 
3713
john    ALL = /usr/bin/passwd [a-zA-Z0-9]*, /usr/bin/chsh [a-zA-Z0-9]*,\e
 
3714
              /usr/bin/chfn [a-zA-Z0-9]*, !/usr/bin/* root
 
3715
.Ed
 
3716
.Pp
 
3717
User
 
3718
.Sy john
 
3719
can still run
 
3720
.Li /usr/bin/passwd root
 
3721
if
 
3722
.Em fast_glob
 
3723
is enabled by changing to
 
3724
.Pa /usr/bin
 
3725
and running
 
3726
.Li ./passwd root
 
3727
instead.
 
3728
.Ss Preventing shell escapes
 
3729
Once
 
3730
.Nm sudo
 
3731
executes a program, that program is free to do whatever
 
3732
it pleases, including run other programs.
 
3733
This can be a security issue since it is not uncommon for a program to
 
3734
allow shell escapes, which lets a user bypass
 
3735
.Nm sudo Ns No 's
 
3736
access control and logging.
 
3737
Common programs that permit shell escapes include shells (obviously),
 
3738
editors, paginators, mail and terminal programs.
 
3739
.Pp
 
3740
There are two basic approaches to this problem:
 
3741
.Bl -tag -width 8n
 
3742
.It restrict
 
3743
Avoid giving users access to commands that allow the user to run
 
3744
arbitrary commands.
 
3745
Many editors have a restricted mode where shell
 
3746
escapes are disabled, though
 
3747
.Nm sudoedit
 
3748
is a better solution to
 
3749
running editors via
 
3750
.Nm sudo .
 
3751
Due to the large number of programs that
 
3752
offer shell escapes, restricting users to the set of programs that
 
3753
do not is often unworkable.
 
3754
.It noexec
 
3755
Many systems that support shared libraries have the ability to
 
3756
override default library functions by pointing an environment
 
3757
variable (usually
 
3758
.Ev LD_PRELOAD )
 
3759
to an alternate shared library.
 
3760
On such systems,
 
3761
.Nm sudo Ns No 's
 
3762
.Em noexec
 
3763
functionality can be used to prevent a program run by
 
3764
.Nm sudo
 
3765
from executing any other programs.
 
3766
Note, however, that this applies only to native dynamically-linked
 
3767
executables.
 
3768
Statically-linked executables and foreign executables
 
3769
running under binary emulation are not affected.
 
3770
.Pp
 
3771
The
 
3772
.Em noexec
 
3773
feature is known to work on SunOS, Solaris, *BSD,
 
3774
Linux, IRIX, Tru64 UNIX, MacOS X, HP-UX 11.x and AIX 5.3 and above.
 
3775
It should be supported on most operating systems that support the
 
3776
.Ev LD_PRELOAD
 
3777
environment variable.
 
3778
Check your operating system's manual pages for the dynamic linker
 
3779
(usually ld.so, ld.so.1, dyld, dld.sl, rld, or loader) to see if
 
3780
.Ev LD_PRELOAD
 
3781
is supported.
 
3782
.Pp
 
3783
On Solaris 10 and higher,
 
3784
.Em noexec
 
3785
uses Solaris privileges instead of the
 
3786
.Ev LD_PRELOAD
 
3787
environment variable.
 
3788
.Pp
 
3789
To enable
 
3790
.Em noexec
 
3791
for a command, use the
 
3792
.Li NOEXEC
 
3793
tag as documented
 
3794
in the User Specification section above.
 
3795
Here is that example again:
 
3796
.Bd -literal
 
3797
aaron   shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
 
3798
.Ed
 
3799
.Pp
 
3800
This allows user
 
3801
.Sy aaron
 
3802
to run
 
3803
.Pa /usr/bin/more
 
3804
and
 
3805
.Pa /usr/bin/vi
 
3806
with
 
3807
.Em noexec
 
3808
enabled.
 
3809
This will prevent those two commands from
 
3810
executing other commands (such as a shell).
 
3811
If you are unsure whether or not your system is capable of supporting
 
3812
.Em noexec
 
3813
you can always just try it out and check whether shell escapes work when
 
3814
.Em noexec
 
3815
is enabled.
 
3816
.El
 
3817
.Pp
 
3818
Note that restricting shell escapes is not a panacea.
 
3819
Programs running as root are still capable of many potentially hazardous
 
3820
operations (such as changing or overwriting files) that could lead
 
3821
to unintended privilege escalation.
 
3822
In the specific case of an editor, a safer approach is to give the
 
3823
user permission to run
 
3824
.Nm sudoedit .
 
3825
.Ss Time stamp file checks
 
3826
.Em sudoers
 
3827
will check the ownership of its time stamp directory
 
3828
.Po
 
3829
.Pa @timedir@
 
3830
by default
 
3831
.Pc
 
3832
and ignore the directory's contents if it is not owned by root or
 
3833
if it is writable by a user other than root.
 
3834
On systems that allow non-root users to give away files via
 
3835
.Xr chown 2 ,
 
3836
if the time stamp directory is located in a world-writable
 
3837
directory (e.g.\&,
 
3838
.Pa /tmp ) ,
 
3839
it is possible for a user to create the time stamp directory before
 
3840
.Nm sudo
 
3841
is run.
 
3842
However, because
 
3843
.Em sudoers
 
3844
checks the ownership and mode of the directory and its
 
3845
contents, the only damage that can be done is to
 
3846
.Dq hide
 
3847
files by putting them in the time stamp dir.
 
3848
This is unlikely to happen since once the time stamp dir is owned by root
 
3849
and inaccessible by any other user, the user placing files there would be
 
3850
unable to get them back out.
 
3851
.Pp
 
3852
.Em sudoers
 
3853
will not honor time stamps set far in the future.
 
3854
Time stamps with a date greater than current_time + 2 *
 
3855
.Li TIMEOUT
 
3856
will be ignored and sudo will log and complain.
 
3857
This is done to keep a user from creating his/her own time stamp with a
 
3858
bogus date on systems that allow users to give away files if the time
 
3859
stamp directory is located in a world-writable directory.
 
3860
.Pp
 
3861
On systems where the boot time is available,
 
3862
.Em sudoers
 
3863
will ignore time stamps that date from before the machine booted.
 
3864
.Pp
 
3865
Since time stamp files live in the file system, they can outlive a
 
3866
user's login session.
 
3867
As a result, a user may be able to login, run a command with
 
3868
.Nm sudo
 
3869
after authenticating, logout, login again, and run
 
3870
.Nm sudo
 
3871
without authenticating so long as the time stamp file's modification
 
3872
time is within
 
3873
.Li @timeout@
 
3874
minutes (or whatever the timeout is set to in
 
3875
.Em sudoers ) .
 
3876
When the
 
3877
.Em tty_tickets
 
3878
option is enabled, the time stamp has per-tty granularity but still
 
3879
may outlive the user's session.
 
3880
On Linux systems where the devpts filesystem is used, Solaris systems
 
3881
with the devices filesystem, as well as other systems that utilize a
 
3882
devfs filesystem that monotonically increase the inode number of devices
 
3883
as they are created (such as Mac OS X),
 
3884
.Em sudoers
 
3885
is able to determine when a tty-based time stamp file is stale and will
 
3886
ignore it.
 
3887
Administrators should not rely on this feature as it is not universally
 
3888
available.
 
3889
.Sh SEE ALSO
 
3890
.Xr ssh 1 ,
 
3891
.Xr su 1 ,
 
3892
.Xr fnmatch 3 ,
 
3893
.Xr glob 3 ,
 
3894
.Xr mktemp 3 ,
 
3895
.Xr strftime 3 ,
 
3896
.Xr sudoers.ldap @mansectform@ ,
 
3897
.Xr sudo_plugin @mansectsu@ ,
 
3898
.Xr sudo @mansectsu@ ,
 
3899
.Xr visudo @mansectsu@
 
3900
.Sh CAVEATS
 
3901
The
 
3902
.Em sudoers
 
3903
file should
 
3904
.Sy always
 
3905
be edited by the
 
3906
.Nm visudo
 
3907
command which locks the file and does grammatical checking.
 
3908
It is
 
3909
imperative that
 
3910
.Em sudoers
 
3911
be free of syntax errors since
 
3912
.Nm sudo
 
3913
will not run with a syntactically incorrect
 
3914
.Em sudoers
 
3915
file.
 
3916
.Pp
 
3917
When using netgroups of machines (as opposed to users), if you
 
3918
store fully qualified host name in the netgroup (as is usually the
 
3919
case), you either need to have the machine's host name be fully qualified
 
3920
as returned by the
 
3921
.Li hostname
 
3922
command or use the
 
3923
.Em fqdn
 
3924
option in
 
3925
.Em sudoers .
 
3926
.Sh BUGS
 
3927
If you feel you have found a bug in
 
3928
.Nm sudo ,
 
3929
please submit a bug report at http://www.sudo.ws/sudo/bugs/
 
3930
.Sh SUPPORT
 
3931
Limited free support is available via the sudo-users mailing list,
 
3932
see http://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or
 
3933
search the archives.
 
3934
.Sh DISCLAIMER
 
3935
.Nm sudo
 
3936
is provided
 
3937
.Dq AS IS
 
3938
and any express or implied warranties, including, but not limited
 
3939
to, the implied warranties of merchantability and fitness for a
 
3940
particular purpose are disclaimed.
 
3941
See the LICENSE file distributed with
 
3942
.Nm sudo
 
3943
or http://www.sudo.ws/sudo/license.html for complete details.