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)監修のもと掲載しています。
元記事は、こちら