vsftpd搭建FTP,并设置虚拟用户

需求:系统ubuntu14.04,建立虚拟用户,便于管理

安装vsftpd

# 安装 vsftp(FTP软件) db-util(转化数据库)
sudo apt-get -y install vsftpd
sudo apt-get -y install db-util
## 启动 停止服务命令
sudo service vsftpd stop
sudo service vsftpd start
sudo service vsftpd restart
service vsftpd status    #查看状态

1.创建vsftpd服务的宿主用户和虚拟用户

## 1.建立Vsftpd服务的宿主用户,不能登录系统,指定主目录/home/vsftpd
useradd vsftpd -d /home/vsftpd -M -s /sbin/nologin
cat /etc/passwd |grep vsftpd
sudo chown -R vsftpd:vsftpd /home/vsftpd

#2.虚拟用户设置
sudo mkdir /etc/vsftpd/
sudo vim   /etc/vsftpd/virtusers.txt
# 加一些账号密码在里面,一行账号 一行密码(奇数行为账号,偶数行为密码)
test
tes123
# 转化为db 文件/etc/vsftpd/virtusers.db ,记住保存的路径后面会用到
#如果以后向/etc/vsftpd/virtusers.txt添加了虚拟账户后,需要重新执行下面的db_load命令才能生效
sudo db_load -T -t hash -f /etc/vsftpd/virtusers.txt  /etc/vsftpd/virtusers.db

3.PAM 验证设置

默认安装后会生成/etc/pam.d/vsftpd,但直接设置这个文件会有问题,我们新建一个文件vsftpd.virtual写配置,并设置/etc/vsftpd/vsftpd.conf写对应的名字 pam_service_name=vsftpd.virtual

sudo vim /etc/pam.d/vsftpd.virtual
#替换为下面两行配置,pam_userdb.so根据自己的系统配置路径,
#db为上一步生成的(不用加后缀.db)文件 /etc/vsftpd/virtusers
auth    required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/virtusers
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/virtusers

#以上两条是手动添加的,内容是对虚拟用户的安全和帐户权限进行验证。
这里的auth是指对用户的用户名口令进行验证。
这里的accout是指对用户的帐户有哪些权限哪些限制进行验证。
其后的sufficient表示充分条件,也就是说,一旦在这里通过了验证,那么也就不用经过下面剩下的验证步骤了。
相反,如果没有通过的话,也不会被系统立即挡之门外,因为sufficient的失败不决定整个验证的失败,
意味着用户还必须将经历剩下来的验证审核。
再后面的/lib/security/pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。
最后的db=/etc/vsftpd/virtusers则指定了验证库函数将到这个指定的数据库中调用数据进行验证。

4.配置vsftpd(所有主要设置在这里面)

# 备份一份
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back
sudo vim /etc/vsftpd/vsftpd.conf

listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
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
guest_enable=YES
pam_service_name=vsftpd.virtual
user_config_dir=/etc/vsftpd/vu
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
#在以上配置文件中,有几点需要重点指出。
local_enable=YES
write_enable=YES
local_umask=022
# 这两项是启用系统用户的写权限。
# 特别是 write_enable=YES项一定要启用,否则vsftpd虚拟用户将无法登录vsftpd。

chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
#这三项是配置vsftpd用户禁止切换上级目录的权限。

guest_enable=YES
pam_service_name=vsftpd.virtual
user_config_dir=/etc/vsftpd/vu
# 这三项是启用vsftpd虚拟用以及虚拟用户账号配置目录。

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
#这三项是启用vsftpd被动模式及相关端口。

5 虚拟用户配置

  • 虚拟用户的设置都在文件夹下,有上一步的 user_config_dir=/etc/vsftpd/vu设置
  • 宿主用户设置为上面创建的用户 vsftpd
## 建立虚拟用户配置文件模版:以后没添加一个虚拟用户都可以复制一份修改
vi /etc/vsftpd/vu/vconf.tmp

#vconf.tmp内容如下:
guest_username=vsftpd  #指定宿主用户
virtual_use_local_privs=NO   #虚拟用户和本地用户有相同的权限。
local_root=/home/vsftpd/test1 #指定虚拟用户的具体主路径
write_enable=YES  #设定允许写操作
local_umask=022  #设定上传文件权限掩码

anonymous_enable=NO #设定不允许匿名用户访问
anon_upload_enable=NO #设定不允许匿名用户上传
anon_mkdir_write_enable=NO #设定不允许匿名用户建立目录
idle_session_timeout=600 #设定空闲连接超时时间
data_connection_timeout=120# 设定单次连续传输最大时间
max_clients=10  #设定并发客户端访问个数
max_per_ip=5  #设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件
local_max_rate=50000  #设定该用户的最大传输速率,单位b/s
anon_umask=133
#



#测试用户复制配置模板,可以进行个性化配置
cp /etc/vsftpd/vu/vconf.tmp /etc/vsftpd/vu/test
vim /etc/vsftpd/vconf/test

其他设置

#logo 文件设置权限
chown vsftpd:vsftpd /var/log/vsftpd.log

你可能感兴趣的:(vsftpd搭建FTP,并设置虚拟用户)