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를 통해 이 디렉터리에서 작업을 자주 수행합니다. 그러나 웹 브라우저에서 이 스크립트를 호출하면 파일이 업데이트되지 않고 git pull브라우저에 다음이 출력되는 것을 볼 수 있습니다.

Return Value: 1

이는 Git 1.7.9.5가 설치된 Ubuntu Server 12.04에 있습니다. 원격 저장소는 동일한 서버에 있습니다.

답변1

www-data:www-data아래에서 스크립트를 실행하고 싶습니다. git pull복제된 저장소에 대한 쓰기 권한이 있는 사용자로 실행 해야 합니다 . 구성했지만 sudo별 의미가 없는 곳에서는 호출하지 않습니다(전혀 필요하지 않음). 실행 중인 사용자를 확인한 후 필요한 경우 적절한 사용자로 전환하고 이에 따라 복제된 저장소에 대한 권한을 조정하십시오.

관련 정보