「这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战」
超级用户: RHEL中的超级用户为root,具备最高权限(也有最高的破坏力)。
只有root用户才能进行软件安装删除、系统文件管理、用户管理等任务。
普通用户可以管理移动存储,root用户才能管理固定硬盘。
Red Hat建议管理员以普通用户身份登录,有需要时再切换到root用户。
切换用户:
su命令:用于进行用户切换
普通用户之间切换需要输入密码,root切换到普通用户不需要输入密码。
[yangmeng@VM-0-3-centos fu]$ su - fu
su启动非登录shell(non-login shell),使用原始用户的环境设置。
[fu@VM-0-3-centos ~]$ export VAR=test_su
[fu@VM-0-3-centos ~]$ echo $VAR
test_su
[fu@VM-0-3-centos ~]$ su yangmeng
Password:
[yangmeng@VM-0-3-centos fu]$ echo $VAR
test_su
su - 启动登录shell(login shell),导入该用户的环境设置(推荐)。
```csharp
[fu@VM-0-3-centos ~]$ export VAR=test_su
[fu@VM-0-3-centos ~]$ echo $VAR
test_su
[fu@VM-0-3-centos ~]$ su - yangmeng
Password:
su: Authentication failure
[fu@VM-0-3-centos ~]$ su - yangmeng
Password:
[yangmeng@VM-0-3-centos ~]$ echo $VAR
[yangmeng@VM-0-3-centos ~]$ exit
logout
使用SUDO运行命令:
普通用户使用sudo可以获取root用户的访问权限。
sudo需要用户输入普通用户自己的密码以进行身份验证。
```csharp
[fu@VM-0-3-centos ~]$ sudo pvs
[sudo] password for fu:
通过sudo运行的命令,会在/var/log/secure中记录日志。
[root@VM-0-3-centos ~]# less cat /var/log/secure
在RHEL 7和RHEL 8中,属于wheel组的用户,可以运行sudo提权为root用户。
RHEL 6中属于wheel组的用户无法使用sudo提权为root用户。
使用Sudo获取交互式Root Shell:
使用su命令切换至root用户需要root密码,存在安全风险,因此可使用sudo命令提
权至root用户
而无需root密码。
$ sudo su -:使具有sudo权限的普通用户获得root shell,需输入自身密码,而
不需输入root密码。
$ sudo -i:将普通用户切换到root shell
[fu@VM-0-3-centos ~]$ sudo -i lvs
Nov 25 16:21:38 VM-0-3-centos sudo: fu : TTY=pts/0 ; PWD=/home/fu ; USER=root
; COMMAND=/bin/bash -c lvs
注意:
1. sudo su - 和 sudo -i 略有不同。
2. sudo su - 将完全切换至root用户的环境变量,而sudo -i的环境变量可能会 不同。
配置Sudo:
sudo的主配置文件是/etc/sudoers,建议采用visudo命令进行编辑。
/etc/sudoers配置示例:
1. %wheel:指定用户组wheel
2. ALL=(ALL):定义可以在任意主机上的对应命令,wheel可以运行任意命令。
3. ALL:wheel可以任意用户身份运行此命令
[root@VM-0-3-centos ~]# ll /etc/sudoers #查看sudores文件权限,发现只有读权限
-r--r----- 1 root root 4355 Nov 25 16:00 /etc/sudoers
[root@VM-0-3-centos ~]# chmod 640 /etc/sudoers #设置root在sudores文件有写权限
[root@VM-0-3-centos ~]# ll /etc/sudoers
-rw-r----- 1 root root 4355 Nov 25 16:00 /etc/sudoers
##Allow root to run any commands anywhere
root ALL=(ALL) ALL
/etc/sudoers.d目录也可以存放配置文件
如下所示:/etc/sudoers.d/user01(此方法需要交互输入普通用户密码)
user01 ALL=(ALL) ALL
使用如下方法不输入普通用户密码运行sudo命令:在ansible中非常有用
ansible ALL=(ALL) NOPASSWD:ALL
* 注意:
1. 使用SSH登录云实例(instance)时,需指定特定用户的私钥来登录,再使用
sudo
提权至root用户