正如我写的这篇博客文章中所述,我正在致力于自动创建颠覆存储库和相关网站。我在 su 到 www-data 用户运行以下命令的部分周围遇到了问题:
svnadmin create /svn/repository
在脚本的开头有一个检查,确保它以 root 或 sudo 身份运行,并且该命令之后的所有内容都需要以 root 身份运行。有没有一种好方法可以将那个命令作为 www-data 运行,然后切换回 root 来完成?
正如我写的这篇博客文章中所述,我正在致力于自动创建颠覆存储库和相关网站。我在 su 到 www-data 用户运行以下命令的部分周围遇到了问题:
svnadmin create /svn/repository
在脚本的开头有一个检查,确保它以 root 或 sudo 身份运行,并且该命令之后的所有内容都需要以 root 身份运行。有没有一种好方法可以将那个命令作为 www-data 运行,然后切换回 root 来完成?
使用'su'可能是请求密码,而 www-data 没有密码。我推荐命令
sudo
:条件是你的用户必须是root,或者在sudoers文件中配置
只需
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
用户无登录政策的标志的宝贵意见)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
flag to accommodatewww-data
user's no login policy 的宝贵评论)使用
su
: