对于观看这个讨论的人来说,这是显而易见的....如果你给你的任何文件夹777权限,你就允许任何人读、写和执行....目录下的任何文件这意味着你给了任何人(任何黑客或恶意的人在整个世界)上传任何文件,病毒或任何其他文件的权限,然后执行该文件…
如果您正在将文件夹权限设置为777,则您已经打开了您的
任何能找到该目录的人的服务器。够清楚? ?:)
设置所有权和权限基本上有两种方法。要么你给自己所有权,要么你让web服务器成为所有文件的所有者。
web服务器作为所有者(大多数人这样做,以及Laravel文档的方式):
假设www-data(它可能是其他东西)是您的web服务器用户。
sudo chown -R www-data:www-data /path/to/your/laravel/root/directory
如果你这样做,webserver拥有所有的文件,也是组,你将会有一些问题,通过FTP上传文件或使用文件,因为你的FTP客户端将以你的身份登录,而不是你的webserver,所以把你的用户添加到webserver用户组:
sudo usermod -a -G www-data ubuntu
当然,这是假设你的服务器运行为www-data (Homestead默认),你的用户是ubuntu(如果你使用Homestead,它是流浪者)。
然后将所有目录设置为755,文件设置为644…
SET文件权限
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 .
然后我给自己和webserver权限:
sudo find . -type f -exec chmod 664 {} \;
sudo find . -type d -exec chmod 775 {} \;
然后给web服务器读写存储和缓存的权限
无论你用哪种方式设置它,你都需要给web服务器读写权限,用于存储,缓存和任何其他web服务器需要上传或写入的目录(取决于你的情况),所以运行上面bashy的命令:
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
现在,你是安全的,你的网站工作,你可以相当容易地处理文件