FTP服务的搭建
一、 开始安装
-
yum安装vsftp
# yum -y install vsftpd
-
启动服务
# systemctl start vsftpd.service
-
配置文件路径
# cd /etc/vsftpd
二、虚拟用户
-
备份配置文件
#cp vsftpd.conf vsftpd.conf.bak
![](https://img-blog.csdnimg.cn/b6f582041a214e5d9abf68338d0a6bad.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_20,color_FFFFFF,t_70,g_se,x_16)
-
修改配置文件
#
echo '' > vsftpd.conf
# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
write_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
use_localtime=YES
local_enable=YES
allow_writeable_chroot=YES
xferlog_enable=YES
local_umask=022
pam_service_name=vsftpd
use_localtime=YES
listen_port=21
chroot_local_user=YES
idle_session_timeout=120
data_connection_timeout=120
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vuser_conf
virtual_use_local_privs=YES
pasv_min_port=10060
pasv_max_port=10090
accept_timeout=5
connect_timeout=1
![](https://img-blog.csdnimg.cn/f5e02f5e58fa462081bf81ffd46a7106.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_20,color_FFFFFF,t_70,g_se,x_16)
-
创建宿主用户(系统用户)
# 创建用户 ftpuser 指定 `/home/vsftpd` 目录(-M
不要创建用户的主目录
)
# useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
# 设置用户 ftpuser 的密码
# passwd ftpuser
![](https://img-blog.csdnimg.cn/00f405d0fbe44bba9c190aa7839d45f7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_20,color_FFFFFF,t_70,g_se,x_16)
# 把 /home/vsftpd 的所有权给ftpuser.root
(
这个目录是放文件的目录不是用户的家目录)
#mkdir /home/vsftpd
# chown -R ftpuser.root /home/vsftpd
![](https://img-blog.csdnimg.cn/97c602d0fe9643cc97bd4014d57a929f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_20,color_FFFFFF,t_70,g_se,x_16)
-
建立虚拟用户文件
# touch /etc/vsftpd/vuser_passwd
# 编辑虚拟用户名单文件:(
# 第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)
# vi /etc/vsftpd/vuser_passwd
![](https://img-blog.csdnimg.cn/f3a766b47c784222b716848602f81fdb.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_19,color_FFFFFF,t_70,g_se,x_16)
-
生成虚拟用户数据文件
![](https://img-blog.csdnimg.cn/5d52b39d28804915b70a12e6b730d4d6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_20,color_FFFFFF,t_70,g_se,x_16)
# db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
# chmod 600 /etc/vsftpd/vuser_passwd.db
-
创建用户配置
# mkdir /etc/vsftpd/vuser_conf # 建立虚拟用户个人vsftp的配置文件
# cd /etc/vsftpd/vuser_conf # 进入目录
# touch ftp1 ftp2
每个文件(ftp1和ftp2写入如下内容,local_root=/home/vsftpd/ftp1#这里写入这个用户的实际存储路劲)
local_root=/home/vsftpd/ftp1
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
![](https://img-blog.csdnimg.cn/6427b2baef314e508c35961dc7df2f5d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_14,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/6e333f7cc1f84d4e9d534d4abe75db26.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_13,color_FFFFFF,t_70,g_se,x_16)
-
创建用户目录
# mkdir -p /home/vsftpd/ftp1
# mkdir -p /home/vsftpd/ftp2
-
服务运维
# systemctl restart vsftpd.service # 重启服务
# systemctl start vsftpd.service # 启动服务
# systemctl status vsftpd.service # 服务状态查看
![](https://img-blog.csdnimg.cn/cfef372b5d36430482978d38febdbb4b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_20,color_FFFFFF,t_70,g_se,x_16)
-
生成虚拟用户的PAM文件
# cd /etc/pam.d/
# cp vsftpd vsftpd.bak
![](https://img-blog.csdnimg.cn/d54ee2f031684fd788bea21c1cec7bc6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_20,color_FFFFFF,t_70,g_se,x_16)
修改vsftpd文件内容(加入第二和第三行,下面的都全部注释,注意下面是64位操作系统,如果是32位的话lib64需要改成lib)
# uname -a
![](https://img-blog.csdnimg.cn/f4b7be01fcf848ceb472507bdfa9dd9d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_20,color_FFFFFF,t_70,g_se,x_16)
auth required
/lib64/security/pam_userdb.so db=/etc/vsftpd/
vuser_passwd
account required
/lib64/security/pam_userdb.so db=/etc/vsftpd/
vuser_passwd
![](https://img-blog.csdnimg.cn/25e910c4a56840dea8050e12aa85cb10.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_20,color_FFFFFF,t_70,g_se,x_16)
每次更改配置需要重启vsftpd服务。
![](https://img-blog.csdnimg.cn/d8ed95d5f72f48d2ad6cdb8ff8c77fc1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_20,color_FFFFFF,t_70,g_se,x_16)
客户端测试
客户端windows打开cmd到后台进行连接,网页和资源管理器里面都会有缓存也看不到报错。
![](https://img-blog.csdnimg.cn/e36c0d6fe0dc4b3d96a87c17884e97cb.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_20,color_FFFFFF,t_70,g_se,x_16)
1、首先每次更改配置需要重启vsftpd服务。
2、上面每个配置文件中的内容最好是手动键入(曾经的我直接粘贴进去,cat就是没问题,但是粘贴进去就是不行)
3、客户端windows打开cmd到后台进行连接,网页和资源管理器里面都会有缓存也看不到报错。
4、服务器tail -f /var/log/secure查看日志(也可以tail -f /var/log/messages,这个看不出什么,前者更精准)
5、客户端报错示例(坑了我好久,它说chroot没有读到/etc/vsftpd/chroot_list这个文件,所以我们新建这个文件就行,记得重启服务)。
6、如果虚拟用户登录到自己的宿主目录后,不能上传文件的话,服务器端需要在宿主目录里面再新建一个文件夹,给这文件夹777权限,就可以了(直接把宿主目录设置777就会登录不了)
7、新增用户的话,需要在/etc/vsftpd/vsuser.passwd里面追加用户(删除就是删除用户),记得使用db_load重新生成vsuser.passwd文件即可,vuser_confi里面新建一个新建账户的权限文件,宿主目录记得新建存储文件。
8、建议使用ftp工具和cmd验证
连接成功的标志
![](https://img-blog.csdnimg.cn/304df2a916654eb79d2be3c80f337557.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZuF5LqM5LqM,size_20,color_FFFFFF,t_70,g_se,x_16)