我正在按照 我写的这篇博客文章 中所述自动执行Subversion存储库和相关网站的创建。我遇到了一些问题,我需要向www-data用户运行以下命令:
svnadmin create /svn/repository
脚本开头会进行检查,以确保该脚本以root或Sudo身份运行,并且此命令之后的所有内容都需要以root身份运行。有什么好方法可以将一个命令作为www-data运行,然后切换回root来完成?
只需使用su - www-data -c 'svnadmin create /svn/repository'
在脚本中由root运行。因此只有www-data用户可以运行此命令。
为以后的观众更新:
如果您收到"This account is currently not available"
错误,请考虑使用:
su - www-data -s /bin/bash -c 'svnadmin create /svn/repository'
(@Petr关于-s
标志以容纳www-data
用户的无登录政策)
使用“ su”可能是要求输入密码,而www-data没有密码。我建议使用命令Sudo
:
Sudo -u www-data command
条件是您的用户必须是root用户或在sudoers文件中配置
使用su
:
su [options] [username]
The options which apply to the su command are:
-c, --command COMMAND
Specify a command that will be invoked by the Shell using its -c.
2种可能的方法:
1)_Sudo
命令:
在大多数情况下,您将有权使用Sudo
命令,因此解决方案很简单:
Sudo -u target_user target_command
2)su
命令(如果未安装Sudo。Ex. Alpine-linux images
):
su - target_user -c 'target_command'
如果您收到'此帐户当前不可用'错误,则该用户没有登录名(Shell访问权限)有效的政策。如果是这样,请考虑使用:
su - target_user -s /bin/bash -c 'target_command'
(基于@Petr关于-s
标志的宝贵评论,以适应www-data
用户的不登录策略)