[英]setuid bit on, yet program can't open a superuser file
我有一個由超級superuser.cpp
創建的文件superuser.cpp
,具有訪問權限770
。 現在,超級用戶創建一個文件setuidDemonstration.cpp
在其中使用open("superuser.cpp", O_RDONLY).
.cpp和setuidDemonstration.cpp的目標文件具有權限rwxrwxr-x
。 現在,我的問題是:
當我在正常和超級用戶模式下運行程序setuidDemonstration時,都無法打開superuser.cpp。 為什么? 至少,超級用戶模式應該已經成功打開它。
現在,我執行sudo chmod 4775 setuidDemonstration
。 這應該允許程序即使在正常模式下也可以打開superuser.cpp,因為在運行sudo chmod 4775 setuidDemonstration
時已將setuid位置1,因此在執行過程中它將獲取超級用戶的sudo chmod 4775 setuidDemonstration
。 但卻不能。 另外,當我從普通模式運行時打印euid時,它打印了1000
而不是0
。 為什么?
更新:感謝指出錯誤。 我已經從文件路徑中刪除了“ /”,現在它對超級用戶有效。 但是,即使現在在sudo chmod 4775 setuidDemonstration之后,正常模式下運行程序falis即可打開文件。 請解釋。
因為/superuser.cpp
是文件系統根目錄中的文件名,而不是當前工作目錄中的文件名。 如果文件與運行程序時的路徑相同,請使用superuser.cpp
或./superuser.cpp
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.