Linux下sudo报错
1. sudo: XXX: command not found
其中,XXX 是所运行的程序命令。
-
问题:直接运行
XXX程序命令时没有问题,但加上超级权限sudo就报错command not found。 -
原因:使用 sudo 命令时,使用的配置文件是
/etc/sudoers,查找可运行程序命令由/etc/sudoers文件中的$secure_path环境变量指定,所以即使系统环境变量$PATH中有XXX程序命令的路径,sudo XXX也会报错。 -
解决:
- 直接将程序命令所在目录(必须是绝对路径,不能带环境变量)追加到
/etc/sudoers文件中的$secure_path变量,即/etc/sudoers文件中如下位置(由于/etc/sudoers文件是只读文件,所以这种强制修改方式不太好):
1 Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
- 查看
/etc/sudoers文件中的$secure_path变量,该变量包含的所有目录下的程序命令都可以被 sudo 查看到,于是我们就可以创建程序命令 XXX 的软连接到$secure_path变量包含的任意目录下,比如在目录/usr/local/bin下创建 XXX 的软链接:
1 sudo ln -s path_of_XXX /usr/local/bin # path_of_XXX 为程序命令 XXX 的路径
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 お前はどこまで見えている!
评论
WalineTwikoo








