Linux文件传输协议---ftp服务详解

1.ftp的定义

ftp:// ##文件传输协议

2.ftp协议提供的软件

在rhel中
vsftpd

3.部署ftp服务

yum install vsftpd(服务)   lftp(软件) -y	

在这里插入图片描述

systemctl start vsftpd 
systemctl enable vsftpd 

Linux文件传输协议---ftp服务详解_第1张图片

firewall-config 		##图形设置火墙不阻止ftp

Linux文件传输协议---ftp服务详解_第2张图片
完成后reload。
或者使用命令

firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
firewall-cmd --list-all		##查看火墙允许那些软件通过

Linux文件传输协议---ftp服务详解_第3张图片
[root@localhost ~]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
drwxr-xr-x 2 0 0 6 Jun 23 2016 pub

ftp服务的基本信息
软件安装包: vsftpd
默认发布目录: /var/ftp
协议接口: 21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf
报错id解析:

报错 解析
500 ##文件系统权限过大
530 ##用户认证失败
550 ##服务本身功能未开放
553 ##本地文件系统权限过小

4.配置ftp服务

实验前须关闭内核级的加强型防火墙

vim /etc/sysconfig/selinux

改为disabled
reboot
使用getenforce查询
Linux文件传输协议---ftp服务详解_第4张图片
在这里插入图片描述

1.匿名用户设定

vim /etc/vsftpd/vsftpd.conf			##vsftp设定文件
anonymous_enable=YES|NO				##匿名用户是否可以登陆
local_enable=YES|NO					##本地用户是否可以登陆
write_enable=YES|NO					##ftp是否对登陆用户可写

Linux文件传输协议---ftp服务详解_第5张图片
在这里插入图片描述在这里插入图片描述

匿名用户上传

vim /etc/vsftpd/vsftpd.conf
write_enable=YES

在这里插入图片描述

anon_upload_enable=YES

在这里插入图片描述

chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub

测试
修改之前:
Linux文件传输协议---ftp服务详解_第6张图片
修改之后:
Linux文件传输协议---ftp服务详解_第7张图片

匿名用户家目录修改

vim /etc/vsftpd/vsftpd.conf
anon_root=/westos				##修改匿名用户家目录为/westos

在这里插入图片描述
创建目录/westos,并建立文件
在这里插入图片描述
匿名用户登陆,会进入设定的家目录,看到之间建立的文件
Linux文件传输协议---ftp服务详解_第8张图片

匿名用户上传文件默认权限修改

anon_umask=022

在这里插入图片描述
测试:
在这里插入图片描述在这里插入图片描述

匿名用户建立目录

anon_mkdir_write_enable=YES|NO		##YES表示可以建立

在这里插入图片描述
在这里插入图片描述

匿名用户下载

anon_world_readable_only=YES|NO			 ##设定参数值为NO表示匿名用户可以下载

在这里插入图片描述
在这里插入图片描述

匿名用户删除

anon_other_write_enable=YES|NO

在这里插入图片描述
Linux文件传输协议---ftp服务详解_第9张图片

匿名用户使用的用户身份修改

chown_uploads=YES
chown_username=student		##设定匿名以student用户身份
chown_upload_mode=0644		##设定上传文件的权限为644

Linux文件传输协议---ftp服务详解_第10张图片
修改后匿名用户上传文件权限为644,uid为student的1000
Linux文件传输协议---ftp服务详解_第11张图片

最大上传速率

anon_max_rate=102400

在这里插入图片描述
Linux文件传输协议---ftp服务详解_第12张图片

最大连接数

max_clients=1			##设定最大连接个数为1个

第一个用户student连接成功
在这里插入图片描述
第二个用户root无法连接
在这里插入图片描述

2.本地用户设定

local_enable=YES|NO		##用户本地登陆限制,YES允许,NO拒绝
write_enable=YES|NO		##本地用户写权限限制,YES允许,NO拒绝

本地用户家目录修改

local_root=/directory		##写那进入后就在那

Linux文件传输协议---ftp服务详解_第13张图片
在这里插入图片描述

本地用户上传文件权限

local_umask=xxx

在这里插入图片描述
Linux文件传输协议---ftp服务详解_第14张图片

限制本地用户浏览目录

所有用户被锁定到自己家目录中

