近期给公司配置一台服务器需要用到FTP服务,在此分享一下本人的学习经历
操作系统环境:Linux CentOS-6.5-i386
1、检查是否已安装vsftpd:rpm -qa | grep vsftpd
如果没有安装则没有提示信息,如图:
2、安装vsftpd,运行命令:yum install vsftpd -y
,等待安装完成。
3、vsftpd安装完成后,默认端口是21,要在防火墙上开启端口21,这样才可以对外连接。
运行命令:vim /etc/sysconfig/iptables
添加一行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
4、保存并退出。重启防火墙:service iptables restart
5、开启vsftpd服务:service vsftpd start
检测vsftpd运行状态:netstat -tunpl | grep vsftpd
6、添加一个用户名,不允许登陆系统,只用作ftp,其目录为 /home/webapp:
useradd ftpuser -s /sbin/nologin -d /home/webapp
修改ftpuser用户的密码:passwd ftpuser
将ftpuser用户添加到配置文件user_list中:echo ftpuser >> /etc/vsftpd/user_list
,
也可以通过编辑配置文件user_list,在文件末尾新增添加的用户。
重启vsftpd服务
7、进入到vsftpd目录下修改vsftpd的配置文件,修改前先做好备份,如图:
8、修改vsftpd.conf文件:vim vsftpd.conf
1)、禁止匿名登录,将 anonymous_enable=YES
修改为 anonymous_enable=NO
。
2)、找到以下三项,
#chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
并修改为:
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
否则会在连接FTP服务器时报错:
进入到/etc/vsftpd路径下:cd /etc/vsftpd
,
新建/etc/vsftpd/chroot_list文件:touch chroot_list
,
将ftpuser用户添加到chroot_list文件中:echo ftpuser >> chroot_list
3)、文件末尾新增:
# 仅允许userlist中的用户访问FTP服务器
userlist_deny=NO
# 将服务配置为被动模式
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
保存并退出。
9、修改防火墙配置,添加一条防火墙规则:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 30000:30999 -j ACCEPT
保存并退出,重启防火墙和vsftpd服务。
10、用FalshFXP连接FTP服务器,报错:
查看SELinux 的状态
解决方法:
1)、执行:setsebool ftpd_disable_trans 1
,解除SELinux保护,否则无法读取FTP目录,输入命令后提示:Could not change active booleans: Invalid boolean,表示解除成功,否则代表失败(为了减少vsftpd服务使用中一些不必要的麻烦,可以关闭SELinux服务)。
2)、执行:setsebool -P ftp_home_dir=1
,说明:-P表示永久设置,不用每次开机后都重新设置。
这条命令会执行一分钟左右,成功了不会提示任何信息。
至此,vsftpd服务配置完成。
可以连接服务器上传下载文件了。