如何正确地设置 Laravel 目录权限?

如果你给任何文件夹777权限,就是允许任何人读取、修改、执行该目录中的任何文件。这意味着你已经给任何人(任何黑客或恶意的人在整个世界)的权限上传任何文件,病毒或任何其他文件,然后执行该文件。

如果您正在将您的文件夹权限设置为777,那么您已经将您的服务器打开给任何可以找到该目录的人。明白了吗?

任何人的标志意味着任何用户,而不是任何人。您仍然需要服务器访问。

基本上有两种方法来设置您的所有权和权限。要么给自己所有权,要么让 web 服务器成为所有文件的所有者。

Webserver 作为所有者(大多数人的做法,以及 Laravel doc 的做法) :

假定 www-data 是你的 web 服务用户(也有可能是其他的名字)。

sudo chown -R www-data:www-data /path/to/your/laravel/root/directory

如果你这样做,web 服务所拥有的文件也会变成这个组,这样你使用 FTP 上传文件时就会出现一些问题,因为 FTP 客户端会使用你的账户登录,不是你的 web 服务,所以你应该将你的用户添加进 web 服务的用户组。

sudo usermod -a -G www-data ubuntu

当然,这假设你的 web 服务以 www-data 用户运行(Homestead 默认),并且你的用户是 ubuntu(如果在 Homestead 中则是 vagrant)。然后将你所有的目录设置为 755,所有的文件设置为 644。

sudo find /path/to/your/laravel/root/directory -type f -exec chmod 644 {} \;    

设置目录权限

sudo find /path/to/your/laravel/root/directory -type d -exec chmod 755 {} \;

您的用户作为所有者

我更喜欢拥有所有的目录和文件(这使得处理任何事情都更加容易) ,所以,转到 laravel 根目录:

cd /var/www/html/laravel >> assuming this is your current root directory
sudo chown -R $USER:www-data .

然后我给自己和网站服务器两个权限:

sudo find . -type f -exec chmod 664 {} \;   
sudo find . -type d -exec chmod 775 {} \;

然后给网站服务器读写存储和缓存的权利

无论你以何种方式设置它,你都需要给网络服务器读写权限,以便存储、缓存和网站服务器需要上传或写入的任何其他目录(取决于你的情况) ,所以运行下面的命令:

sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

现在,你的网站是安全的,你可以很容易地处理这些文件

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://stackoverflow.com/questions/3063...

译文地址:https://learnku.com/laravel/t/62112

本帖已被设为精华帖!
本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1

如果是docker 运行环境,如何给目录权限。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!