RHCSA笔记-05
常用的用户/用户组文件
- /etc/passwd 用户配置文件
- /etc/group 组配置文件
- /etc/login.defs 定义了useradd创建用户时创建的相关参数
- /etc/defaults/useradd
/etc/shadow 密码配置文件
文件格式如下
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
这9个字段的含义:
- 登录名 — 登录名
- 加密口令 — 使用SHA-512/SHA-256/MD5算法加密后的密码,若为空,表示该用户无需密码即可登录,若为“*”表示该账号不能用于登录系统,若为“!!”表示该账号密码已被锁定
- 最后一次修改时间 — 最近一次更改密码的日期,以距离1970年1月1日的天数表示
- 最小时间间隔 — 密码在多少天内不能被修改。默认值为0,表示不限制
- 最大时间间隔 — 密码在多少天后必须被修改。默认值为99999,表示不进行限制
- 警告时间 — 提前多少天警告用户密码将过期,默认值为7天,0表示不提供警告
- 不活动时间 — 密码过期多少天后禁用此用户
- 失效时间 — 密码失效日期,以距离1970年1月1日的天数表示,默认为空,表示永久可用
- 标志 — 保留未用,以便以后发展之用
两种更改密码方式
passwd
- -d——清空指定用户的口令。这与未设置口令的账户不同,未设置口令的账户无法登录系统,而口令为空的账户可以。
- -f——强迫用户下次登录时必须修改口令。
- -i——口令过期后多少天停用账户。
- -l——锁定(停用)用户账户。
- -n——指定口令的最短存活期。
- -S——显示账户口令的简短状态信息(是否被锁定)。
- -u——解锁用户账户。
- -n 指定密码的最短使用期限
- -x 指定密码的最长使用期限
chage也可以更改密码参数
chpasswd 批量修改密码
[root@localhost ~]# cat users
zxx:redhat
wjx:redhat
admin:redhat
[root@localhost ~]# chpasswd < users
[root@localhost ~]# echo root:redhat | chpasswd
/etc/gshadow 组密码配置文件
gpasswd 设置组密码
-
-r 删除组密码
-
-d 从组中移除用户 gpasswd -d haha g1
-
-a 把用户加入组 gpasswd -a haha g1
-
-M 指定用户列表加入组 gpasswd -M haha,hehe,xixi g1
-
-A 指定组长(和普通组成员的区别是可以在组里添加用户或者删除用户) gpasswd -A haha g1
-
-R 锁定组密码
注意: 解锁组密码直接更改组密码
newgrp 登录新组
- 使用方法: newgrp [-] [group]
su 用户切换
su redhat -c touch ~/file1
- -c 切换用户身份执行指定命令,执行后再回到原来的用户
su命令和su -命令区别就是:
su只是切换了root身份,但Shell环境仍然是普通用户的Shell;而su -连用户和Shell环境一起切换成root身份了。
sudo 控制用户对系统命令的使用权限
vim /etc/sudoers ==>visudo
redhat ALL=(ALL) ALL
授权用户 授权用户再哪个主机(可切换的身份) 可执行的命令
实验
创建学习组1,学习组2 ;他们的组gid分别为1111,2222,添加成员并将uid为1088,
和uid为1066的成员为两组的组长,其中一组组长有一个‘外号’laoda。
不同学习组进入需要密码才能进入(设置密码);即使密码泄露也不希望组之外的成员进入。
权限管理
1.显示权限(查看文件)
权限的两种描述方式
字符形式: r 读 w 写 x 执行 -没有对应权限。
数值形式: r=4 w=2 x=1 将一组权限值相加显示 。
所属用户权限u 所属组权限 g 其他用户的权限o
2.修改权限
chown 更改文件的所属用户
#仅修改所属用户
chown 用户名 文件名
#仅修改所属组
chown .组名 文件名
#修改所属用户和组
chown 用户名:组名 文件名
chgrp 更改文件的所属组
chgrp 组名 文件名
chmod 修改权限
注:root管理员忽略所有权限,权限仅对一般用户生效
字符形式: u 表示所属用户 ;g 表示所属组; o 表示其他用户; a==ugo 表示所有用户
- 赋值符号 := + -
[root@localhost ~]# chmod u-w,g+rw,o=rw anaconda-ks.cfg
[root@localhost ~]# ll anaconda-ks.cfg
-r--rw-rw-. 1 root redhat 1554 Feb 19 2021 anaconda-ks.cfg
[root@localhost ~]# chmod u=rw anaconda-ks.cfg
[root@localhost ~]# ll anaconda-ks.cfg
-rw-rw-rw-. 1 root redhat 1554 Feb 19 2021 anaconda-ks.cfg
[root@localhost ~]# chmod a=r anaconda-ks.cfg
[root@localhost ~]# ll anaconda-ks.cfg
-r--r--r--. 1 root redhat 1554 Feb 19 2021 anaconda-ks.cfg
[root@localhost ~]# chmod a+x anaconda-ks.cfg
[root@localhost ~]# ll anaconda-ks.cfg
-r-xr-xr-x. 1 root redhat 1554 Feb 19 2021 anaconda-ks.cfg
[root@localhost ~]# chmod ugo+w anaconda-ks.cfg
[root@localhost ~]# ll anaconda-ks.cfg
-rwxrwxrwx. 1 root redhat 1554 Feb 19 2021 anaconda-ks.cfg
数值形式:
chmod 600 FILENAME
chmod 6 FILENAME == chomd 006 FILNAME
3.权限匹配规则
安全上下文
(运行一个可执行文件,回转换成一个进程,进程的发起者用户是当前用户,则通过进程匹配一个目标文件,则判发起者用户对目标有没有相应权限,判断发起用户(进程的发起者用户)是否是文件的所属用户,如果是就匹配所属用户的权限,不是则匹配是否是组用户,是匹配组权限,不是直接匹配其他用户的权限。)
系统任何进程开始都保存为一个文件,由用户执行可执行文件后成为进程,而能否执行,取决于用户对可执行文件有没有权限,而程序一旦执行后转为进程,那么进程就与之前的可执行文件无关,进程的权限为进程发起者的权限,而进程能否访问某个文件,则取决于发起者是否有权限访问目标文件,而这一切就叫做安全上下文。
r 读权限— 文本文件(-)
需要读权限的命令:cat tac more less head tail nano vim grep wc cut ;在目录文件 ls
w 写权限 – 文本文件(-)
需要写权限的命令:vim nano > >> |tee -a ;在目录 创建文件touch mkdir cp mv rm
x 执行权限 --文本文件 命令文件
对目录文件执行 cd,需要执行权限
注意:
- 对于目录文件有读或者写权限必须要有执行权限则: r-x rwx。
- 对文件有写权限,也需要有读权限。
- 对于用户如果对该目录有写权限则可以删除该目录下所有用户创建的文件。
系统默认文本文件权限值 644 文本文件最高权限值 666
666 rw- rw- rw-
055 — r-x r-x
622 rw- -w- -w-
目录文件的权限值 755 最高权限值 777
权限掩码值(权限过滤符)022
4.特殊权限
除了了r(读取)、w(写入)、x(执行)三种权限外,还有对应u(用户)、g(组)、o(其他用户)的三种特殊权限。
-
SET UID(SUID)
-
SET GID(SGID)
-
Sticky Bit(SBit,粘滞位)
- u+s 可执行文件所属用户的强制位,作用让进程文件的所属用户不再属于发起者的身份,而是程序文件自身的所属用户 (对于可执行文件设置有意义(命令))----运行可执行文件的发起者身份是文件所属用户。
[root@localhost ~]# ll /test/mima --此文件只有root才有权限
----------. 1 root root 2742 Nov 24 16:27 /test/mima
[root@localhost ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 87496 Apr 10 2020 /usr/bin/cat
[redhat@localhost test]$ cat mima --redhat用户无法查看
cat: mima: Permission denied
[root@localhost ~]# chmod u+s /usr/bin/cat --设置特殊权限后,执行该命令文件的所属用户就是文件自身的用户,root。
[redhat@localhost test]$ cat mima --相当于redhat,使用执行cat时,用的时root的权限。
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
-
g+s 可执行文件所属组的强制位,作用让进程文件的所属组不再属于发起者的身份,而是程序文件自身的所属组 ,可以对目录文件设置。
-
o+t 仅对目录生效 该目录下用户只能删除自己的文件不能删除别人创建的文件