Linux 中root 用户切换至其他用户

在 Linux 系统中,root 用户切换至其他用户有多种方式,具体方法及注意事项如下:


一、su 命令(Switch User)

1. 基本用法
su - 目标用户名

示例:切换到用户 john

su - john

特点

  • --l 选项会加载目标用户的环境变量(如 ~/.bashrc)。
  • 需输入目标用户的密码(除非 root 操作,root 切换无需密码)。
2. 不加载环境变量(快速切换)
su 目标用户名

区别:仅切换用户身份,不改变当前工作目录和环境变量。


二、sudo 命令(以其他用户身份执行命令)

1. 以目标用户运行单条命令
sudo -u 目标用户名 命令

示例:以用户 john 执行 whoami

sudo -u john whoami
2. 交互式切换到目标用户
sudo -iu 目标用户名

效果:等同于 su - 目标用户名,但通过 sudo 权限切换(需配置 sudoers 文件)。


三、runuser 命令(无需密码切换)

1. 仅限 root 使用
runuser -l 目标用户名 -c '命令'  # 执行单条命令
runuser - 目标用户名            # 交互式登录

特点

  • 无需输入目标用户密码,但 仅 root 可用
  • 适用于脚本中自动化操作。

四、注意事项

  1. 密码要求

    • su 需目标用户密码(root 除外),sudo 需当前用户有 sudo 权限。
    • root 切换至任何用户均 无需密码
  2. 环境差异

    • - 的切换(如 su - john)会加载目标用户的完整环境。
    • 不带 - 的切换(如 su john)保留当前环境变量。
  3. 权限控制

    • 普通用户无法直接切换至其他用户,除非通过 sudo 授权。
    • sudoers 文件配置示例(允许用户 alice 切换到 john):
      alice ALL=(john) /bin/su
      
  4. 安全建议

    • 避免长期使用 root 切换操作,完成任务后及时退出。
    • 推荐通过 sudo 限制权限,而非直接共享 root 密码。

五、退出切换的用户

exit   # 或按 Ctrl+D

作用:返回原用户(如从 john 返回到 root)。


六、应用场景示例

1. 脚本中切换用户执行任务
#!/bin/bash
runuser -l john -c 'echo "Running as $(whoami)"'
2. 管理员临时调试用户环境
su - john   # 加载 john 的环境变量
cd ~/projects
./start.sh
exit        # 返回 root

总结

命令需密码加载环境适用场景
su - 用户名是(root 除外)完全切换到目标用户环境
su 用户名是(root 除外)快速切换身份
sudo -iu 用户名当前用户 sudo 密码受控权限切换(需配置 sudo)
runuser - 用户名root 在脚本中切换用户
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思静鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值