一。回顧:/ 根目錄下的 /etc 一般放配置文件#
/ 根目錄下的 /etc 一般放配置文件
一個用戶的基本組只能有一個,附屬組可以有多個;享受的權限是一樣的,都是有那個組的權限
示例
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# useradd sanle10
[root@sanchuang-linux ~]# id sanle10
uid=2224(sanle10) gid=2224(sanle10) 組=2224(sanle10)
[root@sanchuang-linux ~]# less /etc/group
[root@sanchuang-linux ~]# useradd sanle11 -g sanchuang05 -G sanchuang06 # 指定基本組、附屬組
[root@sanchuang-linux ~]# id sanle11
uid=2225(sanle11) gid=1043(sanchuang05) 組=1043(sanchuang05),1044(sanchuang06)
[root@sanchuang-linux ~]# less /etc/passwd # 注:存放用戶信息
hello:x:1007:1007::/home/hello:/bin/bash
# 注:字段2僅僅只是密碼佔位符,真正的密碼放在/etc/shadow
[root@sanchuang-linux ~]# ls -al /etc/passwd
-rw-r--r-- 1 root root 4539 11月 12 09:50 /etc/passwd # 注:任何人都可以訪問/etc/passwd
[root@sanchuang-linux ~]# ls -al /etc/shadow
---------- 1 root root 4588 11月 12 09:50 /etc/shadow # 注:權限都為0
[root@sanchuang-linux ~]# useradd sanle13 -c "create sanle13" # 注:指定用戶描述信息
[root@sanchuang-linux ~]# less /etc/passwd
sanle13:x:2227:2227:create sanle13:/home/sanle13:/bin/bash # 注:字段5用戶描述信息
[root@sanchuang-linux tmp]# ls -ld /lianxi # 注:查看/lianxi 目錄屬於哪個用戶哪個組
drwxr-xr-x. 9 root root 4096 11月 9 09:47 /lianxi
# 普通用戶默認只能在自己的家目錄下 或 /tmp目錄下創建
對個人環境信息做設置
~/.bash_profile
~/.bashrc
[root@sanchuang-linux tmp]# id sanle11
uid=2225(sanle11) gid=1043(sanchuang05) 組=1043(sanchuang05),1044(sanchuang06) # 注:基本組sanchuang05
[root@sanchuang-linux tmp]# su - sanle11
[sanle11@sanchuang-linux ~]$ touch cc
[sanle11@sanchuang-linux ~]$ ls -al
總用量 16
……………………
-rw-r--r-- 1 sanle11 sanchuang05 0 11月 12 10:21 cc # 注:有效組sanchuang05
# 注:有效組默認是用戶基本組
[sanle11@sanchuang-linux ~]$ newgrp sanchuang06 # 注:修改有效組;臨時修改
[sanle11@sanchuang-linux ~]$ touch dd
[sanle11@sanchuang-linux ~]$ ls -al
……………………
-rw-r--r-- 1 sanle11 sanchuang06 0 11月 12 10:23 dd # 注:有效組sanchuang06
二。練習#
2.1#
題目 1
創建三個用戶 sx1,sx2,sx3,這三個用戶的附屬組都是 sanle 組,創建名為 /home/sanle 的目錄,在該目錄中,三個用戶可以合作 > 處理文件。要求恰當修改該目錄的權限,以便只允許用戶和組能在這個目錄中訪問、刪除、創建文件,其他用戶沒有任何權限,> 三個用戶新建的文件只能自己有權限刪除,彼此無法刪除,而且新建的文件應該被自動分配到 sanle 的組所有權。
示例
---------------------------------------------------------------------
#創建三個用戶sx1,sx2,sx3,這三個用戶的附屬組都是sanle組,創建名為/home/sanle的目錄,在該目錄中,三個用戶可以合作>處理文件。要求恰當修改該目錄的權限,以便只允許用戶和組能在這個目錄中訪問、刪除、創建文件,其他用戶沒有任何權限,>三個用戶新建的文件只能自己有權限刪除,彼此無法刪除,而且新建的文件應該被自動分配到sanle的組所有權。
useradd -G sanle sx1
useradd -G sanle sx2
useradd -G sanle sx3
mkdir /home/sanle
newgrp sanle
mkdir /home/sanle
chmod 1770 /home/sanle -R
echo "newgrp sanle" >> ~/.bashrc
2.2#
題目 2 腳本
---------------------------------------------------------------------
1、創建用戶
2、刪除指定用戶
3、修改指定用戶(用戶 id,用戶屬組,用戶家目錄)
4、刪除指定用戶
示例1
---------------------------------------------------------------------
#!/bin/bash
menu(){
echo "1、創建用戶"
echo "2、刪除指定用戶"
echo "3、修改指定用戶(用戶id,用戶屬組,用戶家目錄)"
echo "4、刪除指定用戶"
}
add(){
read -p "輸入用戶名:" username # 注:接收從鍵盤的輸入
useradd $username &>/dev/null && echo "創建成功" || echo "創建失敗"
}
del(){
read -p "輸入用戶名:" username
userdel -r $username &>/dev/null && echo "刪除成功" || echo "用戶不存在"
}
modify(){
read -p "輸入用戶名:" username
id $username &>/dev/null
if [[ $? = 0 ]]
then
read -p "輸入uid:" uid # 注:可以再加3個case 更精細
read -p "輸入gid:" gid
read -p "輸入家目錄:" home
usermod -u $uid -g $gid -d $home $username 2>/dev/null && echo "修改成功" || "修改失敗"
else
echo "用戶不存在"
fi
}
while :
do
menu
read -p "請輸入1-4:" option
case $option in
1)
add
;;
2)
del
;;
3)
modify
;;
4)
del
;;
*)
echo "輸入不合法"
esac
done
示例2:一次性添加多個變量
---------------------------------------------------------------------------------------------------------------------------------
mod(){
read -p "請輸入(用戶id,用戶屬組,用戶家目錄):" userid usergroup userhome username
usermod -u $userid -g $usergroup -d $userhome $username &> /dev/null && echo "修改成功" || echo "修改失敗"
}
示例3:精密選擇(推薦)
---------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
menu(){
echo "1、創建用戶"
echo "2、刪除指定用戶"
echo "3、修改指定用戶(用戶id,用戶屬組,用戶家目錄)"
}
menu2(){
echo "1、修改用戶id"
echo "2、修改用戶屬組"
echo "3、修改用戶家目錄"
}
add(){
read -p "輸入用戶名:" username
id $username &>/dev/null &&echo "用戶已存在" || useradd $username &>/dev/null && echo "創建成功" || echo "創建失敗"
}
del(){
read -p "輸入用戶名:" username
id $username &>/dev/null || echo "用戶不存在" && userdel -r $username &>/dev/null && echo "刪除成功" || echo "刪除失敗"
}
modify(){
read -p "輸入用戶名:" username
if id $username &>/dev/null
then
menu2
read -p "請輸入:" choice2
case $choice2 in
1)
read -p "輸入uid:" uid
usermod -u $uid $username &>/dev/null && echo "修改成功" || echo "修改失敗"
;;
2)
read -p "輸入gid:" gid
usermod -g $gid &>/dev/null && echo "修改成功" || echo "修改失敗"
;;
3)
read -p "輸入家目錄:" home
usermod -d $home $username &>/dev/null && echo "修改成功" || echo "修改失敗"
;;
*)
echo "輸入不合法"
esac
else
echo "用戶不存在"
fi
}
while true
do
menu
read -p "請輸入(按q退出):" choice
case $choice in
1)
add
;;
2)
del
;;
3)
modify
;;
q)
break
;;
*)
echo "輸入不合法"
esac
done
三. ACL 的使用#
ACL(Access Control List) # 注:訪問控制列表(允許哪些人可以 / 不可以訪問)
- 一個文件 / 目錄的訪問控制列表,可以針對任意指定的 用戶 / 組使用權限字符分配 rwx 權限
設置 ACL:setfacl 指令
- 格式:
setfacl 選項 規則 文件
常用選項
-m
:新增或修改 ACL 中的規則-b
: 刪除所有 ACL 規則- -x: 刪除指定的 ACL 規則
查看 ACL:getfacl 指令
- 格式:
getfacl 文件
設置 ACL:setfacl 指令
- 格式:
setfacl 選項 規則 文件
常用規則
- 格式:
類型
:特定的用戶或組
:權限
user:(uid/name):(perms)
指定某位使用者的權限group:(gid/name):(perms)
指定某一群組的權限other::(perms)
指定其它使用者的權限mask::(perms)
設定有效的最大權限
注意
- user、group、other、mask 簡寫為:u , g , o , m
- perms 使用 rwx
#注:acl 訪問控制列表,工作中和雲計算都比較常見
示例1:查看文件acl
---------------------------------------------------------------------------------------------------------------------------------
#注:對權限精準把控
[root@localhost ~]# getfacl win-utf-2.txt # 注:查看文件acl規則
# file: win-utf-2.txt # 注:get file acl
# owner: root # 注:初始的規則
# group: root
user::rw-
group::r--
other::r--
[root@localhost ~]# ls -la win-utf-2.txt
-rw-r--r--. 1 root root 0 10月 27 11:42 win-utf-2.txt
[root@localhost ~]#
===============================================================================
示例2:對sanchuang用戶有讀寫執行權限
#注:針對特殊用戶
---------------------------------------------------------------------------------------------------------------------------------
[root@localhost ~]# setfacl -m u:sanchuang:rwx win-utf-2.txt # 注:對sanchuang用戶有rwx權限
[root@localhost ~]# getfacl win-utf-2.txt # 注:u也可以寫成 user 一般簡寫
# file: win-utf-2.txt # 注:注意普通用戶對/root目錄沒有操作權限
# owner: root
# group: root
user::rw-
user:sanchuang:rwx # 注:對sanchuang用戶有rwx權限
group::r--
mask::rwx
other::r--
[root@localhost ~]# ls -la win-utf-2.txt # 注:權限多了個+
-rw-rwxr--+ 1 root root 0 10月 27 11:42 win-utf-2.txt
===============================================================================
示例3:對組有讀寫執行的權利
#注:針對特定組
---------------------------------------------------------------------------------------------------------------------------------
[root@localhost ~]# setfacl -m g:sanchuang5:rw win-utf-2.txt
[root@localhost ~]# ls -la win-utf-2.txt # 注:set file acl
-rw-rwxr--+ 1 root root 0 10月 27 11:42 win-utf-2.txt
[root@localhost ~]# getfacl win-utf-2.txt
# file: win-utf-2.txt
# owner: root
# group: root
user::rw-
user:sanchuang:rwx
group::r--
group:sanchuang5:rw- # 注:對組有讀寫執行的權利
mask::rwx
other::r--
===============================================================================
示例4:設置有效的最大權限
#注:針對mask設置有效權限
---------------------------------------------------------------------------------------------------------------------------------
#注:設定有效的最大權限為r
#注:設置的權限在mask之下(天花板)
[root@localhost ~]# setfacl -m m::r win-utf-2.txt # 注:設置有效的最大權限
[root@localhost ~]# getfacl win-utf-2.txt
# file: win-utf-2.txt
# owner: root
# group: root
user::rw-
user:sanchuang:rwx #effective:r-- # 注:即使sanchuang的權限是rw,但是有效最大權限是r
group::r--
group:sanchuang5:rw- #effective:r--
mask::r--
other::r--
#注:指明了有效最大權限後;用戶sanchuang即使有讀寫的權限,用戶sanchuang5最大權限僅僅指為讀
#注:即使設置了用戶sanchuang rw權限,但是mask設置為r,也只有r的權限
四. ACL 類型#
ACL 類型
- 存取型 ACL (Access ACL):文件或目錄
預設型ACL(Default ACL):只能對目錄
預設型 ACL (Default ACL)
- 格式:
setfacl –m default
: 類型:特定的用戶或組:權限
setfacl –m d
: 類型:特定的用戶或組:權限 - 設置了預設型 ACL 的目錄,其下的所有文件或者子目錄就都具有了主目錄的 ACL 權限,並且子目錄也同樣有預設的 ACl 權限
#注:只能對目錄設置預設型
示例 設置預設ACL
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux lianxi]# mkdir cc_test
[root@sanchuang-linux lianxi]# getfacl cc_test/
# file: cc_test/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
[root@sanchuang-linux lianxi]# setfacl -m d:u:sanle10:rw cc_test/ # 注:對文件進行預設型acl設置
[root@sanchuang-linux lianxi]# getfacl cc_test/
# file: cc_test/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx # 注:新增的參數
default:user:sanle10:rw-
default:group::r-x
default:mask::rwx
default:other::r-x
[root@sanchuang-linux lianxi]# cd cc_test/
[root@sanchuang-linux cc_test]# touch aa # 注:新建的文件會繼承預設的acl設置
[root@sanchuang-linux cc_test]# getfacl aa
# file: aa
# owner: root
# group: root
user::rw-
user:sanle10:rw- # 注:新建的文件會繼承預設的acl設置
group::r-x #effective:r--
mask::rw-
other::r--
#注:預設之前已經創建的文件 不會繼承預設的acl設置
五。練習#
1、新建三個組 shuiguo, mifeng, shaokao
2、新建 3 個用戶,pingguo 屬於 shuiguo 組,jingshi 屬於 mifen 組,yueyang 屬於 shaokao 組
3、在根目錄下新建目錄 food,將 /etc/passwd 文件複製到 food 目錄下
4、設置權限,passwd 文件能被 shuiguo 組讀寫,jingshi 這個用戶讀寫執行,yueyang 這個用戶不能進行任何操作
示例
---------------------------------------------------------------------------------------------------------------------------------
#1
[root@sanchuang-linux lianxi]# groupadd shuiguo
[root@sanchuang-linux lianxi]# groupadd mifen
[root@sanchuang-linux lianxi]# groupadd shaokao
#2
[root@sanchuang-linux lianxi]# useradd -g shuiguo pingguo
[root@sanchuang-linux lianxi]# useradd -g mifen jingshi
[root@sanchuang-linux lianxi]# useradd -g shaokao yueyang
#3
[root@sanchuang-linux lianxi]# mkdir /food
[root@sanchuang-linux lianxi]# cp /etc/passwd /food
[root@sanchuang-linux lianxi]# cd /food
#4
[root@sanchuang-linux food]# setfacl -m g:shuiguo:rw passwd
[root@sanchuang-linux food]# setfacl -m u:jingshi:rwx passwd
[root@sanchuang-linux food]# setfacl -m u:yueyang:--- passwd # 注:沒有任何權限
[root@sanchuang-linux food]# getfacl passwd
# file: passwd
# owner: root
# group: root
user::rw-
user:jingshi:rwx
user:yueyang:---
group::r--
group:shuiguo:rw-
mask::rwx
other::r--
六。權限的繼承和拒絕#
一個用戶屬於某個組會繼承這個組的權限。
1. 主要組
2. 次要組
用戶的主要組(有效組)屬於某個組,會繼承這個組的權限,如果是附屬組屬於某個組,也會繼承。
- newgrp
拒絕權限高於一切 ---》針對用戶
一個組允許,一個組拒絕 ---》允許
七. sudo 授權#
sudo 授權
- Linux 裡 root 用戶權限最大
關機、重啟系統、配置 IP 地址、格式化磁碟、mount 等
- 普通用戶權限非常小
- 如何讓普通用戶也具有一定的權限?
給 root 用戶分憂
- 如果能授權,那麼是授權給用戶還是組?
#注:sudo 授權給部分普通用戶使用 root 用戶的權限
#注:sudo --> 授權給普通用戶取執行命令的
#注:sudo 配置文件 /etc/sudoers
#注:有一個日誌文件會記錄下被授權者執行的所有命令 /var/log/secure
#注:第一個 ALL 表示允許任何終端、機器訪問 sudo,一般就表示本機
#注:第二個 ALL 表示 sudo 命令可以允許以任何用戶身份去執行
#注:第三個 ALL 表示可以執行任何命令
授權日誌:有一個日誌文件會記錄下被授權者執行的所有命令 /var/log/secure
查看日誌,知道授權命令的執行情況
[root@cali ~]# tailf /var/log/secure
示例1:生成隨機密碼
#注:生成隨機密碼的工具 mkpasswd
https://www.cnblogs.com/shijunxian/archive/2020/05/26/12961543.html
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux food]# yum install expect -y
[root@sanchuang-linux bin]# mkpasswd -l 15 -d 3 -c 4 -C 4 -s 2
wjp4[HC]hx6mSO6
===============================================================================
示例2:sudo配置文件 /etc/sudoers
#注:授權給某些用戶執行某些命令
#注:編輯/etc/sudoers授權並驗證
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux bin]# less /etc/sudoers
………………
## Syntax:
##
## user MACHINE=COMMANDS ………………
## Allow root to run any commands anywhere
root ALL=(ALL) ALL # 注:ALL表示當前這台機器
#注:1、允許root用戶執行這條命令 ; 2、ALL表示當前這主機,(ALL)表示允許用戶以哪個用戶的權限設置 ; 3、ALL表示所有命令(在這台機器上面可以有任何用戶的命令)
#注:第一個ALL表示允許任何終端、機器訪問sudo,一般就表示本機
#注:第二個ALL表示sudo命令可以允許以任何用戶身份去執行
#注:第三個ALL表示可以執行任何命令
===============================================================================
示例3:編輯配置文件/etc/sudoers 給用戶頒布權限
#注:編輯配置文件 可以使用vim 也可以使用visudo 使用visudo不需要接文件名
#注:推薦使用visodu去編輯/etc/sudoers,它會檢測語法;vim去編輯不會檢測
#注:對於用戶sanle有本地host所有權限
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux bin]# visudo # 注:使用visudo不需要接文件名
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
sanle ALL=(ALL) ALL
#注:表示sanle用戶,可以在這台主機上執行任何用戶的任何命令,但是使用sudo執行時需要輸入sanle用戶的密碼
#注:不設置NOPASSWD 第1次輸入密碼後 密碼有時效性
[root@sanchuang-linux bin]# su - sanle # 注:切換到sanle用戶
[sanle@sanchuang-linux ~]$ sudo passwd wy # 注:前面+sudo 能進行任何操作
我們信任您已經從系統管理員那裡了解了日常注意事項。
總結起來無外乎這三點:
#1) 尊重別人的隱私。
#2) 輸入前要先考慮(後果和風險)。
#3) 權力越大,責任越大。
[sudo] sanle 的密碼: # 注:需要輸入sanle用戶 密碼
[root@sanchuang-linux bin]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
sanle ALL=(ALL) NOPASSWD:ALL
#注:表示sanle用戶,可以在這台主機上執行任何用戶的任何命令,無需輸入sanle的密碼
[sanle@sanchuang-linux ~]$ sudo passwd wy
更改用戶 wy 的密碼 。
新的 密碼: # 注:不需要驗證原密碼
===============================================================================
示例4:給用戶/組頒布權限
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux bin]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
sanle ALL=(ALL) NOPASSWD:ALL
#注:表示sanle用戶,可以在這台主機上執行任何用戶的任何命令,無需輸入sanle的密碼
%sanchuang5 ALL=(ALL) NOPASSWD:ALL
#注:表示sanchuang5這個組的用戶,在這台主機上可以執行任何用戶的任何命令,無需輸入密碼
#注:對於sanchuang5這個組賦予以任何用戶執行任何權限
#注:組裡的所有成員也會擁有這個權限
===============================================================================
示例5 對於指定的命令去授權
---------------------------------------------------------------------------------------------------------------------------------
[sanle@sanchuang-linux ~]$ which chown
/usr/bin/chown
[sanle@sanchuang-linux ~]$ which passwd
/usr/bin/passwd
[root@sanchuang-linux cc_test]# visudo
root ALL=(ALL) ALL
sanle ALL=(ALL) NOPASSWD:ALL
%sanchuang5 ALL=(ALL) NOPASSWD:ALL
wy ALL=(ALL) /usr/bin/chown,/usr/bin/passwd # 注:接命令的絕對路徑
#注:表示wy用戶在這台主機上,擁有chown,passwd命令執行授權,命令路徑寫命令的絕對路徑
[wy@sanchuang-linux ~]$ sudo chmod 777 aa
我們信任您已經從系統管理員那裡了解了日常注意事項。
總結起來無外乎這三點:
#1) 尊重別人的隱私。
#2) 輸入前要先考慮(後果和風險)。
#3) 權力越大,責任越大。
[sudo] wy 的密碼: # 注:驗證密碼後可以修改
[wy@sanchuang-linux ~]$ sudo passwd wy2
更改用戶 wy2 的密碼 。
新的 密碼:
===============================================================================
示例6:授權日誌 /var/log/目录下 secure文件
#注:有一個日誌文件會記錄下被授權者執行的所有命令 /var/log/secure
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux cc_test]# cd /var/log/
[root@sanchuang-linux log]# less secure
uid=0 tty=/dev/pts/2 ruser=wy rhost= user=wy
Nov 12 16:43:26 sanchuang-linux sudo[2424]: pam_unix(sudo:auth): conversation failed
Nov 12 16:43:26 sanchuang-linux sudo[2424]: pam_unix(sudo:auth): auth could not identify password for [wy]
Nov 12 16:43:26 sanchuang-linux sudo[2424]: wy : command not allowed ; TTY=pts/2 ; PWD=/home/wy ; USER=root
; COMMAND=/bin/chmod 777 aa
===============================================================================
示例7
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux bin]# ls -ld /bin/passwd
-rwsr-xr-x. 1 root root 33600 4月 7 2020 /bin/passwd
#注:s位 普通用戶有設置密碼的權限,但是沒有為他人設置密碼的權限,且密碼需要滿足密碼複雜度
八。練習#
yum install net-tools -y
授予 bailongma 用戶:useradd、userdel、passwd
授予 baigujing 用戶:ip、ping、ifconfig、route
授權 yutujing 用戶:poweroff、reboot
#注:授權不會檢測系統裡有該用戶
示例1
---------------------------------------------------------------------------------------------------------------------------------
[wy@sanchuang-linux ~]$ which useradd # 注:查找命令的絕對路徑
/usr/sbin/useradd
………………………………
[wy@sanchuang-linux ~]# visudo
root ALL=(ALL) ALL
bailongma ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd
baigujing ALL=(ALL) /usr/sbin/ip,/usr/bin/ping,/usr/sbin/ifconfig,/usr/sbin/route
yutujing ALL=(ALL) /usr/sbin/poweroff,/usr/sbin/reboot
===============================================================================
示例2:(ALL) 可以不寫
---------------------------------------------------------------------------------------------------------------------------------
[wy@sanchuang-linux ~]# visudo
root ALL=(ALL) ALL
bailongma ALL=/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd # 注:(ALL) 可以不寫
baigujing ALL=/usr/sbin/ip,/usr/bin/ping,/usr/sbin/ifconfig,/usr/sbin/route
yutujing ALL=/usr/sbin/poweroff,/usr/sbin/reboot
===============================================================================
示例3:定義別名
--------------------------------------------------------------------------------------------
[wy@sanchuang-linux ~]# visudo
#定義命令別名
Cmnd_Alias NETWORK = /usr/sbin/ip,/usr/bin/ping,/usr/sbin/ifconfig,/usr/sbin/route
Cmnd_Alias SHUT = /usr/sbin/poweroff,/usr/sbin/reboot
Cmnd_Alias USER = /usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd
bailongma ALL=USER,NETWORK
baigujing ALL=NETWORK
yutujing ALL=SHUT
------------------------------------------------------------------------
[baigujing@sanchuang-linux ~]$ sudo ip a add 192.168.0.144/24 dev ens33 #注:為網卡增加ip地址
[sudo] baigujing 的密碼: # 注:ip命令權限的使用
[baigujing@sanchuang-linux ~]$ ip add
………………
inet 192.168.0.26/24 brd 192.168.0.255 scope global dynamic noprefixroute ens33
inet 192.168.0.144/24 scope global secondary ens33
………………
------------------------------------------------------------------------
#注:為網卡增加ip地址(1個網卡可以有多個ip地址)
[wy@sanchuang-linux ~]$ ip a add 192.168.0.144/24 dev ens33
九. SELinux 介紹#
- **SELinux 是什麼?有什麼用? **
- 如何查看 SELinux 是否開啟?
getenforce
- 如何關閉和開啟 SELinux?
臨時
setenforce
永久
修改配置文件
vim /etc/selinux/config
vim /etc/sysconfig/selinux
重新啟動系統
- SELinux 在企業裡使用多嗎?
.---------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELinux是什麼?
·SELinux是一個linux系統裡的一個安全方面的子系統,用來提升linux的整體的安全級別。是一種訪問控制體系,進程只能訪問那些在他的任務中所需要文件。(控制進程可以訪問哪些允許訪問的資源)
·操作系統有兩類訪問控制:自主訪問控制(DAC)和強制訪問控制(MAC)。
·標準Linux安全是一種DAC,SELinux為Linux增加了一個靈活的和可配置的的MAC。
·DAC(Discretionary Access Control)自主訪問控制
·工作原理:
·MAC(Mandatory Access Control)―――強制訪問控制 ---》selinux
·工作原理:
·哪些進程能訪問哪些類型的文件,都有安全策略
永久修改
#注:這是鏈接文件 /etc/sysconfig/selinux -> /etc/selinux/config
[root@cali log]# vim /etc/sysconfig/selinux
SELINUX=disabled
臨時配置
臨時配置,重新啟動系統會失效
0--》Permissive 寬容模式
1--》Enforcing 強制執行模式
[root@cali selinux]# setenforce 0
[root@cali selinux]# getenforce
Permissive
[root@cali selinux]#
[root@cali selinux]# setenforce 1
[root@cali selinux]# getenforce
Enforcing
[root@cali selinux]#
·進程控制 :控制哪些進程能訪問哪些文件,因為它對進程和文件進行了分類,制定了策略,策略裡規定了哪些類型的進程能操作哪些類型的文件。
·服務異常不能訪問--》通過網絡不能訪問
·1.考慮iptables防火牆是否開啟
·2.考慮selinux安全機制是否開啟
·iptables 是外層的安全策略防火牆
·selinux是linux內部的安全策略機制防火牆
博客鏈接:https://blog.csdn.net/yanjun821126/article/details/80828908
SELinux
是內核集成的一個安全相關的子系統,可以讓系統更加的安全
內核版本2.6以上支持
#注:查看內核版本 uname -r
[root@sanchuang-linux bin]# uname -r
4.18.0-193.el8.x86_64
安全增強型 Linux(Security-Enhanced Linux)簡稱 SELinux,它是一個 Linux 內核模塊,也是 Linux 的一個安全子系統。
SELinux 的作用
SELinux 主要作用就是最大限度地減小系統中服務進程可訪問的資源(最小權限原則)。
DAC:
在沒有使用 SELinux 的操作系統中,決定一個資源是否能被訪問的因素是:某個資源是否擁有對應用戶的權限(讀、寫、執行)
這種權限管理機制的主體是用戶,也稱為自主訪問控制(DAC)
MAC:
在使用了 SELinux 的操作系統中,決定一個資源是否能被訪問的因素除了上述因素之外,還需要判斷每一類進程是否擁有對某一類資源的訪問權限。
這種權限管理機制的主體是進程,也稱為強制訪問控制(MAC)
默認情況下SElinux屬於關閉狀態(disable) 服務訪問不了基本是設置了SElinux
示例:臨時修改
--------------------------------------------------------------------------------------------
#注:臨時修改 關機重啟後失效
#注:臨時配置,重新啟動系統會失效
#注:0 --》Permissive 寬容模式
#注:1 --》Enforcing 強制執行模式
[root@sanchuang-linux ~]# getenforce # 注:獲取當前selinux的模式
Disabled
[root@sanchuang-linux ~]# setenforce 0 # 注:0寬容模式 臨時生效
setenforce: SELinux is disabled
[root@sanchuang-linux ~]# setenforce 1 # 注:1強制模式(一定要遵循SELinux規則)
setenforce: SELinux is disabled
#注:0|1 Permissive|Enforcing 寬容模式|強制執行模式
=============================================================================================
示例:永久生效 修改配置文件
#注:配置文件:/etc/selinux/config
[root@sanchuang-linux ~]# vim /etc/selinux/config
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled # 注:指定工作模式
#注:修改之後生效,需要重啟電腦