如何正确地让apache访问网站用户的/ home / websiteuser / html目录?

时间:2014-10-07 08:47:51

标签: apache permissions

设定:

  • 网站设置为/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仍然可以访问?

我们已经看到很多关于这方面的问题,但不明白答案对不起 - 任何帮助都会非常感激。

干杯

1 个答案:

答案 0 :(得分:0)

我们通过建立一个"网站来解决这个问题。分组并将apache用户(www-data)添加到此组(必须以root身份完成 - 使用$ su root切换到root或在sudo之类的命令前使用$ 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根目录(这是网站文件所在的公共目录):

$ mkdir html

  • 授予网站用户所有者:web root上的组:

$ chown username:websites html

  • 更改html目录的权限:

$ chmod 750 html

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

$ 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

我们是设计师,所以这就是我们解决问题的方式,如果有人能看到改进,请随时编辑!