Vsftpd 虚拟用户配置

Posted by Sunday on 2018-03-29

安装

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
#local_root=/vsftpd
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"

# 将以下文件目录修改为root
/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