最近使用一台服务器搭建了nginx服务器,然后把现有系统的静态资源文件放入到这台服务器上,为了方便存放静态文件,使用vsftpd搭建了一个ftp服务器。其中遇到了种种问题,最后一步步解决。
首先,使用命令
sudo apt-get install vsftpd
安装vsftpd,安装完成后
sudo vi /etc/vsftpd.conf
配置:listen=YES
listen_ipv6=NO #不监听ipv6
annonymous_enable=NO #不允许匿名登录
local_enable=YES #允许本地登录
write_enable=YES #允许写入
dirmessage_enable=YES #在用户登入到特定路径时给出信息
use_localtime=YES #使用本地时间,如果是NO就会显示GMT
xferlog_enable=YES #在上传下载时做log
connect_from_port_20=YES #
allow_writeable_chroot=YES #允许/etc/vsftpd.chroot_list文件中的用户写入
chroot_local_user=YES #将用户锁定在用户目录中,不允许进入上一层
user_config_dir=/etc/vsftpd_user_config #设置用户的目录,等号后面的路径是自定义的
#后面的五项是默认的设置
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
之前有设置路径/etc/vsftpd_user_config,然后在这个路径下新建以用户名为名称的文件,内容为local_root= 等号右边的内容为你想设置的用户的主目录地址。
增加/etc/vsftpd.chroot_list文件,在里面写入你的ftp用户名即可。
修改/etc/pam.d/vsftpd文件,注释掉
auth required pam_shells.so
即在前面加上#符号。不然登录ftp会出现530错误
遇见的错误:
1、 不能将用户限制在其主目录下:方法,在上面的配置中已经给出,就是使用chroot_local_user=YES
2、 增加了chroot_local_user=YES之后,登录出现500,500 OOPS: vsftpd: refusing to run with writable root inside chroot()”,解决方法:增加
allow_writeable_chroot=YES #允许/etc/vsftpd.chroot_list文件中的用户写入
然后增加/etc/vsftpd.chroot_list,在文件中写入用户名,这样就可以用该用户名表明的用户登录
3、 想要更改用户主目录(不受系统用户目录的限制)
user_config_dir=/etc/vsftpd_user_config #设置用户的目录,等号后面的路径是自定义的。
这些错误使用上面的配置方法已经解决了。