![sudo 到同一个普通用户,无需身份验证](https://linux22.com/image/586902/sudo%20%E5%88%B0%E5%90%8C%E4%B8%80%E4%B8%AA%E6%99%AE%E9%80%9A%E7%94%A8%E6%88%B7%EF%BC%8C%E6%97%A0%E9%9C%80%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81.png)
我的脚本在以 root 身份执行时,使用 sudo 而不使用 passwd,这很好。但有时我必须以普通用户身份执行该脚本,该脚本通过该 sudo 命令“切换”到自身。在这种情况下,我也必须省略 passwd 过程。
目前我使用默认的(几乎为空的)sudoers 文件。我想用一个简单的、通用的、非用户特定的规则来扩展它。
我尝试使用 * 和 ALL 设置一些通配符规则,但失败了。
感谢您的帮助。
答案1
假设必须执行该脚本的用户是someuser
,那么该脚本的完整路径是/usr/local/bin/somescript
。
使用visudo
,添加以下行
someuser ALL=(someuser) NOPASSWD: /usr/local/bin/somescript
要执行此操作(如果脚本位于$PATH
:,则可以省略完整路径):
someuser@somehost:~$ sudo -u someuser /usr/local/bin/somescript
sudo
但是……为什么你不能在不使用 sudo 的情况下执行该命令?这样调用它和不这样调用它应该没什么区别sudo
更新
如果需要允许所有用户以任何用户身份执行任何命令,请将以下行(但请注意,这是一个完全不安全且有风险的配置。这将允许任何用户(第一列)在任何机器(不重要,第二列)上以任何用户(第三列,括号之间)的身份执行任何命令(第四列)
ALL ALL=(ALL) ALL
答案2
您想要执行一个以 root 身份运行的脚本,但允许非特权用户运行它。这意味着您应该启用setuid 位。