對於特殊權限
SUID 只針對二進制可執行文件,使用擁有SUID權限的文件發現其中記錄的程序時以文件擁有着的身份去執行
SGID針對二進制可執行文件 該命令發起的程序是以該命令所有組的身份去執行 針對目錄:目錄新建文件的所屬組與該目錄的所有組保持一致
STICKYID 對於文件:表示文件即使沒有被程序調用也會被加載到交換空間中 針對目錄:當目錄上有STICKYID的權限時 所有用戶在該目錄下均可創建文件 但只有文件擁有着和root用戶可以刪除該目錄下的文件
我們先在mnt下新建一個pub目錄 給於777權限 我們對這個目錄的權限進行監控並且我們對裏面的內容進行顯示爲了方便大家對這裏面的變化進行觀察 對這個命令進行實時監控 回車進行執行
因爲pub目錄的權限時777權限所以所有人都可以在裏面建立文件 我們切換到westos用戶建立文件 可以看到誰建立的文件就屬於誰
在切換到lee用戶 創建文件
我們是否可以刪除自己的文件
能不能刪除別人創建的文件 肯定時可以的 因爲pub目錄對於所有人都可以寫
但是在生活中我們這樣做是不合理的 所以我們要限制文件只能被所有人刪除 我們需要用超級用戶去更改這個目錄的權限
然後我們在切換到westos用戶 去操作一遍
切換用戶lee 創建文件
我可以創建自己的文件file1 但是無法刪除westos用戶建立的文件
rm: cannot remove ‘file’: Operation not permitted 操作不被允許
這就是stickyid的作用 對於目錄而言目錄當中的文件只能被自己的所有人刪除掉
SUID和SGID的理解
採用ps ax用戶查看進程信息 -o去指定進程的用戶是誰進程屬於哪個組以及進程的名字是什麼 回車進行執行
我們對整組的命令進行監控
這是一個含有標準庫的可執行文件
我們可以看到這個文件屬於root用戶和root組
我們切換到普通用戶 去執行bin下的cat命令 這個進程屬於誰調用的cat程序就是誰開啓的這個cat程序
默認情況下在系統當中,產生的進程這個進程的所有人和文件的所有人是沒有關係的,是誰去執行了這個動作產生的進程就應該是誰的
如何去設定並令在執行的時候必須用固定身份去執行這就是我們所說的SUID
切換到kiosk用戶去執行cat 發現雖然用戶切換了 在使用二進制產生的進程屬於這個二進制可執行文件的所有人rootn/cat
由此可見 任何人執行這個文件時都是以/bin/cat這個文件的所有人身份去執行的而和是誰發起的沒有關係
對於文件的所屬組依然沒有改變 我們想用文件的所有組去執行 ,就要用到SGID
我們切換到其他用戶再次執行 可以看到雖然我使用kiosk用戶身份去發起cat這個動作但這個進程的所有組卻屬於root而root是這個/bin/cat二進制可執行文件的所有組
我們可以使用這個功能讓身份提升或者下降 對於目前來說使用了SUID和SGID任何人執行cat時都是以超級用戶的身份去執行
/etc/shadow這個密碼文件對於普通用戶本來是不可以看的 但是現在是可以的
SGID對於目錄的作用 首先我們對mnt進行監控
我們先創建一個目錄westos 可以看到這個目錄屬於root和root用戶組
我們對用戶和所屬組進行修改 給與最大權限
切換到kiosk用戶 創建文件 依然是誰建立的就是誰的
現在要求再westos目錄下創建的文件都要歸屬到westos這個組裏面
依然使用kiosk用戶在westos下創建文件 SGID對於目錄:文件的所屬組就會成爲目錄的所屬組而並非創建的用戶
如何設定SUID和SGID 我們先刪除文件中內容
我們先把文件的改成755 設定SUID和SGID
同樣也可以用數字來表示權限 原來的權限是755 SUID對應的值是4所以是4755 效果時一樣的
SGID SGID對應的值是2
但是2755將之前設置的SUID取消了 要想既有SUID和SGID
設置t權限
或者採用數字的方式