1. 前言
在本教程中,您将学习如何在Linux/Unix系统中,以另一个用户的身份执行任务。
Linux系统有大量的优质工具,这些优质而高效的工具通常是极其小巧且高效的。本文将介绍3个命令,su
命令、sudo
命令和runuser
命令。
从下图可以看到,这些命令在不同的系统中,大小都不一致。但都是非常小巧的。
CentOS系统这3个命令文件的基本信息
Ubuntu系统这3个命令文件的基本信息
2. 以另一个用户的身份执行Linux命令方式之一:使用su
su
(Switch User)命令用于以其他用户执行shell命令。这个命令切换到新用户并加载他们的环境。
基本的su
命令如下所示:
su - username
上述命令用于切换至另一个用户,包括他的环境变量。但我们的目标是以另一个用户的身份运行Linux命令,而不需要切换到它们。要做到这一点,请看下面的示例。
我目前以root用户登录。你可以通过-c
参数借用其它用户身份,这里我借用的用户名为zcwyou
。下面的示例将以用户zcwyou运行ls
命令,而不需要切换到该用户。
whoami
输出结果
root
借用其它用户身份执行whoami
su - zcwyou -c 'whoami'
输出结果:
zcwyou
表明身份已经临时切换至用户zcwyou。仅针当次执行的命令切换身份。
3. 以另一个用户的身份执行Linux命令方式之一:使用sudo
命令
这通常用于以root
用户运行命令,但是您也可以借用其它用户的身份执行命令。
语法:
sudo -u username [commands...]
比如
whoami
输出结果:
root
借用用户zcwyou的身份执行whoami
sudo -u zcwyou 'whoami'
输出结果:
zcwyou
表明身份已经临时切换至用户zcwyou。仅针当次执行的命令切换身份。
如果sudo
不指定用户,默认使用root
身份执行Linux任务。
4. 以另一个用户的身份执行Linux命令方式之一:使用runuser
命令
在Linux系统中,还可以使用runuser
借用其他用户的身份运行命令。这是一般Linux用户不太熟悉的命令。
语法:
runuser - username -c [commands...]
使用例子,借用zcwyou
用户的身份,在home目录中建立目录hello
。
执行以下命令:
runuser - zcwyou -c 'mkdir -p ~/hello'
检查结果:
runuser - zcwyou -c 'ls -l'
您也可以在单个命令中执行多个动作。只需添加多个指令,以分号分隔。
runuser - zcwyou -c 'mkdir -p ~/hello; ls -l'
5. 结论
在本教程中,您已经学习了在Linux系统中如何以另一个用户的身份运行命令。您已经学习了使用su
、sudo
和runuser
三个 Linux命令借用其他用户的身份运行命令。如果你有更好的用法,请留言。
评论前必须登录!
注册