day16用户组管理及用户提权
day16用户组管理及用户的提权
用户组管理
# 相关文件
/etc/group
root:x:0:
# 1.组名字
# 2.组密码占位符
# 3.GID
# 4.显示该组的附加成员
/etc/gshadow
root:::
# 1.组名字
# 2.组密码
# 3.组管理员
# 4.显示该组的附加成员
# 增
groupadd [选项] 组名
# 选项
-g:指定组的gid
-r:指定gid范围201-999之间的系统组
✓ 12:46:40 root@localhost.localdomain,10.0.0.158:~ # groupadd hjx100
✓ 12:51:35 root@localhost.localdomain,10.0.0.158:~ # tail -1 /etc/group
hjx100:x:1017:
#举例
-g
130 ✗ 16:49:00 root@localhost.localdomain,10.0.0.158:~ # groupadd zmm -g 8777
0 ✓ 16:49:37 root@localhost.localdomain,10.0.0.158:~ # tail -1 /etc/group
zmm:x:8777:
-r
0 ✓ 16:50:01 root@localhost.localdomain,10.0.0.158:~ # groupadd zmmm -r
0 ✓ 16:50:14 root@localhost.localdomain,10.0.0.158:~ # tail -1 /etc/group
zmmm:x:996:
#删
groupdel 组名
# 改
groupmod
-g:修改组的gid
-n:修改组名字
# 举例
-g:
0 ✓ 12:51:52 root@localhost.localdomain,10.0.0.158:~ # groupmod -g 1666 hjx100
0 ✓ 12:55:16 root@localhost.localdomain,10.0.0.158:~ # tail -1 /etc/group
hjx100:x:1666:
-n:
✓ 12:55:21 root@localhost.localdomain,10.0.0.158:~ # groupmod -n hjx99 hjx100
0 ✓ 12:56:27 root@localhost.localdomain,10.0.0.158:~ # tail -1 /etc/group
hjx99:x:1666:
# 查
0 ✓ 12:56:30 root@localhost.localdomain,10.0.0.158:~ # cat /etc/group
用户身份切换
Linux系统中,有时候普通用户有些事情是没有办法操作,除非是root管理员用户才可以做到,这时候就需要临时切换到root管理员身份来做事,那么在学习如何切换用户之前,我们先来了解下用户工作环境
如何在普通用户的情况下,完成日常工作?
- su 切换用户,使用普通用户登录,然后使用su命令切换到root。
- 优点:简单,方便
- 缺点:需要知道root密码,不安全,切换到root没有日志审计功能
- sudo 提权,当需要使用root权限时,进行提权,而无需切换至root用户。
- 优点:安全,方便
- 缺点:复杂
su命令
shell的种类:
- 交互式shell
- 非交互式shell
- 登录shell
- 用户登录需要用户名和密码,才可以登录
- 非登录shell
- 用户登录不需要用户名和密码,就可以登录
系统的环境变量文件
# 局部环境变量文件
~/.bashrc
~/.bash_profile
# 全局环境变量
/etc/profile
/etc/profile.d/*.sh(在/etc/profile.d中所有以.sh结尾的文件)
/etc/bashrc
# 推荐用/etc/profile.d/*.sh,自己创建一个空的.sh结尾的文件去修改
# 加载顺序
[kkk01@localhost ~]$ su - root
Password:
Last login: Sun Apr 10 13:53:53 CST 2022 on pts/0
加载了/etc/profile
加载了/etc/profile.d
加载了~/.bash_profile
加载了~/.bashrc
加载了/etc/bashrc
✓ 13:54:18 root@localhost.localdomain,10.0.0.158:~ # su - kkk01
Last login: Sun Apr 10 13:52:02 CST 2022 on pts/0
加载了/etc/profile
加载了/etc/profile.d
加载了/etc/bashrc
用户身份提权
sudo命令提权
什么是sudo
sudo就是普通用户可以提权,执行root用户可以执行的命令
为什么要用到sudo
如果在公司中,入职后,领导给运维用户时是普通用户,但有些命令需要root用户才能执行
sudo如何使用
# 1.系统用户的超级管理员(root)需要做sudo的配置(发配权限给普通用户)
# 2.普通用户只需要在执行命令前加上sudo命令即可
sudo的配置(root发兵符的过程)
# 没有sudo的命令,则需要安装
yum install -y sudo
# sudo的配置文件:
✗ 14:53:03 root@localhost.localdomain,10.0.0.158:~ # vim /etc/sudoers
0 ✓ 14:54:45 root@localhost.localdomain,10.0.0.158:~ # visudo
#用户名 所有主机=(所有角色) 所有命令执行权限
root ALL=(ALL) ALL
# hjx这个普通用户登录也不需要密码
hjx ALL=(ALL) NOPASSWD:ALL
# 推荐修改sudo方式
0 ✓ 14:54:45 root@localhost.localdomain,10.0.0.158:~ # visudo
-c:检查sudoers文件的语法
# 免密切换到root用户,就算不免密,也是输入zls用户的密码,切换到root用户
wq ALL=(ALL) ALL
[wq@localhost ~]$ sudo su - root
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for wq:
Last login: Sun Apr 10 15:10:49 CST 2022 on pts/0
加载了/etc/profile
加载了/etc/profile.d
加载了~/.bash_profile
加载了~/.bashrc
加载了/etc/bashrc
0 ✓ 15:13:00 root@localhost.localdomain,10.0.0.158:~ #
# 免密切换root
wq ALL=(ALL) nopasswd:ALL
[wq@localhost ~]$ sudo su - root
Last login: Sun Apr 10 15:16:53 CST 2022 on pts/0
加载了/etc/profile
加载了/etc/profile.d
加载了~/.bash_profile
加载了~/.bashrc
加载了/etc/bashrc
0 ✓ 15:17:19 root@localhost.localdomain,10.0.0.158:~ #
# 报错
[wq@localhost ~]$ sudo ll
sudo: ll: command not found
原因:ll是别名,不是系统命令,sudo不走别名,只认系统命令
# 普通用户以root身份执行命令
[wq@localhost ~]$ ls -l /root
ls: cannot open directory /root: Permission denied
[wq@localhost ~]$ sudo ls -l /root
total 884
drwxr-xr-x. 2 root root 6 Mar 21 11:17 abc
-rw-------. 2 root root 1469 Mar 16 14:54 anaconda-ks.cfg
-rw-r--r--. 1 root root 420318 Mar 24 11:35 background-2-scaled.jpg
-rw-r--r--. 1 root root 3229 Mar 23 16:24 bashrc
[wq@localhost ~]$ mkdir /root/hjx999
mkdir: cannot create directory ‘/root/hjx999’: Permission denied
[wq@localhost ~]$ sudo mkdir /root/hjx999
[wq@localhost ~]$ sudo ls -l /root/
total 884
drwxr-xr-x. 2 root root 6 Apr 10 15:22 hjx999
# sudoers其他别名配置
Host_Alias FILESERVERS = fs1, fs2
Cmnd_Alias ZLSCMD = /bin/cp,/bin/mv
Cmnd_Alias ZLSUNCMD =!/bin/rm,!/bin/su
# 命令前面加!就是不能执行此命令
Cmnd_Alias:命令别名
Host_Alias:主机别名
User_Alias:角色别名
# 给组发权限
# Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
# 加%就是提权组名字
# 用法:unermod 用户名 -G 提权组
总结
# 1.会修改visudo,添加用户提权
# 2.给用户免密执行sudo的权限
# 3.自定义用户的可执行命令,和不可执行命令
# 4.给组分配提权的权限
# 5.提权不用修改visudo,只需要加入wheel组,即可
注意:除非企业中有要求,哪些命令需要用,哪些不能使用
周末练习题
1.创建一个用户oldboy996并设置uid为615
✓ 15:41:18 root@localhost.localdomain,10.0.0.158:~ # useradd oldboy996 -u 615
2.创建一个mysql用户禁止登录并且不创建家目录
3 ✗ 15:50:01 root@localhost.localdomain,10.0.0.158:~ # useradd -M mysql -s /sbin/nologin
3.Linux系统中切换用户的命令为?
su - [用户名]
4.如何将/data/logs目录的权限赋给web用户和users组
web ALL=(ALL) ALL
%users ALL=(ALL) ALL
5.创建admins组
✗ 15:57:37 root@localhost.localdomain,10.0.0.158:~ # groupadd admins
0 ✓ 15:58:30 root@localhost.localdomain,10.0.0.158:~ # tail -1 /etc/group
admins:x:1670:
6.创建用户wow ,使用admins作为附加组
✓ 15:58:42 root@localhost.localdomain,10.0.0.158:~ # useradd wow -G admins
0 ✓ 16:00:13 root@localhost.localdomain,10.0.0.158:~ # id wow
uid=1017(wow) gid=1017(wow) groups=1017(wow),1670(admins)
7.创建用户niuwa,不可交互登录系统
niuwa ALL=(ALL) NOPASSWD: ALL
8.wow,niuwa的密码都是centos7
echo centos7 | passwd --stdin niuwa
echo centos7 | passwd --stdin wow
9.创建用户user100,将该用户添加到group123组中
6 ✗ 16:13:52 root@localhost.localdomain,10.0.0.158:~ # groupadd group123
0 ✓ 16:14:10 root@localhost.localdomain,10.0.0.158:~ # useradd user100 -g group123
0 ✓ 16:14:14 root@localhost.localdomain,10.0.0.158:~ # id user100
uid=1019(user100) gid=1671(group123) groups=1671(group123)
10.修改用户usre100 用户名为user1000
0 ✓ 16:14:39 root@localhost.localdomain,10.0.0.158:~ # usermod user100 -l user1000
11.如何删除用户oldboy?说说删除用户的-r参数什么意思?
1 ✗ 16:16:43 root@localhost.localdomain,10.0.0.158:~ # userdel -r oldboy
-r:删除所有相关文件
12.系统上有oldboy与oldgirl两个账号,如何把oldboy从原来oldboy用户组变为oldgirl用户组,将普通用户test加入root组的命令是?
使用usermod -g 将oldboy用户组变为oldgirl用户组
usermod test -g root
13.如何提权
visudo
14.作为一个Linux系统管理员,你希望在每一个新用户的目录下放一个文件 .bashrc,那么你应该在哪个目录下放置这个文件,以便于新用户创建主目录时自动将这个文件复制到自己的目录下
( A )
A./etc/skel/
B./etc/default/
C./etc/defaults/
D./etc/profile.d/
15.关于Linux的用户账号,下面说法正确的( C )
A.用户的密码,是以密文形式存储在/etc/passwd 文件中的
B.用户的密码,是以密文形式存储在/etc/passwd文件中的
C.用户的密码,是以密文形式存储在/etc/shadow文件中的
D.用户登录的时候,会把用户的密码明文与保存的密码做对比
16.普通用户的ID一般是( C )
A.>100
B.>500
C>>1000
D.>0
17.Linux的非root用户,在自己的目录中,不可以删除非空目录dirs的方法是( ACD )
A.rm dir dirs
B.rm -r dirs
C.mv dirs /dev/null
D.destroy dirs
18.改变文件所有者的命令为( A )
A.chmod
B.touch
C.chown
D.cat
19.关于建立系统用户的正确描述是( ABCD )
A.在Linux系统下建立用户使用adduser命令
B.每个系统用户分别在/etc/password和/etc/shadow文件中有一条记录
C.访问每个用户的工作目录使用命令“cd /home/用户名”
D.每个系统用户在默认状态下的工作目录在/home/用户名
E.每个系统用户在/etc/fstab文件中有一条记录
20.创建三个用户,分别是zls,oldboy,yourname这些用户都属于oldboyedu组的成员。这些用户的密码都是123
useradd zls -g oldboyedu;echo 123 |passwd --stdin zls
useradd oldboy -g oldboyedu;echo 123 |passwd --stdin oldboy
useradd hjx00 -g oldboyedu;echo 123 |passwd --stdin hjx00
思考一下问题
1.普通用户是否可以修改密码? 可以
2.修改密码,密码相关的文件是什么? /etc/shadow
3.密码相关文件的权限是什么? ----------
4.普通用户没有权限操作/etc/shadow文件,为什么还可以修改密码?
思维导图

浙公网安备 33010602011771号