1. 概述
1.1 版本
报表服务器版本 |
---|
11.0 |
1.2 应用场景
定时任务完成后,希望把生成的附件上传到其他服务器的 FTP 上面,需要提前准备已配置的 FTP 服务器。
配置开启集群 若选择文件服务器共享,协议选择 FTP 时,需要提前准备已配置的 FTP 服务器。
1.3 功能简介
VSFTP 是一个基于 GPL 发布的类 Unix 系统上使用的 FTP 服务器软件,它的全称是 Very Secure FTP,从名称上可以看出安全性是编写 VSFTP 的初衷,除了这与生俱来的安全特性以外,高速与高稳定性也是 VSFTP 的两个重要特点。
本文将简单介绍,在Linux系统中安装配置FTP的操作流程。
注1:安装 vsftpd 需要使用最高用户(root),否则不能进行。
注2:建议使用更安全的协议 SFTP,详情请参见:Linux系统配置使用SFTP。
2. 操作步骤
2.1 安装 FTP
在Linux系统中安装FTP时,有两种方式可选,请根据服务器情况选择适合的方式:
1)联网安装:服务器可连接外网,可直接拉取FTP安装包
2)离线安装:服务器为内网环境,无法连接外网。
2.1.1 联网安装
rpm -qa |grep vsftpd # 检查是否已安装 ftp
yum install vsftpd -y # 使用 yum 安装 ftp
2.1.2 离线安装
请根据系统选择对应 rpm 包进行下载:http://rpmfind.net/linux/rpm2html/search.php?query=vsftpd
例如:vsftpd-2.2.2-24.el6.x86_64.rpm:vsftpd-2.2.2-24.el6.x86_64.rpm
vsftpd-3.0.2-22.el7.x86_64.rpm :vsftpd-3.0.2-22.el7.x86_64.rpm
rpm -ivh vsftpd-2.2.2-24.el6.x86_64.rpm # 安装 vsftpd 请按照实际 rpm 包的名称写命令
2.2 修改配置
编辑 vsftpd.conf 配置文件,将anonymous_enable值改为 NO ,禁止匿名登录。
vi /etc/vsftpd/vsftpd.conf # 编辑vsftpd.conf配置文件
anonymous_enable=NO # 禁止匿名登录
详情见:vsftpd.conf 配置手册
2.3 新增 FTP 用户并启动 vsftpd 服务
1)新增 FTP 用户
useradd ftpuser # 新建名为 ftpuser 的用户,并自动建立/home/ftpuser 目录
passwd ftpuser # 设置该用户的密码
然后连续两次输入您要给该用户设置的密码即可,使用 ftpuser 的账户密码可以登录并使用 ftp 服务。
注1:平台配置集群的时候使用的用户名和密码是上文新增的用户名和密码,本文中默认用户名为ftpuser。
注2:vsftpd 会禁止一些用户登录使用FTP(默认为root、bin、daemon、adm、lp、sync、shutdown、halt、mail、news、uucp、operator、games、nobody),如果想使用这些用户名登录,请检查/etc/vsftpd/ftpusers和/etc/vsftpd/user_list文件中是否存在该用户名,并使用“#”屏蔽。
2)启动 FTP
使用以下语句启动vsftpd服务
若能成功启动,则不会返回任何信息。
若启动失败,则会返回报错信息。
systemctl restart vsftpd.service # 启动vsftpd服务
2.4 拷贝 WEB-INF,给文件夹赋权限
1)拷贝正式环境 Web 工程里的 WEB-INF 文件夹,并粘贴到/home/ftpuser目录下,在平台开启文件服务器时,FTP 路径填写 /home/ftpuser/WEB-INF
2)赋予权限
chmod -R 777 /home/ftpuser #给 ftpuser 文件夹赋予写入权限
注1:如果考虑安全性,不能给 777 权限,可以只给 755 权限,命令是 chmod -R 755 /home/ftpuser,但是拷贝 WEB-INF 文件时务必使用 ftp 用户,否则会因为文件归属问题导致不能写入。
注2:配置 chroot_list 可禁止或者允许用户访问上层目录。详情请自行百度。
2.5 测试是否成功
前提是 FTP 所在服务器防火墙已开放 20、21 端口,此处提供两种方式:
1)用 FTP 工具连接,比如 Xftp 之类的进行登录 FTP 用户。
2)在能访问该 IP 的电脑上直接打开一个文件夹,地址里输入ftp://ip
用上面两种方式连接 FTP 后,新建和删除文件夹确认有读写权限,则表明 FTP 部署成功。
3. 运维知识
service vsftpd status # 查看 ftp 的状态
service vsftpd start # 启动服务
service vsftpd stop # 停止服务
service vsftpd restart # 重启 ftp
chkconfig vsftpd on # 设为开机启动
更多运维知识参见:集群运维手册-Linux 版
4. 注意事项
4.1 关闭 SELinux
注意:登录 ftp 操作文件报错“550 create directory operation failed”或者无法登录以及开启777权限以后仍然没有读写权限考虑以下操作。
这是 SELinux(Security-Enhanced Linux,是美国国家安全局对于强制访问控制的实现,是 Linux 上最杰出的新安全子系统)安装机制问题,需要关闭 SELinux。
1)永久关闭 SELinux 的方式
vi /etc/selinux/config # 编辑 SELinux 的 config 文件
SELINUX=enforcing --> SELINUX=disabled # 永久关闭 SELinux 重启系统生效
2)临时关闭 SELinux 的方式
setenforce 0 # 执行命令,仅临时关闭,重启后又会恢复原状
3)不关闭 SELinux
getsebool -a | grep ftpd # 查询的结果中,只有 ftp_home_dir 和 allow_ftpd_full_access 必须为 on 才能使 vsftpd 具有访问 ftp 根目录,以及文件传输等权限
setsebool -P ftp_home_dir 1 # 执行即可
setsebool -P allow_ftpd_full_access 1 # 执行即可
注:更多 SELinux 相关的知识请参见: SELinux 入门
4.2 Invalid config
1)其他工具登录 FTP 慢,平台配置 FTP 失败,报错:Invalid config!
用户名密码访问的时候,ftp服务器如果开启了dns反向解析,就会去查找你是不是从合法 IP 来访问的,内网情况下会出现超时的情况。
编辑 vsftpd.conf 加一句 reverse_lookup_enable=NO,然后重启 FT。
2)查看 FTP 状态时报错信息如下:
Jul 25 22:34:20 localhost vsftpd: pam_shells(vsftpd:auth): /etc/shells is either world writable or not a normal file
Jul 25 22:45:29 localhost vsftpd: pam_listfile(vsftpd:auth): /etc/vsftpd/ftpusers is either world writable or not a normal file
Jul 25 22:46:28 localhost vsftpd: pam_listfile(vsftpd:auth): /etc/vsftpd/ftpusers is either world writable or not a normal file
chmod 664 /etc/vsftpd/ftpusers,然后重启 vsftpd 。
4.3 FTP 工作模式
FTP 分为主动 (PORT)和被动(PASV)两种工作模式,服务器只开 20 和 21 端口时,无法使用 PASV 方式。此时连接 FTP 会报错:
ftp> dir
227 Entering Passive Mode (10,110,97,66,13,162).
ftp: connect: Connection refused
解决方案有两个:
1)方案一
关闭被动模式,启用主动模式。输入ftp回车后,输入下方代码:
2)方案二
开启 21 端口和任何大于1024 的端口,再通过 passive 开启 FTP 被动模式
备注:因为被动模式传输速度大于主动模式,推荐方案二。
4.4 530 login incorrect
问题描述:
FTP文件服务器连接失败,日志报错:530 login incorrect
原因分析一:端口未开放
请检查FTP和工程内网是否联通
原因分析二:密码过期
FTP文件服务器密码需要定期更换,请先重置密码再进行连接
也可自行百度,设置FTP文件服务器密码不过期