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

NAME
     visudo -- edit the sudoers file

SYNOPSIS
     visudo [-chqsV] [[-f] sudoers]

DESCRIPTION
     visudo  edits  the  sudoers  file	in a safe fashion, analogous to vipw(8).
     visudo locks the sudoers file against multiple simultaneous edits, performs
     basic validity checks, and checks for syntax errors before  installing  the
     edited  file.   If  the sudoers file is currently being edited you will re-
     ceive a message to try again later.

     visudo parses the sudoers file after editing and will not save the  changes
     if  there	is  a  syntax error.  Upon finding an error, visudo will print a
     message stating the line number(s) where the error occurred  and  the  user
     will  receive the "What now?" prompt.  At this point the user may enter `e'
     to re-edit the sudoers file, `x' to exit without saving the changes, or `Q'
     to quit and save changes.	The `Q' option should be used with extreme  cau-
     tion  because  if	visudo believes there to be a syntax error, so will sudo
     and no one will be able to run sudo again until the error is fixed.  If `e'
     is typed to edit the sudoers file after a syntax error has  been  detected,
     the cursor will be placed on the line where the error occurred (if the edi-
     tor supports this feature).

     There are two sudoers settings that determine which editor visudo will run.

     editor    A  colon  (`:') separated list of editors allowed to be used with
	       visudo.	visudo will choose the editor that  matches  the  user's
	       SUDO_EDITOR,  VISUAL  or EDITOR environment variable if possible,
	       or the first editor in the list that exists  and  is  executable.
	       Note  that  sudo  does  not  preserve  the SUDO_EDITOR, VISUAL or
	       EDITOR environment variables  unless  they  are	present  in  the
	       env_keep  list or the env_reset option is disabled in the sudoers
	       file.  The default editor path is vi which can be set at  compile
	       time via the --with-editor configure option.

     env_editor
	       If  set,  visudo will use the value of the SUDO_EDITOR, VISUAL or
	       EDITOR environment variables before falling back on  the  default
	       editor  list.   Note that visudo is typically run as root so this
	       option may allow a user with visudo privileges to  run  arbitrary
	       commands  as  root without logging.  An alternative is to place a
	       colon-separated list of "safe" editors int the  editor  variable.
	       visudo  will  then only use SUDO_EDITOR, VISUAL or EDITOR if they
	       match a value specified in editor.  If the env_reset flag is  en-
	       abled,  the  SUDO_EDITOR,  VISUAL and/or EDITOR environment vari-
	       ables must be present in the env_keep  list  for  the  env_editor
	       flag  to  function  when visudo is invoked via sudo.  The default
	       value  is  on,  which  can  be  set  at	compile  time  via   the
	       --with-env-editor configure option.

     The options are as follows:

     -c, --check
		 Enable  check-only  mode.   The  existing sudoers file (and any
		 other files it includes) will be checked for syntax errors.  If
		 the path to the sudoers file was  not	specified,  visudo  will
		 also  check the file owner and mode.  A message will be printed
		 to the standard output describing the status of sudoers  unless
		 the  -q  option was specified.  If the check completes success-
		 fully, visudo will exit with a value of 0.  If an error is  en-
		 countered, visudo will exit with a value of 1.

     -f sudoers, --file=sudoers
		 Specify  an  alternate sudoers file location, see below.  As of
		 version 1.8.27, the sudoers path can be specified without using
		 the -f option.

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

     -q, --quiet
		 Enable quiet mode.  In this mode details  about  syntax  errors
		 are not printed.  This option is only useful when combined with
		 the -c option.

     -s, --strict
		 Enable  strict  checking  of  the sudoers file.  If an alias is
		 referenced but not actually defined or if there is a  cycle  in
		 an  alias, visudo will consider this a syntax error.  Note that
		 it is not possible to differentiate between an alias and a host
		 name or user name that consists solely  of  uppercase	letters,
		 digits, and the underscore (`_') character.

     -V, --version
		 Print the visudo and sudoers grammar versions and exit.

     A	  sudoers    file   may   be   specified   instead   of   the	default,
     /usr/local/etc/sudoers.  The temporary file used is the  specified  sudoers
     file  with ".tmp" appended to it.	In check-only mode only, `-' may be used
     to indicate that sudoers will be read from the standard input.  Because the
     policy is evaluated in its entirety, it is not sufficient to check an indi-
     vidual sudoers include file for syntax errors.

   Debugging and sudoers plugin arguments
     visudo versions 1.8.4 and higher support  a  flexible  debugging  framework
     that is configured via Debug lines in the sudo.conf(5) file.

     Starting  with  sudo  1.8.12,  visudo  will also parse the arguments to the
     sudoers plugin to override the default sudoers path name, UID, GID and file
     mode.  These arguments, if present, should be listed after the path to  the
     plugin (i.e., after sudoers.so).  Multiple arguments may be specified, sep-
     arated by white space.  For example:

	   Plugin sudoers_policy sudoers.so sudoers_mode=0400

     The following arguments are supported:

     sudoers_file=pathname
	       The  sudoers_file  argument  can  be used to override the default
	       path to the sudoers file.

     sudoers_uid=uid
	       The sudoers_uid argument can be	used  to  override  the  default
	       owner  of  the sudoers file.  It should be specified as a numeric
	       user-ID.

     sudoers_gid=gid
	       The sudoers_gid argument can be	used  to  override  the  default
	       group  of  the  sudoers	file.  It must be specified as a numeric
	       group-ID (not a group name).

     sudoers_mode=mode
	       The sudoers_mode argument can be used  to  override  the  default
	       file mode for the sudoers file.	It should be specified as an oc-
	       tal value.

     For  more information on configuring sudo.conf(5), please refer to its man-
     ual.

ENVIRONMENT
     The following environment variables may be consulted depending on the value
     of the editor and env_editor sudoers settings:

     SUDO_EDITOR      Invoked by visudo as the editor to use

     VISUAL	      Used by visudo if SUDO_EDITOR is not set

     EDITOR	      Used by visudo if neither SUDO_EDITOR nor VISUAL is set

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

     /usr/local/etc/sudoers    List of who can run what

     /usr/local/etc/sudoers.tmp
			       Default temporary file used by visudo

DIAGNOSTICS
     In addition to reporting sudoers syntax errors, visudo may produce the fol-
     lowing messages:

     sudoers file busy, try again later.
	   Someone else is currently editing the sudoers file.

     /usr/local/etc/sudoers: Permission denied
	   You didn't run visudo as root.

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

     Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined
	   Either    you     are     trying	to     use     an     undeclared
	   {User,Runas,Host,Cmnd}_Alias  or  you have a user or host name listed
	   that consists solely of uppercase letters, digits, and the underscore
	   (`_') character.  In the latter case, you  can  ignore  the	warnings
	   (sudo will not complain).  The message is prefixed with the path name
	   of the sudoers file and the line number where the undefined alias was
	   used.  In -s (strict) mode these are errors, not warnings.

     Warning: unused {User,Runas,Host,Cmnd}_Alias
	   The	specified  {User,Runas,Host,Cmnd}_Alias  was  defined  but never
	   used.  The message is prefixed with the path name of the sudoers file
	   and the line number where the unused alias was defined.  You may wish
	   to comment out or remove the unused alias.

     Warning: cycle in {User,Runas,Host,Cmnd}_Alias
	   The specified {User,Runas,Host,Cmnd}_Alias includes	a  reference  to
	   itself, either directly or through an alias it includes.  The message
	   is  prefixed with the path name of the sudoers file and the line num-
	   ber where the cycle was detected.  This  is	only  a  warning  unless
	   visudo  is  run  in	-s (strict) mode as sudo will ignore cycles when
	   parsing the sudoers file.

     unknown defaults entry "name"
	   The sudoers file  contains  a  Defaults  setting  not  recognized  by
	   visudo.

SEE ALSO
     vi(1), sudo.conf(5), sudoers(5), sudo(8), vipw(8)

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

	   Todd C. Miller

     See    the    CONTRIBUTORS    file     in	   the	   sudo     distribution
     (https://www.sudo.ws/contributors.html)  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 the ed-
     itor used by visudo allows shell escapes.

BUGS
     If you feel you have found a bug in visudo, please submit a bug  report  at
     https://bugzilla.sudo.ws/

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
     visudo  is  provided "AS IS" and any express or implied warranties, includ-
     ing, but not limited to, the implied warranties of merchantability and fit-
     ness for a particular purpose are disclaimed.  See the  LICENSE  file  dis-
     tributed  with  sudo  or  https://www.sudo.ws/license.html for complete de-
     tails.

Sudo 1.9.5p2			 August 27, 2020		       VISUDO(8)

home | help