一. 回顾:/根目录下的 /etc 一般放配置文件
/根目录下的 /etc 一般放配置文件
一个用户的基本组只能有一个,附属组可以有多个;享受的权限是一样的,都是有那个组的权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| 示例 --------------------------------------------------------------------------------------------------------------------------------- [root@sanchuang-linux ~] [root@sanchuang-linux ~] uid=2224(sanle10) gid=2224(sanle10) 组=2224(sanle10) [root@sanchuang-linux ~] [root@sanchuang-linux ~] [root@sanchuang-linux ~] uid=2225(sanle11) gid=1043(sanchuang05) 组=1043(sanchuang05),1044(sanchuang06) [root@sanchuang-linux ~] hello:x:1007:1007::/home/hello:/bin/bash
[root@sanchuang-linux ~] -rw-r--r-- 1 root root 4539 11月 12 09:50 /etc/passwd [root@sanchuang-linux ~] ---------- 1 root root 4588 11月 12 09:50 /etc/shadow
[root@sanchuang-linux ~] [root@sanchuang-linux ~] sanle13:x:2227:2227:create sanle13:/home/sanle13:/bin/bash
[root@sanchuang-linux tmp] drwxr-xr-x. 9 root root 4096 11月 9 09:47 /lianxi
对个人环境信息做设置 ~/.bash_profile ~/.bashrc
[root@sanchuang-linux tmp] uid=2225(sanle11) gid=1043(sanchuang05) 组=1043(sanchuang05),1044(sanchuang06) [root@sanchuang-linux tmp] [sanle11@sanchuang-linux ~]$ touch cc [sanle11@sanchuang-linux ~]$ ls -al 总用量 16 …………………… -rw-r--r-- 1 sanle11 sanchuang05 0 11月 12 10:21 cc
[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
|
二. 练习
2.1
题目1
创建三个用户sx1,sx2,sx3,这三个用户的附属组都是sanle组,创建名为/home/sanle的目录,在该目录中,三个用户可以合作>处理文件。要求恰当修改该目录的权限,以便只允许用户和组能在这个目录中访问、删除、创建文件,其他用户没有任何权限,>三个用户新建的文件只能自己有权限删除,彼此无法删除,而且新建的文件应该被自动分配到sanle的组所有权。
1 2 3 4 5 6 7 8 9 10 11
| 示例 ---------------------------------------------------------------------
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
| 示例1 ---------------------------------------------------------------------
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 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:精密选择(推荐) ---------------------------------------------------------------------------------------------------------------------------------
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) # 注:访问控制列表(允许哪些人可以/不可以访问)
设置ACL:setfacl指令
常用选项
-m
:新增或修改ACL中的规则
-b
: 删除所有ACL规则
-x: 删除指定的ACL规则
查看ACL:getfacl指令
设置ACL:setfacl指令
常用规则
格式:类型
:特定的用户或组
:权限
user:(uid/name):(perms)
指定某位使用者的权限
group:(gid/name):(perms)
指定某一群组的权限
other::(perms)
指定其它使用者的权限
mask::(perms)
设定有效的最大权限
注意
#注:acl访问控制列表,工作中和云计算都比较常见
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| 示例1:查看文件acl ---------------------------------------------------------------------------------------------------------------------------------
[root@localhost ~]
user::rw- group::r-- other::r-- [root@localhost ~] -rw-r--r--. 1 root root 0 10月 27 11:42 win-utf-2.txt [root@localhost ~] ===============================================================================
示例2:对sanchuang用户有读写执行权限
--------------------------------------------------------------------------------------------------------------------------------- [root@localhost ~] [root@localhost ~]
user::rw- user:sanchuang:rwx group::r-- mask::rwx other::r-- [root@localhost ~] -rw-rwxr--+ 1 root root 0 10月 27 11:42 win-utf-2.txt ===============================================================================
示例3:对组有读写执行的权利
--------------------------------------------------------------------------------------------------------------------------------- [root@localhost ~] [root@localhost ~] -rw-rwxr--+ 1 root root 0 10月 27 11:42 win-utf-2.txt [root@localhost ~]
user::rw- user:sanchuang:rwx group::r-- group:sanchuang5:rw- mask::rwx other::r-- ===============================================================================
示例4:设置有效的最大权限
---------------------------------------------------------------------------------------------------------------------------------
[root@localhost ~] [root@localhost ~]
user::rw- user:sanchuang:rwx group::r-- group:sanchuang5:rw- mask::r-- other::r--
|
四. ACL类型
ACL类型
预设型ACL(Default ACL)
#注:只能对目录设置预设型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| 示例 设置预设ACL --------------------------------------------------------------------------------------------------------------------------------- [root@sanchuang-linux lianxi] [root@sanchuang-linux lianxi]
user::rwx group::r-x other::r-x [root@sanchuang-linux lianxi] [root@sanchuang-linux lianxi]
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] [root@sanchuang-linux cc_test] [root@sanchuang-linux cc_test]
user::rw- user:sanle10:rw- group::r-x mask::rw- other::r--
|
五. 练习
1、新建三个组 shuiguo, mifeng, shaokao
2、新建3个用户,pingguo属于shuiguo组,jingshi属于mifen组,yueyang属于shaokao组
3、在根目录下新建目录food,将/etc/passwd文件复制到food目录下
4、设置权限,passwd文件能被shuiguo组读写,jingshi这个用户读写执行,yueyang这个用户不能进行任何操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| 示例 ---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux lianxi] [root@sanchuang-linux lianxi] [root@sanchuang-linux lianxi]
[root@sanchuang-linux lianxi] [root@sanchuang-linux lianxi] [root@sanchuang-linux lianxi]
[root@sanchuang-linux lianxi] [root@sanchuang-linux lianxi] [root@sanchuang-linux lianxi]
[root@sanchuang-linux food] [root@sanchuang-linux food] [root@sanchuang-linux food] [root@sanchuang-linux food]
user::rw- user:jingshi:rwx user:yueyang:--- group::r-- group:shuiguo:rw- mask::rwx other::r--
|
六. 权限的继承和拒绝
一个用户属于某个组会继承这个组的权限。
1.主要组
2.次要组
用户的主要组(有效组)属于某个组,会继承这个组的权限,如果是附属组属于某个组,也会继承。
拒绝权限高于一切 —》针对用户
一个组允许,一个组拒绝 —》允许
七. sudo授权
sudo授权
关机、重启系统、配置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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| 示例1:生成随机密码
https://www.cnblogs.com/shijunxian/archive/2020/05/26/12961543.html --------------------------------------------------------------------------------------------------------------------------------- [root@sanchuang-linux food] [root@sanchuang-linux bin] wjp4[HC]hx6mSO6 ===============================================================================
示例2:sudo配置文件 /etc/sudoers
--------------------------------------------------------------------------------------------------------------------------------- [root@sanchuang-linux bin] ………………
root ALL=(ALL) ALL
===============================================================================
示例3:编辑配置文件/etc/sudoers 给用户颁布权限
--------------------------------------------------------------------------------------------------------------------------------- [root@sanchuang-linux bin]
root ALL=(ALL) ALL sanle ALL=(ALL) ALL
[root@sanchuang-linux bin] [sanle@sanchuang-linux ~]$ sudo passwd wy 我们信任您已经从系统管理员那里了解了日常注意事项。 总结起来无外乎这三点: [sudo] sanle 的密码: [root@sanchuang-linux bin]
root ALL=(ALL) ALL sanle ALL=(ALL) NOPASSWD:ALL
[sanle@sanchuang-linux ~]$ sudo passwd wy 更改用户 wy 的密码 。 新的 密码: ===============================================================================
示例4:给用户/组颁布权限 --------------------------------------------------------------------------------------------------------------------------------- [root@sanchuang-linux bin]
root ALL=(ALL) ALL sanle ALL=(ALL) NOPASSWD:ALL
%sanchuang5 ALL=(ALL) NOPASSWD:ALL
===============================================================================
示例5 对于指定的命令去授权 --------------------------------------------------------------------------------------------------------------------------------- [sanle@sanchuang-linux ~]$ which chown /usr/bin/chown [sanle@sanchuang-linux ~]$ which passwd /usr/bin/passwd [root@sanchuang-linux cc_test] root ALL=(ALL) ALL sanle ALL=(ALL) NOPASSWD:ALL %sanchuang5 ALL=(ALL) NOPASSWD:ALL wy ALL=(ALL) /usr/bin/chown,/usr/bin/passwd
[wy@sanchuang-linux ~]$ sudo chmod 777 aa 我们信任您已经从系统管理员那里了解了日常注意事项。 总结起来无外乎这三点: [sudo] wy 的密码: [wy@sanchuang-linux ~]$ sudo passwd wy2 更改用户 wy2 的密码 。 新的 密码: ===============================================================================
示例6:授权日志 /var/log/目录下 secure文件
--------------------------------------------------------------------------------------------------------------------------------- [root@sanchuang-linux cc_test] [root@sanchuang-linux log] 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] -rwsr-xr-x. 1 root root 33600 4月 7 2020 /bin/passwd
|
八. 练习
yum install net-tools -y
授予bailongma用户:useradd、userdel、passwd
授予baigujing用户:ip、ping、ifconfig、route
授权yutujing用户:poweroff、reboot
#注:授权不会检测系统里有该用户
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| 示例1 --------------------------------------------------------------------------------------------------------------------------------- [wy@sanchuang-linux ~]$ which useradd /usr/sbin/useradd ……………………………… [wy@sanchuang-linux ~] 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 ~] root ALL=(ALL) ALL bailongma ALL=/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd 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 ~]
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 [sudo] baigujing 的密码: [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 ……………… ------------------------------------------------------------------------
[wy@sanchuang-linux ~]$ ip a add 192.168.0.144/24 dev ens33
|
九. SELinux介绍
**SELinux是什么?有什么用? **
如何查看SELinux是否开启?
getenforce
临时
setenforce
永久
修改配置文件
vim /etc/selinux/config
vim /etc/sysconfig/selinux
重新启动系统
.---------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| SELinux是什么? ·SELinux是一个linux系统里的一个安全方面的子系统,用来提升linux的整体的安全级别。是一种访问控制体系,进程只能访问那些在他的任务中所需要文件。(控制进程可以访问哪些允许访问的资源)
·操作系统有两类访问控制:自主访问控制(DAC)和强制访问控制(MAC)。
·标准Linux安全是一种DAC,SELinux为Linux增加了一个灵活的和可配置的的MAC。
·DAC(Discretionary Access Control)自主访问控制
·工作原理:
·MAC(Mandatory Access Control)―――强制访问控制 ---》selinux
·工作原理:
·哪些进程能访问哪些类型的文件,都有安全策略
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 永久修改
[root@cali log] SELINUX=disabled
临时配置 临时配置,重新启动系统会失效 0--》Permissive 宽容模式 1--》Enforcing 强制执行模式 [root@cali selinux] [root@cali selinux] Permissive [root@cali selinux] [root@cali selinux] [root@cali selinux] Enforcing [root@cali selinux]
|
1 2 3 4 5 6 7 8
| ·进程控制 :控制哪些进程能访问哪些文件,因为它对进程和文件进行了分类,制定了策略,策略里规定了哪些类型的进程能操作哪些类型的文件。
·服务异常不能访问--》通过网络不能访问 ·1.考虑iptables防火墙是否开启 ·2.考虑selinux安全机制是否开启
·iptables 是外层的安全策略防火墙 ·selinux是linux内部的安全策略机制防火墙
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| 博客链接:https://blog.csdn.net/yanjun821126/article/details/80828908
SELinux 是内核集成的一个安全相关的子系统,可以让系统更加的安全 内核版本2.6以上支持
[root@sanchuang-linux bin] 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
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| 示例:临时修改 --------------------------------------------------------------------------------------------
[root@sanchuang-linux ~] Disabled [root@sanchuang-linux ~] setenforce: SELinux is disabled [root@sanchuang-linux ~] setenforce: SELinux is disabled
============================================================================================ 示例:永久生效 修改配置文件
[root@sanchuang-linux ~]
SELINUX=disabled
|