安装
1 2
| yum install vsftpd db4-utils -y #apt-get install vsftpd db-utils -y
|
虚拟用户配置
1. 添加虚拟用户列表
1 2 3 4 5 6 7
| cd /etc/vsftpd vim vuser.list
sunday sunday_passwd lee lee_passwd
|
2.生成虚拟用户口令认证文件
1
| db_load -T -t hash -f vuser.list vuser.db
|
3.设置PAM配置文件
1 2 3 4
| vim /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
|
4.创建vsftpd寄主帐号
1
| useradd vsftpd -s /sbin/nologin
|
5.配置vsftpd.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| listen=YES listen_ipv6=NO anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log chroot_local_user=NO allow_writeable_chroot=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd guest_enable=YES guest_username=vsftpd virtual_use_local_privs=YES user_config_dir=/etc/userconf
|
1 2 3 4
| vim /etc/vsftpd.chroot_list
lee sunday
|
6.配置虚拟用户目录和权限
1 2 3 4 5 6 7 8 9 10 11
| mkdir -pv /data/ftp/{lee,sunday} chown -R vsftpd.vsftpd /data/ftp # vim /etc/vsftpd/userconf/lee local_root=/data/ftp/lee write_enable=NO #禁止上传及写入
# cat /etc/vsftpd/userconf/sunday local_root=/data/ftp/sunday #max_clients=1 #max_per_ip=1 #local_max_rate=10000
|
错误解决
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 500 OOPS: config file not owned by correct user, or not a file Login failed. 421 Service not available, remote server has closed connection
tail /var/log/auth.log Apr 30 17:47:37 localhost vsftpd: pam_userdb(vsftpd:auth): user 'sunday' granted access
tail /var/log/vsftpd.log Tue Apr 30 17:47:35 2019 [pid 12561] CONNECT: Client "192.168.10.18" Tue Apr 30 17:47:37 2019 [pid 12560] [sunday] OK LOGIN: Client "192.168.10.18"
/etc/vsftpd.conf /etc/vsftpd.chroot_list /etc/vsftpd/ /etc/pam.d/vsftpd /etc/ftpusers
|
vsftpd相关文件 文件说明
1 2 3 4 5 6
| /etc/vsftpd/vsftpd.conf 主配置文件 /usr/sbin/vsftpd Vsftpd的主程序。 /etc/pam.d/vsftpd PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers /etc/vsftpd/ftpusers 禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。 /etc/vsftpd/user_list 禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。 /var/ftp vsftpd的匿名用户登录根目录。
|
vsftp配置说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| 参数配置 默认值 说明 anonymous_enable=YES YES 是否用于匿名用户(ftp或anonymous)登录FTP,登录后进入/var/ftp local_enable=YES NO 是否允许本地用户登录FTP服务器,登录后进入用户主目录 write_enable=YES NO 是否允许写入 local_umask=022 077 默认的umask码 anon_upload_enable=YES NO 是否允许匿名用户上传文件。如果此项要生效,则配置write_enable必须激活。并且匿名用户所在相关目录有写权限。 anon_mkdir_write_enable=YES NO 是否允许匿名用户创建新目录。如果此项要生效,则配置write_enable必须激活。并且匿名用户所在相关目录有写权限。 dirmessage_enable=YES NO 是否激活目录欢迎信息功能。.message文件可以通过更改message_file来调整。 xferlog_enable=YES NO 是否启动记录上传和下载日志。 connect_from_port_20=YES 20 设定PORT模式下的连接端口(只要connect_from_port_20被激活)。 chown_uploads=YES NO 设定是否允许改变上传文件的属主,与下面一个设定项配合使用 chown_username=whoever ROOT 置想要改变的上传文件的属主,如果需要,则输入一个系统用户名,例如可以把上传的文件都改成root属主。whoever:任何人 xferlog_file=/var/log/xferlog /var/log/xferlog 设置日志文件的文件名和存储路径 xferlog_std_format=YES NO 是否使用标准的ftpd xferlog日志文件格式 idle_session_timeout=600 300 设置空闲的用户会话中断时间,默认是10分钟 data_connection_timeout=120 300 设置数据连接超时时间,默认是120秒 nopriv_user=ftpsecure nobody 运行vsftpd需要的非特权系统用户 async_abor_enable=YES NO 是否允许运行特殊的ftp命令async ABOR。 ascii_upload_enable=YES ascii_download_enable=YES NO 是否使用ascii码方式上传和下载文件。 deny_email_enable=YES banned_email_file=/etc/vsftpd/banned_emails NO 禁止匿名用户通过banned_email_file定义的邮件地址做密码 chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list NO 设置为NO时,用户登录FTP后具有访问自己目录以外的其他文件的权限;设置为YES时,chroot_list_file中的用户列表被锁定在自己的home目录下。此时chroot_local_user=NO,如果chroot_local_user=YES则chroot_list_file中的用户将不被锁定在home目录下。 ls_recurse_enable=YES NO 是否允许递归查询 listen=YES NO vsftpd 处于独立启动模式 listen_ipv6=YES NO 是否支持IPV6 pam_service_name=vsftpd ftp 设定vsftpd将要用到的PAM服务的名字。 userlist_enable=YES NO 设置为YES,vsftpd将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,vsftpd查到该用户名在列表中,vsftpd就直接禁止掉该用户,不会再进行询问密码等后续步聚 userlist_deny=YES YES 决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable 选项启动后才生效。YES,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入密码的提示。NO,只允许在文件中的用户登录FTP服务器 userlist_file /etc/vsftpd/user_list 当userlist_enable被激活,系统将去这里调用文件。 tcp_wrappers=YES NO 是否允许tcp_wrappers管理 listen_port 21 如果vsftpd处于独立运行模式,这个端口设置将监听的FTP连接请求。 max_clients 0 FTP的最大连接数,0为无限制。 max_per_ip 0 单个IP的最大连接数。 anon_max_rate 0 匿名用户允许的最大传输速度,单位:字节/秒 local_max_rate 0 本地认证用户允许的最大传输速度,单位:字节/秒。
|
http://itopic.org/linux-vsftp-install.html