CentOS 7.6 vsftpd 服务安装及配置


一、ftp和vsftpd的区别

ftp只是文件传输协议的意思,而实现文件传输协议的服务器和客户端软件非常多,vsftp就是服务器端的一个软件名称,服务器端软件当然需要一个进程来运行了,对于vsftp后台进程就是vsftpd。当然FTP有客户端软件,cuteftp,ws-ftp太多了。

二、vsftpd介绍

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等

三、安装

1.基础环境

[root@abcdocker ~]# uname -r                
2.6.32-573.el6.x86_64
[root@abcdocker ~]# cat /etc/redhat-release      
CentOS release 6.7 (Final)

2.关闭防火墙及Selinux

[root@abcdocker ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@abcdocker ~]# getenforce 
Disabled

3.部署vsftpd及虚拟用户登陆

[root@abcdocker ~]#  yum install -y vsftpd         #安装vsftpd程序
[root@abcdocker ~]#  yum install -y pam* db4*

4.修改配置文件

[root@abcdocker ~]# cp /etc/vsftpd/vsftpd.conf{,.bak_2018-06-11}   #修改前备份


#配置文件如下:
[root@abcdocker vsftpd]# cat vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=002
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
listen_port=1369
port_enable=NO
pasv_enable=YES
pasv_min_port=9180
pasv_max_port=9181
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
pam_service_name=/etc/pam.d/vvsftpd
guest_username=vsftpd
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/ftplogin


####################配置文件注释##################

anonymous_enable=NO       #不允许匿名用户登录
listen_port=1369          #FTP监听端口
local_enable=YES            #允许本地用户登录
write_enable=YES            #开启全局上传
local_umask=022            #设置上传umask值为系统默认umask值
dirmessage_enable=YES       #允许为配置目录显示信息
xferlog_enable=YES          #打开日志记录功能
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES       #是否禁锢chroot_list中的用户
chroot_list_file=/etc/vsftpd/chroot_list    # chroot_list文件保存位置
listen=YES                  #是否作为一个独立守护进程运行
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES           #开启虚拟用户
guest_username=vsftpd       #FTP虚拟用户对应的系统用户
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/ftplogin     #授权FTP虚拟用户所在目录
pam_service_name=/etc/pam.d/vvsftpd     #PAM认证文件

5.创建配置文件相关目录

1)创建chroot_list文件保存位置
[root@abcdocker vsftpd]# touch /etc/vsftpd/chroot_list

2)创建授权FTP虚拟用户所在目录
[root@abcdocker vsftpd]# mkdir /etc/vsftpd/ftplogin

3)创建FTP虚拟登陆账号
[root@abcdocker vsftpd]# touch vuser
[root@abcdocker vsftpd]# vim vuser
abcdocker
123456

4)添加新的pam service
[root@abcdocker vsftpd]# touch /etc/pam.d/vvsftpd
[root@abcdocker vsftpd]# vim /etc/pam.d/vvsftpd
#%PAM-1.0
#auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
#account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login

#注意如果是32位系统,那就用32位的校验,本例是64位的



5)生成pam校验数据库文件
[root@abcdocker vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db
[root@abcdocker vsftpd]# chmod 600 vuser 

#为了安全起见,建议在生成校验数据库之后,删除vuser文件; 或者修改vuser权限,不让别的用户读

6.创建本地映射用户并设置宿主目录权限

所有的FTP虚拟用户需要使用一个系统用户(vsftpd),这个系统用户不需要密码
[root@abcdocker ~]# useradd -d /home/vsftpd vsftpd -s /sbin/nologin -M

[root@abcdocker ~]# chown -R vsftpd /opt/    #授权目录

[root@abcdocker ~]# cd /etc/vsftpd/ftplogin/   

#创建一个以FTP虚拟用户命名的文件
[root@abcdocker ftplogin]# vim abcdocker
[root@abcdocker ftplogin]# cat abcdocker 
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
local_root=/opt/

7.启动FTP服务

[root@abcdocker ~]# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
[root@abcdocker ~]# netstat -lntup|grep vsftpd
tcp        0      0 0.0.0.0:1369                0.0.0.0:*                   LISTEN      1667/vsftpd

四、给FTP虚拟用户赋予权限(增加权限配置文件)详解

#有上传/下载/修改权限
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
local_root=/data/upload/

#只有上传/修改权限
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
local_root=/data/upload/

#只有下载权限
anon_world_readable_only=NO
local_root=/data/upload/

五、常见错误

1.创建的用户没有家目录

QQ图片20180611165026.png-7.4kB

解决办法:

 mkdir -p /home/vsftpd

2. 错误530 Login incorrect

13.png-3.8kB

解决办法:

1.首先检查账号密码是否正确

2.新添加的账号出现这个问题可以清空login.db

# >login.db 
# cat db.txt 
db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db
# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db
db_load: /etc/vsftpd/login.db: unexpected file type or format

# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db


作者头像
南宫俊逸创始人

君子好学,自强不息~

上一篇:Linux性能监控工具 gtop
下一篇:Linux 10个最佳可视化工具

发表评论

阿里云2021年 618 年中钜惠活动