是否可以使用一組C庫或系統調用來刪除POSIX上的所有用戶權限,或者至少在Linux上?請注意,我不問如何刪除root
特權,這是所有其他StackOverflow搜索結果似乎要求和回答的內容。將特權作爲普通的非root用戶進行沙盒操作?
我想要切換到用戶nobody
相同的效果,但如果可能的話更強。也就是說,我希望我的C應用程序執行以下操作:
- 運行作爲一個普通用戶,不
root
,沒有了setuid文件的權限位 - 保留訪問特定文件和開放傳出的能力在指定(或全部)目錄的網絡連接
- 自願和永久失去讀寫文件的能力,尤其是
$HOME
- 如果可能的話,放棄或沙箱的所有其他不必要的能力,就像打開一個監聽套接字
事情我至今認爲不符合該法案:
- 切換到用戶
nobody
與setuid
/setgid
- 普通用戶切換到禁止其他用戶(如
nobody
),並且該應用程序不應該要求root
只是切換到nobody
。
- 普通用戶切換到禁止其他用戶(如
- Linux/POSIX.1e Capabilities
- 能力只會增加
root
般的特權,不能帶走普通用戶的權限
- 能力只會增加
- 傳統seccomp
- 我的應用程序將需要的不僅僅是
exit
,sigreturn
更多,read
和write
- 我的應用程序將需要的不僅僅是
東西看起來有趣,但我找不到文件,似乎是無人維護,或出現不可移植:
那麼是否有一個記錄完善,最好是便攜式的方式來放棄不重要的用戶權限和沙箱過程,而不必首先變成root
?
你有沒有考慮類似cgroups/namespaces? –
請澄清您的具體問題或添加其他詳細信息,以突出顯示您的需要。正如目前所寫,很難確切地說出你在問什麼。請參閱「如何問問」頁面以獲取有關澄清此問題的幫助。 –
@self強烈反對。這是一個經過深入研究的問題,它有一個很好的描述和一系列相近的事情,但並不真正適合這個解決方案。這實際上是我在很長時間內看到的最好的書面問題之一。 – viraptor