FTP是文件传输协议,正是因为这种协议使得主机间能够共享文件。 FTP 使用TCP生成一个虚拟链接用于控制信息,而后再生成一个单独的 TCP 链接用于数据传输。
数据库
vsftpd是一款在LINUX发行版中最主流的FTP服务器程序;特色是小巧轻快,安全易用;能让其自身特色得发发挥和掌握。若是使用系统用户登陆FTP,是比较危险的,因此咱们主要采用vsftpd虚拟用户登陆FTP服务器进行常见的操做,固然配置就相对复杂一点。(centos7安装)vim
一、首先安装FTP以及虚拟用户须要用到的软件及认证模块centos
yum install vsftpd -y yum install pam* libdb4-utils libdb4 --skip-broken –y
建立并生成vsftpd数据库文件vim /etc/vsftpd/vuser_passwd.txt,内容以下:安全
第一行为FTP虚拟用户,登陆用户名,第二行为密码,第三行为用户名,依次类推。服务器
[root@server vsftpd]# cat /etc/vsftpd/vuser_passwd.txt test1 123456 test2 456789
二、生成数据库文件命令app
[root@server vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db [root@server vsftpd]# chmod 700 /etc/vsftpd/vuser_passwd.db
三、配置PAM验证文件tcp
将配置文件vim /etc/pam.d/vsftpd 改成以下两行认证语句:(若是是32位,lib64需改为lib,若是RedHat,加入的语句不同,需注意)ide
[root@server vsftpd]# vim /etc/pam.d/vsftpd #%PAM-1.0 auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
四、建立vsftpd映射本地用户测试
全部的FTP虚拟用户须要使用一个系统用户,这个系统用户不须要密码,也不须要登陆。主要用来作虚拟用户映射使用。ui
[root@server vsftpd]# useradd -s /sbin/nologin ftpuser
五、修改完整版vsftpd.conf配置文件
[root@server vsftpd]# vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO //禁止匿名用户访问 local_enable=YES // 容许本地用户登陆FTP write_enable=YES //容许用户在FTP目录有写入的权限 local_umask=022 //设置本地用户的文件生成掩码为022,默认是077 dirmessage_enable=YES //激活目录信息,当远程用户更改目录时将出现提示信息 xferlog_enable=YES //启用上传和下载日志功能 connect_from_port_20=YES //启用FTP数据端口的链接请求 xferlog_file=/var/log/xferlog xferlog_std_format=YES //是否使用标准的ftpd xferlog日志文件格式 ascii_upload_enable=YES //设定支持ASCII模式的上传功能 ascii_download_enable=YES //设定支持ASCII模式的下载功能 listen=YES //使用vsftpd处于独立启动监听端口模式 guest_enable=YES //设定启用虚拟用户功能 guest_username=ftpuser //指定虚拟用户的宿主用户,CentOS中已经有内置的ftpuser用户了 pam_service_name=vsftpd //设置PAM认证服务配置文件名,文件存放在/etc/pam.d/目录 userlist_enable=YES //用户列表中的用户是否容许登陆FTP服务器,默认是不容许 tcp_wrappers=YES //使用tcp_wrappers做为主机访问控制方式 user_config_dir=/etc/vsftpd/vsftpd_user_conf //设定虚拟用户我的vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名) virtual_use_local_privs=YES //虚拟用户和本地用户有相同的权限 vsftpd_log_file=/var/log/vsftpd.log
保存重启,service vsftpd restart 便可使用虚拟用户登陆,这时候全部的虚拟用户共同使用/home/ftpuser目录上传下载。
六、若是想使用本身独立的目录,能够在/etc/vsftpd/vsftpd_user_conf目录建立各自的配置文件,如给
test1建立独立的配置文件:
[root@server vsftpd]# vim /etc/vsftpd/vsftpd_user_conf/test1 //内容以下,创建本身的FTP目录。 local_root=/home/ftpuser/test1 //锁定虚拟wugk用户登陆FTP后的目录 write_enable=YES //表示用户具备建立和删除的权限 anon_world_readable_only=YES //表示用户能够浏览FTP目录及下载文件 anon_upload_enable=YES //表示用户能够上传文件 anon_mkdir_write_enable=YES //表示用户有建立和删除目录的权限 anon_other_write_enable=YES //表示用户具备文件更名和删除文件的权限
[root@server vsftpd]# vim /etc/vsftpd/vsftpd_user_conf/test2 //内容以下,创建本身的FTP目录。 local_root=/home/ftpuser/test2 write_enable=YES anon_world_readable_only=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
要建立/home/ftpuser/test1和/home/ftpuser/test2
[root@server vsftpd]# mkdir -p /home/ftpuser/{test1,test2}
[root@server vsftpd]# chown -R ftpuser:ftpuser /home/ftpuser若是启用vsftpd日志需手动创建日志文件
[root@server vsftpd]# touch /var/log/xferlog
[root@server vsftpd]# touch /var/log/vsftpd.log
重启,使用客户端登陆FTP,测试便可。
七、配置PASV模式(可选)
vsftpd默认没有开启PASV模式,如今FTP只能经过PORT模式链接,要开启PASV默认须要经过下面的配置。打开/etc/vsftpd/vsftpd.conf,在末尾添加
#开启PASV模式
pasv_enable=YES
#最小端口号
pasv_min_port=61000
#最大端口号
pasv_max_port=61200 pasv_promiscuous=YES
#在防火墙配置内开启40000到40080端口
-A INPUT -m state --state NEW -m tcp -p -dport 40000:40080 -j ACCEPT
#重启iptabls和vsftpd
service iptables restart
service vsftpd restart 如今可使用PASV模式链接你的FTP服务器了~