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		# 注:指定工作模式
#注:修改之后生效,需要重启电脑

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。