Ubuntu
如何讓使用者執行 root 擁有的腳本?Setuid 似乎不再起作用
我有一些與使用者“root”一起使用的 bash 腳本來管理 iptable 規則。
問題是我同時想要這些東西:
- 該腳本必須由 root 擁有
- 權限必須為 700
- 我想要一個特定使用者可以執行的可執行二進製文件。該執行檔將以 root 身份執行上述腳本。
這曾經有效,並且仍然是我在舊發行版中使用的:
#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; }
所以我編譯這個然後使用
sudo chown root
andsudo chmod 4777
。這樣,使用者現在可以執行二進製文件並執行 root 擁有的腳本。但是現在我安裝了 Ubuntu 13.10,當我執行該二進製文件時,我得到腳本的“權限被拒絕”。
自 12.04 以來,這方面是否有可能發生變化?
我能做些什麼?
最簡單和最乾淨的解決方案可能是使用
sudo
.您可以將其配置為允許給定的 unix 組以 root 身份執行此腳本。
%iptablegroup ALL = (root) NOPASSWD: /path/to/script
然後您所要做的就是將所需的使用者添加到該組中,一切都應該沒問題。