簡體   English   中英

如何在Linux中通過C / C ++創建文件作為另一個用戶?

[英]How to create file as another user via C/C++ in Linux?

Linux下C / C ++具有openfopen API,但創造是屬於處理UID文件。

如果我們想要更改此文件的所有者/組,我們可以在創建文件后使用chownfchown API。

但是,是否有一個API用於創建另一個用戶的文件,而不是兩個API?

沒有專用的Unix api,但您可以在創建文件之前將當前用戶更改為其他用戶,例如:

  1. 確保你有權限。 當前有效用戶必須是“root”或在可執行文件上設置用戶或組ID。

  2. setgidsetuid調用給其他用戶。

  3. 創建文件。

  4. 如果需要,請將setuidsetgid調用給舊用戶。

因為用戶是進程范圍的,所以如果你的程序是多線程的,你可能需要分叉子進程執行我之前列出的步驟。

但是,如果您希望非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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM