Permissions
來自維基百科的 setuid 範例:4700
我在 Wikipedia 上閱讀有關setuid 的資訊。其中一個例子如下:
4700
“root”擁有的執行檔上的 SUID
名為“tails”的使用者嘗試執行該文件。文件所有者是“root”,並且所有者的權限是可執行的——因此文件以 root 身份執行。
如果沒有 SUID,使用者“tails”將無法執行該文件,因為不允許該文件上的組或其他人擁有任何權限。
/usr/bin/passwd
在二進製文件中可以看到它的預設用法。我不明白這個。使用者“tails”怎麼能執行這個文件,因為他不是文件的所有者,並且組和其他權限不可用?
我試圖重新創建這個場景,並且確實:
$ su -c 'install -m 4700 /dev/null suidtest' $ ls -l suidtest -rws------ 1 root root 0 21 dec 07:48 suidtest* $ ./suidtest bash: ./suidtest: Permission denied
我只有使用
4755
. 此外,Wikipedia 上的範例中提到的預設用法(the/usr/bin/passwd
)實際上具有4755
權限。該範例是否正確,我是否遺漏了什麼,或者這是一個錯誤?
你是對的,維基百科的文章是錯誤的。請參閱下面的範例:
$ ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd $ sudo cp /usr/bin/passwd /tmp/ $ cd /tmp $ ls -l passwd -rwxr-xr-x 1 root root 30768 Dec 21 07:43 passwd $ sudo chmod 4700 passwd $ ls -l passwd -rws------ 1 root root 30768 Dec 21 07:43 passwd $ ./passwd bash: ./passwd: Permission denied $ sudo chmod 4701 passwd $ ./passwd Changing password for user vagrant. Changing password for vagrant. (current) UNIX password: $