CentOS安装FTP(vsftpd)

前言

最近笔者新买了一台服务器,打算在这台服务器上安装一个ftp,方便以后文件进行上传。这不是笔者第一次进行安装vsftpd,每一次安装,都能引发出新的问题,所以笔者打算将所有的步骤都记录下来,防止下次踩坑。

查看是否有vsftpd

查看是否有vsftpd,如果有,就把vsftpd卸载了,笔者比较懒,直接卸载,如果没有的话,也没什么大的影响。

sudo yum remove vsftpd

安装vsftpd

当我们卸载掉vsftpd后,这个时候确定我们是没有安装vsftpd的。这个时候我们安装vsftpd是通过yum源进行安装。

sudo yum -y install vsftpd

创建vsftpd的文件目录

我们在根目录创建一个文件夹,也可以在你们想要的地方创建文件夹,这个文件目录,就是我们ftp上传的根目录。

cd /
sudo mkdir ftpfile

创建一个ftp用户,对这个用户的权限进行修改

useradd ftpuser目的是创建一个ftpuser用户
-d /ftpfile/目的是将这个用户的目录指定为/ftpfile/,如果我们上一步没有创建文件夹的话,我们还需要-m /ftpfile/告诉useradd,如果没有这个文件夹,就创建这个文件夹
-s /sbin/nologin显而易见,这个是为了不能让ftpuser这个用户不能通过终端登陆
chown -R ftpuser /ftpfile/让ftpuser具有操作/ftpfile/的权限
passwd ftpuser设置新用户的密码

sudo useradd ftpuser -d /ftpfile/ -s /sbin/nologin
sudo chown -R ftpuser /ftpfile/
sudo passwd ftpuser

配置vsftpd.conf

当我们安装完vsftpd、创建了ftp用户后,我们这个时候需要对配置文件进行修改

打开配置文件

sudo vim /etc/vsftpd/vsftpd.conf
  • 修改部分
    anonymous_enable是否能够匿名访问
    ftpd_banner设置连接服务器后的欢迎信息
    chroot_list_enable打开只有指定用户才能执行
    chroot_list_file配置指定用户列表
ftpd_banner=Welcome to blah FTP service.
anonymous_enable=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
  • 增加部分
    local_root以及anon_root指定账号登陆后的主目录
    use_localtime设置使用时间
    pasv_min_port设置被动传输接口的最小端口
    pasv_max_port设置被动传输接口的最大端口
local_root=/ftpfile
anon_root=/ftpfile
use_localtime=yes
pasv_min_port=61000
pasv_max_port=62000

创建配置用户的chroot_list文件

chroot_list是由chroot_list_file指定的

cd /etc/vsftpd/
sudo vim chroot_list
ftpuser

重启vsftpd

配置完成,重启vsftp服务

sudo service vsftpd restart

后续可能遇到的问题

防火墙

  1. 打开配置文件
sudo vim /etc/sysconfig/iptables
  1. 在文件中新增以下代码
#vsftpd
-A INPUT -p TCP --dport 61001:62000 -j ACCEPT
-A OUTPUT -p TCP --sport 61001:62000 -j ACCEPT

-A INPUT -p TCP --dport 20 -j ACCEPT
-A OUTPUT -p TCP --sport 20 -j ACCEPT
-A INPUT -p TCP --dport 21 -j ACCEPT
-A OUTPUT -p TCP --sport 21 -j ACCEPT
  1. 重启防火墙
sudo service iptables restart
  1. 重启vsftpd
sudo service vsftpd restart

selinux报错

  1. 打开selinux文件配置
sudo vim /etc/selinux/config 
  1. 修改配置文件
SELINUX=disable
  1. 刷新配置
sudo setenforce 0

连接ftp出现553错误

这个原因的出现是因为ftpfile文件权限问题,把写权限移除掉就可以了

chmod a-w /ftpfile

连接上ftp,但是不能向ftpfile文件夹里面传输文件

因为我们已经移除掉了ftpfile的文件权限,所以不能向里面写入文件。解决办法就是在ftpfile目录下创建write文件夹,把这个文件夹设置为777权限就可以了

mkdir write
chmod -R 777 write

后言

至此,在centos上配置vsftpd完成,就可以上传文件了。如果有什么问题,欢迎大家提出,笔者一定积极斧正。

推荐阅读更多精彩内容