mycpen

Mycpen

记录学习历程与受益知识
github
telegram
bilibili

18_Linux基礎-用戶權限3

一。回顧:/ 根目錄下的 /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		# 注:指定工作模式
#注:修改之後生效,需要重啟電腦
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。