Privileges
linux 應用程序的權限
如果我在 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 身份執行的,而是以我原本沒有特權的使用者身份執行的。如果使用者執行除此程序之外的任何程序,他們將沒有此權限,並且如果修改了執行檔,則所有基於文件的功能都將被清除。