chroot_local_user=YES
chmod u-w /home/*

锁定前
Linux文件传输协议---ftp服务详解_第15张图片
锁定后

在这里插入图片描述
在这里插入图片描述

用户黑名单建立

chroot_local_user=NO		##黑名单
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

Linux文件传输协议---ftp服务详解_第16张图片
在这里插入图片描述
将student加入黑名单
在这里插入图片描述
student用户只能在自己家目录
Linux文件传输协议---ftp服务详解_第17张图片
westos用户
Linux文件传输协议---ftp服务详解_第18张图片

用户白名单建立

chroot_local_user=YES		##白名单
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

Linux文件传输协议---ftp服务详解_第19张图片
此时student在白名单中,可以进入根目录
Linux文件传输协议---ftp服务详解_第20张图片

限制本地用户登陆

vim /etc/vsftpd/ftpusers                ##用户黑名单

Linux文件传输协议---ftp服务详解_第21张图片
在这里插入图片描述

vim /etc/vsftpd/user_list               ##用户临时黑名单

Linux文件传输协议---ftp服务详解_第22张图片

在这里插入图片描述用户白名单设定

userlist_deny=NO
/etc/vsftpd/user_list   		##参数设定,此文件变为用户白名单,只在名单中出现的用户可以登陆ftp

在这里插入图片描述
Linux文件传输协议---ftp服务详解_第23张图片

ftp虚拟用户的设定

创建虚拟帐号身份

vim /etc/vsftpd/userfile		##保存密码的文件,文件名称任意
westos1
123
westos2
123
westos3
123
db_load -T -t hash -f /etc/vsftpd/userfile /etc/vsftpd/userfile.db				##对保存密码的文件进行hash加密:/etc/vsftpd/userfile文件
vim /etc/pam.d/ftpauth			##对用户身份进行检查的文件,文件名称任意
account         required        pam_userdb.so           db=/etc/vsftpd/userfile
账户				必须满足			##使用此插件				查看此文件(已加密文件,但不用加后缀.db)
auth            required        pam_userdb.so           db=/etc/vsftpd/userfile
认证

在这里插入图片描述
在这里插入图片描述

vim /etc/vsftpd/vsftpd.conf
pam_service_name=ftpauth		##使用哪个文件来检查/etc/pam.d/ftpauth
userlist_enable=YES				##开启列表
tcp_wrappers=YES			
guest_enable=YES				##开启虚拟用户登入
虚拟帐号身份指定
guest_username=ftp			##指定用户目录

Linux文件传输协议---ftp服务详解_第24张图片
chmod u-w /home/ftp

虚拟帐号家目录独立设定

vim /etc/vsftpd/vsftpd.conf
local_root=/var/ftpuserdir/$USER	##设定家目录为用户名
user_sub_token=$USER			##使$USER在此文件中可用

在这里插入图片描述

systemctl restart vsftpd		##修改后重启服务

mkdir /var/ftpuserdir/westos{1..3} -p	##创建家目录
[root@localhost ~]# cd /var/ftpuserdir/
[root@localhost ftpuserdir]# ls
westos1  westos2  westos3
[root@localhost ftpuserdir]# mkdir westos1/westos1file
[root@localhost ftpuserdir]# mkdir westos2/westos2file
[root@localhost ftpuserdir]# mkdir westos3/westos3file

Linux文件传输协议---ftp服务详解_第25张图片
测试:

[root@localhost ftpuserdir]# lftp 172.25.254.133  -u westos1Password: 
lftp [email protected]:~> ls      
drwxrwxr-x    2 0        50              6 Feb 13 16:40 pub
drwxr-xr-x    2 0        0               6 Feb 13 16:30 westos1file
lftp [email protected]:/> quit
[root@localhost ftpuserdir]# lftp 172.25.254.133  -u westos2
Password: 
lftp [email protected]:~> ls      
drwxrwxr-x    2 0        50              6 Feb 13 16:40 pub
drwxr-xr-x    2 0        0               6 Feb 13 16:30 westos2file
lftp [email protected]:/> quit
[root@localhost ftpuserdir]# lftp 172.25.254.133  -u westos3
Password: 
lftp [email protected]:~> ls      
drwxrwxr-x    2 0        50              6 Feb 13 16:40 pub
drwxr-xr-x    2 0        0               6 Feb 13 16:30 westos3file

虚拟帐号配置独立

chmod 775 /var/ftpuserdir/westos*/pub
chgrp ftp /var/ftpuserdir/westos*/pub

Linux文件传输协议---ftp服务详解_第26张图片

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/user_config		##用来指定虚拟用户权限配置文件目录

在这里插入图片描述
关闭此选项
在这里插入图片描述

systemctl restart vsftpd
mkdir -p /etc/vsftpd/user_config		##递归建立目录

vim /etc/vsftpd/user_config/westos1		##必须与需要指定权限的虚拟帐号名相同
anon_upload_enable=YES					##可以上传的权限

在这里插入图片描述
在此文件中设定配置文件中的所有参数,此文件的优先级高
测试:
Linux文件传输协议---ftp服务详解_第27张图片
Linux文件传输协议---ftp服务详解_第28张图片
只有westos1可以上传,westos2的上传被拒绝。

你可能感兴趣的:(Linux基础)