如何限制一个 SFTP 用户只能访问一个虚拟主机,同时允许另一个用户访问多个虚拟主机?

如何限制一个 SFTP 用户只能访问一个虚拟主机,同时允许另一个用户访问多个虚拟主机?

我在标准位置有几个 Apache 虚拟主机:

  • /var/www/vhosts/example1.com/htdocs
  • /var/www/vhosts/example2.com/htdocs
  • /var/www/vhosts/example3.com/htdocs

这些目录由用户www-data和组拥有www-data,并且权限设置为 770(drwxrwx---)。

travis我以该组成员的身份通过SFTP 进入这些目录www-data

这是我的挑战:我想创建第二个 SFTP 用户,名为chris,其仅具有访问的权限这些目录(example3.com)。

所以我尝试了这个:

  • 创建了一个名为的新组example3-www-data
  • 赋予新组 webroot 的所有权:sudo chgrp -R example3-www-data /var/www/example3.com/htdocs
  • 将用户添加www-dataexample3-www-data次要组(这样 Apache 就有权限从 example3.com webroot 读取)
  • 创建了一个名为 的新用户chris,并将其example3-www-data作为其主要组

因此:chris“主要组拥有htdocs目录的所有权,因此他应该能够访问它。并且用户www-data也属于该组 - 因此 Apache 也应该能够访问该目录。一切都应该正常,对吧?

不行!当我以 身份登录时chris(无论是通过 SFTP 还是通过 shell),系统提示我无权访问/var/www/vhosts/example3.com/htdocs

为什么会这样?是因为chris无法访问父母目录(例如/var/www/vhosts)?(如果可以避免,我不想让他访问父目录 - 记住,重点是限制他访问这个特定的目录。我也不想把这个文件夹设为他的主目录,因为最终会有多种的需要相同访问权限的用户。

基本上:我如何安排我的用户/组/文件权限,以便:

  • 用户travis可以将文件上传到所有三个 webroot,
  • 用户chris可以仅有的上传文件至/var/www/vhosts/example3.com/htdocs
  • Apache 可以读取/写入/执行任一用户上传的文件,而无需在上传后手动调整文件权限?

抱歉,这个问题比较新手;我真的不明白在这种情况下应该如何应用 Linux 文件权限。(如果您能提供该领域的任何一般原则/提示/链接,我将不胜感激。)

我怀疑这很重要,但我正在运行 Ubuntu 14.04 LTS。

相关内容