runuser命令用于以指定用户身份运行命令或shell。它类似于su命令,但是runuser命令可以指定要运行命令或shell的用户。

1、命令简介

runuser:运行一个带有替代用户和组id的shell,类似于su,但不会运行PAM钩子。

2、命令语法

runuser [OPTION]... [-] [USER [ARG]...]

3、命令描述

修改生效的用户id和组iduser。不会运行PAM钩子,也不会出现密码提示。该命令在以root用户运行时非常有用。如果以非root用户身份运行,没有设置用户ID的权限,该命令将失败。runuser命令在一些Linux发行版中可能不可用,可以尝试使用sudo -usu -命令作为替代方法。

4、命令选项

选项

描述

-, -l, --login

将shell作为登录shell

-g, --group=group

指定主要组

-G, --supp-group=group

指定补充组

-c, --command=COMMAND

传递单个命令COMMAND

到shell并使用-c

--session-command=COMMAND

传递单个命令COMMAND

到shell并使用-c

且不创建新会话

-f, --fast

将-f传递给shell

(适用于csh或tcsh)

-m, --preserve-environment

不重置环境变量

-p

与-m相同

-s, --shell=SHELL

如果/etc/shells允许,

运行指定SHELL

--help

显示此帮助信息并退出

--version

输出版本信息并退出

5、使用示例

1)以指定用户执行命令

testuser 用户的身份执行 ls /home/testuser 命令:

runuser -u testuser -- ls /home/testuser

2)以指定用户执行脚本

有一个脚本 script.sh,并且希望以 testuser 用户的身份执行它:

runuser -u testuser -- /path/to/script.sh

3)在 runuser 命令中传递环境变量

可以在 runuser 命令中传递环境变量。

runuser -u testuser -- sh -c 'export MYVAR=value && echo $MYVAR'

4)以指定用户执行多个命令

可以使用 sh -c 来执行多个命令:

runuser -u testuser -- sh -c 'cd /home/testuser && ls && echo "Done"'

5)以指定用户执行带有参数的命令

runuser -u testuser -- python3 /path/to/script.py arg1 arg2

6)在系统服务中使用 runuser

在某些情况下,runuser 命令可能会在系统服务脚本中使用。

[Service]
User=testuser
ExecStart=/usr/sbin/runuser -u testuser -- /path/to/command

7)以指定用户执行带有特殊字符的命令

当命令中包含特殊字符时,使用 sh -c 可以确保命令正确执行:

runuser -u testuser -- sh -c 'echo "This is a test" > /home/testuser/testfile.txt'

推荐文档