我希望我们的开发人员(包括我)能够svn update
以用户 www-data 的身份在我们的服务器上运行,以获得文件/目录权限。
我的解决方案是在 visudo 中授予sudo -u www-data svn
使用 NOPASSWD 运行的权限。我还为该命令添加了一个别名,并为其命名,svn
以使其对我们的开发人员透明。
这有效,但我被要求SVN 版本每次都要输入凭据(即使我告诉它保存,它也不会保存)。我正在考虑添加参数-i
,但我认为我应该先与你们核实一下 :)
我如何才能使它像svn update
正常运行命令一样顺利?
澄清:现在它正在工作。我只是不想每次运行时都输入我的 svn 凭据svn update
:)
答案1
我不完全确定,但将其-H
作为参数传递给 sudo 可能会解决凭证问题(每次都会被询问)。
这会默认将 HOME 环境变量设置为 /root,因此我将猜测这样 svn 客户端就可以知道在 /root/.subversion 中查找身份验证信息。为您的特定情况指定不同的主目录,无论凭据在哪里。此外,确保任何用户都可以写入/读取该文件。
答案2
这不就是 setuid 的用途吗?创建一个执行更新的脚本或编译的二进制文件(取决于您的安全要求)(一次system
调用即可完成),并将其设置为 setuid 并归 www-data 所有。
答案3
为什么不尝试使用 svn update --username wwwdata 运行它
答案4
这种行为在不同的发行版中实现不同 - 您使用的是哪一个?
对于 RHEL5:
Cmnd_Alias SVN = /usr/bin/svn 赫伯特 ALL = NOPASSWD: SVN
或者,您可以使用单个脚本实现相同的操作(将用户限制为目标程序功能的子集)