visudo: command not found错误的解决方法

发布时间:2020-03-03编辑:脚本学堂
在centos中使用visudo命令时,提示:visudo: command not found错误信息,本文分享下这个问题的解决方法,有用到的朋友不妨参考下。

在操作sudoers文件时,一直建议使用visudo进行安全的编辑/etc/sudoers文件。
使用visudo命令与直接编辑sudoers最大的区别在于:
visudo在退出并保持文件的时候会自动的检测语法错误,如果使用 vi /etc/sudoers 直接编辑sudoers的话,可以回出现语法错误,但是使用visudo却可以避免因为语法出错而保存了一个错误的souders文件。

在RedHat/CentOS可以使用yum命令安装visudo:
 

复制代码 代码示例:
yum install sudo

如果已安装sudo,但是在使用visudo的时候提示visudo: command not found:
bash: /usr/bin/visudo:command not found
首先,请确认sudo已经安装,使用下面的命令检测sudoers是否存在:
 

复制代码 代码示例:
[root@localhost bin]# whereis sudoers
sudoers:
/etc/sudoers
/usr/share/man/man5/sudoers.5.gz
 

如果输出结果为/etc/sudoers的话。
则说明 sudoers文件是存在的,如果不存在sudoers文件的文件的话,那么拷贝其他linux的sudoers或者是使用下面的命令新建sudoers文件:
#使用下面的命令比如是root
 

复制代码 代码示例:
cd /etc
touch sudoers
 

如果sudoers文件存在,请确认并发现visudo文件的路径:
 

复制代码 代码示例:
[root@localhost bin]# whereis visudo
visudo:
/usr/sbin/visudo
/usr/share/man/man8/visudo.8.gz
 

如果上面的命令没有输出任何结果,请重新安装sudo
如果visudo存在。那么可以肯定是系统变量$PATH的问题了。

查看PATH的值:
 

复制代码 代码示例:
[root@localhost bin]# echo $PATH
/usr/kerberos/sbin:
/usr/lib/qt-3.3/bin:
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:
/home/admin/bin
 

可以看到系统变量PATH中并没有包含visudo的路径,
解决方法,选其一:
1,增加visudo的路径到PATH中,
2,在PATH中的任意一个路径增加visudo的软连接:
ln -s /usr/sbin/visudo /usr/bin/visudo
完成以上操作,visudo: command not found的问题便可以解决了。