目录:
1.FTP文件传输协议
- FTP(文件传输协议)是 INTERNET 上仍常用的最老的网络协议之一,它为系统提供了通过网络与远程服务器进行传输简单方法。
- 在RED HAT ENTREPRISE LINUX6 中,FTP服务包的名称为 VSFTPD( Very Secure File Transfer Protocol Damon )----- vsftpd 。
- FTP默认发布目录为 /var/ftp/pub,用户只能下载位于 CHROOT 目录中的内容。这意味着远程 FTP 客户端能以匿名用户anonymous 或 ftp 本地用户身份连接到服务器(无需密码),并从 ftp 服务器上的 /var/ftp/ 目录下载或上传文件(其本地 ftp 用户可以读取这些文件)。
- FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端
其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源- 在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。且由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
- 默认情况下FTP协议使用TCP端口中的 20、21这两个端口,其中20(被动端口)用于传输数据,21(主动端口)用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关。如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
2.部署FTP服务器
2.1FTP协议提供的软件
在rhel7中:vsftpd
2.2.部署FTP服务器
<实验准备>
- 配置好网络—https://blog.csdn.net/weixin_43384009/article/details/102761341
- 配置yum源—https://blog.csdn.net/weixin_43384009/article/details/102770877
<安装服务>
yum install vsftpd.x86_64 lftp.x86_64 -y ##下载ftp服务(vsftp和lftp)
systemctl start vsftpd ##开启vsftpd
systemctl enable vsftpd ##开机启动vsftpd
firewall-config ##在防火墙设置中开启ftp
firewall-cmd --list-all ##查看防火墙中可以允许ftp服务
lftp 172.25.60.251 ##能登陆自己的ip并且显示,表示安装成功
关闭selinux
vim /etc/sysconfig/selinux
selinux=disabled
reboot ##修改之后重启
3.ftp服务的基本信息
/var/ftp | 默认发布目录 |
---|---|
/etc/vsftpd | 配置目录 |
/etc/vsftpd/vsftpd.conf | 服务配置文件 |
21 /tcp | 协议接口 |
<报错id的解析>
500 | 文件系统权限过大 |
---|---|
530 | 用户认证失败 |
550 | 服务本身功能未开放 |
553 | 本地文件系统权限过小 |
4.ftp服务配置文件vsftpd.conf
匿名用户登录
anonymous_enable=YES/NO 匿名用户是否可以登陆(YES---可登陆,NO---不可登陆)
本地用户登陆
local_enable=YES/NO 本地用户是否可以登陆(YES---可登陆,NO---不可登陆)
登录用户写权限
write_enable=YES/NO ftp是否对登陆用户可写(YES---可写,NO---不可写)
本地用户登录上传
匿名用户上传
write_enable=YES/NO ftp是否对登陆用户可写(YES---可写,NO---不可写)
anon_upload_enable=NO/YES /*NO---不可上传,YES---可上传*/
chgrp ftp /var/ftp/pub /*所有组改为 ftp*/
chmod 775 /var/ftp/pub /*更改权限*/
匿名用户下载
anon_world_readable_only=NO/YES /*NO---可下载,YES---不可下载*/
匿名用户建立目录
anon_mkdir_write_enable=YES
匿名用户删除
anon_other_write_enable=YES
匿名用户家目录修改
anno_root=/zxyos /*指定匿名用户登陆所处位置*/
匿名用户上传文件默认权限修改
anon_umask=022
匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
最大上传速率
anon_max_rate=102400(100K)
最大链接个数
max_clients=2
本地用户家目录修改
local_root=/directory
本地用户上传文件权限
local_umask=xxx
限制本地用户浏览/目录
chroot_local_user=YES 所有的用户可以访问
chmod u-w /home/*
没修改之前本地用户可以进入/浏览文件
修改之后无法访问
限制本地用户浏览/目录,用户黑名单建立
名单中出现的用户不可查看根目录
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
限制本地用户浏览/目录,用户白名单建立
名单中出现的用户可以查看根目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
限制本地用户登陆
vim /etc/vsftpd/ftpusers ##永久黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
限制本地用户登陆,用户白名单设定
userlist_deny=NO
vim /etc/vsftpd/user_list
4.FTP虚拟用户设定
创建虚拟帐号身份
vim /etc/vsftpd/userlist ##文件名称任意
ftpuser1
123
ftpuser2
123
ftpuser3
123
db_load -T -t hash -f /etc/vsftpd/userlist userlist.db ## 将此文件改为hash
db_load 加密命令
-T 转换
-t 指定加密方式
hash 哈希加密
-f 指定加密文件
/etc/vsftpd/userlist 加密文件
userlist.db 加密所的文件
ftp认证时使用pam认证
vim /etc/pam.d/ftpuser ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/userlist
auth required pam_userdb.so db=/etc/vsftpd/userlist
account/auth 用户/密码
required 请求访问时允许
pam_userdb.so 验证程序
db=/etc/vsftpd/vuserlist pam验证文件(会自动生成.db)
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ftpuser
guest_enable=YES
guest_username=ftp
5.FTP独立虚拟帐号
<虚拟帐号家目录独立指定>
步骤一:给三个用户建立不同的家目录
mkdir /var/ftpuserdir/{user1,user2,user3} -p
mkdir /var/ftpuserdir/{user1,user2,user3}/pub -p
touch /var/ftpuserdir/user1/user1file
touch /var/ftpuserdir/user2/user2file
touch /var/ftpuserdir/user3/user3file
步骤二:在ftp配置文件内写入虚拟账户信息
vim /etc/vsftpd/vsftpd.conf
local_root=/var/ftpuserdir/$USER
user_sub_token=$USER ##使用shell中的用户名称
步骤三:虚拟帐号独立设置
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/user_config
步骤四:让ftpuser2可以上传,ftpuser1和ftpuser3不可以上传
修改权限
chgrp ftp /var/ftpuserdir/ -R
chmod 775 /var/ftpuserdir/ftpuser{1..3}/pub
注释掉vim /etc/vsftpd/vsftpd.conf 中匿名用户的上传
mkdir -p /etc/vsftpd/user_config ##建立目录
cd /etc/vsftpd/user_config
vim ftpuser2
anon_upload_enable=YES ##在ftpuser2中写入可上传