FTP文件共享服务

目录

概述

匿名用户验证

 可选配置项

 本地用户验证   

本地用户访问控制

用DNS服务连接ftp主机可以使用域名登录


概述:FTP:linux下最常见的文件服务器,工作于应用层,实现文件传输
           FTP:file transfer protocol  文件传输协议
FTP连接类型
    命令连接:客户端发起请求,服务器响应默认一直保持连接
    数据连接:按需打开,按需关闭,与命令连接相关联,有可能同时打开多个数据连接
端口
    控制连接 :  TCP/21
    数据连接 : 20/随机端口
工作模式
    主动模式:
        1、客户端用端口n连接服务器端的21号端口,建立连接并使用PORT命令告知服务器开启了n+1端口
        2、连接建立后,服务器使用20端口主动向客户端的n+1端口发送连接,以建立数据连接
    被动模式:
        1、客户端使用端口n连接FTP的21号端口,告知服务器使用被动模式
        2、控制连接建立后,服务器建立端口P,使用PASV命令并告知客户端
        3、客户端收到端口P后,使用n+1端口连接FTP的P端口,建立数据连接

服务名:vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
用户控制文件:/etc/vsftpd/ftpusers
                         /etc/vsftpd/user_list

用户验证类型
    匿名用户:
        是一种最不安全的模式,任何人都可无需密码验证而直接登录到FTP服务器
    本地用户:
        是通过linux系统本地的账号密码进行验证登录,相比较匿名开放模式更安全,配置也比较简单。
    虚拟用户:更安全
安装:
    服务器安装vsftpd软件
    客户端安装ftp,否则无法使用ftp命令
    登录时,直接使用ftp命令加上服务器IP地址

匿名用户验证:
    用户名:ftp或者anonymous
    密码:无
    工作目录:
        /var/ftp、/var/ftp/pub
 

[root@localhost ~] vim /etc/vsftpd/vsftpd.conf   #打开配置文件 

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES   #将此行注释消除
#
# Uncomment this to allow local users to log in.
[root@localhost ~] ftp 192.168.9.254  #客户端下载ftp登录服务器
Connected to 192.168.9.254 (192.168.9.254).
220 (vsFTPd 3.0.2)
Name (192.168.9.254:root): ftp #登录匿名账号
331 Please specify the password.
Password:     #无密码 直接回车
230 Login successful.    #成功
Remote system type is UNIX.
Using binary mode to transfer files.

    可选配置项:
        anon_upload_enable=[YES|NO]        是否允许匿名用户上传文件

        anon_mkdir_write_enable=[YES|NO]    是否允许匿名用户创建目录
        anon_other_write_enable=[YES|NO]    是否开放匿名用户的其他写入权限(删除、改名)

chown   777  /var/ftp/pub/   给予pub写入权限 

# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
anon_upload_enable=YES  #取消注释  允许匿名用户上传文件
# Uncomment this if you want the anonymous FTP user to be able to create
anon_mkdir_write_enable=YES #允许创建

[root@localhost ~]# ftp 192.168.9.254
Connected to 192.168.9.254 (192.168.9.254).
220 (vsFTPd 3.0.2)
Name (192.168.9.254:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir 666    #创建目录



ftp> cd pub   #cd到pub
250 Directory successfully changed.
ftp> put skl.txt       #上传文件
local: skl.txt remote: skl.txt
227 Entering Passive Mode (192,168,9,254,152,242).
150 Ok to send data.
226 Transfer complete.  #传输完成
 


 本地用户验证
   用户名: 服务器本地用户
    密码:本地用户密码
    工作目录:本地用户的家目录
    可选配置项
        local_enable=[YES|NO]    是否允许本地用户登录FTP
        local_umask=022    本地用户上传文件的umask值
        local_root=/var/ftp    本地用户的FTP根目录
        chroot_local_user=[YES|NO]    是否将用户权限禁锢在FTP目录,确保安全
        allow_writeable_chroot=YES    是否允许写入
        chroot_list_enable=YES|NO    是否启用chroot_list_file
        在/etc/vsftpd/chroot_list文件中列出被不限制的用户的列表

创建a2 用户 放入 /etc/vsftpd/chroot_list中,发现可以切换到/var

[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf  #修改配置文件 
local_enable=YES  #允许本地用户登录FTP
local_umask=022    #本地用户上穿文件的umask值
local_root=/var/ftp   #本地用户的FTP根目录(自己设置)
chroot_local_user=YES     #将用户禁锢在FTP目录,确保安全
allow_writeable_chroot=YES    #允许写入chroot_list_file里
chroot_list_enable=YES       #启用chroot_list_file
## (default follows)
chroot_list_file=/etc/vsftpd/chroot_list   #在/etc/vsftpd/chroot_list文件中列出不被限制的用户列表

[root@localhost ~]# ftp 192.168.9.254
Connected to 192.168.9.254 (192.168.9.254).
220 (vsFTPd 3.0.2)
Name (192.168.9.254:root): a2  #登录a2
331 Please specify the password.
Password:
230 Login successful.  
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /var   #可以切换到/var  
250 Directory successfully changed.
ftp> 

创建aa4  不在/etc/vsftpd/chroot_list中,发现只能在

Name (192.168.9.254:root): aa4
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /var    #不能切换到/var
550 Failed to change directory.

ftp> cd /pub   #只可以切换到/(var/ftp)里
250 Directory successfully changed.

本地用户访问控制:

userlist_enable=YES
userlist_deny=YES
不允许/etc/vsftpd/user_list文件中出现的用户名登录FTP
userlist_enable=YES
userlist_deny=NO
仅允许/etc/vsftpd/user_list文件中出现的用户名登录FTP
 ftpusers
不允许/etc/vsftpd/ftpusers文件中出现的用户名登录FTP,无论user_list如何设置 

用DNS服务连接ftp主机可以使用域名登录