(上課時間2021-6-21,筆記整理時間2021-06-25)html
本節所講內容:node
6.1 用戶和組的相關配置文件linux
6.2 管理用戶和組算法
6.3 實戰:進入 centos8 緊急模式恢復 root 密碼shell
用戶通常來講是指系統的使用者,使用者可使用這些名稱來登陸使用計算機,除了使用者以外,一些系統服務也須要含有部分特權的用戶帳戶運行;所以出於安全考慮,用戶管理應運而生,它加以明確限制各個用戶帳戶的權限,root 在計算機中用擁有至高特權,因此通常只做管理用,非特權用戶能夠經過SU 或 SUDO 程序來臨時得到特權。apache
Linux 系統經過用戶和用戶組實現訪問控制,包括對文件訪問、設備使用的控制。vim
1 人能夠擁有不少帳戶,只不是彼此名稱不一樣,好比 root 名稱已經佔用就不能再用了,此外,任意用戶可能從屬某個用戶組,此用戶能夠加入某些已經存在的組來得到該組的特權。centos
每 1 個文件的屬性中都有一個文件擁有者和所屬組。另外,還有三種類型的訪問權限:讀(read)、寫(write)、運行(execute)。咱們能夠針對文件的屬主、屬組、而設置相應的訪問權限。再次,咱們能夠經過 ll 或 stat 命令查詢文件屬主、屬組和權限。安全
[root@Centos83 ~]# ll | tail -4 -rw-r--r--. 1 root root 2735 6月 20 15:36 a.txt -rw-r--r--. 1 root root 2742 6月 20 16:45 mini.txt -rw-------. 1 root root 4269 6月 20 15:45 sshd drwxr-xr-x. 2 root root 22 6月 20 17:08 test [root@Centos83 ~]# stat mini.txt # 查詢文件屬主、屬組和權限 文件:mini.txt 大小:2742 塊:8 IO 塊:4096 普通文件 設備:fd00h/64768d Inode:134444908 硬連接:1 權限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
Linux 用戶三種角色:超級用戶,普通用戶,虛擬用戶。bash
超級用戶: root 擁有對系統的最高的管理權限,UID=0
普通用戶:
系統用戶 UID 範圍:1-999(centos7/8 版本) 1-499(centos6 版本)
本地用戶 UID 範圍:1000+(centos7/8 版本) 500+(centos6 版本)
UID:即每一個用戶的身份標示,相似於每一個人的身份證號碼.
虛擬用戶:僞用戶 通常不會用來登陸系統的,它主要是用於維持某個服務的正常運行.如:ftp,apache
用戶基本信息保存位置:/etc/passwd
下圖是用戶和組的關係:
一對一:一個用戶能夠存在一個組中; 一對多:一個用戶能夠存在多個組中
多對一:多個用戶能夠存在一個組中; 多對多:多個用戶能夠存在多個組中
名 稱 | 文件路徑 | 說 明 |
---|---|---|
用戶配置文件 | /etc/passwd | 記錄了每一個用戶的一些基本屬性,而且對全部用戶可讀,每一行記錄對應一個用戶 |
用戶組文件 | /etc/group | 用戶組信息存放文件,而且組名不能重複 |
用戶密碼信息文件 | /etc/shadow | 由於 passwd 文件對全部用戶是可讀的,爲安全起見把密碼從 passwd 中分離出來放入這個單獨的文件,該文件只有 root 用戶擁有讀權限,從而保證密碼安全性 |
命令:useradd
useradd -d -u 「UID」 -g "初始組" -G "附加組" -s "登錄的 shell」 用戶
-u: 指定 uid
-d: -d 用戶主目錄路徑, 能夠指定用戶家目錄
-M: 不建立用戶的家目錄
-g:設置用戶初始組的名稱或數字 ID;該組必須是存在的;若是沒有設置該選項,useradd 會根據/etc/login.defs 文件中的 USERGROUPS_ENAB 環境變量進行設置。默認 USERGROUPS_ENAB yes會用和用戶名相同的名字建立羣組.
-G:用戶要加入的附加組列表;使用逗號分隔多個組,不要添加空格;若是不設置,用戶僅僅加入初始組。(一個用戶只容許有一個主組,能夠有多個附屬組)
-s:用戶默認登陸 shell 的路徑;啓動過程結束後,默認啓動的登陸 shell 在此處設定;請確保使用的 shell 已經安裝,默認是 Bash。有時候須要禁止某些用戶執行登陸動做,例如用來執行系統服務的用戶。將 shell 設置成 /sbin/nologin 就能夠禁止用戶登陸。
例:添加一個名爲 harry 的用戶,並使用 bash 做爲登陸的 shell
[root@Centos83 ~]# useradd harry # 建立用戶harry [root@Centos83 ~]# tail -1 /etc/passwd # 查看/etc/passwd文件最後一行 harry:x:1001:1001::/home/harry:/bin/bash
說明:此命令會自動建立 harry 組,併成爲 harry 用戶的默認主組,同時默認的登陸 shell 是 bash用戶賬戶的所有信息被保存在/etc/passwd 文件。這個文件以以下格式保存了每個系統賬戶的全部信息 (字段以「:」分割)
harry:x:1001:1001::/home/harry:/bin/bash #每行含意以下:
harry:用戶名
x:密碼佔位符
1001:用戶的 UID,使用正整數表示,範圍能夠是 0-65535
1001:用戶所屬組的 GID,它都是用數字來表示的
用戶描述信息:對用戶的功能或其它來進行一個簡要的描述,此字段會出如今登陸用戶界面,能夠經過點擊輸入對應密碼進行登陸,卻並不能手動輸入此字段代替用戶名。
/home/harry:用戶主目錄(shell 命令提示符中用「~」表示)
/bin/bash:用戶登陸系統後使用的 shell
[root@Centos83 ~]# cat /etc/shells # 查看系統中,支持哪些 shell /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash [root@Centos83 ~]# yum install zsh -y # yum安裝 zsh [root@Centos83 ~]# zsh # 執行 zsh [root@Centos83]~# cd /etc/sysconfig/network-scripts [root@Centos83]/etc/sysconfig/network-scripts# # zsh運行結果,zsh會顯示絕對路徑的
useradd -u 用戶 ID
[root@Centos83]~# useradd -u 2000 oracle # 建立用戶 oracle 指定uid爲2000 [root@Centos83]~# id oracle # 查看 oracle 用戶UID和GID 組ID uid=2000(oracle) gid=2000(oracle) 組=2000(oracle) [root@Centos83]~# tail -1 /etc/passwd # 查看/etc/passwd最後一行內容 oracle:x:2000:2000::/home/oracle:/bin/bash [root@Centos83]~# ls -a /home/oracle . .. .bash_logout .bash_profile .bashrc .mozilla .zshrc
[root@Centos83]~# useradd -d /opt/ftp ftpuser # 建立用戶 oracle 指定uid爲2000 [root@Centos83]~# ls -a /opt/ftp # 查看 /opt/ftp 文件及隱藏文件 . .. .bash_logout .bash_profile .bashrc .mozilla .zshrc [root@Centos83]~# tail -1 /etc/passwd # 查看/etc/passwd最後一行內容 ftpuser:x:2001:2001::/opt/ftp:/bin/bash # ftpuser主目錄已經被指定爲/opt/ftp
咱們也能夠把這個附屬組稱爲補充組,用戶能夠有 0 個或多個附加組的成員
若是一個組有多個成員,咱們是能夠在/etc/group 文件中最後一個字段看到的
[root@Centos83]~# useradd -G lenovo,oracle,root think # 建立think用戶並讓lenovo,oracle,root加入think組 [root@Centos83]~# id think uid=2003(think) gid=2003(think) 組=2003(think),2000(oracle),2002(lenovo),0(root) [root@Centos83]~# cat /etc/group # 查看用戶組文件內容 root:x:0:think ………………中間部份內容省略……………… harry:x:1001: oracle:x:2000:think ftpuser:x:2001: lenovo:x:2002:think think:x:2003:
[root@Centos83]~# adduser thinkplus # 建立thinkplus用戶並讓 [root@Centos83]~# id thinkplus # 查看thinkplus用戶UID和GID 組ID uid=2004(thinkplus) gid=2004(thinkplus) 組=2004(thinkplus) [root@Centos83]~# which adduser # 會在環境變量$PATH設置的目錄裏查找符合條件的文件 /usr/sbin/adduser [root@Centos83]~# ll /usr/sbin/adduser # adduser 是 useradd 的軟連接 lrwxrwxrwx. 1 root root 7 8月 13 2020 /usr/sbin/adduser -> useradd
語法: userdel [options] 用戶名
選項:-r 刪除的時候,會同時刪除用戶的家目錄和/var/mail 下的目錄
[root@Centos83]~# userdel harry # 刪除用戶harry
[root@Centos83]~# head -1 /etc/shadow root:$6$mhuZmOQJAtrnoSfk$b52wXamQu2NE0bpEbZ9pcP.wkZLwAWD5tjG4LNqF/u3lMMaoPP85mMqcftjk1/u42yyyfNzvr/3PfcKDfZcKB0::0:99999:7:::
格式以下:
name 登陸名稱,這個必須是系統中的有效帳戶名
password 已加密密碼,分爲三個部分,第一部分是表示使用哪一種哈希算法;第二部分是用於加密哈希的 salt;第三部分是已加密的哈希
哈希算法:$1 表示 MD5 ; $6 表示 SHA512 ; $5 表示 SHA256
查看幫助說明: man 5 查看文件格式,man 3 查看庫函數
man 5 passwd
man 5 shadow
man 5 group
lastchange 最近一次更改密碼的日期,以距離 1970/1/1 的天數表示
min-age 不能更改密碼的最少天數,最近更改事後幾天才能夠更改;若是爲 0 表示「最短時間限要求」
maxage 密碼過時時間,必須更改密碼前的最多天數
warning 密碼即將到期的警告期,以天數表示,0 表示「不提供警告」
inactive 寬限天數,密碼到期後
expire 帳號過時時間,以距離 1970/1/1 的天數計算 (千年蟲)
blank 預留字段
給用戶添加密碼:
[root@Centos83]~# passwd oracle #交互式修改密碼 Changing password for user oracle. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. [root@Centos83]~# echo lenovo | passwd --stdin lenovo passwd: all authentication tokens updated successfully.
互動: 兩個用戶的密碼都是 123456 同樣的, 那麼 shadow 中加密的 hash 值同樣嗎?
答: 不同。 由於 salt(撒鹽加密)不同
把 2 段加密的互換還能登錄嗎?salt 何時指定的?
答:能夠登陸,salt 在加密過程當中隨機生成,保護了加密密碼的機密性。
控制添加用戶規則文件的兩個文件:/etc/default/useradd 和 /etc/login.defs
[root@Centos83]~# egrep -v "^$|^#" /etc/login.defs MAIL_DIR /var/spool/mail UMASK 022 HOME_MODE 0700 PASS_MAX_DAYS 99999 #用戶密碼最長使用時間,多少天后會有提醒 PASS_MIN_DAYS 0 #用戶密碼最短使用時間,意思是多少天內不能修改密碼,0 爲不限制 PASS_MIN_LEN 5 #用戶密碼最小長度 PASS_WARN_AGE 7 #密碼過時後會提醒多少天,這些天內尚未修改密碼的用戶,帳戶會被凍結 UID_MIN 1000 #用戶 ID 開始的數字 UID_MAX 60000 #用戶 ID 結束的數字 SYS_UID_MIN 201 SYS_UID_MAX 999 GID_MIN 1000 GID_MAX 60000 #組 ID 結束的數字 SYS_GID_MIN 201 SYS_GID_MAX 999 CREATE_HOME yes #是否爲用戶創建 home 目錄 USERGROUPS_ENAB yes ENCRYPT_METHOD SHA512 #shadow 文件的加密算法 [root@Centos83]~# cat /etc/default/useradd # useradd defaults file GROUP=100 #新建立用戶時默認初始組的 GID 號(公共組),如今使用的都是私有組機制(根據建立用戶名稱建立組) HOME=/home # /home 表示用戶家目錄的位置 INACTIVE=-1 #是否啓用賬號過時。passwd 文件中第7列,-1 表示不啓用 EXPIRE= #賬號終止日期 shadow 中第 8 字段,你能夠直接設定帳號在哪一個日期後就直接失效,而不理會密碼的問題。 SHELL=/bin/bash #默認 shell 使用哪一個 SKEL=/etc/skel #模板目錄 CREATE_MAIL_SPOOL=yes #是否建立郵箱文件
命令:chage 瞭解一下, 後期記不住時,能夠直接 vim 修改 shadow 文件
-m:密碼可更改的最小天數。爲 0 時表明任什麼時候候均可以更改密碼
-M:密碼保持有效的最大天數
-W:用戶密碼到期前,提早收到警告信息的天數
-E:賬號到期的日期。過了這天,此賬號將不可用
-d:上一次更改的日期,爲 0 表示強制在下次登陸時更新密碼
例:修改用戶 lenovo密碼信息:讓這個用戶 lenovo首次登陸系統時必須更改其密碼
[root@Centos83]~# chage -d 0 lenovo [root@Centos83]~#ssh lenovo@10.170.80.180 ... Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.170.80.180' (ECDSA) to the list of known hosts. lenovo@10.170.80.180's password: 123456 You must change your password now and login again! #提示必須改密碼 更改用戶lenovo的密碼 。
互動: 兩個用戶的 UID 能夠同樣嗎?
[root@Centos83]~# vim /etc/passwd # 把 lenovo 的 UID 改爲 0 [root@Centos83]~# id lenovo uid=0(root) gid=0(root) 組=0(root) # 用戶 lenovo 已經變成超級用戶了 [root@Centos83]~# su lenovo [root@Centos83 root]# id lenovo uid=0(root) gid=0(root) 組=0(root)
查看用戶相關命令:
[root@Centos83 ~]# id #用戶和組的信息 uid=0(root) gid=0(root) 組=0(root) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@Centos83 ~]# whoami #查看當前有效用戶名 root [root@Centos83 ~]# who #顯示目前登入系統的用戶信息。 root pts/0 2021-06-25 10:30 (10.170.80.200) root pts/1 2021-06-25 10:47 (10.170.80.200) [root@Centos83 ~]# w # w 命令用於顯示已經登錄系統的用戶列表 11:25:12 up 59 min, 2 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.170.80.200 10:30 43:52 0.15s 0.15s -bash root pts/1 10.170.80.200 10:47 0.00s 0.64s 0.05s w [root@Centos83 ~]# users #用於顯示當前登陸系統的全部用戶的用戶列表 root root
語法:usermod 【參數】用戶名
經常使用參數:
-u UID
-d 宿主目錄
-m 選項會自動建立新目錄而且移內容到新目錄裏面
-g 起始組 #只能有一個
-G 附加組 #能夠有多個
-s 登陸 shell
-L 鎖定
修改uid: [root@Centos83]~# id oracle uid=2000(oracle) gid=2000(oracle) 組=2000(oracle) [root@Centos83]~# usermod -u 1111 oracle [root@Centos83]~# id oracle uid=1111(oracle) gid=2000(oracle) 組=2000(oracle) 修改shell: [root@Centos83]~# usermod -s /sbin/nologin oracle [root@Centos83]~# grep oracle /etc/passwd oracle:x:1111:2000::/home/oracle:/sbin/nologin 更改用戶主目錄: [root@Centos83]~# usermod -m -d /opt/think think #-m 選項會自動建立新目錄而且移內容到新目錄裏面 添加用戶描述信息: [root@Centos83]~# usermod -c "hell Linux" lenovo [root@Centos83]~# grep lenovo /etc/passwd lenovo:x:0:2002:hell Linux:/home/lenovo:/bin/bash
總結:若是你記不住命令, 那麼直接改 vim /etc/passwd 同樣的
[root@Centos83]~# useradd plume && echo 123456 | passwd --stdin plume #建立用戶plume,成功後給plume建立密碼 [root@Centos83]~# echo 123456 |passwd --stdin plume #給plume建立密碼 [root@Centos83]~# ls -a /home/plume . .. .bash_logout .bash_profile .bashrc .mozilla .zshrc [root@Centos83]~# rm -rf /home/plume/.bash* #刪除模板文件 [root@Centos83]~# ls -a /home/plume [root@Centos83]~# su plume bash-4.4$ #在 centos6 或 7 會出現這個不完整的 shell 提示符,如何處理? bash-4.4$exit [root@Centos83]~# cp /etc/skel/.bash* /home/plume/ # 拷貝模版文件到用戶目錄下 [root@Centos83]~# chown plume:plume /home/plume/.bash* # 給權限 [root@Centos83]~# su plume # 再次切換用戶 [plume@Centos83 root]$ #正常 [plume@Centos83 root]$
公司一臺 Centos Stream系統,忘記 root 密碼了,須要你快速把 root 密碼修改成 dba@root,找回root 身份。
實驗環境:開啓一臺 Centos Stream 系統
#開機時按任意鍵,便可進入此界面,光標選擇第一條,e
表示進入編輯模式
#在 linux 行尾添加 rd.break
#進入編輯模式後會看到這些信息,默認狀況,都是以 ro 只讀方式引導系統進入
改完以後,按下 Ctrl+X 進入緊急模式
原理:打斷系統正常啓動,而後進一個 bash 環境,系統並無真正的啓動
emergency [iˈmɜ:dʒənsi] 緊急
發現是隻讀的。須要從新以 rw 方式掛載/sysroot 。
mount -o remount,rw /sysroot #從新掛載,使其擁有讀寫權限
換根,修改密碼
chroot 命令用來在指定的根目錄下運行指令
chroot,即 change root directory (更改 root 目錄)。在 linux 系統中,系統默認的目錄結構都是以/,便是以根 (root) 開始的。而在使用 chroot 以後,系統的目錄結構將以指定的位置做爲/位置
在通過 chroot 命令以後,系統讀取到的目錄和文件將不在是舊系統根下的而是新根下(即被指定的新的位置)的目錄結構和文件。
若是系統安裝的中文版顯示亂碼,輸入:LANG=en_US.UTF-8 #修改語言環境爲英文,這樣顯示亂碼。
passwd #開始修改密碼
注:若是系統的 selinux 開啓着,則須要執行命令: touch /.autorelabel 以更新系統信息,否
則重啓以後密碼修改不會生效,先退出當前根,reboot 重啓系統。咱們已經關閉 selinux,不須要建立
/.autorelabel 。
擴展:建立此文件:開啓 selinux 的狀況下須要建立此文件,由於在 rd.break 環境下 SELinux 是不生效的。在不生效的狀況下咱們修改了用戶的密碼,也就是修改了/etc/shadow 文件,因此密碼文件的安全上下文的特性會被取消。若是沒有讓系統在啓動時自動恢復 SELinux 的安全上下文,系統會報錯「沒法登陸」,因此 SELinux 在 Enforcing 模式下的時候(如在 disabled 模式下則不用),在根目錄下touch 隱藏文件 autorelabel 會讓系統在重啓時以 SELinux 默認類型從新寫入 SELinux 安全上下文。
公司一臺 Centos7 系統,忘記 root 密碼了,須要你快速把 root 密碼修改成 dba@root,找回 root身份。
實驗環境:開啓一臺 Centos7 系統
首先重啓,按↑↓鍵,進入以下界面,選擇第一項,按下 e 鍵進行編輯
#進入編輯模式後會看到這些信息。找到「Linux16」開頭的行,在 Linux16 的行尾空格後添加「rd.break「
這裏改爲 rw,則不須要從新掛載,直接以讀寫掛載
改完以後,按下 Ctrl+X 進入緊急模式
原理:打斷系統正常啓動,而後進一個 bash 環境,系統並無真正的啓動
emergency [iˈmɜ:dʒənsi] 緊急
查看系統根掛載狀況:
若是是隻讀的。須要從新以 rw 方式掛載/sysroot ,剛纔進入添加rd.break,時已經修改了rw,就不用從新掛載了。
若是是隻讀,用 mount -o remount,rw /sysroot #從新掛載,使其擁有讀寫權限
換根,修改密碼
chroot 命令用來在指定的根目錄下運行指令
chroot,即 change root directory (更改 root 目錄)。在 linux 系統中,系統默認的目錄結構都是以/,便是以根 (root) 開始的。而在使用 chroot 以後,系統的目錄結構將以指定的位置做爲/位置
在通過 chroot 命令以後,系統讀取到的目錄和文件將不在是舊系統根下的而是新根下(即被指定的新的位置)的目錄結構和文件。
若安裝操做系統時選擇的是中文版,輸入:LANG=en_US.UTF-8 #修改語言環境爲英文,就能夠解決顯示亂碼。
passwd #開始修改密碼
若是系統的 selinux 開啓着,則須要執行命令: touch /.autorelabel 以更新系統信息讓SELinux 生效,不然重啓以後密碼修改不會生效,先退出當前根,reboot 重啓系統。咱們已經關閉selinux,不須要建立/.autorelabel 。
建立此文件:開啓 selinux 的狀況下須要建立此文件,由於在 rd.break 環境下 SELinux 是不生效的。在不生效的狀況下咱們修改了用戶的密碼,也就是修改了/etc/shadow 文件,因此密碼文件的安全上下文的特性會被取消。若是沒有讓系統在啓動時自動恢復 SELinux 的安全上下文,系統會報錯「沒法登陸」,因此 SELinux 在 Enforcing 模式下的時候(如在 disabled 模式下則不用),在根目錄下touch 隱藏文件 autorelabel 會讓系統在重啓時以 SELinux 默認類型從新寫入 SELinux 安全上下文。
SELinux( Security Enhanced Linux 安全性加強的 Linux),由美國國家安全局 NSA(National
Security Agency)開發,構建與 Kernel 之上,擁有靈活的強制性訪問控制結構,主要用在提升Linux 的安全性,提供強健的安全保證,能夠防護未知***。
SELinux 是用於肯定哪一個進程能夠訪問哪些文件、目錄和端口的一組安全規則。每一個文件、進程、目錄和端口都具備專門的安全標籤,稱爲 SELinux 上下文。
SELinux 標籤具備多種上下文:User 用戶、Role 角色、Type 類型和 Level 敏感度級別。目標策略會根據第三個上下文(即 Type 類型上下文)來制定本身的規則,一般以_t 結尾
ls -Z
傳統的 Linux 在沒有 Selinux 保護的時候,假若運行於之上的服務器被駭客攻陷,其服務器最高權限就可能隨之喪失,可是假若有了 SElinux 的保護,***的也只有服務自己,整個服務器的最高權限依然還健在!
一句話熟悉 Selinux 的做用:加強 Linux 系統安全性,一個例子:那麼是我運行的 Apache 服務器被***,也只是***到了我 httpd 這個服務,能夠把它禁錮到這裏(至關於整個服務器運行了httpd,***了 httpd 而已),而系統的整個權限依然正常!
SELinux 模式
enforcing 強制模式,只要 selinux 不容許,就沒法執行;
permissive 警告模式,你能夠執行,但你所作事件所有記錄;
disabled 關閉 selinux
selinux 控制的文件類型權限很是細,httpd 無權限訪問其餘文件類型,***即便***了 httpd,也沒有權限訪問其餘類型文件,無論你是否是屬組屬主有 rwx 權限,都沒用。
[root@Centos83 ~]# mkdir /abc [root@Centos83 ~]# touch /abc/index.html [root@Centos83 ~]# ls -Z /abc unconfined_u:object_r:default_t:s0 index.html [root@Centos83 ~]# semanage fcontext -a -t httpd_sys_content_t '/abc(/.*)?'
semanage 管理
fcontext 聲明文件的默認標籤
-a 添加
-t 類型
/abc(/.*)?是遞歸匹配/abc 目錄下子文件和子目錄
[root@Centos83 ~]# restorecon -RFvv /abc Relabeled /abc from unconfined_u:object_r:default_t:s0 to system_u:object_r:default_t:s0 Relabeled /abc/index.html from unconfined_u:object_r:default_t:s0 to system_u:object_r:default_t:s0
restorecon 應用 fcontext 所聲明的文件的標籤
-R 遞歸
-F 強制
-vv 顯示詳細信息
[root@Centos83 ~]# ls -Z /abc/ system_u:object_r:default_t:s0 index.html [root@Centos83 ~]# semanage fcontext -d -t httpd_sys_content_t '/abc(/.*)?'
-d 刪除
-t 類型
[root@Centos83 ~]# restorecon -RFvv /abc [root@Centos83 ~]# ls -Z /abc/ system_u:object_r:default_t:s0 index.html [root@Centos83 ~]# semanage fcontext -l
-l 查看類型
實驗 httpd 服務沒有權限訪問其餘類型的文件
[root@Centos83 ~]# yum -y install httpd [root@Centos83 ~]# systemctl start httpd [root@Centos83 ~]# echo hello httpd >>/var/www/html/hell.txt [root@Centos83 ~]# ls -Z /var/www/html/hell.txt unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/hell.txt [root@Centos83 ~]# curl 10.170.80.180/hell.txt hello httpd # 打開網頁能夠訪問這個 hell.txt 的內容 [root@Centos83 ~]# semanage fcontext -a -t default_t '/var/www/html/hell.txt' [root@Centos83 ~]# restorecon '/var/www/html/hell.txt' [root@Centos83 ~]# ls -Z '/var/www/html/hell.txt' unconfined_u:object_r:default_t:s0 /var/www/html/hell.txt [root@Centos83 ~]# curl 10.170.80.180/hell.txt <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> Forbidden <p>You don't have permission to access this resource.</p> </body></html> # 打開網頁沒有權限訪問這個 hell.txt 的內容 [root@Centos83 ~]# semanage fcontext -d -t default_t '/var/www/html/hell.txt' [root@Centos83 ~]# restorecon '/var/www/html/hell.txt' [root@Centos83 ~]# curl 10.170.80.180/hell.txt hello httpd # 打開網頁能夠訪問這個 hell.txt 的內容
總結:
6.1 用戶和組的相關配置文件
6.2 管理用戶和組
6.3 實戰:進入 centos8 緊急模式恢復 root 密碼
6.3 擴展內容(瞭解便可):SELinux