我对 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
一个可能的解决方案是:
- 创建新组
- 将两个用户都添加到组中,并将其设为这两个用户的主要组
- 将 umask 更改为 002,以便创建的文件将具有 664 之类的权限
- 使文件夹的权限为 775 或 770
答案2
所以我的问题已经解决了……虽然我不太确定是什么解决了它。现在创建文件时,用户和组都具有写入权限,这听起来像 umask。我认为解决方案是使用以下命令在文件上设置 ACL:
sudo setfacl -d -m group:www-data:rw /var/www/application/storage/logs