Ubuntu vsftpd 折腾笔记

问题

我准备要在我的 Ubuntu 上面配置一个可用的 ftp server,并且给定一个用户,将其限制在某个指定的目录里面,但是一直没有实现,经过折腾终于完成,先把最终结果和盘托出:

1. 安装 vsftpd 服务
sudo apt-get install vsftpd
2. 修改配置(直接出最终配置)
listen=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/sslcertsnakeoil.pem
rsa_private_key_file=/etc/ssl/private/sslcertsnakeoil.key
seccomp_sandbox=NO
allow_writeable_chroot=YES
4. 创建 ftp 用户

注意创建的时候指定一个 home 目录,直接对应于 ftp 的根目录;

然后,指定一个用户的 shell 为 /usr/sbin/nologin,以禁止用户登录 SSH;

sudo useradd -d /var/ftp -s /usr/sbin/nologin ftpuser

注意,曾经试过出现密码验证时 530 Login incorrect 的错误,后来发现原因是在 /etc/shells 文件里面没有指定上面的 /usr/sbin/nologin 这个 shell

通过 vim /etc/shells 进去看看,如果没有,加上这些(但事先请看清楚这个文件是否存在,应该和 /etc/passwd 里面的路径对应)

...
/usr/bin/nologin
/bin/false
5. 限定用户列表

编辑 /etc/vsftpd.chroot_list(可能需要自己创建,跟 /etc/vsftpd.conf 指定的路径对应上即可),将需要限制根目录的用户名加上,一行一个;

ftpuser

理论上直接暴力处理以上几步即可生效。


关于限制根目录的简化处理

以下这几条配合 /etc/vsftpd.chroot_list 是限制列表内的用户限制根目录;其他用户则不限制。

chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

其实很多情况下我们所有的用户都限制就 ok 了,如下配置即可,这种情况下 /etc/vsftpd.chroot_list 这个文件就不需要了;

chroot_local_user=YES
# chroot_list_enable=YES
# chroot_list_file=/etc/vsftpd.chroot_list

从基本配置中修改

以上方法可能会直接破坏掉原来的配置文件,下面经过反复实验,从 /etc/vsftpd.conf 的基本配置中修改这几条即可:

#anonymous_enable=NO  # 这句务必注释掉
write_enable=YES  # 允许写入
local_umask=022  # 写入文件的默认权限为 777^022 即 755
chroot_local_user=YES  # 所有的用户将被限制在用户目录
seccomp_sandbox=NO  # 见下面注释 1
allow_writeable_chroot=YES  # 见下面注释 2
注释 1:

如果没有这条会出现 500 OOPS: priv_sock_get_cmd 的错误

参见:http://stackoverflow.com/questions/16589570/windows-azure-ubuntu-500-oops-priv-sock-get-cmd-error-while-making-an-ftp-con

注释 2:

如果没有这条会出现 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

参见:http://stackoverflow.com/questions/16102996/vsftpd-refusing-to-run-with-writable-root-inside-chroot

以上两点注释至关重要,之前我就是栽倒在这里折腾了很久很久!


下面是众多折腾失败过程中找过的有用没用的笔记

https://help.ubuntu.com/community/vsftpd http://www.webmin.com/cgi-bin/search_third.cgi?search=vsftp http://provider4u.de/downloads.html http://www.lupaworld.com/article-239132-1.html


【转载请附】愿以此功德,回向 >>

原文链接:https://www.huangwenchao.com.cn/2015/01/ubuntu-vsftpd-2.html【Ubuntu vsftpd 折腾笔记】

发表评论

电子邮件地址不会被公开。 必填项已用*标注