I have a php script calling a bash script like this:
<?php $result = exec('sudo /bin/bash /var/www/my_bash_script.sh /var/www/vhosts/testsite/htdocs/'); var_dump($result); ?>
This is the contents of
#!/bin/bash svn export --force --no-auth-cache --username myusername --password mypassword http://126.96.36.199/repos/path/to/repo/ $1 2>&1 find $1 -print0 -type d | xargs -0 -n 1 -0 chown -R -v root:root 2>&1 find $1'storage' -print0 -type d | xargs -0 -n 1 chown -R -v apache 2>&1 find $1'shared' -print0 -type d | xargs -0 -n 1 chown -R -v apache 2>&1
The purpose of the script is to do an export from my svn repo and set user permissions correctly.
PHP runs as the
In order to grant PHP permission to run this script I have added the following line to sudoers:
apache ALL=(ALL) NOPASSWD:ALL
Now obviously this gives PHP too much power, so I want to restrict PHP to just run this specific bash script, but I can't seem to get the syntax right:
apache ALL=(ALL) NOPASSWD:/var/www/my_bash_script.sh
The above just returns an empty string (to the
$result PHP variable) - what am I doing wrong?
Edit: - I have already commented out
#Defaults requiretty in sudoers.