基于vsftpd部署ftp服务(centos/rhel)

一、vsftp安装

一般在CentOS上都自动安装了vsftd,若没有安装则可以使用以下步骤进行安装

[root@lnmp yum.repos.d]# yum install vsftpd
[root@lnmp ~]# chkconfig vsftpd on
[root@lnmp ~]# service vsftpd start

# 清空iptables,并关闭iptables和selinux
[root@lnmp ~]# iptables -F                            # 清空iptables规则
[root@lnmp ~]# iptables -L -nv
Chain INPUT (policy ACCEPT 40 packets, 3328 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 25 packets, 3208 bytes)
 pkts bytes target     prot opt in     out     source               destination
[root@lnmp ~]# service iptables stop                  # 关闭防火墙
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@lnmp ~]# chkconfig iptables off                  # 设置iptables开机不启动

# 关闭selinux
[root@lnmp ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
[root@lnmp ~]# shutdown -r now

二、匿名/系统用户配置测试

[root@lnmp ~]# useradd -s /sbin/nologin shaw
[root@lnmp ~]# passwd shaw

默认,安装好vsftp,匿名用户(只可下载)和系统用户(完全权限)就可以访问

基于vsftpd部署ftp服务(centos/rhel)_第1张图片

因为系统用户登录ftp,即在自己家目录中,所有具备全部权限

基于vsftpd部署ftp服务(centos/rhel)_第2张图片

更改系统账号ftp主目录,对用户限速

[root@lnmp ~]# vim /etc/vsftpd/vsftpd.conf 
local_root=/var/ftp/pub                    # 更改系统用户主目录
local_max_rate=1024000                     # 系统用户限速1MB(上传和下载)
[root@lnmp ~]# service vsftpd restart
[root@lnmp ~]# chmod o+w /var/ftp/pub     # 加权限,可以上传和删除(ftp权限,由dir权限和ftp权限共同控制)

此时系统用户登录ftp,就在‘/var/ftp/pub’目录下,需要什么样的权限,手工添加

基于vsftpd部署ftp服务(centos/rhel)_第3张图片

三、vsftpd虚拟用户配置测试

1. 编辑配置文件vi /etc/vsftpd/vsftpd.conf

[root@lnmp ~]# touch /var/log/vsftpd.log           # 创建vsftp的日志文件
[root@lnmp ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO                                #设定不允许匿名访问
local_enable=YES                                   #设定本地用户可以访问
chroot_list_enable=YES                             #使用户不能离开主目录
xferlog_file=/var/log/vsftpd.log                   #设定vsftpd的服务日志
pam_service_name=vsftpd                            #PAM"认证文件"名,PAM将根据/etc/pam.d/vsftpd进行认证

# Vsftpd虚拟用户支持服务配置,默认vsftpd.conf中不包含这些设定项目,需要自己手动添加
guest_enable=YES                                   #设定启用虚拟用户功能。
guest_username=ftp                                 #指定虚拟用户的宿主用户。系统中已经有内置的"ftp"用户了
user_config_dir=/etc/vsftpd/vuser_conf             #设定虚拟用户个人vsftp的配置文件存放路径。存放虚拟用户个性化的配置文件名,应和虚拟用户名相同

2. 创建chroot_list,将用户ftp加入其中

[root@lnmp ~]# touch /etc/vsftpd/chroot_list
[root@lnmp ~]# echo ftp >> /etc/vsftpd/chroot_list

3. 进行虚拟用户认证配置

安装Berkeley DB工具,后面找不到db_load的问题就是没有安装这个软件包的原因

[root@lnmp ~]# yum install db4 db4-utils

创建用户密码文件vuser_passwd.txt

[root@lnmp ~]# vi /etc/vsftpd/vuser_passwd.txt  #   #注意奇数行是用户名,偶数行是密码
ftpuser
q.123456

生成虚拟用户认证的db文件

[root@lnmp ~]# db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

编辑认证文件/etc/pam.d/vsftpd,全部注释掉原来语句,并增加以下两行

[root@lnmp ~]# vi /etc/pam.d/vsftpd
#%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include     password-auth
#account    include     password-auth
#session    required     pam_loginuid.so
#session    include     password-auth
auth    required        pam_userdb.so   db=/etc/vsftpd/vuser_passwd
account required        pam_userdb.so   db=/etc/vsftpd/vuser_passwd

创建虚拟用户服务配置文件

[root@lnmp ~]# mkdir /etc/vsftpd/vuser_conf
[root@lnmp ~]# vi /etc/vsftpd/vuser_conf/ftpuser   # 配置文件名和用户名相同,每行配置最后,不能有空格,否则启动时报错
local_root=/var/ftp/pub 	        # 虚拟用户的根目录(根据实际修改)
write_enable=YES 			# 可写
anon_umask=022 				# 掩码
anon_max_rate=1024000                   # 限速1MB
anon_world_readable_only=NO 
anon_upload_enable=YES 
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

[root@lnmp ~]# mkdir /var/ftp/ftpuser            # 给刚建立的用户创建目录
[root@lnmp ~]# chown -R ftp /var/ftp/ftpuser     # 设定目录权限

4.重新启动vsftp服务

[root@lnmp ~]# service vsftpd restart

你可能感兴趣的:(基于vsftpd部署ftp服务(centos/rhel))