權限管理-文件特殊權限-SetGID

1. SetGID針對文件的作用

  • 對文件使用SetGID前提條件
    只有可以執行的二進制程序才能能設置SetGID權限
    命令執行者要對該程序擁有x(執行)權限
  • SetGID權限的作用
  • 命令執行在執行程序的時候,組身份升級爲該程序文件的屬組
  • SetGID權限同樣只在該程序執行過程中有效,也就是說組身份改變只在程序執行過程中有效
    舉個栗子:
    locate命令,使用這個命令的時候其實是去locate搜索
    Locate命令相比find命令快的原因是locate是搜索的是mlocate.db這樣的一個數據庫,這個文件會記錄當前系統所有文件的文件名。find相當於把整個磁盤都掃描了一遍,慢但準確率更高,功能更強大。通過locate命令來搜索這個數據庫。
    在這裏插入圖片描述
    在這裏插入圖片描述
    進行分析: locate.db命令是是在mlocate.db數據庫中搜索文件,但是mlocate.db本身是沒有對其他人是沒有讀寫執行權限的,但是因爲locate有setGID權限,普通用戶在執行locate這個命令時,組身份升級爲該程序文件的屬組,又因爲locate控制的是mlocate.db這個文件,並且這個文件對所屬組mlocate.db具有讀權限。
  • (1) /usr/bin/locate是科執行的二進制程序,可以賦予SetGID
    (2) 用戶對/usr/bin/locate命令擁有執行權限
    (3) 執行/usr/bin/locate命令時,組身份會升級爲slocate組,而slocate組對/var/lib/mlocate/mlocate.db數據庫擁有r權限,所以普通用戶可以使用locate命令查詢mlocate.db數據庫
    (4) 命令結束後,普通用戶的組身份又恢復爲自己原來的組身份

2.SetGID針對目錄的作用

  • 普通用戶必須對此目錄擁有r和x權限,才能進入此目錄
  • 普通用戶在此目錄中的有效組會變成此目錄的屬組
  • 若普通用戶對此目錄擁有w權限時,新建的文件的默認屬組時扎個目錄的屬組

舉個栗子:
在root用戶中,在/tmp下建立一個test的目錄,給這個目錄賦予setGID權限,同時給test 777的權限。然後再全換成st用戶,再/tmp/test下創建一個文件,看一下它的所屬組是誰???再/tmp/test/下新建的文件的所屬組跟test目錄的所屬組一樣都是root.而不是st
在這裏插入圖片描述
小提示:(1)對目錄r(ll命令)x(可以執行cd命令)
               (2)setGID權限對目錄就沒有這麼危險
               (3)這個在實際工作中的意義不大
(4)這個權限還是針對二進制文件的用處,setGID和setUID不允許普通用戶或者自己來修改某個命令的suid,而是系統利用了suid,sgid這些權限,來完成這些必須給普通用戶分配權限,比如說設置密碼,locate搜索數據庫這樣的命令。這兩個命令還是比較危險的,所以小心,不要沒事幹,給二進制文件賦予這兩個權限。

3.設定SetGID

  • 2代表SetGID
    命令:chmod 2755 文件名
    命令:chmod g+s 文件名

4.取消SetGID

  • 命令:chmod 755 文件名
    命令:chmod g-s 文件名
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章