【问题标题】:Save Apache files under /var/www as www-data with inherited permissions将 /var/www 下的 Apache 文件保存为具有继承权限的 www-data
【发布时间】:2022-01-07 07:09:03
【问题描述】:

我知道有人以各种方式提出和回答了这个问题,但我的搜索并没有找到适合我的答案,所以我会根据我的需要专门询问:

运行:Ubuntu 18.04、Apache2

我正在尝试以我的 sudo 用户身份SFTP(假设 johndoe 作为用户名)并在 / 下的任何位置创建文件和文件夹var/www,会发生以下情况:

  1. 我自动创建的所有文件和文件夹都拥有 775 个权限
  2. 所有文件都由 www-data 自动拥有(当然在 www-data 组中)
  3. 我在 /var/www 目录下创建的任何内容都会继承此行为。

如果有人可以一步一步给我(而不是“只做这个”,那就太棒了,我相信这对其他人来说是一个很好的答案。

如果您对不同的权限有意见,请告诉我。重要的是 Web 服务器可以读写文件,我的 SFTP 用户也可以。重要的是当我创建由我的 SFTP 用户上传的新文件时权限是正确的。

谢谢。

【问题讨论】:

    标签: apache ubuntu apache2 ubuntu-18.04


    【解决方案1】:

    为了安全起见,您不应让 apache 成为 /var/www 文件夹中任何文件的所有者。您应该为存储在 www-data 文件夹中的每个 Web 应用程序创建一个单独的新用户(没有 shell),并将该新用户指定为与该特定 Web 应用程序关联的所有文件和文件夹的所有者。这样一来,如果 Apache 受到威胁,您的所有 Web 应用程序和相关文件都不会同时受到威胁。

    将 www-data 指定为 /var/www 中文件和子文件夹的组,以便 Apache 可以读取和提供您的网络应用程序。

    授予文件夹的www-data读取和执行权限,只授予文件的www-data读取权限。这样,如果 Apache 被入侵,您的任何文件都无法被 Apache 修改。

    //web app 1, set owner and group, do not set www-data as owner !
    sudo chown -R web-app-1:www-data /var/www/app1
    
    //web app 1, set appropriate permissions for all sub-folders as detailed previously 
    sudo find /var/www/app1  -type d -exec chmod 750 {} \;
    
    //web app 1, set appropriate permissions for all files in sub-folders as detailed previously 
    sudo find /var/www/html/app1  -type f -exec chmod 640 {} \;
    

    【讨论】:

    • 谢谢迈克。虽然这对权限有帮助,但在我开始之前,我需要了解如何让文件和文件夹在创建时自动拥有我想要的任何权限和所有权。
    • 这很简单,只要在你进行更改时运行以上 3 个命令
    • 是的,但我正在尝试查看是否可以将我的用户创建的所有文件和文件夹在创建时默认为这些权限。
    • 使用umask命令修改默认文件和文件夹权限
    • 是的,问题是无论出于何种原因,umask 设置似乎在与 SFTP 的会话之间都不会持续存在。我发现对新文件和文件夹具有持久权限的唯一方法是 vsftp,我试图避免。
    猜你喜欢
    • 2018-03-25
    • 2015-02-12
    • 2015-06-30
    • 2012-01-18
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多