我希望我们的开发人员(包括moi)能够在我们的服务器上以用户www-data的身份运行svn update ,以获得文件/目录权限。
我的解决scheme是授予访问运行sudo -u www-data svn与visudo NOPASSWD。 我还为这个命令添加了一个别名,并将其命名为svn以使其对我们的开发人员是透明的。
这有效,但我每次都被要求提供svn证书(即使我告诉它,也不保存)。 我正在考虑添加-i参数,但我想我应该先和你们核对一下:)
我如何使这一切顺利运行svn update命令正常?
澄清:现在正在工作。 我只是不想每次运行svn update都input我的svn凭据:)
我不完全确定,但是通过-H作为sudo的一个参数可能会照顾证书问题(每次都被问到)。
这会将HOME环境variables设置为/ root默认情况下,所以我猜测那么svn客户端我知道在/root/.subversion中查找auth信息。 指定一个不同的主目录,用于证书的特定情况。 此外,确保无论使用什么可以写/读到该文件。
这不是什么setuid? 创build一个脚本或编译的二进制文件(取决于你的安全要求),更新(一个system调用应该这样做),并使其具有setuid并由www-data拥有。
为什么不尝试使用svn update –username wwwdata来运行它
这种行为在不同的发行版之间以不同的方式实现 – 你使用的是什么?
对于RHEL5:
Cmnd_Alias SVN = / usr / bin / svn
Herbert ALL = NOPASSWD:SVN
或者,您可以使用单个脚本实现相同的function(将用户限制为目标程序function的子集)