Below are example sudoers file entries.  Admittedly, some of these
     are a bit contrived.  First, we allow a few environment variables
     to pass and then define our aliases:
     # Run X applications through sudo; HOME is used to find the
     # .Xauthority file.  Note that other programs use HOME to find
     # configuration files and this may lead to privilege escalation!
     Defaults env_keep += "DISPLAY HOME"
     # User alias specification
     User_Alias      FULLTIMERS = millert, mikef, dowdy
     User_Alias      PARTTIMERS = bostley, jwfox, crawl
     User_Alias      WEBADMIN = will, wendy, wim
     # Runas alias specification
     Runas_Alias     OP = root, operator
     Runas_Alias     DB = oracle, sybase
     Runas_Alias     ADMINGRP = adm, oper
     # Host alias specification
     Host_Alias      SPARC = bigtime, eclipse, moet, anchor :\
                     SGI = grolsch, dandelion, black :\
                     ALPHA = widget, thalamus, foobar :\
                     HPPA = boa, nag, python
     Host_Alias      CUNETS = 128.138.0.0/255.255.0.0
     Host_Alias      CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
     Host_Alias      SERVERS = primary, mail, www, ns
     Host_Alias      CDROM = orion, perseus, hercules
     # Cmnd alias specification
     Cmnd_Alias      DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\
                             /usr/sbin/restore, /usr/sbin/rrestore,\
                             sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ== \
                             /home/operator/bin/start_backups
     Cmnd_Alias      KILL = /usr/bin/kill
     Cmnd_Alias      PRINTING = /usr/sbin/lpc, /usr/bin/lprm
     Cmnd_Alias      SHUTDOWN = /usr/sbin/shutdown
     Cmnd_Alias      HALT = /usr/sbin/halt
     Cmnd_Alias      REBOOT = /usr/sbin/reboot
     Cmnd_Alias      SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh,\
                              /usr/local/bin/tcsh, /usr/bin/rsh,\
                              /usr/local/bin/zsh
     Cmnd_Alias      SU = /usr/bin/su
     Cmnd_Alias      PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less
     Here we override some of the compiled in default values.  We want
     sudo to log via syslog(3) using the auth facility in all cases and
     for commands to be run with the target user's home directory as the
     working directory.  We don't want to subject the full time staff to
     the sudo lecture and we want to allow them to run commands in a
     chroot(2) 'sandbox' via the -R option.  User millert need not
     provide a password and we don't want to reset the LOGNAME or USER
     environment variables when running commands as root.  Additionally,
     on the machines in the SERVERS Host_Alias, we keep an additional
     local log file and make sure we log the year in each log line since
     the log entries will be kept around for several years.  Lastly, we
     disable shell escapes for the commands in the PAGERS Cmnd_Alias
     (/usr/bin/more, /usr/bin/pg and /usr/bin/less).  Note that this
     will not effectively constrain users with sudo ALL privileges.
     # Override built-in defaults
     Defaults                syslog=auth,runcwd=~
     Defaults>root           !set_logname
     Defaults:FULLTIMERS     !lecture,runchroot=*
     Defaults:millert        !authenticate
     Defaults@SERVERS        log_year, logfile=/var/log/sudo.log
     Defaults!PAGERS         noexec
     The User specification is the part that actually determines who may
     run what.
     root            ALL = (ALL) ALL
     %wheel          ALL = (ALL) ALL
     We let root and any user in group wheel run any command on any host
     as any user.
     FULLTIMERS      ALL = NOPASSWD: ALL
     Full time sysadmins (millert, mikef, and dowdy) may run any command
     on any host without authenticating themselves.
     PARTTIMERS      ALL = ALL
     Part time sysadmins bostley, jwfox, and crawl) may run any command
     on any host but they must authenticate themselves first (since the
     entry lacks the NOPASSWD tag).
     jack            CSNETS = ALL
     The user jack may run any command on the machines in the CSNETS
     alias (the networks 128.138.243.0, 128.138.204.0, and
     128.138.242.0).  Of those networks, only 128.138.204.0 has an
     explicit netmask (in CIDR notation) indicating it is a class C
     network.  For the other networks in CSNETS, the local machine's
     netmask will be used during matching.
     lisa            CUNETS = ALL
     The user lisa may run any command on any host in the CUNETS alias
     (the class B network 128.138.0.0).
     operator        ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\
                     sudoedit /etc/printcap, /usr/oper/bin/
     The operator user may run commands limited to simple maintenance.
     Here, those are commands related to backups, killing processes, the
     printing system, shutting down the system, and any commands in the
     directory /usr/oper/bin/.  Note that one command in the DUMPS
     Cmnd_Alias includes a sha224 digest,
     /home/operator/bin/start_backups.  This is because the directory
     containing the script is writable by the operator user.  If the
     script is modified (resulting in a digest mismatch) it will no
     longer be possible to run it via sudo.
     joe             ALL = /usr/bin/su operator
     The user joe may only su(1) to operator.
     pete            HPPA = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd *root*
     %opers          ALL = (: ADMINGRP) /usr/sbin/
     Users in the opers group may run commands in /usr/sbin/ as
     themselves with any group in the ADMINGRP Runas_Alias (the adm and
     oper groups).
     The user pete is allowed to change anyone's password except for
     root on the HPPA machines.  Because command line arguments are
     matched as a single, concatenated string, the '*' wildcard will
     match multiple words.  This example assumes that passwd(1) does not
     take multiple user names on the command line.  Note that on GNU
     systems, options to passwd(1) may be specified after the user
     argument.  As a result, this rule will also allow:
         passwd username --expire
     which may not be desirable.
     bob             SPARC = (OP) ALL : SGI = (OP) ALL
     The user bob may run anything on the SPARC and SGI machines as any
     user listed in the OP Runas_Alias (root and operator.)
     jim             +biglab = ALL
     The user jim may run any command on machines in the biglab
     netgroup.  sudo knows that 'biglab' is a netgroup due to the '+'
     prefix.
     +secretaries    ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
     Users in the secretaries netgroup need to help manage the printers
     as well as add and remove users, so they are allowed to run those
     commands on all machines.
     fred            ALL = (DB) NOPASSWD: ALL
     The user fred can run commands as any user in the DB Runas_Alias
     (oracle or sybase) without giving a password.
     john            ALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*
     On the ALPHA machines, user john may su to anyone except root but
     he is not allowed to specify any options to the su(1) command.
     jen             ALL, !SERVERS = ALL
     The user jen may run any command on any machine except for those in
     the SERVERS Host_Alias (primary, mail, www and ns).
     jill            SERVERS = /usr/bin/, !SU, !SHELLS
     For any machine in the SERVERS Host_Alias, jill may run any
     commands in the directory /usr/bin/ except for those commands
     belonging to the SU and SHELLS Cmnd_Aliases.  While not
     specifically mentioned in the rule, the commands in the PAGERS
     Cmnd_Alias all reside in /usr/bin and have the noexec option set.
     steve           CSNETS = (operator) /usr/local/op_commands/
     The user steve may run any command in the directory
     /usr/local/op_commands/ but only as user operator.
     matt            valkyrie = KILL
     On his personal workstation, valkyrie, matt needs to be able to
     kill hung processes.
     WEBADMIN        www = (www) ALL, (root) /usr/bin/su www
     On the host www, any user in the WEBADMIN User_Alias (will, wendy,
     and wim), may run any command as user www (which owns the web
     pages) or simply su(1) to www.
     ALL             CDROM = NOPASSWD: /sbin/umount /CDROM,\
                     /sbin/mount -o nosuid\,nodev /dev/cd0a /CDROM
     Any user may mount or unmount a CD-ROM on the machines in the CDROM
     Host_Alias (orion, perseus, hercules) without entering a password.
     This is a bit tedious for users to type, so it is a prime candidate
     for encapsulating in a shell script.