我正在致力于自动创建 subversion 存储库和相关网站,如我写的这篇博文。我在以 www-data 用户身份运行以下命令时遇到了问题:
svnadmin create /svn/repository
脚本开头有一个检查,确保它以 root 或 sudo 身份运行,并且该命令之后的所有命令都需要以 root 身份运行。有没有好的方法可以以 www-data 身份运行该命令,然后切换回 root 以完成操作?
答案1
只需在以 root 身份运行的脚本中使用即可su - www-data -c 'svnadmin create /svn/repository'
。这样,只有此命令由 www-data 用户运行。
为未来的观众更新:
如果你收到"This account is currently not available"
错误,考虑使用:
su - www-data -s /bin/bash -c 'svnadmin create /svn/repository'
(@Petr 提到了关于-s
标记以适应www-data
用户无登录策略的宝贵意见)
答案2
使用 'su' 可能是要求输入密码,而 www-data 没有密码。我推荐以下命令sudo
:
sudo -u www-data command
条件是你的用户必须是root,或者在sudoers文件中配置
答案3
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
用户无登录策略的宝贵评论)
答案4
使用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.