Linux就該這麽學--第五章
- 用戶身份和能力
• UID:用戶的身份號碼
◇ 0 管理員,系統的管理用戶root
◇ 1-999 系統用戶,默認的服務會有獨立的系統用戶負責運行,防止黑客提權
◇ >1000 普通用戶
•
• 命令補充
◇ useradd [選項] [用戶名]:創建新用戶
? 參數:
- -d 指定用戶的家目錄,默認為/home/用戶名
- -e 賬戶的到期時間,格式為YYYY-MM-DD
- -u 指定該用戶的UID
- -g 指定一個初始的用戶基本組(必須已經存在)
- -s 指定該用戶的默認shell解釋器,/sbin/nologin代表該用戶不能登錄到系統中
- -G 指定一個或者多個擴展用戶組
◇ group [選項] [群組名]:創建用戶組
◇ usermod [選項] [用戶名]:修改用戶的屬性
? 參數:
- -c 填寫用戶賬戶的備註信息
- -d -m 重新指定用戶的家目錄並自動把舊的數據轉移過去
- -e 賬戶的到期時間
- -g 變更所屬用戶組
- -G 變更擴展用戶組
- -L 鎖定用戶禁止其登錄系統
- -U 解鎖用戶,允許其登錄系統
- -u 修改用戶的UID
◇ passwd [選項] [用戶名]:修改用戶密碼、過期信息、認證信息
? 參數:
- -l 鎖定用戶,禁止登錄
- -u 解鎖用戶,允許登錄
- --stdin 允許通過標準輸入修改密碼
- -d 用戶可以無密碼登錄
- -e 強制用戶在下次登錄時修改密碼
- -S 顯示用戶的密碼是否鎖定,以及密碼所采用的加密算法名稱
- -x 設置密碼的有效期
- -i 過期後停止用戶賬號
◇ userdel [選項] [用戶名]:刪除用戶
? 參數:
- -f 強制刪除用戶
- -r 同時刪除用戶以及家目錄
- 文件權限與歸屬
• 區分不同文件類型的字符
◇ - 普通文件
◇ d 目錄文件
◇ l 鏈接文件
◇ b 塊設備文件
◇ c 字符文件
◇ p 管道文件
• 文件權限的字符與數字表示
• 文件特殊權限
◇ 4為SUID=u+s,2為SGID=g+s,1為SBIT=o+t,一般使用u+s等字符進行權限附加,數字方式可能不生效,如果標誌位出現大寫的字母S、T(沒有執行權限)等,相當於特殊權限未附加上,需要排除
下面設置指令中的xxx在實際使用時需要換成權限數字
◇ SUID:對二進制程序進行設置的特殊權限,可以讓二進制程序的執行者臨時擁有屬主的權限(僅對擁有執行權限的二進制程序有效)
如果對vim設置此權限後,可以編輯shadow等原先沒有權限的文件,比較危險
? 前提條件:
- 具有可執行權限的二進制程序
- 所有者必須對欲設置SUID的文件具備可執行權限
- 命令執行過程中,其他用戶獲取所有者的身份(靈魂附體)
- SUID具有時間限制,即完成該程序執行後就消失
? 設置指令:
- 設置
→ chmod 4xxx 文件
→ chmod u+s 文件
- 取消
→ chmod 0xxx 文件
→ chmod xxx 文件
→ chmod u-s 文件
◇ SGID:讓執行者臨時擁有屬主的權限(對擁有執行權限的二進制程序進行設置);在某個目錄中創建的文件自動繼承該目錄的用戶組(只可以對目錄進行設置)
其實,SGID基本與SUID相同,無非也就是一個設置所有者的權限,SGID為設置所屬組的特殊權限,區別點在於:SGID也可以設置目錄的相關SGID權限。
? 針對文件:
- 可執行的二進制文件
- 命令執行者(即所屬組)對該文件具有執行權限
- 執行時,執行者被所屬組靈魂附體
- 權限只在執行過程中有效
? 針對目錄:
- 普通用戶對目錄具備r和x權限,才可以進入到該目錄
- 普通用戶在此目錄中的有效組會變成目錄的所屬組
- 如果普通用戶對該目錄具備w權限,新建文件的所屬組為該目錄的所屬組
? 設置指令:
- 設置
→ chmod 4xxx 文件/目錄
→ chmod g+s 文件/目錄
- 取消
→ chmod 0xxx 文件/目錄
→ chmod xxx 文件/目錄
→ chmod g-s 文件/目錄
◇ SBIT:粘滯位(保護位),目錄中的文件只能被文件的所有者執行刪除操作
? 說明
- 只對目錄有效
- 普通用戶對該目錄有w和x權限
- 若沒有粘滯位,則普通用戶可以對目錄下的文件/子目錄進行刪除操作(因為普通用戶對目錄具有w權限),包括其它用戶建立的目錄/文件;
但若賦了SBIT,則普通用戶只能刪除自己創建的文件/目錄,而不能刪除不屬於自己的文件/目錄
? 設置指令
- 設置
→ chmod 1xxx 目錄
→ chmod o+t 目錄
- 取消
→ chmod 0xxx 目錄
→ chmod xxx 目錄
→ chmod o-t 目錄
◇ 總結:
? 作用範圍和功能:
- SUID作用於文件(二進制程序),此用戶將繼承此程序的所有者權限
- SGID作用於文件(二進制程序)和目錄。對於文件,此用戶將繼承此程序的所屬組權限;對於目錄,此文件夾下所有用戶新建文件都自動繼承此目錄的用戶組
- SBIT作用於目錄,設定後,目錄中的用戶只能刪除、移動或改名自己的文件或目錄
? 權限設置和註意事項
- 字母權限法很靈活,無論目錄還是文件都可以隨意添加刪除超級權限
chmod u+s 添加SUID
chmod g+s 添加SGID
chmod +s 同時添加SUID和SGID
chmod -s 同時刪除SUID和SGID
chmod o+t 添加SBIT
chmod +t 添加SBIT
chmod o-t 刪除SBIT
- 數字權限表示法添加/刪除時
→ 數字權限法可以同時刪除文件的所有三種超級權限
chmod 0755 文件
chmod 755 文件
→ 數字權限法只能刪除目錄的SBIT,不能刪除目錄的SUID和SGID
→ 數字權限法每次只能設置一種超級權限.添加權限時,
對於文件,會刪除掉原有的其他超級權限;
對於目錄,添加SUID或SGID時,SBIT會被刪除
- 所有表示為大寫字母的權限均為無效(故障)權限,因為缺少了相應的x權限
- 幾個權限位映射參考
→ SUID: user, 占據屬主的執行權限位;
s: 屬主擁有x權限
S:屬主沒有x權限
→ SGID: group, 占據group的執行權限位;
s: group擁有x權限
S:group沒有x權限
→ SBIT: other, 占據ohter的執行權限位
t: other擁有x權限
T:other沒有x權限
• 補充命令:
◇ chmod [參數] [權限] [文件或目錄名稱]:設置文件或者目錄的權限(-R 對目錄進行遞歸操作)
◇ chown [參數(-Rf)] [所有者:所屬組] [文件或目錄名稱]:設置文件或目錄的所有者和所屬組(-R 對目錄進行遞歸操作) -
文件的隱藏屬性和控制列表
• chattr [參數] [文件]:設置文件的隱藏權限,給文件添加某項隱藏功能,則在chattr後加“+參數”,刪除隱藏功能為“-參數”
◇ 參數
? i 無法對文件進行修改;如果對目錄設置此權限,則僅能修改其中的子文件內容而不能新建或刪除文件
? a 僅允許追加內容,無法覆蓋/刪除內容
? S 文件內容在變更後立即同步到硬盤(sync)
? s 徹底從硬盤中刪除,不可恢復(用0填充原文件所在的硬盤區域)
? A 不再修改文件或目錄的最後訪問時間(atime)
? b 不再修改文件或目錄的存取時間
? D 檢查壓縮文件中的錯誤
? d 使用dump命令備份時忽略本文件或目錄
? c 默認將文件或目錄進行壓縮
? u 當刪除文件後依然保留其在硬盤中的數據,方便日後恢復
? t 讓文件系統支持尾部合並(tail-merging)
? X 可以直接訪問壓縮文件中的內容
• lsattr [參數] [文件]:查看文件的隱藏權限
• setfacl [參數] [文件名稱]:管理文件的Acl規則。文件的ACL提供的是在所有者、所屬組、其他人的讀寫執行權限之外的特殊權限控制,setfcal可以針對單一用戶或者用戶組、單一文件或目錄進行讀寫執行權限的控制。
◇ 參數:
? -R 針對目錄時使用(-Rm)【setfacl -Rm u:linuxprobe:rwx /root】
? -m 針對普通文件時使用
? -b 刪除所有的的ACL設定參數
? -x 刪除後續的acl 參數,不可與-m 合用
? -d 只對目錄有效,在該目錄新建的文件會引用此預設值,即為目錄添加默認的acl權限,此目錄下創建目錄和文件都會繼承此權限信息
◇ 實例:
? 針對用戶的設定方式【 u:用戶名:權限】:
- setfacl -m u:user:rwx testfile 設定user對testfile有rwx權限
- setfacl -R -m u:user:rwx testdirectory 設定user對testdirectory目錄下所有文件有RWX權限
- setfacl -x u:user testdirectory/ 掉user對testdirectory的x權限
- setfacl -b 去掉所有acl權限
- setfacl -d -m u:user:rwx testdirectory/ 為testdirectory目錄添加默認的acl權限,此目錄下創建目錄和文件,user都有rwx權限
? 針對群組的權限設定【g:群組名:權限】:
- setfacl -m g:mygroup1:rx acl_test1
• getfacl [文件/目錄]:顯示文件或目錄上設置的ACL信息
• id :查看當前登錄用戶的uid、gid、groups
• su - 用戶名:切換用戶,加-代表完全切換的意思,即把環境變量信息已變更為新用戶的響應信息
• sudo [參數] [命令]:給普通用戶提供額外的權限來完成root管理員才能完成的任務,驗證密碼後5分鐘之內無需再次驗證。
◇ 參數:
? -h 列出幫助信息
? -l 列出當前用戶可執行的命令
? -u 用戶名或者UID值 以指定的用戶身份執行命令
? -k 清空密碼的有效時間,下次執行sudo時需要再次進行密碼驗證
? -b 在後臺執行指定的指令
? -p 更改詢問密碼的提示語
• visudo:一次性解決使用sudo命令之後需要輸入用戶密碼的痛點
◇ 只有root用戶才能使用的命令
◇ 在root ALL=(ALL) ALL 下一行添加一行信息【誰可以使用 允許使用的主機=(以誰的身份) 可執行的命令列表】,例如linuxprobe ALL=(ALL) ALL
如果不想每次都輸入密碼,則變為linuxprobe ALL=(ALL) NOPASSWD:ALL
◇ 使用sodo -l查看可以執行的命令
◇ 可執行的命令列表ALL不符合安全要求,如果想要讓用戶使用某一個命令,則將ALL替換成相應的路徑,使用 whereis+命令 查看命令的安裝路徑(顯示的第一個路徑)
例如: linuxprobe ALL=(ALL) /usr/bin/cat,讓linuxprobe能夠使用cat指令查看一些只能root才能查看的文件,使用時,需要在cat前加sudo
Linux就該這麽學--第五章