CentOS7中身份切换与提权

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
上一次登录:五 1127 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 1127 18:22 /studir/
[sss@centos7 ~]$

切换到用户root的登录环境

[sss@centos7 ~]$ su -
密码:		//提供密码
上一次登录:五 1127 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 - 
密码:
上一次登录:五 1127 18:38:21 CST 2020pts/0 上
最后一次失败的登录:五 1127 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 1127 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 ~]#

猜你喜欢

转载自blog.csdn.net/Sakura0156/article/details/110239622