FTP服务File Transfer Protocol
FTP协议就是 文件传输控制协议
端口号 TCP20(数据传输连接)
TCP21(控制命令连接(会话))
两种工作模式:主动模式(active)
被动模式(passive)
FTP服务的工作原理
(1)主动模式(Active)
控制连接的发起方是FTP的客户端,而数据连接的发起方是FTP服务器。
控制连接的端口号是21,数据连接的端口号是20。
局域网内无防火墙的文件传输。
(2)被动模式(Passive)
控制连接的发起方是FTP的客户端,数据连接的发起方也是FTP客户机。
控制连接的端口号是21,数据连接的端口号是随机的(大于1024)。
互联网中有防火墙的文件传输。
FTP服务的访客身份
本地用户(local)访问:访问者使用系统中已经存在的真实用户的账户登录访问。
匿名用户(anonymous)访问:访问者统一用anonymous账户登录访问。
虚拟用户访问:访问者统一使用一个非真实账户登录访问。
软件名:vsftpd 是centos Linux默认使用的ftp服务端软件
vsftpd可同时允许匿名(anonymous)与本地用户(local)访问。
配置文件:/etc/vsftpd/vsftpd.conf
FTP服务的配置
(1)匿名用户配置参数
控制匿名用户是否能够登录(默认YES)
anonymous_enable=YES/NO
设定匿名访问的根目录(默认为:/var/ftp)
anon_root=/var/ftp
控制是否只允许匿名用户下载可阅读的文件
anon_world_readable_only=NO
是否允许匿名用户访问并上传文件(默认不支持)
anon_upload_enable=NO
匿名用户是否有除上传之外的其它权限(如:删除、更名等)
anon_other_write_enable=NO
是否允许匿名用户有创建目录的权利
anon_mkdir_write_enable=NO
设定是否改变匿名上传的文件的拥有者
chown_uploads=YES
设定匿名上传的文件的拥有者
chown_username=username
实例1:匿名用户访问
在主机server上配置匿名FTP服务器,并允许匿名用户进行如下操作:下载文件、可将文件上传到mypublic目录中并将上传文件的所有者改为ftpmaster、创建子目录、改变文件的名称。
分析:
- 创建用户ftpmaster
useradd ftpmaster
说明:因为需要将匿名用户上传文件的所有者改为ftpmaster,该用户必须是本地用户,所以先创建。
(2)创建匿名上传目录mypublic
mkdir /var/ftp/mypublic
chown ftp.ftp /var/ftp/mypublic
创建用来存放匿名用户上传文件的目录,并将该目录的所有者改为ftp。
(3)编辑/etc/vsftpd/vsftpd.conf
允许匿名上传文件 anon_upload_enable=YES
允许匿名创建目录 anon_mkdir_write_enable=YES
此指令的默认值为YES,表示仅当所有用户对该文件都拥有读权限时,才允许匿名用户下载该文件;此处将其值设为NO,则允许匿名用户下载不具有全部读权限的文件 anon_world_readable_only=NO
允许匿名用户改名、删除文件 anon_other_write_enable=YES
允许匿名用户上传文件的身份改变 chown_uploads=YES
将匿名用户上传文件的所有者改为ftpmaster chown_username=ftpmaster
cd /var/ftp
mkdir mypublic
ll -d /var/ftp
chowm ftp.ftp mypublic
useradd -s /sbin/nologin ftpmaster
tail -1 /etc/passwd
cd /var/ftp/mypublic
echo nihao > ceshi.txt
vi /etc/vsftpd/vsftpd.conf
anon_root=/var/ftp/mypublic
anon_world_readable_only=NO
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
chown_uploads=YES
chown_username=ftpmaster
Linux客户端
ftp 192.168.20.129
(2)本地用户配置参数
指定本地用户访问的根目录
local_root=/home/username(目录绝对路径)(自己创建用户,会出现/home/**)
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vi /etc/vsftpd/chroot_list
User1
User2 (访问被限制在家目录/home/username)
实例5:用户访问控制
配置VSFTPD服务,只允许user1、user2、user3三个用户可以登录此VSFTPD服务器。
分析:
useradd -s /sbin/nologin user1 (本地禁止登录,ftp可以使用)
useradd -s /sbin/nologin user2
useradd -s /sbin/nologin user3
echo 123456 | passwd --stdin user1
echo 123456 | passwd --stdin user2
echo 123456 | passwd --stdin user3
编辑VSFTPD的主配置文件/etc/vsftpd/vsftpd.conf
userlist_enable=YES
userlist_deny=NO #YES代表文件中的用户不能登录,文件外的用户不能登录。
userlist_file=/etc/vsftpd/user_list
编辑/etc/vsftpd/user_list文件
user1
user2
user3