允許使用者建立並寫入日誌資料夾

允許使用者建立並寫入日誌資料夾

我使用 Exim4 在收到電子郵件時執行 PHP 腳本。

如果 /var/log/myapp 資料夾不存在,此腳本應建立一個文件,否則它應僅讀取該文件並為日誌添加更多內容。

我對資料夾應用 777 權限進行了一些測試,我發現 Exim4 使用的使用者是nobody.

但是,在某些情況下,我的管理用戶(例如bob)可以透過 PHP CLI 手動執行 PHP 文件,並且也可以使用這些日誌檔案。

我運行下面的命令來添加我的用戶和無人寫入資料夾,但只有我的用戶可以創建文件,但「沒有人」不能。

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的權限,允許所有者和群組讀取、寫入、執行

然後你必須配置Exim4PHP 腳本以“eximappuser”而不是“nobody”運行

相關內容