Cho*_*per 5 c ubuntu setuid permissions chmod
我有一些与用户“root”一起使用的 bash 脚本来管理 iptable 规则。
问题是我同时想要这些东西:
这曾经有效,并且仍然是我在旧发行版中使用的:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
setuid(0);
system("/root/iptables/my-iptables-script.sh");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以我编译这个然后使用sudo chown rootand sudo chmod 4777。通过这种方式,用户现在可以执行二进制文件并运行 root 拥有的脚本。
但是现在我安装了 Ubuntu 13.10,当我运行那个二进制文件时,我得到了脚本的“权限被拒绝”。
自 12.04 以来,这方面是否有可能发生变化?
我能做什么?
最简单、最干净的解决方案可能是使用sudo.
您可以将其配置为允许给定的 unix 组以 root 身份运行此脚本。
%iptablegroup ALL = (root) NOPASSWD: /path/to/script
Run Code Online (Sandbox Code Playgroud)
然后您所要做的就是将所需的用户添加到该组,一切都应该没问题。