Linux
如果通過 sudo 執行 setuid 程序,有哪些有效權限?
setuid
我已經閱讀了許多有關該位如何工作以及如何工作的問題和答案sudo
,並且我想我已經理解了這些內容。但是,如果該程序本身俱有
setuid
bit set,我無法找出通過 sudo 執行程序時會發生什麼。這個問題最好用一個例子來解釋:在有問題的系統上,有一個名為
user1
. 系統已sudo
正確安裝和配置,以便root
使用者可以按照他想要的任何不同使用者執行程序。此外,有一個程序/usr/bin/exampleprog
由root:wheel
and 位擁有setuid
並setgid
設置: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
.