| Copyright (c) 1996,1998-2005, 2007-2010 |
| Todd C. Miller <Todd.Miller@courtesan.com> |
| |
| Permission to use, copy, modify, and distribute this software for any |
| purpose with or without fee is hereby granted, provided that the above |
| copyright notice and this permission notice appear in all copies. |
| |
| THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
| ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
| OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| Sponsored in part by the Defense Advanced Research Projects |
| Agency (DARPA) and Air Force Research Laboratory, Air Force |
| Materiel Command, USAF, under agreement number F39502-99-1-0512. |
| |
| =pod |
| |
| =head1 NAME |
| |
| visudo - edit the sudoers file |
| |
| =head1 SYNOPSIS |
| |
| B<visudo> [B<-c>] [B<-q>] [B<-s>] [B<-V>] [B<-f> I<sudoers>] |
| |
| =head1 DESCRIPTION |
| |
| B<visudo> edits the I<sudoers> file in a safe fashion, analogous to |
| L<vipw(8)>. B<visudo> locks the I<sudoers> file against multiple |
| simultaneous edits, provides basic sanity checks, and checks |
| for parse errors. If the I<sudoers> file is currently being |
| edited you will receive a message to try again later. |
| |
| There is a hard-coded list of one or more editors that B<visudo> will |
| use set at compile-time that may be overridden via the I<editor> I<sudoers> |
| C<Default> variable. This list defaults to C<"@editor@">. Normally, |
| B<visudo> does not honor the C<VISUAL> or C<EDITOR> environment |
| variables unless they contain an editor in the aforementioned editors |
| list. However, if B<visudo> is configured with the I<--with-env-editor> |
| option or the I<env_editor> C<Default> variable is set in I<sudoers>, |
| B<visudo> will use any the editor defines by C<VISUAL> or C<EDITOR>. |
| Note that this can be a security hole since it allows the user to |
| execute any program they wish simply by setting C<VISUAL> or C<EDITOR>. |
| |
| B<visudo> parses the I<sudoers> file after the edit and will |
| not save the changes if there is a syntax error. Upon finding |
| an error, B<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 I<sudoers> file, "x" to exit without |
| saving the changes, or "Q" to quit and save changes. The |
| "Q" option should be used with extreme care because if B<visudo> |
| believes there to be a parse error, so will B<sudo> and no one |
| will be able to B<sudo> again until the error is fixed. |
| If "e" is typed to edit the I<sudoers> file after a parse error |
| has been detected, the cursor will be placed on the line where the |
| error occurred (if the editor supports this feature). |
| |
| =head1 OPTIONS |
| |
| B<visudo> accepts the following command line options: |
| |
| =over 12 |
| |
| =item -c |
| |
| Enable B<check-only> mode. The existing I<sudoers> file will be |
| checked for syntax and a message will be printed to the |
| standard output detailing the status of I<sudoers>. |
| If the syntax check completes successfully, B<visudo> will |
| exit with a value of 0. If a syntax error is encountered, |
| B<visudo> will exit with a value of 1. |
| |
| =item -f I<sudoers> |
| |
| Specify and alternate I<sudoers> file location. With this option |
| B<visudo> will edit (or check) the I<sudoers> file of your choice, |
| instead of the default, F<@sysconfdir@/sudoers>. The lock file used |
| is the specified I<sudoers> file with ".tmp" appended to it. |
| |
| =item -q |
| |
| Enable B<quiet> mode. In this mode details about syntax errors |
| are not printed. This option is only useful when combined with |
| the B<-c> option. |
| |
| =item -s |
| |
| Enable B<strict> checking of the I<sudoers> file. If an alias is |
| used before it is defined, B<visudo> will consider this a parse |
| 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. |
| |
| =item -V |
| |
| The B<-V> (version) option causes B<visudo> to print its version number |
| and exit. |
| |
| =back |
| |
| =head1 ENVIRONMENT |
| |
| The following environment variables may be consulted depending on |
| the value of the I<editor> and I<env_editor> I<sudoers> variables: |
| |
| =over 16 |
| |
| =item C<VISUAL> |
| |
| Invoked by visudo as the editor to use |
| |
| =item C<EDITOR> |
| |
| Used by visudo if VISUAL is not set |
| |
| =back |
| |
| =head1 FILES |
| |
| =over 24 |
| |
| =item F<@sysconfdir@/sudoers> |
| |
| List of who can run what |
| |
| =item F<@sysconfdir@/sudoers.tmp> |
| |
| Lock file for visudo |
| |
| =back |
| |
| =head1 DIAGNOSTICS |
| |
| =over 4 |
| |
| =item sudoers file busy, try again later. |
| |
| Someone else is currently editing the I<sudoers> file. |
| |
| =item @sysconfdir@/sudoers.tmp: Permission denied |
| |
| You didn't run B<visudo> as root. |
| |
| =item Can't find you in the passwd database |
| |
| Your userid does not appear in the system passwd file. |
| |
| =item Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined |
| |
| Either you are trying to use an undeclare {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 (B<sudo> will not |
| complain). In B<-s> (strict) mode these are errors, not warnings. |
| |
| =item Warning: unused {User,Runas,Host,Cmnd}_Alias |
| |
| The specified {User,Runas,Host,Cmnd}_Alias was defined but never |
| used. You may wish to comment out or remove the unused alias. In |
| B<-s> (strict) mode this is an error, not a warning. |
| |
| =back |
| |
| =head1 SEE ALSO |
| |
| L<vi(1)>, L<sudoers(5)>, L<sudo(8)>, L<vipw(8)> |
| |
| =head1 AUTHOR |
| |
| Many people have worked on I<sudo> over the years; this version of |
| B<visudo> was written by: |
| |
| Todd Miller |
| |
| See the HISTORY file in the sudo distribution or visit |
| http://www.sudo.ws/sudo/history.html for more details. |
| |
| =head1 CAVEATS |
| |
| There is no easy way to prevent a user from gaining a root shell if |
| the editor used by B<visudo> allows shell escapes. |
| |
| =head1 BUGS |
| |
| If you feel you have found a bug in B<visudo>, please submit a bug report |
| at http://www.sudo.ws/sudo/bugs/ |
| |
| =head1 SUPPORT |
| |
| Limited free support is available via the sudo-users mailing list, |
| see http://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or |
| search the archives. |
| |
| =head1 DISCLAIMER |
| |
| B<visudo> 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 |
| file distributed with B<sudo> or http://www.sudo.ws/sudo/license.html |
| for complete details. |