安装
关闭防火墙和selinux
1 2 3
| systemctl disable --now firewalld NetworkManager setenforce 0 sed -ri '/^[^#]*SELINUX=/s#=.+$#=disabled#' /etc/selinux/config
|
安装 vsftpd 和 db4
1 2 3 4 5
| yum install -y epel-release && \ yum install -y \ vsftpd \ db4-utils \ db4
|
创建 vsftpd 使用的系统用户,主目录为 /home/vsftpd
,禁止 ssh 登录。创建之后所有虚拟用户使用这个系统用户访问文件
1
| useradd vsftpd -d /home/vsftpd -s /bin/false
|
ubuntu 安装的话:
1 2 3 4 5 6 7 8 9 10
| export DEBIAN_FRONTEND=noninteractive sed -ri 's/[a-zA-Z0-9.]+(debian.org|ubuntu.com)/mirrors.aliyun.com/g' /etc/apt/sources.list addgroup --system --gid 102 ftp adduser --system --disabled-login \ --ingroup ftp --no-create-home --home /srv/ftp --gecos "ftp daemon" --shell /bin/false --uid 102 ftp
mkdir -p /var/run/vsftpd/empty apt-get update apt-get install -y vsftpd
|
创建虚拟用户名和密码文件并增加一个用户和密码
1 2 3 4
| cat>>/etc/vsftpd/loginusers.conf<<EOF test test1 EOF
|
根据这个文件创建数据库文件
1 2
| db_load -T -t hash -f /etc/vsftpd/loginusers.conf /etc/vsftpd/loginusers.db chmod 600 /etc/vsftpd/loginusers.db
|
设置 pam 文件,启用这个数据库文件
1 2 3 4 5
| cp /etc/pam.d/vsftpd{,.bak} cat>/etc/pam.d/vsftpd<<EOF auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers EOF
|
创建虚拟用户配置文件m目录,如果ftp的用户单独设置权限则在这个目录里写同名的文件
1
| mkdir /etc/vsftpd/userconf
|
这里的文件名称必须与虚拟用户名一致
1 2 3 4
| cat>/etc/vsftpd/userconf/test<<EOF local_root=/home/vsftpd/test/ write_enable=YES EOF
|
创建用户家目录
1 2
| mkdir /home/vsftpd/test chown vsftpd:vsftpd /home/vsftpd/test
|
最后备份+修改主配置文件
1 2
| cp /etc/vsftpd/vsftpd.conf{,.bak} vi /etc/vsftpd/vsftpd.conf
|
禁止匿名
去掉注释
1 2 3
| ascii_upload_enable=YES ascii_download_enable=YES chroot_local_user=YES
|
增加
1 2 3 4 5 6 7
| guest_enable=YES guest_username=vsftpd virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/userconf allow_writeable_chroot=YES anon_world_readable_only=NO reverse_lookup_enable=NO
|
配置介绍
1 2 3 4 5 6 7 8 9 10
| anonymous_enable=NO 禁止匿名用户登录 chroot_local_user=YES 禁止用户访问除主目录以外的目录 ascii_upload_enable=YES ascii_download_enable=YES 设定支持ASCII模式的上传和下载功能 guest_enable=YES 启动虚拟用户 guest_username=vsftpd 虚拟用户使用的系统用户名 virtual_use_local_privs=YES 不然`/home/vsftpd/$USER`目录得设置成777才不会报错`550 Permission denied` user_config_dir=/etc/vsftpd/userconf 虚拟用户使用的配置文件目录 allow_writeable_chroot=YES 最新版的vsftpd为了安全必须用户主目录(也就是/home/vsftpd/ftp1)没有写权限,才能登录,或者使用allow_writeable_chroot=YES anon_world_readable_only=NO 解决报错`Transfer done (but failed to open directory)` reverse_lookup_enable=NO 关闭DNS反向解析,解决登陆慢
|
启动服务并设置为开机自启
1
| systemctl enable --now vsftpd
|
使用test登陆测试,最后配置文件如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| [root@ftp-test vsftpd]# grep -Pv '^$|^#' /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES ascii_upload_enable=YES ascii_download_enable=YES chroot_local_user=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES guest_enable=YES guest_username=vsftpd virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/userconf allow_writeable_chroot=YES anon_world_readable_only=NO reverse_lookup_enable=NO
|
lftp 调试
1
| lftp ftp://xxx@10.xx.xx.132:7621 -d
|