在RHEL/CentOS 系统中,默认的FTP软件是vsftp,以下是安装配置过程。
服务器:balichvm(192.168.171.51)
1)、yum 安装vsftpd软件包
[root@balichvm ~]# yum install vsftpd
2)、启动vsftpd 服务
[root@balichvm ~]# /etc/init.d/vsftpd start #启动vsftpd服务
为 vsftpd 启动 vsftpd: [确定]
[root@balichvm ~]# ps aux |grep vsftpd
root 10054 0.0 0.0 52112 796 ? Ss 19:00 0:00 /usr/sbin/vsftpd/etc/vsftpd/vsftpd.conf
root 10057 0.0 0.0 103316 900 pts/1 S+ 19:00 0:00 grep vsftpd
[root@balichvm ~]# netstat -lnp |grepvsftpd
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 10054/vsftpd
[root@balichvm ~]#
此时,默认已经有一个ftp实例运行了,开放了匿名用户访问,只可以读取,不可以写入。
vsftpd的配置文件是/etc/ vsftpd目录下,与三个主要的文件如下:
/etc/vsftpd/ ftpusers #可以访问ftp服务器的用户
/etc/vsftpd/user_list #和vsftpd.conf的配置结合使用;
/etc/vsftpd/vsftpd.conf #vsftpd的主配置文件
默认开放匿名用户访问的目录是 /var/ftp/pud,那如何配置虚拟用户访问的?
3)、配置虚拟用户访问FTP服务。
(1)、首先在系统上创建一个系统用户,不需要登录系统:
[root@balichvm ~]# useradd virftp -s/sbin/nologin –M
(2)、创建用于存放虚拟的用户的密码文件:vsftpd_login,格式为单行是用户,双号是密码:
[root@balichvm ~]# vim/etc/vsftpd/vsftpd_login
ftp1
q1w2e3
ftp2
q1w2e3
ftp3
q1w2e3
[root@balichvm ~]# chmod 600/etc/vsftpd/vsftpd_login ##修改权限
(3)、使用db_load 生成能让vsftpd 服务识别的二进制库文件
格式:db_load -T -t hash -f /etc/vsftpd/vsftpd_login/etc/vsftpd/vsftpd_login.db
[root@balichvm~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
(4)、创建虚拟帐号,创建虚拟用户的配置文件目录:/etc/vsftpd/vsftpd_user_conf,然后在这个虚拟用户的配置文件目录下创建和/etc/vsftpd/vsftpd_login用户文件里面的用户相同的配置文件,如ftp1.
[root@balichvm~]# mkdir /etc/vsftpd/vsftpd_user_conf ##虚拟用户配置文件目录
local_root=/home/virftp/ftp1
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
local_max_rate=50000
(5)、创建ftp的共享目录/data/vsftp/ftp1,并所有者和所属组
[root@balichvm~]# mkdir -p /home/virftp/bftp1
[root@balichvm~]# chown -R virftp:virftp /home/virftp/ftp1
(6)、编辑/etc/pam.d/vsftpd文件,指定虚拟用户认证的文件
auth sufficient /lib64/security/pam_userdb.sodb=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
把这两行插入进去。
(7)、修改主配置文件/etc/vsftpd/vsftpd.conf,修改如下:
anonymous_enable=YES 修改为:anonymous_enable=NO #关闭匿名访问
#anon_upload_enable=YES 修改为:anon_upload_enable=NO #关闭匿名上传权限
#anon_mkdir_write_enable=YES 修改为:anon_mkdir_write_enable=NO
#chroot_local_user=YES 修改为:chroot_local_user=YES #去掉#注释
在后面加入如下配置:
guest_enable=YES #开启來宾用户
guest_username=virftp #映射的系统用户
virtual_use_local_privs=YES #虚拟用户使用系统用户的权限
user_config_dir=/etc/vsftpd/vsftpd_user_conf #虚拟用户的配置文件目录
(8)、重启vsftpd服务。
[root@balichvm~]# /etc/init.d/vsftpd restart
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
添加防火墙的规则:
[root@balichvm src]# vim/etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp--dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp--dport 20 -j ACCEPT
同时需要在/etc/sysconfig/iptables-config 文件上修改如如下:
IPTABLES_MODULES="ip_conntrack_netbios_nsip_conntrack_ftp ip_nat_ftp"
如果不修改/etc/sysconfig/iptables-config ,会无法读取目录列表。
[root@balichvm src]#/etc/init.d/iptables restart #重启防火墙服务
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
iptables:应用防火墙规则: [确定]
iptables:载入额外模块:ip_conntrack_netbios_nsip_conntrac[确定]ip_nat_ftp
这里的配置还是比较简单,可以根据各自的情况修改主配置文件/etc/vsftpd/vsftpd.conf.