Privileges

linux 應用程序的權限

  • January 28, 2015

如果我在 Linux 上編寫程序,我有兩種方法可以配置程序執行的權限:

  • 它可以以呼叫者的權限執行(執行程序的人)
  • 我可以使用 setuid,所以它可以以我的權限執行

是否有任何其他選項可以配置程序在 Linux 上執行的權限?

單獨的 Linux 特權稱為“能力”。對功能的完整描述可能太多了,但作為您提到的兩個選項的替代方案,您可以設置基於文件的功能,為非特權使用者提供管理權限:

[root@localhost]/home# setcap cap_chown+ep /bin/chown
[root@localhost]/home# sudo -iu testUser
[testUser@localhost ~]$ ll /etc/rc.local 
-rwxr--r--. 1 root root 0 Jan 27 22:29 /etc/rc.local
[testUser@localhost ~]$ chown testUser /etc/rc.local
[testUser@localhost ~]$ ll /etc/rc.local 
-rwxr--r--. 1 testUser root 0 Jan 27 22:29 /etc/rc.local
[testUser@localhost ~]$ 

正如您在上面看到的,chown在這個系統上執行的任何人都將擁有執行此操作所需的權限(“CAP_CHOWN”),因為setcap我執行了。+ep您可以通過將其從 an 更改為 an+ei並在登錄時僅將權限授予特定使用者使用來獲得更多選擇性pam_cap.so

應該注意的是,以上chown內容不是以 root 身份執行的,而是以我原本沒有特權的使用者身份執行的。如果使用者執行除此程序之外的任何程序,他們將沒有此權限,並且如果修改了執行檔,則所有基於文件的功能都將被清除。

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