Ubuntu

如何讓使用者執行 root 擁有的腳本?Setuid 似乎不再起作用

  • February 27, 2014

我有一些與使用者“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 rootand sudo chmod 4777。這樣,使用者現在可以執行二進製文件並執行 root 擁有的腳本。

但是現在我安裝了 Ubuntu 13.10,當我執行該二進製文件時,我得到腳本的“權限被拒絕”。

自 12.04 以來,這方面是否有可能發生變化?

我能做些什麼?

最簡單和最乾淨的解決方案可能是使用sudo.

您可以將其配置為允許給定的 unix 組以 root 身份執行此腳本。

%iptablegroup ALL = (root) NOPASSWD: /path/to/script 

然後您所要做的就是將所需的使用者添加到該組中,一切都應該沒問題。

引用自:https://unix.stackexchange.com/questions/117125