193 lines
6.6 KiB
Plaintext
193 lines
6.6 KiB
Plaintext
=cut
|
|
Copyright (c) 1996,1998-2001 Todd C. Miller <Todd.Miller@courtesan.com>
|
|
All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions
|
|
are met:
|
|
|
|
1. Redistributions of source code must retain the above copyright
|
|
notice, this list of conditions and the following disclaimer.
|
|
|
|
2. Redistributions in binary form must reproduce the above copyright
|
|
notice, this list of conditions and the following disclaimer in the
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
3. The name of the author may not be used to endorse or promote products
|
|
derived from this software without specific prior written permission
|
|
from the author.
|
|
|
|
4. Products derived from this software may not be called "Sudo" nor
|
|
may "Sudo" appear in their names without specific prior written
|
|
permission from the author.
|
|
|
|
THIS SOFTWARE 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. IN NO EVENT SHALL
|
|
THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
$Sudo$
|
|
=pod
|
|
|
|
=head1 NAME
|
|
|
|
visudo - edit the sudoers file
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
B<visudo> [ B<-c> ] [ B<-f> I<sudoers> ] [ B<-q> ] [ B<-s> ] [ B<-V> ]
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
B<visudo> edits the I<sudoers> file in a safe fashion, analogous to
|
|
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 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 the path to vi(1) on
|
|
your system, as determined by the I<configure> script. Normally,
|
|
B<visudo> does not honor the C<EDITOR> or C<VISUAL> environment
|
|
variables unless they contain an editor in the aforementioned editors
|
|
list. However, if B<visudo> is configured with the I<--with-enveditor>
|
|
flag or the I<enveditor> C<Default> variable is set in I<sudoers>,
|
|
B<visudo> will use any the editor defines by C<EDITOR> or C<VISUAL>.
|
|
Note that this can be a security hole since it allows the user to
|
|
execute any program they wish simply by setting C<EDITOR> or C<VISUAL>.
|
|
|
|
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 4
|
|
|
|
=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
|
|
|
|
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, @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> flag.
|
|
|
|
=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 hostname or username 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 ERRORS
|
|
|
|
=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: undeclared Alias referenced near ...
|
|
|
|
Either you are using a {User,Runas,Host,Cmnd}_Alias before
|
|
defining it or you have a user or hostname listed that
|
|
consists solely of uppercase letters, digits, and the
|
|
underscore ('_') character. If the latter, you can ignore
|
|
the warnings (B<sudo> will not complain). In B<-s> (strict)
|
|
mode these are errors, not warnings.
|
|
|
|
=back
|
|
|
|
=head1 ENVIRONMENT
|
|
|
|
The following environment variables are used only if B<visudo>
|
|
was configured with the I<--with-env-editor> option:
|
|
|
|
EDITOR Invoked by visudo as the editor to use
|
|
VISUAL Used Invoked visudo if EDITOR is not set
|
|
|
|
=head1 FILES
|
|
|
|
@sysconfdir@/sudoers List of who can run what
|
|
@sysconfdir@/sudoers.tmp Lock file for visudo
|
|
|
|
=head1 AUTHOR
|
|
|
|
Many people have worked on I<sudo> over the years; this version of
|
|
B<visudo> was written by:
|
|
|
|
Todd Miller <Todd.Miller@courtesan.com>
|
|
|
|
See the HISTORY file in the sudo distribution or visit
|
|
http://www.courtesan.com/sudo/history.html for more details.
|
|
|
|
=head1 BUGS
|
|
|
|
If you feel you have found a bug in sudo, please submit a bug report
|
|
at http://www.courtesan.com/sudo/bugs/
|
|
|
|
=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> for complete 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 SEE ALSO
|
|
|
|
vi(1), sudo(8), vipw(8).
|