一。回顾:/ 根目录下的 /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 # 注:指定工作模式
#注:修改之后生效,需要重启电脑