Permissions
允許 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 上。遠端儲存庫位於同一台伺服器上。
www-data:www-data
我想你的腳本在下面執行。您必須git pull
與對您的複製儲存庫具有寫入權限的使用者一起執行。你已經配置了sudo
,但你沒有在任何沒有多大意義的地方呼叫它(並不是說你根本需要這樣做)。驗證您在哪個使用者下執行,然後根據需要切換到適當的使用者,並相應地調整複製儲存庫的權限。