linux基础之FTP
一、FTP简介
FTP是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。通常用于Internet上的控制文件的双向传输。
二、FTP安装
1、查看是否安装
使用命令 rpm -qa | grep vsftpd查看系统是否已经安装有FTP软件,如显示如下图则证明已经安装FTP,若执行命令无返回值则证明尚未安装FTP。
2、FTP安装
直接yum安装比较简单直接一条命令搞定。命令:yum install -y vsftpd
3、关闭selinux
查看selinux状态:getenforce,如结果显示为Disabled则已关闭,如为Enforcing则为开启,若为Permissive则为开启,但是只有警告作用无阻止作用。
关闭selinux。临时关闭:setenforce 0,临时开启:setenforce 1。永久关闭:vim /etc/selinux/config,将SELINUX=enforcing 改为 SELINUX=disbaled,配置好之后需要重启系统。
三、传输模式简介
主动模式:默认情况下,ftp服务是开放了21端口,用来接受控制命令,服务器用20端口去发送数据(连接客户端大于1024的随机端口)。
被动模式:ftp服务也是开放21端口,用来接受命令控制,进行数据传输时,客户端会告知服务端打开一个大于1024的端口,然后客户端去主动连接服务
优缺点:主动f模式对ftp服务器的管理有利,但对客户端的管理不利。因为是服务端主动与客户端去建立连接,可能会被客户端的防火墙把源来自服务器的包给阻塞掉。
被动模式对ftp客户端的管理有利,但对服务端的管理不利。因为客户端主动与服务端去连,可能会被服务端的防火墙给阻塞掉。
折中方式:使用被动模式,并指定一个连接过来的端口范围,可以针对这个范围的端口在服务器进行一个防火墙的设置。
四、运行模式简介
stand alone模式:直接使用 FTP 主程序作为 FTP 的守护进程,负责 21 端口的监听,由于无需经过 xinetd 的前端代理,响应速度快,适合连接数 较大的情况,但由于 FTP 主程序长期驻留内存,故较耗资源。
super demo模式:由 xinetd 作为 FTP 的守护进程,负责 21 端口的监听,一旦外部发起对 21 端口的连接,则调用 FTP 的主程序处理,连接完成后,则关闭 FTP 主程序,释放内存资源。好处是资源占用少,适合 FTP 连接数较少的场合。
优缺点:standalone 一次性启动,运行期间一直驻留在内存中,优点是对接入信号反应快,缺点是损耗了一定的系统资源,因此经常应用于对实时反应要求较高的 专业 FTP 服务器。
xinetd 恰恰相反,由于只在外部连接发送请求时才调用 FTP 进程,因此不适合应用在同时连接数量较多的系统。此外,xinetd 模式不占用系统资源。除了反应速度和占用资源两方面的影响外,vsftpd 还提供了一些额外的高级功能,
如 xinetd 模式支持 per_IP (单一 IP)限制,而 standalone 模式则更有利于 PAM 验证功能的应用。
五、参数介绍
anonymous_enable=NO #不允许匿名访问,改为YES即表示可以匿名登录
anon_upload_enable=YES #是否允许匿名用户上传
anon_mkdir_write_enable=YES #是否允许匿名用户创建目录
local_enable=YES #是否允许本地用户,也就是linux系统的已有账号,如果你要FTP的虚拟账号,那可以改为NO
write_enable=YES #是否允许本地用户具有写权限
local_umask=022 #本地用户掩码
chroot_list_enable=YES #不锁定用户在自己的家目录,默认是注释,建议这个一定要开,比如本地用户judasn,我们只能看到/home/judasn,没办法看到/home目录
chroot_list_file=/etc/vsftpd/chroot_list #该选项是配合上面选项使用的。此文件中的用户将启用 chroot,如果上面的功能开启是不够的还要把用户名加到这个文件里面。
配置好后,登录的用户,默认登录上去看到的根目录就是自己的home目录。
listen=YES #独立模式
userlist_enable=YES #用户访问控制,如果是YES,则表示启用vsftp的虚拟账号功能,虚拟账号配置文件是/etc/vsftpd/user_list
userlist_deny=NO #这个属性在配置文件是没有的,当userlist_enable=YES,这个值也为YES,则user_list文件中的用户不能登录FTP,列表外的用户可以登录,也可以起到
一个黑名单的作用。当userlist_enable=YES,这个值为NO,则user_list文件中的用户能登录FTP,列表外的用户不可以登录,也可以起到一个白名单的作用。如果同一个用户
即在白名单中又在ftpusers黑名单文件中,那还是会以黑名单为前提,对应账号没法登录。
tcp_wrappers=YES #是否启用TCPWrappers管理服务