linux搭建ftp
操作系统:centos7.6
1、安装:
yum install -y vsftpd lftp
启动:
systemctl start vsftpd
开机自启:
systemctl enable vsftpd
2、创建用户ftp用户(root用户默认是关闭的,见下注释):
useradd –s /sbin/nologin cyxftp (不允许登录服务器)
passwd cyxftp
3、关闭匿名用户登录:vi /etc/vsftpd/vsftpd.conf
将yes改为no :
anonymous_enable=NO
修改配置文件添加以下未带#的语句
chroot_list_enable=YES: 是否启动限制用户的名单:
local_root=/var/ftp/test: 指定的ftp用户到指定的目录,需要创建
chroot_list_file=/etc/vsftpd/chroot_list: 存放指定用户的文本。此文件夹需要添加,本身不存在。是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值。(默认yes为锁定,所以这里没有修改,no为不锁定)
allow_writeable_chroot=YES :赋予锁定用户可写权限
创建目录
mkdir -p /var/ftp/test
mkdir -p /etc/vsftpd/chroot_list
chmod -R o+w /var/ftp/test/
重新启动
systemctl restart vsftpd
登录的方式
1、浏览器
2、window文件管理器
3、ftp连接软件,列如xftp
需要了解的事项:
默认支持匿名用户登录(直接在网址输入ftp://ip 不输入用户名密码,可以访问。不安全,不建议)
在vi /etc/vsftpd/vsftpd.conf配置文件中
允许匿名:anonymous_enable=YES 匿名默认目录():cd /var/ftp/pub/
不允许匿名(即用户模式登录): anonymous_enable=NO
主目录: cd /etc/vsftpd
ftpusers:记录在此文件的用户无法登录ftp。(root也默认记录在里面)
user_list: 和vsftpd.conf中的userlist_enable和userlist_deny两个配置项相关
作用
FTP协议的主要作用就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
工作原理
1、FTP有两个过程:一个是控制连接,一个是数据传输。
2、FTP协议不像HTTP协议一样需要一个端口作为连接(默认时HTTP端口是80,FTP端口是 21)。FTP协议需要两个端口,一个端口是作为控制连接端口,也就是FTP的21端口,用于发送指令给服务器以及等待服务器响应;另外一个端口用于数据传输端口,端口号为20(仅用PORT模式),是用建立数据传输通道的,主要作用是从客户向服务器发送一个文件,从服务器向客户发送一个文件,从服务器向客户发送文件或目录列表。
(主动模式:server连接client 被动模式:client连接server )
FTP的传输有两种方式:ASCII、二进制。
1、ASCII传输方式
假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
用户正在传输的是程序,数据库,字处理文件或者压缩文件,在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝。
2、二进制传输模式
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会损坏数据。
ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果传输二进制文件,所有的位都是重要的。