我正在运行 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
希望它能帮助你。