只是为了说明任何观看此讨论的人显而易见的事实....如果您授予任何文件夹777权限,则允许任何人读取,写入和执行该目录中的任何文件。这意味着您已经授予任何人(全世界的任何黑客或恶意人员)上传任何文件,病毒或任何其他文件的权限,然后执行该文件...
如果要将文件夹权限设置为 777,则已向可以找到该目录的任何人打开服务器。足够清晰???:)
基本上有两种方法可以设置您的所有权和权限。要么您授予自己所有权,要么使Web服务器成为所有文件的所有者。
Web服务器作为所有者(大多数人这样做的方式,以及Laravel文档的方式):
假设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,则它是流浪汉)。
然后,您将所有目录设置为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 .
然后我给自己和Web服务器都授予权限:
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
现在,您是安全的,您的网站可以正常工作,并且您可以相当轻松地处理文件