当收到电子邮件时,我使用 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 的权限,以允许所有者和组读取、写入和执行
然后你必须配置Exim4
或 PHP 脚本以“eximappuser”而不是“nobody”的身份运行