(SFTP)如何在设置 ChrootDirectory /var/www 时拥有 /var/www 可写权限

(SFTP)如何在设置 ChrootDirectory /var/www 时拥有 /var/www 可写权限

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:rootroot:sftp(chmod 为 755)它可以使用 sftp 连接到我的 /var/www,但它没有可写/可删除的权限。

但将 www 设置为webmaster:sftpchmod 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 目录。

相关内容