由于两个不同的用户可以创建日志文件而导致写入错误

由于两个不同的用户可以创建日志文件而导致写入错误

我对 Linux/Ubuntu 相当不熟悉,并且一直在努力解决一个我认为相当简单的权限问题。我遇到了一个问题,日志文件是以两个不同的用户身份创建的,这可能会导致写入问题,具体取决于哪个用户首先写入它,即使他们属于同一组。

用户: 服务器用户属于www-数据团体 www-数据用户还属于www-数据团体

当日志文件被创建时,它的权限是 644 (-rw-r--r--)。因此用户可以写入它,但组不能。

那么会发生什么服务器会先写入,但随后www-数据不能,反之亦然。

在 Ubuntu 中,有什么方法可以:

  • 授予两个用户对文件夹的完全写访问权限并覆盖文件权限?
  • 在文件夹中创建默认文件时更改权限?

细节:

  • Ubuntu 16.04.2 LTS
  • 这是在 Apache 下运行的 PHP/Laravel 应用程序。但也有命令行工具、cron 作业等,它们在调用 Laravel 基础架构后最终都会写入日志文件。因此,哪一个先写入文件似乎是随机的。
  • 我确实看到了这个帖子(如何设置apache2上传文件的默认权限?) 关于使用 umask,但我希望这不是唯一的解决方案。我不想仅仅为了日志文件而改变 Apache 中创建所有内容的方式。感觉就像用锤子杀死蚂蚁一样。

答案1

一个可能的解决方案是:

  1. 创建新组
  2. 将两个用户都添加到组中,并将其设为这两个用户的主要组
  3. 将 umask 更改为 002,以便创建的文件将具有 664 之类的权限
  4. 使文件夹的权限为 775 或 770

答案2

所以我的问题已经解决了……虽然我不太确定是什么解决了它。现在创建文件时,用户和组都具有写入权限,这听起来像 umask。我认为解决方案是使用以下命令在文件上设置 ACL:

sudo setfacl -d -m group:www-data:rw /var/www/application/storage/logs

相关内容