![(SFTP)如何在设置 ChrootDirectory /var/www 时拥有 /var/www 可写权限](https://linux22.com/image/799977/%EF%BC%88SFTP%EF%BC%89%E5%A6%82%E4%BD%95%E5%9C%A8%E8%AE%BE%E7%BD%AE%20ChrootDirectory%20%2Fvar%2Fwww%20%E6%97%B6%E6%8B%A5%E6%9C%89%20%2Fvar%2Fwww%20%E5%8F%AF%E5%86%99%E6%9D%83%E9%99%90.png)
ChrootDirectory 很棘手 > <
当我在 Google 上搜索时,找到了 ChrootDirectory 设置的解释(http://en.wikibooks.org/wiki/OpenSSH/Cookbook/SFTP)
它说“根据 opensshd 版本的不同,这可能不可用,因为某些版本要求 chroot-target 目录和所有父目录都归 root 所有,并且其他任何人都无法写入。”
因此,在这个解释中,我这样设置:
drwxr-sr-x 3 root sftp 4096 Mar 9 15:14 www
如果我设置root:root
或 root:sftp
(chmod 为 755)它可以使用 sftp 连接到我的 /var/www,但它没有可写/可删除的权限。
但将 www 设置为webmaster:sftp
或chmod is 775
无法连接
这是我的用户,我希望它控制 /var/www(它在 sftp 组中):
webmaster:x:1001:1001::/var/www:/bin/false
我在 sshd_config 中设置了这个底部:
Subsystem sftp internal-sftp
Match group sftp
X11Forwarding no
ChrootDirectory /var/www
AllowTcpForwarding no
ForceCommand internal-sftp
将 mod 改为 775 无法连接 >"<
那么我该如何解决这个问题?
我希望我的组 sftp 可以在 /var/www 中拥有 chmod 775 。有人能帮助我吗?
答案1
这看上去像是一个进退维谷的局面,但是我想我有办法解决它。
我建议不要使用 /var/www 来托管网站。我将此目录视为系统默认目录,仅当有人使用与虚拟主机不匹配的服务器名称访问服务器时才使用。
相反,将网站托管在 /srv/web 中,这符合文件系统层次标准. 每个站点目录(例如 /srv/web/site1)均具有以下子目录:
htdocs
config
lib
logs
将虚拟主机的 DocumentRoot 设置为 /srv/web/site1/htdocs,并将其他目录用于不需要通过网络访问的内容。然后,您可以使 htdocs(以及其他子目录,如果需要)可组写入。将您的 sftp 切换至 /srv/web/site1,并告诉人们上传到 htdocs 目录。