Sudo svn 以其他用户身份更新

Sudo svn 以其他用户身份更新

我希望我们的开发人员(包括我)能够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

或者,您可以使用单个脚本实现相同的操作(将用户限制为目标程序功能的子集)

相关内容