【許可權管理-檔案特殊許可權 】
8.2.1 setuid
8.2.2 setgid
8.3.3 sticky bit
◆ suid
◇ setuid的功能與條件
① 只有可以執行的二進位制程式才能設定suid許可權
② 命令執行者要對該程式擁有x(執行)許可權
③ 命令執行者在執行該程式時獲得該程式檔案屬主的身份(在執行程式的過程中靈魂附體為檔案的屬主)
④ setuid許可權只在該程式執行過程中有效,也就是說身份改變只在程式執行過程中有效
passwd命令擁有setuid許可權,所以普通可以修改自己的密碼
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd
cat命令沒有setuid許可權,所以普通使用者不能檢視/etc/shadow檔案內容
[root@localhost ~]# ll /bin/cat
-rwxr-xr-x 1 root root 47976 6月 22 2012 /bin/cat
◇ 設定setuid的方法
數字4代表suid
擴充套件:之前說的表示許可權的3個數字(例如 755,777)其實是不完整的,其實前面還有乙個數字。
有三種情況:4755(suid),2755(sgid),1755(sbit),7755(同時擁有前面三個,一般不這麼用) 。
chmod 4755 檔名
chmod u+s 檔名
案例:建立乙個空檔案並檢視其預設許可權,結果是644
現在要給這個檔案設定suid,使用 chmod 4755 abc即可
上面的abc不是可執行程式,如果是的話,任何乙個使用者在操作的時候就可以獲得root許可權。
◇ 取消setuid的方法
chmod 755 檔名
chmod u-s 檔名
◇ 危險的setuid
① 關鍵目錄應嚴格控制寫許可權。比如「/」、「/usr」等
② 使用者的密碼設定要嚴格遵守密碼三原則
③ 對系統中預設應該具有setuid許可權的檔案作一列表,定時檢查有沒有這之外的檔案被設定了setuid許可權
例如/etc/shadow等等所有的重要檔案,或者系統的配置檔案。這樣會很危險!!
◆ sgid
◇ setgid針對檔案的作用
① 只有可執行的二進位制程式才能設定sgid許可權
② 命令執行者要對該程式擁有x(執行)許可權
③ 命令執行在執行程式的時候,組身份公升級為該程式檔案的屬組
④ setgid許可權同樣只在該程式執行過程中有效,也就是說組身份改變只在程式執行過程中有效
為什麼普通使用者可以使用 locate 命令呢?
[root@localhost ~]# ll /usr/bin/locate
-rwx--s--x 1 root slocate 35612 8月 24 2010 /usr/bin/locate
[root@localhost ~]# ll /var/lib/mlocate/mlocate.db
-rw-r----- 1 root slocate 1838850 1月 20 04:29 /var/lib/mlocate/mlocate.db
過程分析:
* /usr/bin/locate是可執行二進位制程式,可以賦予sgid
* 執行使用者lamp對/usr/bin/locate命令擁有執行許可權
* 執行/usr/bin/locate命令時,組身份會公升級為slocate組,而slocate組對/var/lib/mlocate/mlocate.db資料庫擁有r許可權,所以普通使用者可以使用locate命令查詢mlocate.db資料庫
* 命令結束,lamp使用者的組身份返回為lamp組
◇ setgid針對目錄的作用和條件(實際操作中的意義不大)
* 普通使用者必須對此目錄擁有r和x許可權,才能進入此目錄
* 普通使用者在此目錄中的有效組會變成此目錄的屬組
* 若普通使用者對此目錄擁有w許可權時,新建的檔案的缺省屬組是這個目錄的屬組
案例解說:
在/tmp 目錄下建立乙個目錄,並且賦予2777許可權(sgid,同時777)
切換到使用者rx,然後先在家目錄新建乙個檔案,檢視該檔案的所屬組是預設的rx
但是,現在到剛才設定了sgid的目錄 /tmp/test 目錄下新建乙個檔案,再檢視所屬組:
結果顯示,在這個目錄新建的檔案的所屬組不是rx,而是這個目錄的所屬組root.
設定setgid (2代表sgid )
chmod 2755 檔名
chmod g+s 檔名
取消setgid
chmod 755 檔名
chmod g-s 檔名
◆ sticky+bit
◇ sbit粘著位作用
* 粘著位目前只對目錄有效
* 普通使用者對該目錄擁有w和x許可權,即普通使用者可以在此目錄擁有寫入許可權
* 如果沒有粘著位,因為普通使用者擁有w許可權,所以可以刪除此目錄下所有檔案,包括其他使用者建立的檔案。一但賦予了粘著位,除了root可以刪除所有檔案,普通使用者就算擁有w許可權,也只能刪除自己建立的檔案,但是不能刪除其他使用者建立的檔案
◇ 一般最多設定的就是 /tmp 目錄。
[root@localhost ~]# ll -d /tmp/
drwxrwxrwt. 3 root root 4096 12月 13 11:22 /tmp/
測試一下:
使用使用者rx 在/tmp 下建立乙個檔案,然後切換到另乙個使用者嘗試刪除這個檔案就會出錯。
但是明顯這個使用者對/tmp 目錄是有執行許可權的。
◇ 設定與取消粘著位
設定粘著位
chmod 1755 目錄名
chmod o+t 目錄名
取消粘著位
chmod 777 目錄名
chmod o-t 目錄名
linux 學習筆記 檔案許可權管理篇
chown chown r mysql.usr local 把 usr local 以及其下的所有的檔案和子目錄屬主改為mysql ls al 用這條命令查詢 chgrp chgrp r mysql usr local 把 usr local 以及其下的所有檔案和子目錄屬主改為 mysql 刪除使用...
Linux檔案許可權管理
linux下面所有的檔案儲存都是以檔案的形式儲存,用ls指令就可以檢視當前目錄下所有檔案的許可權 這個許可權是你現在使用的登入者身份下的許可權哦,也就是說,你以不同的身份登入時,許可權有可能是不一樣的 舉乙個例子 rw r r 1 root root 43240,sep4 18 23 install...
Linux檔案許可權管理
在linux工作目錄中開啟終端,輸入指令ll,會出現當前目錄中所有檔案的詳細資訊,其中第一列的字段當中就包括了檔案的操作許可權。我們可以看到,第一列出現了10個字元,第乙個字元代表了檔案型別,後面的九個字元就代表的是檔案的操作許可權。首先我們要明白這裡對檔案訪問者進行了分類,前三個字元代表了檔案的所...