2014-01-26 60 views
0

當程序缺乏權限時setuid正在使用中,用戶設置suid位使其成爲更高級別的特權用戶。例如 例如更改當前密碼的passwd命令。 該命令有一個suid位,允許編輯/ etc/passwd和/ etc/shadow。setuid如何工作

從安全角度來看,任何人都可以設置suid位並獲得特權嗎?

+1

http://www.techrepublic.com/blog/it-security/understand-the-setuid-and-setgid-permissions-to-improve-security/#。 – MLSC

+0

您是否閱讀過wikipage [setuid](http://en.wikipedia.org/wiki/Setuid)? –

回答

1

如您所述,setuid位爲程序提供了標誌升級特權,以修改普通用戶無法修改的部分系統。

根據安全模型,這可以從完全根訪問到特定特權。通常只有root用戶可以更改setuid位,就好像任何人都可以設置它一樣,那麼任何人都可以擁有根權力。

不建議在沒有進行某種安全審計的情況下在任意程序上設置setuid位,因爲這會引起系統整體安全性的弱點。

+0

如果只有root可能是root,爲什麼會有setuid系統調用? – user3061385

+0

'setuid'在那裏,因此可以設置特定的程序,以便在無權訪問受限制文件的普通用戶運行時提升其權限。否則,使用密碼示例,如果'passwd'無法更改系統密碼文件,普通用戶永遠不能更改其密碼。 –

1

如何setuid的確實工作

這不是一個容易回答的問題,因爲該行爲的各種BSD版本和* nix的不同而有所不同。

我讀過的最好的解釋是陳,迪恩和瓦格納的Setuid Demystified。這裏的紙是如何開始的:在Unix系統

訪問控制主要是基於用戶ID,然而 系統調用修改用戶ID(UID-設置系統調用),如 setuid的,設計不當,記錄不充分,並且被廣泛誤解和濫用。


做任何人都可以設置SUID位,獲得特權

我不知道問題是什麼。

下面是一個可能的解釋:任何人都可以在可執行文件中設置位?如果您擁有chmod的文件,您可以設置該位。運行程序的人將在您的權限下執行程序。

這是另一個:如果您有權執行該文件,那麼您將收到文件所有者的許可。大多數情況下,這是根,但它可以是另一個用戶。

這裏還有一個:你可以設置文件/usr/binechoroot擁有的位?答案可能不是。


這裏是一塊瑣事:執行下的文件所有者的權限,而不是調用者的權限的文件是由貝爾實驗室和丹尼斯·裏奇於1979年獲得專利的概念:Protection of data file contents, United States Patent #4,135,240