Linux SFTP 访问 /var/www

Linux SFTP 访问 /var/www

我正在运行 Ubuntu 12.04.1 LAMP 服务器,并尝试让用户对 /var/www 进行读写 FTP 访问权限。

首先,我安装了 vsftpd,并在 vsftpd.conf 中设置 write_enable=YES 和 chroot_local_user=YES,然后在 /etc/ssh/sshd_config 中添加了以下段落:

Subsystem sftp internal-sftp

Match group sftponly
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no

以及注释掉:

#Subsystem sftp /usr/lib/openssh/sftp-server

此后,我重新启动了 SSH 和 VSFTPD,然后在 /var/www 上按如下方式设置文件权限:

chown -R root /var/www
chgrp -R www-data /var/www

前两个设置用户和组所有者

chmod -R 775 /var/www

然后这些定义权限(用户和组有读,写和执行)

然后我创建用户并将其添加到 sftponly 和 www-data 组

adduser test
usermod -aG www-data test
usermod -aG www-data test

并将其主目录设置为 /var/www

usermod -d /var/www test

完成此操作后,我无法连接 SFTP,除非我执行以下操作:

chmod g-w /var/www

这意味着 www-data(以及我的用户)无法写入 www 文件夹,但可以写入所有后续文件夹,这还不够。

我无法更改 www 文件夹的用户所有者,因为这也会阻止与 SFTP 的成功连接。

我只是想知道为什么如果组具有写权限我就无法连接 SFTP,而如果没有,我又可以连接吗?

答案1

我浏览了一下网络,发现了一些有趣的事情: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

它说你的用户主目录应该是:/ 或者你应该在 /var/www 目录中有一些符号链接,例如:

cd /var/www ; ln -s var . ; ln -s www .

因为用户已 chroot,并且在 /var/www 中搜索其主目录:/var/www

希望它能帮助你。

相关内容