红帽linux之sudo配置

109 阅读2分钟

「这是我参与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用户