ユーザーがログフォルダを作成して書き込むことを許可する

ユーザーがログフォルダを作成して書き込むことを許可する

メールを受信したときに PHP スクリプトを実行するために Exim4 を使用しています。

このスクリプトは、/var/log/myapp フォルダーにファイルが存在しない場合は作成し、存在する場合はファイルを読み取ってログにコンテンツを追加します。

フォルダーに 777 権限を適用していくつかのテストを実行したところ、Exim4 で使用されるユーザーは であることがわかりましたnobody

ただし、場合によっては、管理ユーザー (例bob) が PHP CLI 経由で PHP ファイルを手動で実行し、これらのログ ファイルを使用することもできます。

以下のコマンドを実行して、自分のユーザーと誰もフォルダーに書き込めるように追加しましたが、自分のユーザーだけがファイルを作成でき、'nobody' は作成できません。

sudo groupadd eximapplog

sudo usermod -a -G eximapplog bob
sudo usermod -a -G eximapplog nobody

sudo chgrp -R eximapplog /var/log/myapp
sudo chmod g+rwx /var/log/myapp

sudo chmod -R 775 /var/log/myapp

何が間違っているのでしょうか?

答え1

エラーは、ユーザー (bob) と「nobody」ユーザー間の権限レベルの違いによって発生するものだと思います。

PHP スクリプトまたは Exim4 構成を調整して、特定の非 root ユーザーとして実行できるようにします。

まず、新しいユーザーと新しいグループを作成します。

sudo adduser eximappuser
sudo groupadd eximappgroup

次に、eximappuserとbobを新しいグループに追加します。

sudo usermod -a -G eximappgroup eximappuser
sudo usermod -a -G eximappgroup bob

所有者の権利を変更する

sudo chown -R eximappuser:eximappgroup /var/log/myapp

次に、var/log/myappの権限を変更して、所有者とグループに読み取り、書き込み、実行を許可します。

Exim4次に、 PHPスクリプトを「nobody」ではなく「eximappuser」として実行するように設定する必要があります。

関連情報