1. 程式人生 > >Linux就該這麽學--第五章

Linux就該這麽學--第五章

超級 驗證密碼 空密碼 其他人 功能 同時 同步 user suid

  • 用戶身份和能力

    • UID:用戶的身份號碼
    ◇ 0 管理員,系統的管理用戶root
    ◇ 1-999 系統用戶,默認的服務會有獨立的系統用戶負責運行,防止黑客提權
    ◇ >1000 普通用戶



    • 命令補充
    ◇ useradd [選項] [用戶名]:創建新用戶
    ? 參數:
    - -d 指定用戶的家目錄,默認為/home/用戶名
    - -e 賬戶的到期時間,格式為YYYY-MM-DD
    - -u 指定該用戶的UID
    - -g 指定一個初始的用戶基本組(必須已經存在)
    - -s 指定該用戶的默認shell解釋器,/sbin/nologin代表該用戶不能登錄到系統中

    - -N 不創建與用戶同名的基本用戶組
    - -G 指定一個或者多個擴展用戶組

    ◇ group [選項] [群組名]:創建用戶組

    ◇ usermod [選項] [用戶名]:修改用戶的屬性
    ? 參數:
    - -c 填寫用戶賬戶的備註信息
    - -d -m 重新指定用戶的家目錄並自動把舊的數據轉移過去
    - -e 賬戶的到期時間
    - -g 變更所屬用戶組
    - -G 變更擴展用戶組
    - -L 鎖定用戶禁止其登錄系統
    - -U 解鎖用戶,允許其登錄系統
    - -s 變更默認終端
    - -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就該這麽學--第五章