Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SUDO(8) 		     System Manager's Manual			 SUDO(8)

NAME
     sudo, sudoedit -- execute a command as another user

SYNOPSIS
     sudo -h | -K | -k | -V
     sudo -v [-ABkNnS] [-g group] [-h host] [-p prompt] [-u user]
     sudo -l [-ABkNnS] [-g group] [-h host] [-p prompt] [-U user] [-u user]
	  [command [arg ...]]
     sudo [-ABbEHnPS] [-C num] [-c class] [-D directory] [-g group] [-h host]
	  [-p prompt] [-R directory] [-T timeout] [-u user] [VAR=value]
	  [-i | -s] [command [arg ...]]
     sudoedit [-ABkNnS] [-C num] [-c class] [-D directory] [-g group] [-h host]
	  [-p prompt] [-R directory] [-T timeout] [-u user] file ...

DESCRIPTION
     sudo  allows  a permitted user to execute a command as the superuser or an-
     other user, as specified by the security policy.  The invoking user's  real
     (not  effective)  user-ID	is used to determine the user name with which to
     query the security policy.

     sudo supports a plugin architecture for security  policies,  auditing,  and
     input/output  logging.   Third parties can develop and distribute their own
     plugins to work seamlessly with the sudo front-end.  The  default	security
     policy is sudoers, which is configured via the file /usr/local/etc/sudoers,
     or via LDAP.  See the "Plugins" section for more information.

     The  security  policy determines what privileges, if any, a user has to run
     sudo.  The policy may require that users  authenticate  themselves  with  a
     password  or  another  authentication  mechanism.	If authentication is re-
     quired, sudo will exit if the user's password is not entered within a  con-
     figurable	time limit.  This limit is policy-specific; the default password
     prompt timeout for the sudoers security policy is 5 minutes.

     Security policies may support credential caching to allow the user  to  run
     sudo  again  for a period of time without requiring authentication.  By de-
     fault, the sudoers policy caches credentials on a per-terminal basis for  5
     minutes.	See  the  timestamp_type  and timestamp_timeout options in sudo-
     ers(5) for more information.  By running sudo with the -v	option,  a  user
     can update the cached credentials without running a command.

     On  systems  where  sudo  is the primary method of gaining superuser privi-
     leges, it is imperative to avoid syntax errors in the security policy  con-
     figuration  files.  For the default security policy, sudoers(5), changes to
     the configuration files should be made using the  visudo(8)  utility  which
     will ensure that no syntax errors are introduced.

     When invoked as sudoedit, the -e option (described below), is implied.

     Security  policies and audit plugins may log successful and failed attempts
     to run sudo.  If an I/O plugin is configured, the running	command's  input
     and output may be logged as well.

     The options are as follows:

     -A, --askpass
	     Normally,	if  sudo  requires  a password, it will read it from the
	     user's terminal.  If the -A (askpass) option is specified, a  (pos-
	     sibly  graphical)	helper	program  is  executed to read the user's
	     password and output the password to the standard  output.	 If  the
	     SUDO_ASKPASS  environment variable is set, it specifies the path to
	     the helper program.  Otherwise, if  sudo.conf(5)  contains  a  line
	     specifying the askpass program, that value will be used.  For exam-
	     ple:

		 # Path to askpass helper program
		 Path askpass /usr/X11R6/bin/ssh-askpass

	     If no askpass program is available, sudo will exit with an error.

     -B, --bell
	     Ring  the	bell  as  part of the password prompt when a terminal is
	     present.  This option has no effect if an askpass program is used.

     -b, --background
	     Run the given command in the background.  It is not possible to use
	     shell job control to manipulate  background  processes  started  by
	     sudo.   Most  interactive	commands  will	fail to work properly in
	     background mode.

     -C num, --close-from=num
	     Close all file descriptors greater than or equal to num before exe-
	     cuting a command.	Values less than three are  not  permitted.   By
	     default, sudo will close all open file descriptors other than stan-
	     dard  input,  standard  output, and standard error when executing a
	     command.  The security policy may restrict the  user's  ability  to
	     use this option.  The sudoers policy only permits use of the -C op-
	     tion  when the administrator has enabled the closefrom_override op-
	     tion.

     -c class, --login-class=class
	     Run the command with resource limits and scheduling priority of the
	     specified login class.  The class argument can be	either	a  class
	     name  as defined in /etc/login.conf, or a single `-' character.  If
	     class is -, the default login class of  the  target  user	will  be
	     used.  Otherwise, the command must be run as the superuser (user-ID
	     0), or sudo must be run from a shell that is already running as the
	     superuser.   If  the  command  is being run as a login shell, addi-
	     tional /etc/login.conf settings, such as the umask and  environment
	     variables, will be applied, if present.  This option is only avail-
	     able on systems with BSD login classes.

     -D directory, --chdir=directory
	     Run  the  command in the specified directory instead of the current
	     working directory.  The security policy may return an error if  the
	     user does not have permission to specify the working directory.

     -E, --preserve-env
	     Indicates	to  the security policy that the user wishes to preserve
	     their existing environment variables.  The security policy may  re-
	     turn  an error if the user does not have permission to preserve the
	     environment.

     --preserve-env=list
	     Indicates to the security policy that the user wishes  to	add  the
	     comma-separated  list  of	environment variables to those preserved
	     from the user's environment.  The security policy may return an er-
	     ror if the user does not have permission to preserve  the	environ-
	     ment.  This option may be specified multiple times.

     -e, --edit
	     Edit  one or more files instead of running a command.  In lieu of a
	     path name, the string "sudoedit" is used when consulting the  secu-
	     rity  policy.  If the user is authorized by the policy, the follow-
	     ing steps are taken:

		 1.   Temporary copies are made of the files to be  edited  with
		      the owner set to the invoking user.

		 2.   The editor specified by the policy is run to edit the tem-
		      porary  files.   The  sudoers policy uses the SUDO_EDITOR,
		      VISUAL and EDITOR environment variables (in  that  order).
		      If  none	of  SUDO_EDITOR,  VISUAL  or EDITOR are set, the
		      first program listed in the editor  sudoers(5)  option  is
		      used.

		 3.   If they have been modified, the temporary files are copied
		      back to their original location and the temporary versions
		      are removed.

	     To  help  prevent	the editing of unauthorized files, the following
	     restrictions are enforced unless explicitly allowed by the security
	     policy:

	      *  Symbolic links may not be edited (version 1.8.15 and higher).

	      *  Symbolic links along the path to be  edited  are  not	followed
		 when  the parent directory is writable by the invoking user un-
		 less that user is root (version 1.8.16 and higher).

	      *  Files located in a directory that is writable by  the	invoking
		 user may not be edited unless that user is root (version 1.8.16
		 and higher).

	     Users are never allowed to edit device special files.

	     If  the  specified file does not exist, it will be created.  Unlike
	     most commands run by sudo, the editor  is	run  with  the	invoking
	     user's environment unmodified.  If the temporary file becomes empty
	     after  editing,  the  user will be prompted before it is installed.
	     If, for some reason, sudo is unable  to  update  a  file  with  its
	     edited version, the user will receive a warning and the edited copy
	     will remain in a temporary file.

     -g group, --group=group
	     Run  the command with the primary group set to group instead of the
	     primary group specified by the target user's password database  en-
	     try.   The  group	may be either a group name or a numeric group-ID
	     (GID) prefixed with the `#' character (e.g., `#0' for GID 0).  When
	     running a command as a GID, many shells require that the `#' be es-
	     caped with a backslash (`\').  If no -u option  is  specified,  the
	     command will be run as the invoking user.	In either case, the pri-
	     mary group will be set to group.  The sudoers policy permits any of
	     the  target user's groups to be specified via the -g option as long
	     as the -P option is not in use.

     -H, --set-home
	     Request that the security policy set the HOME environment	variable
	     to the home directory specified by the target user's password data-
	     base  entry.   Depending on the policy, this may be the default be-
	     havior.

     -h, --help
	     Display a short help message to the standard output and exit.

     -h host, --host=host
	     Run the command on the specified host if the security policy plugin
	     supports remote commands. The sudoers  plugin  does  not  currently
	     support  running remote commands. This may also be used in conjunc-
	     tion with the -l option to list a user's privileges for the  remote
	     host.

     -i, --login
	     Run  the shell specified by the target user's password database en-
	     try as a login shell.   This  means  that	login-specific	resource
	     files  such  as  .profile, .bash_profile, or .login will be read by
	     the shell.  If a command is specified, it is passed to the shell as
	     a simple command using the -c option.  The command and any args are
	     concatenated, separated by spaces, after  escaping  each  character
	     (including  white space) with a backslash (`\') except for alphanu-
	     merics, underscores, hyphens, and dollar signs.  If no  command  is
	     specified,  an  interactive  shell  is  executed.	sudo attempts to
	     change to that user's home directory before running the shell.  The
	     command is run with an environment similar to the one a user  would
	     receive  at  log in.  Most shells behave differently when a command
	     is specified as compared to an  interactive  session;  consult  the
	     shell's manual for details.  The Command environment section in the
	     sudoers(5)  manual documents how the -i option affects the environ-
	     ment in which a command is run when the sudoers policy is in use.

     -K, --remove-timestamp
	     Similar to the -k option, except that it removes every cached  cre-
	     dential  for the user, regardless of the terminal or parent process
	     ID.  The next time sudo is run, a password must be entered  if  the
	     security policy requires authentication.  It is not possible to use
	     the  -K option in conjunction with a command or other option.  This
	     option does not require a password.  Not all security policies sup-
	     port credential caching.

     -k, --reset-timestamp
	     When used without a command, invalidates the user's cached  creden-
	     tials  for  the  current session.	The next time sudo is run in the
	     session, a password must be entered if the security policy requires
	     authentication.  By default, the sudoers  policy  uses  a	separate
	     record in the credential cache for each terminal (or parent process
	     ID  if  no  terminal is present).	This prevents the -k option from
	     interfering with sudo commands run in a different terminal session.
	     See the timestamp_type option in sudoers(5) for  more  information.
	     This  option  does not require a password, and was added to allow a
	     user to revoke sudo permissions from a .logout file.

	     When used in conjunction with a command or an option that	may  re-
	     quire  a password, this option will cause sudo to ignore the user's
	     cached credentials.  As a result, sudo will prompt for  a	password
	     (if one is required by the security policy) and will not update the
	     user's cached credentials.

	     Not all security policies support credential caching.

     -l, --list
	     If  no  command  is specified, list the privileges for the invoking
	     user (or the user specified by the -U option) on the current  host.
	     A	longer	list format is used if this option is specified multiple
	     times and the security policy supports a verbose output format.

	     If a command is specified and is permitted by the	security  policy
	     for  the invoking user (or the, user specified by the -U option) on
	     the current host, the fully-qualified path to the command	is  dis-
	     played  along with any args. If -l is specified more than once (and
	     the security policy supports it), the matching rule is displayed in
	     a verbose format along with the command.  If a command is specified
	     but not allowed by the policy, sudo will exit with a  status  value
	     of 1.

     -N, --no-update
	     Do  not update the user's cached credentials, even if the user suc-
	     cessfully authenticates.  Unlike the -k flag, existing cached  cre-
	     dentials  are  used  if  they are valid.  To detect when the user's
	     cached credentials are valid (or  when  no  authentication  is  re-
	     quired), the following can be used:

		 sudo -Nnv

	     Not all security policies support credential caching.

     -n, --non-interactive
	     Avoid  prompting  the user for input of any kind.	If a password is
	     required for the command to run, sudo will display an error message
	     and exit.

     -P, --preserve-groups
	     Preserve the invoking user's group vector unaltered.   By	default,
	     the  sudoers policy will initialize the group vector to the list of
	     groups the target user is a member  of.   The  real  and  effective
	     group-IDs, however, are still set to match the target user.

     -p prompt, --prompt=prompt
	     Use  a  custom password prompt with optional escape sequences.  The
	     following percent (`%')  escape  sequences  are  supported  by  the
	     sudoers policy:

	     %H  expanded  to  the  host name including the domain name (only if
		 the machine's host name is fully qualified or the  fqdn  option
		 is set in sudoers(5))

	     %h  expanded to the local host name without the domain name

	     %p  expanded  to  the  name of the user whose password is being re-
		 quested (respects the rootpw, targetpw, and  runaspw  flags  in
		 sudoers(5))

	     %U  expanded  to the login name of the user the command will be run
		 as (defaults to root unless the -u option is also specified)

	     %u  expanded to the invoking user's login name

	     %%  two consecutive `%' characters are collapsed into a single  `%'
		 character

	     The custom prompt will override the default prompt specified by ei-
	     ther  the	security policy or the SUDO_PROMPT environment variable.
	     On systems that use PAM, the custom prompt will also  override  the
	     prompt  specified	by  a  PAM module unless the passprompt_override
	     flag is disabled in sudoers.

     -R directory, --chroot=directory
	     Change to the specified root directory (see chroot(8)) before  run-
	     ning  the	command.  The security policy may return an error if the
	     user does not have permission to specify the root directory.

	     This option is deprecated and will be removed in a  future  version
	     of sudo.

     -S, --stdin
	     Write  the  prompt to the standard error and read the password from
	     the standard input instead of using the terminal device.

     -s, --shell
	     Run the shell specified by the SHELL environment variable if it  is
	     set or the shell specified by the invoking user's password database
	     entry.   If  a command is specified, it is passed to the shell as a
	     simple command using the -c option.  The command and any  args  are
	     concatenated,  separated  by  spaces, after escaping each character
	     (including white space) with a backslash (`\') except for	alphanu-
	     merics,  underscores,  hyphens, and dollar signs.	If no command is
	     specified, an interactive shell is executed.   Most  shells  behave
	     differently  when a command is specified as compared to an interac-
	     tive session; consult the shell's manual for details.

     -U user, --other-user=user
	     Used in conjunction with the -l option to list the  privileges  for
	     user instead of for the invoking user.  The security policy may re-
	     strict  listing  other  users'  privileges.  When using the sudoers
	     policy, the -U option is restricted to the root user and users with
	     either the "list" priviege for the specified user or the ability to
	     run any command as root or user on the current host.

     -T timeout, --command-timeout=timeout
	     Used to set a timeout for the command.  If the timeout expires  be-
	     fore  the	command has exited, the command will be terminated.  The
	     security policy may restrict the user's ability  to  set  timeouts.
	     The sudoers policy requires that user-specified timeouts be explic-
	     itly enabled.

     -u user, --user=user
	     Run  the command as a user other than the default target user (usu-
	     ally root).  The user may be either a user name or a numeric  user-
	     ID  (UID)	prefixed  with the `#' character (e.g., `#0' for UID 0).
	     When running commands as a UID, many shells require that the `#' be
	     escaped with a backslash (`\').  Some  security  policies	may  re-
	     strict  UIDs to those listed in the password database.  The sudoers
	     policy allows UIDs that are not in the password database as long as
	     the targetpw option is not set.  Other security  policies	may  not
	     support this.

     -V, --version
	     Print  the sudo version string as well as the version string of any
	     configured plugins.  If the invoking user is already root,  the  -V
	     option  will  display the options passed to configure when sudo was
	     built; plugins may display additional information such  as  default
	     options.

     -v, --validate
	     Update  the  user's  cached credentials, authenticating the user if
	     necessary.  For the sudoers plugin, this extends the  sudo  timeout
	     for  another 5 minutes by default, but does not run a command.  Not
	     all security policies support cached credentials.

     --      The -- is used to delimit the end of the sudo options.   Subsequent
	     options are passed to the command.

     Options that take a value may only be specified once unless otherwise indi-
     cated in the description.	This is to help guard against problems caused by
     poorly written scripts that invoke sudo with user-controlled input.

     Environment  variables  to be set for the command may also be passed as op-
     tions    to    sudo    in	  the	 form	  VAR=value,	 for	 example
     LD_LIBRARY_PATH=/usr/local/pkg/lib.   Environment	variables may be subject
     to restrictions imposed by the security policy plugin.  The sudoers  policy
     subjects  environment  variables passed as options to the same restrictions
     as existing environment variables with one important  difference.	 If  the
     setenv  option  is set in sudoers, the command to be run has the SETENV tag
     set or the command matched is ALL, the user may set  variables  that  would
     otherwise be forbidden.  See sudoers(5) for more information.

COMMAND EXECUTION
     When  sudo  executes a command, the security policy specifies the execution
     environment for the command.  Typically, the real and  effective  user  and
     group  and  IDs  are set to match those of the target user, as specified in
     the password database, and the group vector is  initialized  based  on  the
     group database (unless the -P option was specified).

     The following parameters may be specified by security policy:

     *	real and effective user-ID

     *	real and effective group-ID

     *	supplementary group-IDs

     *	the environment list

     *	current working directory

     *	file creation mode mask (umask)

     *	BSD login class

     *	scheduling priority (aka nice value)

   Process model
     There are two distinct ways sudo can run a command.

     If an I/O logging plugin is configured to log terminal I/O, or if the secu-
     rity  policy explicitly requests it, a new pseudo-terminal ("pty") is allo-
     cated and fork(2) is used to create a second sudo process, referred  to  as
     the monitor.  The monitor creates a new terminal session with itself as the
     leader  and  the pty as its controlling terminal, calls fork(2) again, sets
     up the execution environment as described above,  and  then  uses	the  ex-
     ecve(2)  system  call to run the command in the child process.  The monitor
     exists to relay job control signals between the user's terminal and the pty
     the command is being run in.  This makes it possible to suspend and  resume
     the  command  normally.   Without the monitor, the command would be in what
     POSIX terms an "orphaned process group" and it would not  receive	any  job
     control  signals  from the kernel.  When the command exits or is terminated
     by a signal, the monitor passes the command's exit status to the main  sudo
     process  and  exits.   After  receiving the command's exit status, the main
     sudo process passes the command's exit  status  to  the  security	policy's
     close  function, as well as the close function of any configured audit plu-
     gin, and exits.  This mode is the default	for  sudo  versions  1.9.14  and
     above when using the sudoers policy.

     If no pty is used, sudo calls fork(2), sets up the execution environment as
     described	above,	and uses the execve(2) system call to run the command in
     the child process.  The main sudo process waits until the command has  com-
     pleted,  then  passes  the  command's  exit status to the security policy's
     close function, as well as the close function of any configured audit plug-
     ins, and exits.  As a special case, if the policy plugin does not define  a
     close  function,  sudo will execute the command directly instead of calling
     fork(2) first.  The sudoers policy plugin will only define a close function
     when I/O logging is enabled, a pty is required, an SELinux role  is  speci-
     fied,  the  command  has  an  associated  timeout,  or  the  pam_session or
     pam_setcred options are enabled.  Both pam_session and pam_setcred are  en-
     abled  by	default on systems using PAM.  This mode is the default for sudo
     versions prior to 1.9.14 when using the sudoers policy.

     On systems that use PAM, the security policy's close function is  responsi-
     ble  for  closing the PAM session.  It may also log the command's exit sta-
     tus.

   Signal handling
     When the command is run as a child of the sudo  process,  sudo  will  relay
     signals  it  receives  to	the command.  The SIGINT and SIGQUIT signals are
     only relayed when the command is being run in a new pty or when the  signal
     was sent by a user process, not the kernel.  This prevents the command from
     receiving	SIGINT twice each time the user enters control-C.  Some signals,
     such as SIGSTOP and SIGKILL, cannot be caught and thus will not be  relayed
     to  the  command.	 As  a	general  rule, SIGTSTP should be used instead of
     SIGSTOP when you wish to suspend a command being run by sudo.

     As a special case, sudo will not  relay  signals  that  were  sent  by  the
     command it is running.  This prevents the command from accidentally killing
     itself.   On  some systems, the reboot(8) utility sends SIGTERM to all non-
     system processes other than itself before rebooting the system.  This  pre-
     vents  sudo from relaying the SIGTERM signal it received back to reboot(8),
     which might then exit before the system was actually rebooted,  leaving  it
     in a half-dead state similar to single user mode.	Note, however, that this
     check  only  applies to the command run by sudo and not any other processes
     that the command may create.  As a result, running a script that calls  re-
     boot(8)  or shutdown(8) via sudo may cause the system to end up in this un-
     defined state unless the reboot(8) or shutdown(8) are run using the  exec()
     family  of  functions instead of system() (which interposes a shell between
     the command and the calling process).

   Plugins
     Plugins may be specified via Plugin directives in	the  sudo.conf(5)  file.
     They  may	be  loaded  as	dynamic  shared objects (on systems that support
     them), or compiled directly into the sudo binary.	If no sudo.conf(5)  file
     is  present, or if it doesn't contain any Plugin lines, sudo will use sudo-
     ers(5) for  the  policy,  auditing,  and  I/O  logging  plugins.	See  the
     sudo.conf(5)  manual  for	details of the /usr/local/etc/sudo.conf file and
     the sudo_plugin(5) manual for more information about the sudo plugin archi-
     tecture.

EXIT VALUE
     Upon successful execution of a command, the exit status from sudo	will  be
     the  exit	status	of the program that was executed.  If the command termi-
     nated due to receipt of a signal, sudo will send  itself  the  same  signal
     that terminated the command.

     If  the  -l  option  was specified without a command, sudo will exit with a
     value of 0 if the user is allowed to run sudo and they  authenticated  suc-
     cessfully	(as required by the security policy).  If a command is specified
     with the -l option, the exit value will only be 0 if the command is permit-
     ted by the security policy, otherwise it will be 1.

     If there is an authentication failure, a configuration/permission	problem,
     or  if  the given command cannot be executed, sudo exits with a value of 1.
     In the latter case, the error string is printed to the standard error.   If
     sudo  cannot  stat(2)  one  or more entries in the user's PATH, an error is
     printed to the standard error.  (If the directory does not exist or  if  it
     is  not  really a directory, the entry is ignored and no error is printed.)
     This should not happen under normal circumstances.  The most common  reason
     for  stat(2)  to  return "permission denied" is if you are running an auto-
     mounter and one of the directories in your PATH is on  a  machine	that  is
     currently unreachable.

SECURITY NOTES
     sudo tries to be safe when executing external commands.

     To  prevent command spoofing, sudo checks "." and "" (both denoting current
     directory) last when searching for a command in the user's PATH (if one  or
     both  are	in the PATH).  Depending on the security policy, the user's PATH
     environment variable may be modified, replaced, or passed unchanged to  the
     program that sudo executes.

     Users  should  never  be  granted sudo privileges to execute files that are
     writable by the user or that reside in a directory that is writable by  the
     user.   If  the  user  can modify or replace the command there is no way to
     limit what additional commands they can run.

     By default, sudo will only log the command it explicitly runs.  If  a  user
     runs a command such as `sudo su' or `sudo sh', subsequent commands run from
     that shell are not subject to sudo's security policy.  The same is true for
     commands that offer shell escapes (including most editors).  If I/O logging
     is enabled, subsequent commands will have their input and/or output logged,
     but there will not be traditional logs for those commands. Because of this,
     care  must be taken when giving users access to commands via sudo to verify
     that the command does not inadvertently give the  user  an  effective  root
     shell.   For  information on ways to address this, see the Preventing shell
     escapes section in sudoers(5).

     To prevent the disclosure of potentially sensitive information,  sudo  dis-
     ables  core dumps by default while it is executing (they are re-enabled for
     the command that is run).	This historical practice dates from a time  when
     most  operating  systems  allowed set-user-ID processes to dump core by de-
     fault.  To aid in debugging sudo crashes, you may wish  to  re-enable  core
     dumps  by	setting  "disable_coredump" to false in the sudo.conf(5) file as
     follows:

	 Set disable_coredump false

     See the sudo.conf(5) manual for more information.

ENVIRONMENT
     sudo utilizes the following environment variables.  The security policy has
     control over the actual content of the command's environment.

     EDITOR	      Default editor to use in -e  (sudoedit)  mode  if  neither
		      SUDO_EDITOR nor VISUAL is set.

     MAIL	      Set  to  the mail spool of the target user when the -i op-
		      tion is specified, or when env_reset is enabled in sudoers
		      (unless MAIL is present in the env_keep list).

     HOME	      Set to the home directory of the target user when  the  -i
		      or  -H options are specified, when the -s option is speci-
		      fied and set_home is set in sudoers, when  always_set_home
		      is  enabled  in  sudoers,  or when env_reset is enabled in
		      sudoers and HOME is not present in the env_keep list.

     LOGNAME	      Set to the login name of the target user when the  -i  op-
		      tion  is specified, when the set_logname option is enabled
		      in sudoers, or when the env_reset  option  is  enabled  in
		      sudoers (unless LOGNAME is present in the env_keep list).

     PATH	      May be overridden by the security policy.

     SHELL	      Used to determine shell to run with -s option.

     SUDO_ASKPASS     Specifies  the  path  to a helper program used to read the
		      password if no terminal is available or if the  -A  option
		      is specified.

     SUDO_COMMAND     Set  to  the  command run by sudo, including any args. The
		      args are truncated at 4096 characters to prevent a  poten-
		      tial execution error.

     SUDO_EDITOR      Default editor to use in -e (sudoedit) mode.

     SUDO_GID	      Set to the group-ID of the user who invoked sudo.

     SUDO_HOME	      Set to the home directory of the user who invoked sudo.

     SUDO_PROMPT      Used  as	the default password prompt unless the -p option
		      was specified.

     SUDO_PS1	      If set, PS1 will be set to its value for the program being
		      run.

     SUDO_TTY	      Set to the terminal device of the user who  invoked  sudo,
		      if one is present.

     SUDO_UID	      Set to the user-ID of the user who invoked sudo.

     SUDO_USER	      Set to the login name of the user who invoked sudo.

     USER	      Set to the same value as LOGNAME, described above.

     VISUAL	      Default editor to use in -e (sudoedit) mode if SUDO_EDITOR
		      is not set.

FILES
     /usr/local/etc/sudo.conf  sudo front-end configuration

EXAMPLES
     The following examples assume a properly configured security policy.

     To get a file listing of an unreadable directory:

	 $ sudo ls /usr/local/protected

     To  list  the home directory of user yaz on a machine where the file system
     holding ~yaz is not exported as root:

	 $ sudo -u yaz ls ~yaz

     To edit the index.html file as user www:

	 $ sudoedit -u www ~www/htdocs/index.html

     To view system logs only accessible to root and users in the adm group:

	 $ sudo -g adm more /var/log/syslog

     To run an editor as jim with a different primary group:

	 $ sudoedit -u jim -g audio ~jim/sound.txt

     To shut down a machine:

	 $ sudo shutdown -r +15 "quick reboot"

     To make a usage listing of the directories in  the  /home	partition.   The
     commands are run in a sub-shell to allow the `cd' command and file redirec-
     tion to work.

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

DIAGNOSTICS
     Error messages produced by sudo include:

     editing files in a writable directory is not permitted
	 By default, sudoedit does not permit editing a file when any of the
	 parent directories are writable by the invoking user.	This avoids a
	 race condition that could allow the user to overwrite an arbitrary
	 file.	See the sudoedit_checkdir option in sudoers(5) for more informa-
	 tion.

     editing symbolic links is not permitted
	 By default, sudoedit does not follow symbolic links when opening files.
	 See the sudoedit_follow option in sudoers(5) for more information.

     effective uid is not 0, is sudo installed setuid root?
	 sudo was not run with root privileges.  The sudo binary must be owned
	 by the root user and have the set-user-ID bit set.  Also, it must not
	 be located on a file system mounted with the `nosuid' option or on an
	 NFS file system that maps uid 0 to an unprivileged uid.

     effective	uid  is not 0, is sudo on a file system with the 'nosuid' option
     set or an NFS file system without root privileges?
	 sudo was not run with root privileges.  The sudo binary has the proper
	 owner and permissions but it still did not run with root privileges.
	 The most common reason for this is that the file system the sudo binary
	 is located on is mounted with the `nosuid' option or it is an NFS file
	 system that maps uid 0 to an unprivileged uid.

     fatal error, unable to load plugins
	 An error occurred while loading or initializing the plugins specified
	 in sudo.conf(5).

     invalid environment variable name
	 One or more environment variable names specified via the -E option con-
	 tained an equal sign (`=').  The arguments to the -E option should be
	 environment variable names without an associated value.

     no password was provided
	 When sudo tried to read the password, it did not receive any charac-
	 ters.	This may happen if no terminal is available (or the -S option is
	 specified) and the standard input has been redirected from /dev/null.

     a terminal is required to read the password
	 sudo needs to read the password but there is no mechanism available for
	 it to do so.  Remote commands run via ssh(1) do not have a terminal
	 available by default; passing the -t option to ssh(1) will cause it to
	 allocate a terminal which should allow sudo to read the password.  To
	 allow sudo to run local commands without a terminal, the -S option can
	 be used to read a password from the standard input, or an askpass
	 helper can be configured via either the sudo.conf(5) file or by setting
	 the SUDO_ASKPASS environment variable.

     no writable temporary directory found
	 sudoedit was unable to find a usable temporary directory in which to
	 store its intermediate files.

     The "no new privileges" flag is set, which prevents sudo  from  running  as
     root.
	 sudo was run by a process that has the Linux "no new privileges" flag
	 is set.  This causes the set-user-ID bit to be ignored when running an
	 executable, which will prevent sudo from functioning.	The most likely
	 cause for this is running sudo within a container that sets this flag.
	 Check the documentation to see if it is possible to configure the con-
	 tainer such that the flag is not set.

     sudo must be owned by uid 0 and have the setuid bit set
	 sudo was not run with root privileges.  The sudo binary does not have
	 the correct owner or permissions.  It must be owned by the root user
	 and have the set-user-ID bit set.

     sudoedit is not supported on this platform
	 It is only possible to run sudoedit on systems that support setting the
	 effective user-ID.

     timed out reading password
	 The user did not enter a password before the password timeout (5 min-
	 utes by default) expired.

     you do not exist in the passwd database
	 Your user-ID does not appear in the system passwd database.

     you may not specify environment variables in edit mode
	 It is only possible to specify environment variables when running a
	 command.  When editing a file, the editor is run with the user's envi-
	 ronment unmodified.

SEE ALSO
     su(1),  stat(2), login_cap(3), passwd(5), sudo.conf(5), sudo_plugin(5), su-
     doers(5), sudoers_timestamp(5), sudoreplay(8), visudo(8)

HISTORY
     See    the     HISTORY.md	   file     in	   the	   sudo     distribution
     (https://www.sudo.ws/about/history/) for a brief history of sudo.

AUTHORS
     Many  people  have  worked on sudo over the years; this version consists of
     code written primarily by:

	   Todd C. Miller

     See    the    CONTRIBUTORS.md    file    in    the    sudo     distribution
     (https://www.sudo.ws/about/contributors/)	for an exhaustive list of people
     who have contributed to sudo.

CAVEATS
     There is no easy way to prevent a user from gaining a root  shell	if  that
     user  is  allowed	to run arbitrary commands via sudo.  Also, many programs
     (such as editors) allow the user to run commands via  shell  escapes,  thus
     avoiding sudo's checks.  However, on most systems it is possible to prevent
     shell escapes with the sudoers(5) plugin's noexec functionality.

     It is not meaningful to run the `cd' command directly via sudo, e.g.,

	 $ sudo cd /usr/local/protected

     since  when the command exits the parent process (your shell) will still be
     the same.	The -D option can be  used  to	run  a	command  in  a	specific
     directory.

     Running  shell  scripts  via sudo can expose the same kernel bugs that make
     set-user-ID shell scripts unsafe on some operating systems (if your OS  has
     a /dev/fd/ directory, set-user-ID shell scripts are generally safe).

BUGS
     If  you believe you have found a bug in sudo, you can either file a bug re-
     port in the sudo bug database, https://bugzilla.sudo.ws/, or open an  issue
     at https://github.com/sudo-project/sudo/issues.  If you would prefer to use
     email,   messages	 may   be   sent   to  the  sudo-workers  mailing  list,
     https://www.sudo.ws/mailman/listinfo/sudo-workers	      (public)	      or
     <sudo@sudo.ws> (private).

     Please do not report security vulnerabilities through public GitHub issues,
     Bugzilla	or   mailing   lists.	 Instead,   report  them  via  email  to
     <Todd.Miller@sudo.ws>.  You may encrypt your message with PGP if you  would
     like, using the key found at https://www.sudo.ws/dist/PGPKEYS.

SUPPORT
     Limited  free  support  is  available  via the sudo-users mailing list, see
     https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search  the
     archives.

DISCLAIMER
     sudo  is provided "AS IS" and any express or implied warranties, including,
     but not limited to, the implied warranties of merchantability  and  fitness
     for  a particular purpose are disclaimed.	See the LICENSE.md file distrib-
     uted with sudo or https://www.sudo.ws/about/license/ for complete details.

Sudo 1.9.17p2			  June 7, 2025				 SUDO(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sudo&manpath=FreeBSD+15.1-RELEASE+and+Ports>

home | help