linux 特殊權限 之 SUID 實例

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










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章