Sustie

主页 所有文章 文章检索

关于sudo的secure_path设置

sudo 有一个名为secure_path的设置,从 sudo 1.9.16 开始,secure_path设置会默认启用。官方博客介绍了这个改动的原因。

当使用 sudo 执行命令的时候,用户当前的环境变量会被修改。其中PATH会被设置为secure_path的值。因此,经常会发生加了sudo之后就找不到命令的情况。解决方法也是非常的简单,要么修改secure_path的值,要么直接删除这个设置,这样 sudo 就不会修改PATH了。

运行sudo visudo,然后删除或者修改下面这一行即可。

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

还有一种方法是使用绝对路径来运行命令,可以用which命令来查看命令的绝对路径。下面是一个例子。

sudo $(which COMMAND)