历史版本8 :Linux系统安装配置FTP 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:


目录:

1. 描述编辑

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP,从名称上可以看出安全性是编写VSFTP的初衷,除了这与生俱来的安全特性以外,高速与高稳定性也是VSFTP的两个重要特点。

安装vsftpd需要使用最高用户(root),否则不能进行。

2. 安装vsftp编辑

2.1 联网安装

rpm -qa |grep vsftpd #检查是否已安装ftp

yum install vsftpd -y #使用yum安装ftp

2.2 离线安装

下载安装包:http://rpmfind.net/linux/rpm2html/search.php?query=vsftpd (根据系统选择对应rpm包)

例如: (64位)、vsftpd-3.0.2-22.el7.x86_64.rpm (64位)

rpm -ivh vsftpd-2.2.2-24.el6.x86_64.rpm #安装vsftpd,请按照实际rpm包的名称写命令

2.3 修改配置

vi /etc/vsftpd/vsftpd.conf #编辑vsftpd.conf配置文件

键盘点击i,进入编辑模式,修改以下内容:

anonymous_enable=NO # 禁止匿名登录

键盘按ESC退出编辑模式,输入wq  退出vi编辑器。

2.4 新增FTP用户

useradd ftpuser #新建名为ftpuser的用户,并自动建立/home/ftpuser 目录

passwd ftpuser # 设置该用户的密码

然后连续两次输入要给该用户设置的密码即可

##使用ftpuser的账户密码可以登录并使用ftp服务##

注意:vsftpd会禁止一些用户登录使用FTP(默认为root、bin、daemon、adm、lp、sync、shutdown、halt、mail、news、uucp、operator、games、nobody),如果想使用这些用户名登录,可以/etc/vsftpd/ftpusers还有/etc/vsftpd/user_list中使用“#”屏蔽掉该用户名。

3. 使用FTP编辑

3.1 启动vsftpd

service vsftpd start #启动vsftpd服务

3.2 拷贝WEB-INF,给文件夹赋权限

拷贝正式环境web工程里的 WEB-INF文件夹,并粘贴到/home/ftpuser目录下

在平台开启文件服务器时,ftp路径填写 /home/ftpuser/WEB-INF

chmod -R 777 /home/ftpuser  #给ftpuser文件夹赋予写入权限

#如果考虑安全性,不能给777权限,可以只给755权限,命令是chmod -R 755 /home/ftpuser,但是拷贝WEB-INF文件时务必使用ftp用户,否则会因为文件归属问题导致不能写入。

3.3 测试是否成功

前提是FTP所在服务器防火墙已开放20、21端口,此处提供两种方式:

(1)用ftp工具连接,比如Xftp之类的进行登录ftp用户

(2)在能访问该ip的电脑上直接打开一个文件夹,地址里输入ftp://ip

用上面两种方式连接ftp后,新建和删除文件夹确认有读写权限,则表明ftp部署成功,如果测试报错,查看下面的FAQ文档。

4.运维知识编辑

4.1 常用命令

service vsftpd status #查看ftp的状态
service vsftpd start #启动服务
service vsftpd stop #停止服务
service vsftpd restart #重启ftp
chkconfig vsftpd on #设为开机启动

4.2 配置文件详解(非必看)

详情见:vsftpd.conf 配置手册

5. FAQ文档编辑

5.1 登录ftp操作文件报“550 create directory operation failed”或者无法登录

这是SELinux(Security-Enhanced Linux,是美国国家安全局对于强制访问控制的实现,是Linux 上最杰出的新安全子系统)安装机制搞的鬼,需要关闭SELinux。

(1)永久关闭SELinux的方式

vi /etc/selinux/config #编辑SELinux的config文件
将SELINUX=enforcing 改为SELINUX=disabled
改完以后,重启系统生效!

(2)临时关闭SELinux的方式

setenforce 0 #执行命令,仅临时关闭,重启后又会恢复原状

(3)不关闭SELinux

如果不愿关闭SELINUX,建议使用此方式

getsebool -a | grep ftpd #查询的结果中,只有ftp_home_dir和allow_ftpd_full_access必须为on 才能使vsftpd 具有访问ftp根目录,以及文件传输等权限

setsebool -P ftp_home_dir #执行即可

setsebool -P allow_ftpd_full_access 1 #执行即可

++想要了解更多SELinux相关的知识,可以查看https://linux.cn/article-1144-1.html

5.2 在浏览器访问ftp://ip时,报错:200 Switching to ASCII mode.227 Entering Passive Mode (0,0,0,0,227,175)

在windows下操作:打开 “网络和共享中心”,Internet选项>>高级>>将“使用被动FTP(用于防火墙和DSL调制解调器的兼容)”选项去掉>>确定即可

5.3 配置chroot_list禁止或者允许用户访问上层目录

配置方法:vsftpd:禁止或允许用户访问上层目录

5.4 配置FTP后,部分模板名称在平台读取为乱码

windows系统自带的ftp编码默认为gbk,linux自带的ftp编码为utf-8,在集群配置时请注意这点,否则会出现乱码。

5.5 其它工具登录FTP慢,平台配置FTP失败,报错:Invalid config!

原因:用户名密码访问的时候,ftp服务器如果开启了dns反向解析,就会去查找你是不是从合法ip来访问的,内网情况下会出现超时的情况。

解决方案:编辑vsftpd.conf加一句reverse_lookup_enable=NO,然后重启ftp。

5.6  查看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