PHPなどのサーバーサイドスクリプトなどでアクセス権のない他ユーザのファイルなどにシステムコマンドでアクセスする場合、Apacheユーザでsudoする必要があります。

例として、/home/memorycraftディレクトリをmkdirとlsをしたい場合、以下のように設定します。

○スクリプト(例:php)

exec("sudo mkdir /home/memorycraft/hoge; sudo ls -l /home/memorycraft/;", $out, $status);

○sudoの設定

# yum install sudo
# visudo
---------------------
Defaults    requiretty
コメントアウト↓
#Defaults    requiretty

追記↓
apache  ALL=(ALL) NOPASSWD: /bin/mkdir, /bin/ls

通常では、ログインできるユーザしかsudoを使用できないようになっていますが、requirettyという制限で、上記のようにコメントアウトすることで
手早くログイン可能なユーザ以外でもsudoすることができます。

また、Apacheユーザの登録では、NOPASSWD:の後にコマンドを指定することで、特定のコマンドだけパスワードなしでsudo実行できるように制限をすることができます。

このようにすることで、Apacheユーザで実行しているスクリプトでsudo操作が可能です。

こちらの記事はなかの人(memorycraft)監修のもと掲載しています。
元記事は、こちら