最近公司需要搭建FTP服务器,正好没啥事,就再写点乱七八糟的东西吧。
首先安装vsftpd,执行如下命令:
yum install -y vsftpd
安装完成后,新增一个本地账号,执行如下命令:
useradd -g ftp -s /sbin/nologin ftpuser
为了保证系统安装,我们需要限制新建的本地账号只能用于登陆ftp服务,所以加入参数-s /sbin/nologin。
为ftpuser配置密码,执行如下命令:
passwd ftpuser
ftp需要通过/etc/shells判断哪些shell的账号可以登陆,所以需要在/etc/shells添加/sbin/nologin。执行命令nano /etc/shells。
创建新的ftp根目录,执行命令:
mkdir /var/ftp/ftpfiles
更改新ftp根目录所有者及所有组,执行命令:
chown -R ftpuser:ftp /var/ftp/ftpfiles
更改新ftp根目录权限,执行命令:
chmod -R 775 /var/ftp/ftpfiles
修改vsftpd用户列表文件,添加本地账号。执行命令:
nano /etc/vsftpd/user_list
修改vsftpd配置文件。执行命令:
nano /etc/vsftpd/vsftpd.conf
其中anonymous_enable=NO表示禁止匿名登录;local_enable=YES表示启用本地账号登录;write_enable=YES表示允许写入;加入一行local_root=/var/ftp/ftpfiles,表示指定ftp根目录;userlist_enable=NO表示使用user_list文件确定哪些用户可以登录ftp。
重启vsftpd服务,执行命令:
systemctl restart vsftpd
配置防火墙,开启tcp21端口,开启ftp服务,并重启防火墙,执行命令:
firewall-cmd --add-port=21/tcp --zone=public --permanent
firewall-cmd --add-service=ftp --zone=public --permanent
firewall-cmd --reload
配置Selinux开启ftp对外网访问,执行命令:
setsebool -P allow_ftpd_full_access on
测试是否能增删文件。
至此Linux系统配置ftp完成。