2015-05-13 14 views
1

many places記載setuid位使普通用戶能夠使用執行所有者的權限而不是他自己的權限運行可執行文件。setuid位在* nix中實際如何實現?

但是,我還沒有找到任何地方記錄了setuid位的實現。

這是我的猜測。

  1. 當命令從bash,它使fork然後exec系統調用。
  2. 控制權交給內核,內核檢查exec參數上的setuid位。
  3. 如果內核發現該位已設置,則它會開始將新進程的euid設置爲文件所有者,然後啓動新進程。
  4. 該進程通常以文件所有者的權限退出。
  5. 原始bash進程從未獲得root權限。

這是接近於它是如何在實際中實際實現的,還是它是一組不同的步驟?

+2

是的,這是正確的。閱讀[execve(2)](http://man7.org/linux/man-pages/man2/execve.2.html) –

+0

@BasileStarynkevitch,感謝您的參考。我只看過'exec'的手冊頁。 – merlin2011

回答

0

是的,這是正確的。閱讀execve(2) - 巴西爾Starynkevitch