我在标准位置有几个 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-data
为example3-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。