2010-08-08 65 views
3

我有一個程序,它在啓動時以root身份運行一堆任務。之後,它需要放到不同的用戶。如何做到這一點?放棄根特權?

只是想知道,是否有可能在不重新啓動程序的情況下重新獲取root?

+2

請參閱http://stackoverflow.com/questions/3357737/dropping-root-privileges(答案主要與語言無關)。 「 – Gilles 2010-08-08 21:31:36

回答

3

簡短的回答是使用setuid()函數。

切換到非root用戶後,無法重新獲取root權限。

+1

」切換到非root用戶後,無法重新獲取root權限。「事實上,這是丟棄超級用戶權限的全部要點。您想限制程序中任何安全漏洞的影響。如果您可以重新升級,那麼針對您的程序的任何漏洞利用...... – sleske 2010-08-08 21:34:58

+0

@sleske:實際上,如果您的有效UID不是root,並且實現支持_POSIX_SAVED_IDS,則可以重新獲得原始的有效UID。 – ninjalj 2010-08-08 21:38:58