【问题标题】:How to properly give apache access to a website user's /home/websiteuser/html directory?如何正确地让 apache 访问网站用户的 /home/websiteuser/html 目录?
【发布时间】:2014-12-01 15:33:31
【问题描述】:

设置:

  • 网站设置为/home/中的用户

  • 网站用户仅限于主目录,如 /home/websiteuser/ 是 由 root 拥有

  • 网站用户属于websites

  • www-datawebsites 组的一部分

  • 虚拟主机指向:/home/websiteuser/html/

  • /home/websiteuser/html/ 设置为-R 755

  • /html/ 中的文件归 websiteuser:websites 所有

  • 网站用户用于通过sftp访问网站

除了 apache 要求我们递归 chmod 777 /home/websiteuser/html/files/ 目录或图像不会显示并且 CMS 无法写入它的 mysql 备份之外,一切都很好。

网站用户拥有文件,因此 sftp 访问有效,但我是否必须让 www-data 拥有文件 - 或者有没有办法让 sftp 登录有效并且 apache 仍然可以访问?

我们已经看到很多关于此的问题,但不明白答案很抱歉 - 任何帮助将不胜感激。

干杯

【问题讨论】:

    标签: apache permissions


    【解决方案1】:

    我们通过创建一个“网站”组并将 apache 用户 (www-data) 添加到该组来解决这个问题(必须以 root 身份完成 - 使用$ su root 切换到 root 或使用 sudo in像这样的命令前面$ sudo useradd username:

    • 添加一个新组 - 这将是用于所有网站的组的名称:

    $ addgroup websites

    • 列出组以检查它是否已创建

    $ getent websites

    • 将 apache 用户添加到网站组,以便 apache 有权运行网站

    $ usermod -G websites www-data

    • 检查 www-data 是否属于网站组:

    $ grep '^ websites' /etc/group

    • 添加新的网站用户(这将是用于运行网站的用户)

    $ useradd username

    • 给用户一个密码

    $ passwd username

    • 按照提示添加密码
    • 将网站用户添加到网站组

    $ usermod -G websites username

    • 为用户创建一个新目录以从以下位置提供网站服务:

    $ mkdir /home/username

    • 网站目录的所有者必须是root,否则sftp会失败
    • 让root成为网站用户主目录的所有者和组:

    $ chown root:websites /home/username

    • 授予网站用户对其主目录的有限访问权限:

    $ chmod 750 /home/username

    • 进入网站用户目录:

    $ cd /home/username

    • 创建一个 Web 根目录(这是网站文件所在的 opublic 目录):

    $ mkdir html

    • 给网站用户 owner:group on web root:

    $ chown username:websites html

    • 更改 html 目录的权限:

    $ chmod 750 html

    • 将网站所有文件复制到html目录下
    • 递归地设置 web 根目录中所有文件的所有权

    $ chown -R username:ssb-websites html

    • 递归设置 web-root 内所有文件的权限(所有者和组具有读、写、执行权限):

    $ chmod -R 770 html

    • 递归设置 web-root 中所有文件的权限:

    $ chmod 644 $(find . ! -type d)

    • 如果遇到问题,请确保目录权限设置如下(顶级网站目录/home/username/ 必须由 root 拥有,否则 sFTP 访问将不起作用):

    /home/username | drwxr-x--- | root:websites

    /home/username/html | drwxr-x--- | username:websites

    /home/username/html/directories/ | drwxrwx--- | username:websites

    /home/username/html/files.html | -rw-r--r-- | username:websites

    我们是设计师,所以这是我们的工作方式,如果有人可以看到改进,请随时编辑!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-01
      • 2014-06-24
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      相关资源
      最近更新 更多