#include
#include
#include
#include
#include
#include
intmain
(void)if
(write
(fd,buf,18)
==-1)
system
("cat eff_real.txt");
return0;
}
這段程式用來對乙個由 root 建立、名為 eff_real.txt 的文字檔案進行寫操作。
在 root 下,執行兩次 gcc 命令,分別生成兩個不同名字的可執行檔案 eff_real 和 eff_real_2 ,如下:
在上圖可以看到使用者 linlibo 對 eff_real.txt 沒有寫許可權。
使用chmod命令對可執行檔案 eff_real 設定 suid 位,如下:
上圖可以看出:可執行檔案 eff_real 的檔案所有者的許可權由 rwx 變成了 rws 。
接下來,使用 linlibo 登陸終端,分別執行 eff_real (設定了suid位) 和 eff_real_2 (沒有設定suid位) ,結果如下:
結論:使用者 linlibo 在執行 eff_real (設定了suid位) 對 eff_real.txt 寫入時,其有效使用者暫時變成了 root ,所以 linlibo 才能對 eff_real.txt 進行寫操作。
linux下粘滯位引出的SUID和SGID
許可權字母表示 r 讀許可權 檢視檔案中的資料 檢視目錄的內容 w 寫 修改許可權 修改檔案以及刪除 在目錄內建立或刪除物件 x 執行許可權 執行程式 進入目錄 許可權數字表示 0 x 1 w 2 wx 3 r 4 r x 5 rw 6 rwx 7 故 bin bash的許可權集合的數字表示為 75...
Linux下SUID的學習
在unix環境高階程式設計中,獲取程序的使用者id有兩種方法 uid t getuid void 呼叫程序的實際使用者id uid t geteuid void 呼叫程序的有效使用者id什麼是有效使用者id跟實際使用者id,這裡可能有點迷惑,在普通情況下,實際使用者id就是有效使用者id,其實簡單來...
Linux系統的 粘滯位 sgid和suid
粘滯位 o t 針對目錄賦權,目錄中建立的檔案只有建立者才可以刪除 命令 chmod o t 目錄名 刪除許可權用減即可 sgid g s 針對目錄建立許可權,在該目錄中建立的檔案所屬組繼承父目錄的屬組 命令 chmod g s 目錄名 刪除許可權用減即可。suid u s 針對可執行檔案建立。誰執...