vsftpd 是“very secure FTP daemon”的缩写,是一个完全免费的、开放源代码的ftp服务器软件。特点
是:非常高的安全性需求、带宽限制、良好的可伸缩性等。
vsftpd使用ftp协议,该协议属于应用层协议。它是典型的c/s架构,ftp服务端用来存储文件,ftp客户端
可以通过ftp协议连接服务端实现上传和下载资源。
ftp使用tcp的21端口进行命令传输,然后用tcp 的20端口进行数据传输(主动模式)。默认是被动模
式。
一、安装部署
vsftpd: 为服务端软件
lftp: 为客户端工具,推荐使用lftp
yum install vsftpd lftp -y
启动服务
systemctl start vsftpd
[root@localhost ~]# lftp 192.168.2.103
lftp 192.168.2.103:~>
二、配置VSFTPD文件
默认配置只能进行文件的读取和下载,不能进行写入和上传文件
1.1匿名用户访问配置
在/etc/vsftpd/vsftpd.conf配置文件中加入如下代码:
允许匿名用户上传文件;
允许匿名用户创建目录;
允许匿名用户其他写入权限。
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
1.2、修改/var/ftp目录有写入权限,使用如下chown, 设置命令如下:
chown -R ftp /var/ftp/pub/
systemctl restart vsftpd
此止,匿名用户可以上传下载
通过Windows资源客户端验证
2.1、本地账户访问配置
在/etc/vsftpd/vsftpd.conf配置文件编辑:
关闭匿名用户
anonymous_enable=NO
2.2、新增本地账户
useradd jfedu1
echo 123456|passwd --stdin jfedu1
通过Windows资源客户端验证,使用jfedu01、用户登录FTP服务器,即可上传文件、删除文件、下载文件,jfedu01系统用户上传文件的家目录在
3.1、虚似用户访问配置
在/etc/vsftpd/vsftpd.conf配置文件编辑:
关闭匿名用户
关闭本地用户
anonymous_enable=NO
local_enable=NO
3.2、安装Vsftpd虚拟用户需用到的软件及认证模块:
yum install pam* libdb-utils libdb* --skip-broken -y
3.3、创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,其中jfedu001、jfedu002
为虚拟用户名,123456为密码,如果有多个用户,依次格式填写即可。
3.4、生成Vsftpd虚拟用户数据库认证文件,设置权限700
db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
chmod 700 /etc/vsftpd/vsftpd_login.db
3.5、配置PAM认证文件,清空/etc/pam.d/vsftpd并在行首加入如下两行
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
3.6、所有Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建命令如下:
useradd -s /sbin/nologin ftpuser
3.7、在/etc/vsftpd/vsftpd.com 加入以下代码
#启用虚拟用户;
#映射虚拟用户至系统用户ftpuser;
#设置虚拟用户配置文件所在的目录;
#虚拟用户使用与本地用户相同的权限。
pam_service_name=vsftpd
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
3.8、至此,所有虚拟用户共同基于/home/ftpuser主目录实现文件上传与下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件
mkdir -p /etc/vsftpd/vsftpd_user_conf/
创建创建私有的虚拟目录代码如下:
/etc/vsftpd/vsftpd_user_conf/jfedu001对应虚似用户名jfedu001
/etc/vsftpd/vsftpd_user_conf/jfedu002 对应虚似用户名jfedu002
vim /etc/vsftpd/vsftpd_user_conf/jfedu001
配置文件内容
#jfedu001虚拟用户配置文件路径;
#允许登陆用户有写权限;
#允许匿名用户下载,然后读取文件;
#允许匿名用户上传文件权限,只有在write_enable=YES时该参数才生效;
#允许匿名用户创建目录,只有在write_enable=YES时该参数才生效;
#允许匿名用户其他权限,例如删除、重命名等。
local_root=/home/ftpuser/jfedu001
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
创建虚拟用户各自虚拟目录
mkdir -p /home/ftpuser/jfedu001
chown -R ftpuser:ftpuser /home/ftpuser
重启Vsftpd服务,通过Windows客户端资源管理器登录Vsftpd服务端