只允许特定的组用户su切换到root

linux系统root具有至高无上的权限,工作生产环境或者VPS一般为了安全起见,禁止root登录,禁止root用户权限,使用普通用户登录,有特殊需求可以su或sudo切换到root权限进行操作,下面介绍一个方法只允许特定的组用户su切换到root:


1、新建普通用户,比如baby

useradd  baby

2、修改密码

passwd baby

3、将帐号加入wheel组

usermod -G wheel baby

4、设置只允许这个组的帐号,使用su命令切换到root

vi /etc/pam.d/su

找到#auth            required        pam_wheel.so use_uid

去掉行首的注释符 # 保存退出;

接着vi /etc/login.defs

在最末添加SU_WHEEL_ONLY yes 保存退出即可。

或者执行 

echo "SU_WHEEL_ONLY yes">>/etc/login.defs

现在,再建立新的普通帐号,是无法使用su命令切换到root组了。



实验验证:

[root@localhost ~]# su - baby
[baby@localhost ~]$ whoami  
baby
[baby@localhost ~]$ su -
Password:
[root@localhost ~]# whoami
root
[root@localhost ~]# su - anglea
[anglea@localhost ~]$ whoami
anglea
[anglea@localhost ~]$ su -
Password:
su: incorrect password


baby属于wheel组,wheel组的用户只允许su切换到root;anglea不属于wheel组,正确输入root的密码也提示不正确的密码,无法切换到root;



<think>好的,用户想了解如何在Shell中切换root用户。首先,我需要回顾一下常用的切换用户命令,比如susudo。根据引用[1],用户提到了三种方法:sudo susudo -i和su - root。这三种方法虽然都能切换root,但有不同的环境变量处理方式。需要详细说明它们的区别。 然后,用户可能对权限提升的具体步骤感兴趣,比如是否需要输入密码,或者如何避免每次都输入密码。根据引用[2]和[3],有些情况下需要使用sudo来执行特定命令,或者在脚本中以root身份运行部分代码。这里可能需要提到在脚本中使用su -c或sudo来执行命令的方法。 另外,引用[4]提到了使用expect脚本自动输入密码,这可能涉及安全性问题,需要提醒用户注意不要在脚本中硬编码密码。但用户的问题主要是切换命令,所以可能作为进阶方法简要提及。 用户的需求可能包括交互式切换和脚本中切换两种情况。需要分情况说明,例如在终端中直接运行命令和在脚本中如何切换。比如,交互式情况下使用su -,而脚本中可能需要使用sudo或者expect自动化。 还要注意环境变量的差异,比如使用su - root会加载root的环境,而sudo su可能保留当前用户的环境。这对执行某些需要特定环境配置的命令可能有影响,需要指出区别。 可能还需要提到如何验证是否成功切换root,比如通过whoami命令或检查当前目录是否变为/root。 最后,根据用户提供的示例问题,应该生成相关的问题,比如不同方法的区别、安全性考虑、脚本中使用的最佳实践等。</think>在Shell中切换root用户的常用方法及区别如下: ### 一、交互式切换方法 1. **su命令** ```shell su - root ``` - 需要输入root密码 - 完全加载root用户环境变量 - 示例验证:切换后`pwd`显示`/root`目录[^1] 2. **sudo su** ```shell sudo su ``` - 需要当前用户sudo权限 - 保留当前用户环境变量 - 示例验证:`env`命令显示原用户环境[^1] 3. **sudo -i** ```shell sudo -i ``` - 模拟root用户登录过程 - 加载root的`.bashrc`等配置文件 - 示例验证:`HOME`变量变为`/root`[^1] ### 二、非交互式切换(脚本中使用) 1. **单条命令提权** ```shell sudo cat /root/secret.txt # 执行单条root权限命令[^2] ``` 2. **执行代码块** ```shell su - root <<EOF cd /root ls -al EOF ``` 3. **自动化脚本** ```expect #!/usr/bin/expect spawn su root expect "Password:" {send "your_password\r"} send "whoami > log.txt\r" expect eof # 自动输入密码(存在安全风险)[^4] ``` ### 三、安全性建议 1. 优先使用`sudo`执行具体命令 2. 避免在脚本中明文存储密码 3. 配置`visudo`精细控制权限
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值