CentOS7中身份切换与提权
1、su身份切换
1.1 su机制介绍
- Substitute User,切换/替换用户
root切换为任何可登录的用户,无需密码
普通用户切换至其他用户时,需要验证目标用户的登录密码–不指定目标用户时,默认切换为root
1.2 su基本用法
- 切换到新用户的登录环境
执行 su - 用户名 即可进入新的用户环境、
执行 exit 返回原来的用户环境。
1)管理员切换至普通用户,无需密码
以用户student的身份执行命令(创建文件 /home/sss/my.txt)
[root@centos7 ~]# su - sss -c 'touch /home/sss/my.txt' //换用户执行命令
[root@centos7 ~]# //自动回到原来环境
[root@centos7 ~]# ls -lh /home/sss/my.txt
-rw-rw-r--. 1 sss sss 0 11月 27 18:16 /home/sss/my.txt
[root@centos7 ~]#
切换到用户sss的登录环境,检查文件 /home/sss/my.txt 的归属
[root@centos7 ~]# su - sss
上一次登录:五 11月 27 18:16:15 CST 2020pts/0 上 //不需要密码
[sss@centos7 ~]$ //停留在目标用户的登录环境
[sss@centos7 ~]$ ll -h my.txt //检查文件my.txt的归属
-rw-rw-r--. 1 sss sss 0 11月 27 18:16 my.txt
[sss@centos7 ~]$
2)普通用户切换至管理员,需要密码
以用户root的身份执行命令(创建目录 /studir)
普通用户student,以root身份(命令中可以省略)执行命令时,需要验证root的密码:
[sss@centos7 ~]$ su - -c 'mkdir /studir' //换root身份执行命令
密码: //输入密码
[sss@centos7 ~]$ //自动回到原来环境
[sss@centos7 ~]$ ll -d /studir/ //确认执行结果
drwxr-xr-x. 2 root root 6 11月 27 18:22 /studir/
[sss@centos7 ~]$
切换到用户root的登录环境
[sss@centos7 ~]$ su -
密码: //提供密码
上一次登录:五 11月 27 18:22:42 CST 2020pts/0 上
[root@centos7 ~]# //验证成功后停留在root的登录环境
通过exit返回到最初的命令行环境。
[root@centos7 ~]# exit //返回到上次su操作之前的student用户
登出
[sss@centos7 ~]$ exit //返回到上上次su操作之前的root用户
登出
[root@centos7 ~]#
1.3 禁止滥用su切换权限
- 默认情况下,任何用户都可以使用su切换,必要时可以启用wheel组限制
- 除了root以外,只有加入wheel组的用户才被允许使用su切换,其他人使用su切换时,会提示拒绝权限
1)启用su操作的wheel组限制
修改/etc/pam.d/su文件,启用pam_wheel.so模块限制:
[root@centos7 ~]# vim /etc/pam.d/su
取消下图中红框本来有的注释。
2)验证结果
[root@centos7 ~]# su - zhsan //root --> zhsan
[zhsan@centos7 ~]$ su - //zhsan --> root
密码: //输入密码
su: 拒绝权限 //提示被拒绝,切换失败。
[zhsan@centos7 ~]$
[zhsan@centos7 ~]$ exit
登出
[root@centos7 ~]#
如果希望用户zhsan能够使用su命令,需要把这个用户加入到wheel组,可以参考以下操作。
[root@centos7 ~]# gpasswd -a zhsan wheel
正在将用户“zhsan”加入到“wheel”组中
[root@centos7 ~]# su zhsan
[zhsan@centos7 root]$
[zhsan@centos7 root]$ su -
密码:
上一次登录:五 11月 27 18:38:21 CST 2020pts/0 上
最后一次失败的登录:五 11月 27 18:39:22 CST 2020pts/0 上
最有一次成功登录后有 1 次失败的登录尝试。
[root@centos7 ~]# exit //切换成功
登出
[zhsan@centos7 root]$ exit
exit
[root@centos7 ~]#
2、sudo提权控制
2.1 sudo机制介绍
- Super Doing,只想管理员授权的命令。
- 允许授权用户代替管理员(或其他用户)来完成预先授权的命令。
- 授权用户、授权命令需要提前配置。
- 通过sudo执行命令时,只验证自己的密码(5分钟内不重复验证)。
2.2 sudo授权
- 使用visudo专用工具。
- 用户名本机可用主机名列表 = (用户身份) 授权命令列表。
- 不指定用户身份时,缺省为root。
1)配置sudo授权
[root@centos7 ~]# visudo
......
%wheel ALL=(ALL) NOPASSWD: ALL //允许wheel组的用户使用任何命令,无需密码
zy ALL = ALL //允许用户zy使用所有命令
zx ALL = /usr/bin/nmcli; /usr/bin/nmtui //只允许用户zx使用nmcli、nmtui管理网络
Defaults logfile=/var/log/sudo //添加此行后,要求记录sudo操作,即,所有使用过sudo的记录都会保存在这个文件中
......
2)使用sudo授权
切换为用户zy,查看自己的sudo权限
如果没有zy用户,注意要先添加zy用户,并设置好密码
[root@centos7 ~]# useradd zy //添加用户zy
[root@centos7 ~]# echo 123456 | passwd --stdin zy //交互设置密码
更改用户 zy 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@centos7 ~]#
[root@centos7 ~]# su - zy //切换为zy用户
[zy@centos7 ~]$ sudo -l
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] zy 的密码: //最近5分钟内第一次使用sudo,要求验证密码
匹配 %2$s 上 %1$s 的默认条目:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY
HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin, logfile=/var/log/sudo
用户 zy 可以在 centos7 上运行以下命令:
(root) ALL
[zy@centos7 ~]$
3)由用户zy通过sudo方式创建一个目录 /zydir,确认结果
[zy@centos7 ~]$ mkdir /zydir //正常使用时,无权在 / 下创建子目录
mkdir: 无法创建目录"/zydir": 权限不够
[zy@centos7 ~]$
[zy@centos7 ~]$ sudo mkdir /zydir //sudo方式使用,成功在 / 下创建子目录
[zy@centos7 ~]$ ll -d /zydir/
drwxr-xr-x. 2 root root 6 11月 27 19:10 /zydir/
[zy@centos7 ~]$
4)检查sudo操作记录
弃用了sudo日志以后,如果有用户通过sudo方式执行命令,会记录相关消息到指定的日志文件。通过查看日志文件,可以了解用户执行命令的情况。
[root@centos7 ~]# cat /var/log/sudo
Nov 27 19:07:10 : zy : TTY=pts/0 ; PWD=/home/zy ; USER=root ; COMMAND=list
Nov 27 19:10:29 : zy : TTY=pts/0 ; PWD=/home/zy ; USER=root ; COMMAND=/bin/mkdir
/zydir
[root@centos7 ~]#