RHCE(八)FTP服务——Linux系统文件共享

概念

FTP(File Transfer Protocol)文件传输协议,应用层的文件共享服务是互联网控制文件实现双向传输,同样ftp也是一个应用程序,不同系统对应的应用程序也不同,但是所遵循的是同一个协议——vsftpd

原理

假设有在两台主机一台主机远程连接的服务器为文件共享服务器本地主机为客户端在两台主机正常建立连接的情况下可以通过本地主机基于ftp协议访问服务器的文件并将文件下载到本地。如果同样服务器允许客户端写入可以将本地文件上传到服务端。

FTP端口

TCP21 命令
TCP20 数据

FTP的传输有两种方式:ASCII、二进制。

用户分类

  • ftpReal帐户(本地用户):在FTP服务上拥有帐号,可以变更到其他目录中去。如系统的主目录等等。
  • ftpGuest用户(虚拟用户):只能够访问自己的主目录,只能够访问其主目录下的目录,而不得访问主目录以外的文件。
  • ftpAnonymous(匿名)用户:在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。

默认情况下,Vsftpd服务器会把建立的所有帐户都归属为Real用户。在组建FTP服务器的时候,我们就需要根据用户的类型,对用户进行归类。

FTP服务端使用模式

主动模式/standard/port方式

主动模式下,FTP客户端从任意的非特殊的端口(N > 1023)连入到FTP服务器的命令端口–21端口。然后客户端在N+1(N+1 >= 1024)端口监听,并且通过N+1(N+1 >= 1024)端口发送命令给FTP服务器。服务器会反过来连接用户本地指定的数据端口,比如20端口。

被动模式/passive/pasv方式

在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N >; 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P >; 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

主配置文件

主配置文件:vim /etc/vsftpd/vsftpd.conf
从配置文件:vim /var/ftp/pub

主配置文件详解
anonymous_enable=YES 是否启用匿名用户 宿主目录(用户家目录 /home/redhat)
local_enable=YES 启用本地用户访问
write_enable=YES 允许写入(本地用户要实现上传就需要快开启它)
local_umask=022 默认本地用户上传普通文件权限 644 755
dirmessage_enable=YES 显示每个目录下的文件信息
xferlog_enable=YES 日志启用
connect_from_port_20=YES 主动请求的数据端口
chown_uploads=YES 所有匿名用户上传的文件所属用户将会被改成chown_username
chown_username=whoever 匿名上传的所属用户名是whoever
xferlog_file=/var/log/xferlog 启用的日志文件
xferlog_std_format=YES
idle_session_timeout=600 空闲连接超时
data_connection_timeout=120 数据连接超时
nopriv_user=ftpsecure 当服务器运行于最底层时使用的用户名
chroot_list_enable=YES
chroot_local_user=YES 所有文件列出用户, 可以切换到其他目录
chroot_list_file=/etc/vsftpd/chroot_list
listen=NO 服务将自己监听处理listen_ipv6=YES
pam_service_name=vsftpd 设置PAM认证模块使用名称预设为vsftpd
userlist_enable=YES
tcp_wrappers=YES 服务端和客户端访问控制策略(服务器级别的一种防火墙)

ftp匿名用户访问

修改主配置文件:#vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES 开启匿名用户访问(可以下载文件)
anon_upload_enable=YES 开启上传权限(默认可以上传普通文本文件)
anon_mkdir_write_enable=YES 上传目录
anon_umask=022 指定上传权限掩码(默认077)
anon_other_write_enable=YES 开启匿名用户删除权限

ftp本地用户访问

修改主配置文件:#vim /etc/vsftpd/vsftpd.conf

local_enable=yes 本地用户访问/下载
write_enable=yes 本地用户上传普通文件/目录权限开启/删除
Local_umask=022 指定上传权限掩码(默认077)

本地用户禁锢方式两种

1.对所有本地用户禁锢

allow_writeable_chroot=YES
chroot_local_user=YES

  1. 指定列表用户禁锢

allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

ftp虚拟用户访问

1、创建系统用户,禁止该用户登录
[root@ldap ftp]# useradd -s /sbin/nologin vhaha
2、修改家目录权限,让虚拟用户可访问
[root@localhost vsftpd]# chmod o+rx /home/vhaha/
3、修改主配置文件
[root@ldap ftp]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO 关闭匿名访问
guest_enable=YES 客人模式
guest_username=vhaha vhaha为系统用户
virtual_use_local_privs=YES 本地虚拟用户特权开启
pam_service_name=vsftpd 设置PAM认证模块使用名称预设为vsftpd
chroot_list_enable=YES
chroot_local_user=NO 在/etc/vsftpd.chroot_list 文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到/目录

4、创建虚拟用户数据库文件
(1)创建虚拟用户文件

格式为一行用户名,一行密码,示例中abc为用户名,redhat为密码
[root@localhost vsftpd]# vim vhaha
1
redhat
2
redhat
3
redhat

将虚拟用户文件转换成用户数据库文件
[root@localhost vsftpd]# db_load -T -t hash -f vhaha vhaha.db
修改虚拟用户数据库文件权限
[root@localhost vsftpd]# chmod 600 vhaha.db

5、修改PAM认证方式

vim /etc/pam.d/vsftpd
注释掉所有行,并添加以下两行:
auth required pam_userdb.so db=/etc/vsftpd/vhaha
account required pam_userdb.so db=/etc/vsftpd/vhaha

6、重启服务,关闭防火墙和selinux
[root@localhost]#systemctl restart vsftpd
[root@localhost]#systemctl stop firewalld
[root@localhost]#setenforce 0

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值