切换普通用户执行命令的工具-runuser详细使用指南

目录

1. 基本语法和常用选项

1.1 基本语法格式

1.2 常用选项说明

2. 常见案例

2.1 执行单条简单命令

2.2 以登录方式执行命令(模拟真实登录)

2.3 执行多个命令(批量操作)

2.4 访问受限文件系统或目录

2.5 检查特定用户的系统资源限制​

2.6 运行特定用户的自定义脚本或程序

3. 与 Su 和 Sudo 的对比


runuser 最核心的用途是 root 用户降权为普通用户执行命令(避免直接用 root 执行非必要操作,符合最小权限原则)。

1. 基本语法和常用选项

1.1 基本语法格式

runuser [选项] -u <用户名> -c '命令'
或
runuser -l <用户名> -c '命令'   
或
runuser  <用户名> -c '命令' 

1.2 常用选项说明

选项含义解释
-l <用户名> 或 -u <用户名>指定要切换的目标用户。-l 会模拟登录 shell,读取该用户的 profile 等环境变量。
-c '<命令>'指定要以目标用户身份运行的命令或脚本字符串。
-g <组名>指定主要组。
-G <组名1,组名2,...>指定附加组。
-m 或 --preserve-environment不重置环境变量,保持当前环境(在某些版本中可能有效)。
--session-command=COMMAND类似 -c,但不创建新的会话。

注意runuser 命令通常只能在 root 用户下运行

2. 常见案例

2.1 执行单条简单命令

# root 用户下,切换到普通用户test,执行 ls 查看其家目录
runuser -l test    ls /home/test
# 或
runuser  test  -c "ls /home/test"

2.2 以登录方式执行命令(模拟真实登录)

# 切换到 test1 并模拟登录,执行 echo $PATH(查看 test1 的环境变量 PATH)
runuser -l test1 -c "echo $PATH"
# 对比:无 -l 时,PATH 仍是 root 的 PATH
runuser test1 -c "echo $PATH"
runuser  -u bitdefender  -g  bitdefender  --  telnet  192.168.1.100    80

说明:

  • -l test1:等效于 su - test1,加载 test1 的登录配置文件(如 /home/test1/.bash_profile);
  • 若命令依赖用户自定义的环境变量(如开发环境的工具路径),必须加 -l

2.3 执行多个命令(批量操作)

# 切换到 user1,创建目录 → 复制文件 → 查看结果(用分号分隔命令)
runuser user1 -c "mkdir /home/user1/test; cp /home/user1/doc.txt /home/user1/test; ls /home/user1/test"

说明:

  • 多个命令用 ; 分隔,按顺序执行(前一个命令失败不影响后一个);
  • 若需 “前一个成功才执行后一个”,用 && 分隔(如 cmd1 && cmd2)。

2.4 访问受限文件系统或目录

当root用户因权限策略(如安全限制或NFS挂载点)无法直接访问某些文件时,可使用runuser以服务用户身份操作。

查看NFS共享目录的内容:
runuser -l apache -c 'ls -l /nfs/wwwroot/http/'

2.5 检查特定用户的系统资源限制​

runuser -l nginx -c 'ulimit -SHa'

2.6 运行特定用户的自定义脚本或程序

可用于自动化任务,例如调度cron作业以非root用户身份执行脚本,确保安全隔离。

runuser -l backupuser -c 'sh   /mnt/scripts/backup_mysql.sh'

此处,命令以backupuser身份运行备份脚本,减少root权限的暴露风险。

3. 与 Su 和 Sudo 的对比

特性

runuser

su

sudo

​需要密码​

​​否​​ (仅 root 可用)

​是​​ (除非由 root 执行)

​是​​ (验证自身密码)

​依赖 PAM​

是 (仅会话钩子)

是 (认证和会话钩子)

是 (认证和会话钩子)

​环境处理​

灵活 (-l或 -m)

通常模拟登录 (su - user)

可配置,通常保留部分环境

​适用场景​

​root 用户的脚本自动化​

用户间交互式切换

非 root 用户权限提升

​日志记录​

取决于 PAM 配置

是 (如 /var/log/secure)

是 (详细的命令审计)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值