Set-UID
Set-UID是Unix系統中一個重要的安全機制。當一個Set-UID程序運行的時候,它被假設爲具有擁有者的權限。例如,如果程序的擁有者是root,那麼任何人運行這個程序時都會獲得程序擁有者的權限。
從上面可以看出,將passwd拷貝後,權限發生變化,在原來目錄下suid位被設置,復件沒有了修改密碼的權限。
對於su sudo命令也同樣不再具有root權限。
可以看出/bin/bash有某種內在的保護機制可以阻止Set-UID機制的濫用。
system(const char * cmd)
系統調用函數被內嵌到一個程序中執行一個命令,system()調用/bin/sh來執行shell程序,然後shell程序去執行cmd命令。但是在一個Set-UID程序中system()函數調用shell是非常危險的,這是因爲shell程序的行爲可以被環境變量影響,比如PATH;而這些環境變量可以在用戶的控制當中。通過控制這些變量,可以控制Set-UID程序的行爲。