允许 www-data 执行特定命令

允许 www-data 执行特定命令

我需要一个 PHP 脚本来执行,git pull但是我还没有天真到给它授予git.我已经封装git pull了一个具有以下权限的脚本www-data,但我不确定如何授予脚本git自身权限:

$ sudo tail -n1 /etc/sudoers
www-data ALL=(ALL) NOPASSWD: /home/php-scripts/git-pull

$ cat /home/php-scripts/git-pull
#!/bin/bash
/usr/bin/git pull

$ ls -la /home | grep php-scripts
drwxr-xr-x  2 ubuntu ubuntu 4096 Sep  3 09:26 php-scripts

$ ls -la /home/php-scripts/git-pull
-rwxrwxr-x 1 ubuntu ubuntu 30 Sep  3 08:44 /home/php-scripts/git-pull

$ cat /var/www/public_html/git-wrapper.php
<?php

$output = array();
$value = 0;
exec("/home/php-scripts/git-pull", $output, $value);

echo "<pre>";  
echo "Return Value: {$value}\n";

foreach ( $output as $o) {
    echo $o."\n";
}

?>

请注意,这/var/www/public_html/实际上是一个 git 存储库。我经常git pull通过 CLI 在该目录中执行操作。但是,当我在 Web 浏览器中调用此脚本时,我发现文件未通过更新,git pull并且以下内容输出到浏览器:

Return Value: 1

这是在带有 Git 1.7.9.5 的 Ubuntu Server 12.04 上。远程存储库位于同一服务器上。

答案1

www-data:www-data我想你的脚本运行在下面。您必须git pull使用对克隆存储库具有写入权限的用户来运行。您已经配置了sudo,但是您没有在任何没有多大意义的地方调用它(根本不是说您需要这样做)。验证您正在运行的用户,然后根据需要切换到适当的用户,并相应地调整克隆存储库的权限。

相关内容