我有一个定制的laravel命令,该命令每小时在/storage/app/something
目录中创建一些文件(forge
用户拥有它们)。
之后,laravel用户无法通过管理面板从磁盘删除这些文件,因为他不是这些文件的所有者。
用户只有在使用sudo chmod -R storage/app/something
后才能删除它们。
如何使forge
用户和www-data
用户都可编辑此目录?
答案 0 :(得分:2)
使用以下命令
sudo chown -R forge /storage/app/something
sudo chgrp -R www-data /storage/app/something
sudo chmod 2770 /storage/app/something
第一个命令使forge
成为目录的所有者。
第二个命令将目录的组更改为www-data
,这意味着www-data
组中的任何人都可以使用组权限访问目录。值得注意的是,该组包含用户www-data
,因此应授予www-data
访问权限。
第三个命令执行以下操作:为用户(在这种情况下为forge
)授予访问级别7(rwx)。为组(在这种情况下为www-data
)授予访问级别7(rwx)。赋予所有其他用户访问级别0(---),这意味着其他用户无法访问该目录(将其替换为5以授予他们只读权限)。
最后,2
命令中的chmod
设置目录上的setgid
位,这意味着所有新文件都将继承目录的组,而不是组创建文件的人。这意味着文件也将具有组www-data
,从而允许该组访问文件。
当然,您也可以执行sudo chmod 777 /storage/app/something
,这将允许任何人完全访问目录,但这是一个不好的做法。