[英]How to create file as another user via C/C++ in Linux?
Linux下C / C ++具有open
或fopen
API,但創造是屬於處理UID文件。
如果我們想要更改此文件的所有者/組,我們可以在創建文件后使用chown
或fchown
API。
但是,是否有一個API用於創建另一個用戶的文件,而不是兩個API?
沒有專用的Unix api,但您可以在創建文件之前將當前用戶更改為其他用戶,例如:
確保你有權限。 當前有效用戶必須是“root”或在可執行文件上設置用戶或組ID。
將setgid
和setuid
調用給其他用戶。
創建文件。
如果需要,請將setuid
和setgid
調用給舊用戶。
因為用戶是進程范圍的,所以如果你的程序是多線程的,你可能需要分叉子進程執行我之前列出的步驟。
但是,如果您希望非root用戶(例如nobody)運行您的程序,您可以授予您的可執行文件的權限:
sudo chown root:root ./your_app && sudo chmod gu+s ./you_app
現在,您可以調用setuid(0)
和setgid(0)
來獲取root權限。
這在Linux中是不可能的。
允許這可能會導致一些微妙的安全漏洞(遠程代碼執行,破壞其他用戶的文件等),因此是不允許的。
相反,請在sudo
下運行該過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.