linux 文件特殊權限
SUID:set UID
簡介:
SUID權限只對二進制程序有效
執行者對於該程序需要具有可執行權限
本權限僅在執行該程序的過程有效,執行者將具有該程序擁有者的權限
在文件擁有suid權限時,用戶只要有執行這個文件的權限就會獲得這個文件的屬主權限
SGID
簡介:
user對此目錄具有r與x的權限時,該用戶能夠進入此目錄
user在此目錄下的有效羣組將會變成該目錄的羣組
user若在此目錄具有w的權限,則使用者所建立的新檔案的羣組與此目錄的羣組相同
Sticky bit(只針對目錄有效)
簡介:
用戶對此目錄具有w,x權限,即具有寫入權限時,在該目錄下建立檔案或者目錄時,僅有自己與root纔有權力刪除
這裏就先討論 SUID
建立一個文件,只有root有權限讀寫
xuebaiji@xbzy007:~/tmp$whoami xuebaiji xuebaiji@xbzy007:~/tmp$ll /tmp/test.txt -rw------- 1 root root 26 Feb 23 18:05 /tmp/test.txt xuebaiji@xbzy007:~/tmp$cat /tmp/test.txt cat: /tmp/test.txt: Permission denied xuebaiji@xbzy007:~/tmp$cat /tmp/test.txt cat: /tmp/test.txt: Permission denied xuebaiji@xbzy007:~/tmp$sudo cat /tmp/test.txt hello xbzy007 SUID test
準備一個簡單的程序,讀取上面的文件
xuebaiji@xbzy007:~/tmp$cat test.c #include "stdio.h" int main() { FILE *fp; char ch; if((fp=fopen("/tmp/test.txt","r"))==NULL) { printf("file cannot be opened\n"); exit(1); } while((ch=fgetc(fp))!=EOF) fputc(ch,stdout); fclose(fp); }
編譯程序運行
xuebaiji@xbzy007:~/tmp$sudo gcc -o test-c test.c xuebaiji@xbzy007:~/tmp$ xuebaiji@xbzy007:~/tmp$./test-c file cannot be opened
提示打不開,因爲只有root 才能讀取該文件
下來給二進制程序加上suid 權限,在看看
xuebaiji@xbzy007:~/tmp$sudo chmod u+s test-c xuebaiji@xbzy007:~/tmp$./test-c hello xbzy007 SUID test xuebaiji@xbzy007:~/tmp$
哈哈 ,奇蹟出現了,順利讀取出來了文件內容,到此 SUID 實驗完成,不知道你看了是不是有所收穫呢
後面將演示其他的特殊權限的使用,3KS