FTP文件解析协议

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件

FTP是两个服务器之间的事情,所以必须两台服务器都搭配的有ftp服务,这里以一个服务器为例,另外一台也与之相同操作。

首先下载安装两个包,一个是vsftpd服务,一个是ftp客户端,都安装开启了才可以进行ftp接下来的步骤

yum -y install vsftpd
yum -y install ftp

一般ftp默认是不使用root用户的,但是有些环境下需要使用root用户,如果需要使用root,请修改下两个文件把root给注释掉,不然会报错无法连接

修改ftpusers文件,注释掉root

vim /etc/vsftpd/ftpusers

#Users that are not allowed to login via ftp
#root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

修改user_list文件,注释掉root

vim /etc/vsftpd/user_list

#vsftpd userlist
#If userlist_deny=NO, only allow users in this file
#If userlist_deny=YES (default), never allow users in this file, and
#do not even prompt for a password.
#Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
#for users that are denied.
#root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

改完配置都要重启服务接着打开vsftp服务

chkconfig --level 35 vsftpd on # 打开服务
service vsftpd restart # 重启让改动生效
chkconfig --list vsftpd # 查看哪些打开
上面是CentOS 6的配置,CentOS 7与之不同,它还需要配置主文件然后再重启服务,通过cat /etc/centos-release 查看版本

下面的几个变量都是必需的,需要一一做正确改变,如果没有的需要自己收到添加,如use_localtime

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
use_localtime=YES
local_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES # 这个开启之后需要在/etc/vsftpd/下面创立一个文件:chroot_list,输入内容root,这样root就可以使用了
xferlog_enable=YES
local_umask=022

CentOS 7重启服务

systemctl restart vsftpd.service
OK,一切搭配完之后就可以进行测试了,ftp可以测试本身,也可以测试目标服务器

ftp_ip是服务器IP,ftp_user是账号推荐root,ftp_password是密码

ftp -inv ftp_ip
ftp>user ftp_user ftp_password
如果出现login successful!并且能进去该主机的文件夹里查看文件等,则证明ftp打通

下面是我写的一个简单测试ftp连通性的shell,可以参考下

ftpIp=$1
ftpUser=$2
ftpPasswd=$3
function ftpTest(){
ret=ftp -inv ${ftpIp} <<! user ${ftpUser} ${ftpPasswd} quit !
echo “===测试:$ret”
str1=echo ${ret}|grep "Login successful"

如果${str1}存在即证明登陆成功

if [[ ! ${str1} ]]; then
echo “ftp搭建成功”
fi
}
ftpTest

问题总结:

1、 如果出现无法连接,或者连接拒绝,root用户我们已经打开它,可以用root访问,所以剩下的一般都是防火墙的问题,可以关闭防火墙(service iptables stop,systemctl stop firewalld.service) 或者开放ftp的端口即可
2、 226 Transfer done (but failed to open directory)
原因一:无权限操作该目录,比如oracle用户去查看无权限的root用户文件夹
原因二:目录错误,比如该目录不存在
原因三:因为SELINUX开启限制,方法:更改/etc/selinux/config,设置SELINUX=disabled 并重启

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值