Linux

如果通過 sudo 執行 setuid 程序,有哪些有效權限?

  • January 24, 2022

setuid我已經閱讀了許多有關該位如何工作以及如何工作的問題和答案sudo,並且我想我已經理解了這些內容。

但是,如果該程序本身俱有setuidbit set,我無法找出通過 sudo 執行程序時會發生什麼。這個問題最好用一個例子來解釋:

在有問題的系統上,有一個名為user1. 系統已sudo正確安裝和配置,以便root使用者可以按照他想要的任何不同使用者執行程序。此外,有一個程序/usr/bin/exampleprogroot:wheeland 位擁有setuidsetgid設置:

root@morn ~ # dir /usr/bin/exampleprog
-rwsr-sr-x 1 root wheel 92K 2017-11-16 23:42 /usr/bin/exampleprog

現在我以 root身份登錄並執行以下命令:

root@morn ~ # sudo -u user1 /usr/bin/exampleprog

那會發生什麼?exampleprog是執行為user1(正如給定的選項所預期的那樣sudo),還是以 root 執行(因為執行檔歸 root 所有並設置了它的位setuid)?

為了讓事情變得更複雜,還有一個額外的程序/usr/bin/wrapper,也由 擁有,root:wheel沒有和位:setuid``setgid

root@morn ~ # dir /usr/bin/wrapper
-rwxr-xr-x 1 root wheel 15K 2017-11-16 23:42 /usr/bin/wrapper

程序在wrapper執行時,會在某個時候執行(生成)/usr/bin/exampleprog

現在我執行:

root@morn ~ # sudo -u user1 /usr/bin/wrapper

wrapper生成時exampleprog,後者將作為user1還是作為root

您可以通過將id程序複製到某處並更改其權限來進行試驗。這將顯示exampleprog以 root 的有效 uid 和對應於 的真實 uid 執行user1

考慮一下如果您以身份登錄user1並執行會發生什麼exampleprog:由於後者是 suid root,您希望它以有效的 uid 執行。當您通過sudo.

引用自:https://unix.stackexchange.com/questions/687676