EduCoder Linux文件/目录高级管理三
本實訓主要講解Linux中文件/目錄的特殊權限和特殊屬性。
Linux系統中文件/目錄除了有讀(r)、寫(w)、執行(x)權限外,文件/目錄還存在特殊的權限,這些權限分別是SUID、SGID和Sticky Bit。
Linux系統中文件/目錄還存在特殊的屬性,這些特殊文件系統的安全管理方面起很重要的作用。
本實訓主要講解如何對Linux文件/目錄設置特殊的權限和特殊屬性。
## 第1關:Linux文件/目錄setuid和setgid- 任務描述
- 相關知識
- setuid
- setgid
- 編程要求
- 測試說明
任務描述
假設由用戶A創建了一個可執行文件testA,此時想讓用戶B以A的身份去執行testA文件該如何實現,通過本關的學習,我們將學會解決以上問題。
本關任務:設置文件/目錄的特殊權限setuid和setgid。
相關知識
Linux中文件/目錄除了有可讀、可寫和可執行這三種權限外,還存在比較特殊的權限,這些特殊權限就包括setuid和setgid這兩種。
setuid和setgid位是讓普通用戶可以以root用戶的角色運行只有root帳號才能運行的程序或命令。例如我們用普通用戶運行passwd命令來更改自己的口令,實際上最終更改的是/etc/passwd文件,我們知道/etc/passwd文件是用戶管理的 配置文件,只有root權限的用戶才能更改,正是因為passwd命令被設置了setuid權限才能使得普通用戶也可以修改其配置文件的內容。
Linux文件/目錄權限是使用常見的八進制權限掩碼來表示的,通常都是用三位數表示,但確切地說,它是用四位數表示的,因為除了讀、寫和執行權限以外還有特殊的權限。
setuid的八進制表示為4000
setgid的八進制表示為2000
同樣setuid和setgid也可以使用字母s表示。
如果文件/目錄的擁有者的可執行位是s,則表示該文件/目錄被設置了setuid權限。同樣,如果同組用戶的可執行為是s,則表示該文件/目錄被設置了setgid權限。
接下讓我們詳細的學習setuid和setgid的使用方法。
setuid
setuid的作用是讓執行該命令的用戶以該命令擁有者的權限去執行。
例如:普通用戶執行passwd時會擁有root的權限,這樣就可以修改/etc/passwd這個文件,正是因為passwd命令被設置了setuid權限,passwd命令的詳細權限如下所示:
可以看到passwd命令的擁有者的可執行位是s,則說明passwd命令被設置了setuid權限。
設置setuid命令有兩種方法,一種是數字設置,另一種是通過助記語法。(建議使用助記語法設置)
- 數字設置命令:chmod 4xxx 文件/目錄
其中xxx表示文件/目錄的所有者、同組用戶和其他用戶的權限(讀寫執行)。
- 助記語法設置命令:chmod u [+|-] s 文件/目錄
注意:chmod命令的其他參數都可以與setuid權限設置結合使用。 在設置setuid前必須保證文件/目錄的所有者具有可執行權限,否則設置則無效。
執行權限:chmod必須以root權限才能執行,如果是普通用戶想執行chmod時,需要在命令前加sudo命令來提升權限為root權限。
案例演示1:
創建一個新文件testFile,使用數字設置方法為文件testFile添加setuid權限,具體使用如下命令:
第一條命令是創建新文件testFile; 第二條命令是查看testFile現有的權限; 第三條命令是在保證testFile原有權限的情況下為其添加setuid權限; 第四條命令是查看是否添加成功;
案例演示2:
創建一個新目錄testDir,使用助記語法設置方法為目錄testDir添加setuid權限,具體使用如下命令:
案例演示3:
創建一個新文件testFile,使用助記語法為文件testFile添加setuid權限,具體使用如下命令:
第一條命令是創建新文件testFile; 第二條命令是在設置testFile為可執行權限并為其添加setuid權限; 第三條命令是查看是否添加成功;
如果不給文件testFile設置可執行權限直接設置setuid權限后,標記為是S而不是s,詳細結果如下圖所示:
setgid
setgid的作用是讓執行該命令的用戶以該命令所有者的同組用戶的權限去執行。
設置setgid命令有兩種方法,一種是數字設置,另一種是通過助記語法。建議使用助記語法設置setgid權限。
數字設置命令:
chmod 2xxx 文件/目錄
其中xxx表示文件/目錄的所有者、同組用戶和其他用戶的權限(讀寫執行)。
助記語法設置命令:
chmod g [+|-] s 文件/目錄
注意:chmod命令的其他參數都可以與setgid權限設置結合使用。 在設置setgid前必須保證文件/目錄的同組用戶具有可執行權限,否則設置則無效。
執行權限:chmod必須以root權限才能執行,如果是普通用戶想執行chmod時,需要在命令前加sudo命令來提升權限為root權限。
案例演示1:
創建一個新文件testFile,使用數字設置方法為文件testFile添加setgid權限,具體使用如下命令:
第一條命令是創建新文件testFile; 第二條命令是查看testFile現有的權限; 第三條命令是在保證testFile原有權限的情況下為其添加setgid權限; 第四條命令是查看是否添加成功;
案例演示2:
創建一個新目錄testDir,使用助記語法設置方法為目錄testDir添加setgid權限,具體使用如下命令:
編程要求
在右側編輯器中補充代碼,具體編程要求如下:
使用助記語法為系統已存在文件oldFile1(默認權限為:rw_rw_r__)設置setuid權限;
使用助記語法為系統已存在目錄oldDir1(默認權限為:rwxrwxrwx)設置setgid權限;
使用助記語法為系統已存在文件oldFile2取消setuid權限;
使用助記語法為系統已存在目錄oldDir2取消setgid權限。
測試說明
平臺會對你編寫的代碼進行評測:
預期輸出:
當一個人用工作去迎接光明,光明很快就會來照耀著他。——馮學峰
開始你的任務吧,祝你成功!
#!/bin/bash#在以下部分寫出完成任務的命令 #***********begin*************# chmod 4764 oldFile1 chmod g+s oldDir1 chmod u-s oldFile2 chmod g-s oldDir2 #************end**************#第2關:Linux目錄stick bit
- 任務描述
- 相關知識
- stick bit
- 編程要求
- 測試說明
任務描述
假設由用戶A在Dir目錄下創建了一個文件testA,用戶B在Dir目錄下創建了一個文件testB,此時如何確保A用戶不能刪除B用戶創建的文件而B用戶也不能刪除A用戶創建的文件,通過本關的學習,我們將學會解決以上問題。
本關任務:對系統已存在的目錄設置sticky bit。
相關知識
Linux中目錄除了有可讀、可寫和可執行這三種權限外,還存在比較特殊的權限,這些特殊權限包括上一關卡講解的setuid和setgid這兩種,還有一種就是本關講解的**粘滯位sticky bit**。
我們知道Linux的/tmp目錄是系統的臨時文件目錄,所有的用戶在該目錄下擁有所有的權限,也就是說在該目錄下可以任意創建、修改、刪除文件,那如果用戶A在該目錄下創建了一個文件,用戶B將該文件刪除了,這種情況我們是不能允許的。為了達到該目的,就出現了stick bit(粘滯位)的概念。它是針對目錄來說的,如果該目錄設置了stick bit(粘滯位),則該目錄下的文件除了該文件的創建者和root用戶可以刪除和修改,別的用戶均不能刪除和修改,這就是粘滯位的作用。
Linux目錄權限使用常見的八進制權限掩碼來表示的,通常都是用三位數表示,但確切地說,它是用四位數表示的,因為除了讀、寫和執行權限以外還有特殊的權限。
- sticky bit的八進制表示為1000
同樣sticky bit也可以使用字母表示,使用t表示。
如果目錄的其他用戶的可執行位是t,則表示該目錄被設置了sticky bit權限。
接下讓我們詳細的學習目錄的sticky bit的使用方法。
stick bit
stick bit的作用是讓具有stick bit位的目錄下的所有文件/目錄只有創建者和root才能對其刪除和修改,其他用戶一律不能刪除和修改。
例如:Linux的/tmp目錄就具有stick bit權限,詳細權限如下所示:
可以看到/tmp目錄的其他用戶的可執行位是t,則說明/tmp目錄被設置了stick bit權限。
設置stick bit命令有兩種方法,一種是數字設置,另一種是通過助記語法。建議使用助記語法設置stick bit權限。
數字設置命令:chmod 1xxx 目錄
其中xxx表示目錄的所有者、同組用戶和其他用戶的權限(讀寫執行)。
助記語法設置命令:chmod o [+|-] t 目錄
注意:
執行權限:
chmod必須以root權限才能執行,如果是普通用戶想執行chmod時,需要在命令前加sudo命令來提升權限為root權限。
案例演示1:
創建一個新目錄testDir,使用助記語法設置方法為目錄testDir添加stick bit權限,具體使用如下命令:
如果不給目錄testDir設置可執行權限直接設置stick bit權限后,標記為是T而不是t,詳細結果如下圖所示:
案例演示2:
創建一個新目錄testDir,使用數字設置方法為目錄testDir添加stick bit權限,具體使用如下命令:
第一條命令是創建新目錄testDir; 第二條命令是查看testDir現有的權限; 第三條命令是在保證testDir原有權限的情況下為其添加stick bit權限; 第四條命令是查看是否添加成功;
案例演示3:
將目錄testDir取消stick bit權限,具體使用如下命令:
編程要求
在右側編輯器中補充代碼,完成對目錄設置stick bit權限,具體編程要求如下:
使用助記語法為系統已存在目錄oldDir1(默認權限為:rwxrwxrwx)設置stick bit權限;
使用助記語法為系統已存在目錄oldDir2取消stick bit權限。
測試說明
平臺將對你編寫的代碼進行評測:
預期輸出:
一個人幾乎可以在任何他懷有無限熱忱的事情上成功。 ——查爾斯·史考伯
開始你的任務吧,祝你成功!
#!/bin/bash#在以下部分寫出完成任務的命令 #***********begin*************# chmod o+t oldDir1 chmod o-t oldDir2 #************end**************#第3關:Linux文件/目錄特殊屬性
- 任務描述
- 相關知識
- chattr
- lsattr
- 編程要求
- 測試說明
任務描述
假設用戶A在創建了一個文件testA,那么此時需要其他所有用戶(包括root用戶)不能將其刪除,也就是說如何創建一個不可刪除的文件,聽起來多么酷炫,通過本關的學習,我們就可以輕松的創建一個不可刪除的文件。
本關任務:查看/修改Linux中文件/目錄的特殊屬性。
相關知識
Linux中文件/目錄常見的屬性的所屬者、所屬組、創建時間和最新修改時間等外,還存在些隱藏屬性,這些隱藏屬性在保護系統文件的安全性上非常重要。
Linux使用lsattr和chattr兩個命令查看和修改文件/目錄的特殊屬性。
接下讓我們詳細的學習lsattr和chattr的使用方法。
chattr
chattr的作用是修改文件/目錄的特殊屬性。
具體命令如下:
chattr [+|-|=] 屬性標示符 命令參數 文件/目錄
常用命令參數如下:
常用屬性標示符:
執行權限:chattr必須以root權限才能執行,如果是普通用戶想執行chattr時,需要在命令前加sudo命令來提升權限為root權限。
案例演示1:
為文件testFile設置為不得任意更動,具體使用如下命令:
將文件testFile設置為i隱藏屬性后,試圖刪除,可以看到無法對其進行刪除操作。
案例演示2:
將目錄testDir以及目錄下所有內容一并設置為不得任意更動,具體使用如下命令:
試圖刪除testDir目錄下的file1文件,可以看到無法刪除。
案例演示3:
將testFile文件的i屬性取消,具體使用如下命令:
可以看到刪除i屬性后,既可以刪除該文件。
lsattr
lsattr的作用查看文件/目錄的特殊屬性設置情況。
具體命令如下:
lsattr 命令參數 文件/目錄
常用參數如下:
案例演示1:
查看目錄testDir下所有內容的特殊屬性,具體使用如下命令:
編程要求
在右側編輯器中補充代碼,具體編程要求如下:
為系統已存在文件/root/oldFile1添加i屬性;
查看系統已存在文件/root/oldFile2的特殊屬性;
為系統已存在文件/root/oldFile3取消i屬性。
測試說明
平臺會對你編寫的代碼進行評測:
預期輸出:
每一種挫折或不利的突變,是帶著同樣或較大的有利的種子。——愛默生
開始你的任務吧,祝你成功!
#!/bin/bash#在以下部分寫出完成任務的命令 #***********begin*************# chattr +i /root/oldFile1 lsattr -a /root/oldFile2 chattr -i /root/oldFile3 #************end**************# 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的EduCoder Linux文件/目录高级管理三的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EduCoder Linux文件/目录高
- 下一篇: EduCoder Linux之文件打包和