May 5, 2015 · FTP

Linux下搭建FTP服务

先简单的说下这次的需求及实现 需要远程管理博客资源,比如上传下载图片之类。考虑到多平台使用以及复杂程度的问题,我选择使用FTP协议来实现此功能。

确定了使用的协议,接下来就是选择产品了,经过一番搜索Linux平台下FTP软件主要有三款vsftp\pureftp\wsftp,其中vsftp最为热门,网络上几乎都是以他为例子搭建FTP服务器,考虑以后的维护工作所以选择vsftp。

OS:CentOS release 6.6 (Final)

1.安装vsftp

#yum install -y vsftpd

2.配置防火墙以允许ftp数据通过

#iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#/etc/init.d/iptables save //保存刚刚加入的规则
#/etc/init.d/iptables restart //重启防火墙使之生效

补充:主动模式只需要开放20和21端口,如需使用被动模式须在 vsftpd.conf中修改(第三步有说明)
#iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
#iptables -A INPUT -p tcp --dport 30000:30100 -j ACCEPT //端口号对应vsftpd.conf中的设置

关于FTP主被动模式的说明:FTP协议中的主动模式与被动模式

3.配置vsftp

#chkconfig vsftpd on //开机启动ftp服务
#service vsftpd start //启动vsftp
#vi /etc/vsftpd/vsftpd.conf //编辑vsftp配置文件
修改如下内容
anonymous_enable=NO //默认为YES,是否允许匿名访问
chroot_local_user=YES
chroot_local_enable=YES //可选,限制用户只能访问自己的目录
pasv_enable=YES //可选,开启被动模式
pasv_max_port=30100 //被动模式最大端口号
pasv_min_port=30000 //被动模式最小端口号

4.添加FTP账户

#useradd -d /root/abc -g ftp -s /sbin/nologin ftpuser //我这里以ftpuser为例
或者建立虚拟用户
#useradd -d /root/abc ftpuser //只能访问服务器为其提供的FTP服务 #passwd ftpuser //修改ftpuser的密码

5.测试ftp是否正常运作

#service vsftpd restart //重启vsftp服务配置生效
#ftp localhost //本地测试ftp

6.可能遇到的问题

vsftp报错:500 oops: vsftpd: cannot locate user specified in 'ftpusername':ftp
处理方法:在/etc/vsftpd/vsftpd.conf 文件内加入ftp
username=nobody 保存,重启vsftp服务

vsftp报错:500 OOPS: cannot change directory:/root/abc
处理方法1:修改selinux
#setsebool -P ftp_home_dir=1
#reboot
网上给出的均是此方法,但是此方法并不定有效。

处理方法2 如果你的ftp用户目录定位在/root或者是需要root用户才能操作的目录,检查是否有允许ftp用户访问。 以我建立的用户和路径为例子:ftpuser /root/abc
/root目录权限 drwxr-x--- 4 root root 4096 Apr 27 06:40 root
/root/abc目录权限 drwxr-xr-x 2 root root 4096 May 5 07:36 abc

我们需要给ftpuser用户授权访问/root/abc目录的权限

#chmod -R 755 /root //允许ftpuser进入/root目录
#chmod -R 777 /root/abc //允许ftpuser对/root/abc目录进行读写执行操作