我希望用户使用 sudo 运行 bash 脚本

我希望用户使用 sudo 运行 bash 脚本

这是学校作业。我有一个可以运行的 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 组并注销系统

相关内容