无需输入密码即可执行shell脚本

无需输入密码即可执行shell脚本

我想执行一个需要 root 权限的脚本,但不需要输入密码。有类似的问题/答案,但似乎对我都不起作用。

我将脚本放在 /home/kf/bin 中(我自己添加了 bin 目录)并将该目录包含在我的路径中,以便我可以从任何地方运行它。

剧本:trim.sh

#! /bin/sh
sudo fstrim -v /

我将脚本的所有权更改为root

 sudo chown root:root /home/kf/bin/trim.sh

并使其可执行

sudo chmod 700 /home/kf/bin/trim.sh

接下来我在 sudoers 文件中添加了一行visudo

kf   ALL=(ALL) NOPASSWD: /home/kf/bin/trim.sh

当我再次登录并执行脚本时,trim我仍然需要输入密码。我知道我可以为此创建一个 cron,但我还希望能够手动执行脚本而无需输入密码。任何帮助表示感谢。

编辑:

我的 sudoers 文件如下所示:

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin: /usr/bin:/sbin:/bin"

root    ALL=(ALL:ALL) ALL
kf   ALL=(ALL) NOPASSWD: /home/kf/bin/trim.sh

%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

答案1

将 sudoers 文件中的行更改为:

kf   ALL=(ALL) NOPASSWD: /sbin/fstrim

我不建议在中添加脚本/etc/sudoers,因为该脚本可以被更改,并且每个命令(整个脚本)都会以 root 权限执行。

答案2

你正在寻找的是设置用户标识位,它允许用户以其所有者的权限执行程序。

/!\ 一定要小心使用,由于它暴露的安全问题,它通常是一个糟糕的解决方案。

相关内容