![我希望用户使用 sudo 运行 bash 脚本](https://linux22.com/image/674081/%E6%88%91%E5%B8%8C%E6%9C%9B%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%20sudo%20%E8%BF%90%E8%A1%8C%20bash%20%E8%84%9A%E6%9C%AC.png)
这是学校作业。我有一个可以运行的 Bind9 和 Apache2 服务器。我编写了 3 个脚本,对配置文件进行了适当的更改
- DNS 添加区域
- DNS 添加记录
- HTTP 添加虚拟主机
它们存储在 中/etc/scripts
。这些脚本可由 root 编辑。用户检查需要它们来运行,sudo
因此这应该可行。
check@dennis:~$ bash /etc/scripts/dns_add_record
但是我收到“许可被拒绝”的通知。
脚本的权限如下:
-rwsr-xr-x 1 root root 1875 Jan 3 03:31 dns_add_record.sh
-rwxr-xr-x 1 root root 2103 Jan 3 03:53 dns_add_zone.sh
-rwxr-xr-x 1 root root 1276 Jan 3 04:45 http_add_vhost.sh
我已将此规则添加到/etc/sudoers
:
check ALL=(ALL) NOPASSWD: /etc/scripts/dns_add_zone.sh
我是不是在看什么东西?
答案1
您需要输入 sudo,然后输入命令。因此:
sudo bash脚本路径
现在您只是使用检查用户执行它们,而不是使用 sudo。
答案2
您需要执行
sudo /etc/scripts/dns_add_zone.sh
顺便说一句,dns_add_record.sh 上有一个不必要的 +s 位,您应该执行chmod u-s /etc/scripts/dns_add_record.sh
它来删除它。您还应该删除用户的读取权限,他们不应该能够读取脚本来确定是否存在可利用的问题。如果 /etc/scripts 中的所有脚本都是 sudo 脚本,请执行chmod go= /etc/scripts/*.sh
。
答案3
我找到了解决方案。需要添加检查到 sudo 组并注销系统