www-dataが特定のコマンドを実行できるようにする

www-dataが特定のコマンドを実行できるようにする

実行するにはPHPスクリプトが必要ですgit pullが、それを付与するほど素朴ではありません。次の権限でスクリプトをgitラップしましたが、スクリプト自体に権限を付与する方法がわかりません。git pullwww-datagit

$ 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 pullCLIを介してこのディレクトリで作業を頻繁に行います。ただし、Webブラウザでこのスクリプトを呼び出すと、ファイルが更新されず、git pullブラウザに次のものが出力されることがわかります。

Return Value: 1

これは、Git 1.7.9.5がインストールされているUbuntu Server 12.04にあります。リモートストレージは同じサーバーにあります。

答え1

www-data:www-data以下からスクリプトを実行したいと思います。git pull複製されたストレージへの書き込み権限を持つユーザーとして実行する必要があります。設定したがsudoあまり意味がないところでは呼び出されません(まったく必要ありません)。実行中のユーザーを確認したら、必要に応じて適切なユーザーに切り替えて、それに応じてレプリケートされたストレージの権限を調整します。

関連情報