当收到电子邮件时,我正在使用 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
我做错了什么?
我认为错误来自您的用户(bob)和“nobody”用户之间的权限级别差异。
让我们尝试调整 PHP 脚本或 Exim4 配置,使其以特定的非根用户身份运行。
首先我们创建新用户和新组。
然后我们将 eximappuser 和 bob 添加到我们的新组
我们更改所有者权利
然后我们修改var/log/myapp的权限,让owner和group可以读、写、执行
然后你必须配置
Exim4
或 PHP 脚本以 'eximappuser' 而不是 'nobody' 运行