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