【问题标题】:What permissions can I give my logs for Laravel to be able to read from them?我可以为 Laravel 授予我的日志什么权限才能读取它们?
【发布时间】:2021-01-07 11:05:06
【问题描述】:

我正在尝试根据我基于角色的访问控制在我的网站上向 Laravel 中经过验证的用户显示我的日志。

$file = fopen("/var/log/auth.log", "r") or die();
$content = fread($file, filesize("/var/log/auth.log"));
fclose($file);

这让我犯了一个错误:

fopen(/var/log/auth.log): failed to open stream: Permission denied

我可以看到 Laravel 对此文件没有正确的读取权限,并且由于安全性原因,我没有执行典型的 chmod -R 777 的操作。我正在使用nginx,但 Laravel 使用 php-fpm 执行。

我的网站在哪个用户组中执行?我应该在我的日志文件上授予该用户组什么权限?

【问题讨论】:

    标签: linux laravel ubuntu nginx


    【解决方案1】:

    试试:

    chown {your_user}:nginx /var/log/auth.log
    chmod ug+rwx /var/log/auth.log
    

    【讨论】:

      【解决方案2】:

      对于这种情况,强烈建议不要更改“chmod 0777”(同一个 777)、“chmod 0755”(同一个 755)之类的权限,以避免安全漏洞。 实际上,网络服务器将使用的文件将附加到您的“storage”目录。您可以更改所有者,作为 Web 服务器用户(Apache 或 Nginx)。很多情况下是“www-data”。 另外不要忘记“bootstrap/cache”目录下的引导缓存文件(配置、服务和包)。

      sudo chown -R www-data:www-data storage/ bootstrap/cache/
      

      在此之后,当你想要运行一些 artisan-commands 时,你可以使用“sudo”来执行它们,或者只是可以让当前用户成为所有者:

      sudo chown -R $USER:$USER storage/ bootstrap/cache/
      

      运行命令后,您可以将所有者恢复为“www-data”用户(1-st 命令)。

      这种方法的优点是不会被版本控制系统跟踪。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-14
        • 2020-11-05
        • 1970-01-01
        • 2023-03-28
        • 2015-12-26
        • 2019-11-10
        • 1970-01-01
        • 2023-04-04
        相关资源
        最近更新 更多