我想从 php 脚本中触发“svn update”命令,该脚本的用户是“apache”。我如何为 apache 用户分配执行“svn update”的权限?
答案1
我会在 sudoers 文件中创建一个命令,然后sudo -u user-who-owns-svn-repo svn update
在你的 PHP 脚本中使用它。
更改将/etc/sudores
类似于:
Cmnd_Alias SVN = /usr/local/bin/svn
apache ALL=(ALL,!root,!#0) NOPASSWD: SVN
查看Sudoers 手册了解更多信息。
如果您想要更严格的控制,请制作具有特定 SVN 命令的 shell 脚本,并仅允许 Apache 访问这些命令。例如:
文件/path/to/my/project/update.sh
:
#!/bin/bash
svn update /path/to/my/project/svn-files
文件/etc/sudores
:
Cmnd_Alias SVN = /path/to/my/project/update.sh
apache ALL=(ALL,!root,!#0) NOPASSWD: SVN
(别忘了chmod +x path/to/my/project/update.sh
)