linux下的ftp服务(包括匿名用户,本地用户与虚拟用户的访问)

ftp介绍

ftp:file transfer proto是互联网中最老牌的文件传输协议

vsftpd安装

1.yum install vsftpd -y
2.关闭selinux和firewalld

selinux:
[root@rhel7_node1 ~]# getenforce 
Enforcing                    ##由getenforce可以查看出:selinux是开启状态

关闭selinux:
vim /etc/sysconfig/selinux
 SELINUX=disabled           ##设置为disabled
reboot						##然后重启一下

firewalld:
关闭firewalld
systemctl stop firewalld 
systemctl disable firewalld

3.如果想在xixi_node里面使用lftp命令,则要先进行安装,相当于火狐浏览器一样,是用于浏览的软件【不是安装vsftpd,因为vsftpd是服务】

  • systemctl start vsftpdsystemctl enable vsftpd
  • 安装lftp:yum install lftp -y
  • ls后如果可以列出信息,代表可以被访问,如果列不出信息,则代表不能被访问
    在这里插入图片描述
  • ssh [email protected]在这里插入图片描述

vsftpd基本信息

  • 服务名称:vsftpd.service
  • 配置目录: /etc/vsftpd
  • 主配置文件: /etc/vsftpd/vsftpd.conf
  • 默认发布目录: /var/ftp
命令 查看内容
rpm -ql vsftpd 服务名称:vsftpd.service
默认发布目录: /var/ftp
rpm -qc vsftpd 配置目录: /etc/vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
  • 报错信息:
报错内容 报错信息
500 权限过大
530 认证失败
550 程序本身拒绝
553 文件系统权限限制

匿名用户访问控制

1.匿名用户访问

命令 表示
lftp 172.25.254.24 当访问ftp服务时没有加入用户认证为匿名访问
lftp 172.25.254.24 -u westos 本地用户访问

本地访问时可以先看该用户是否存在
在这里插入图片描述

  • 使用匿名访问与本地用户访问方式
    在这里插入图片描述

2.vim /etc/vsftpd/vsftpd.conf查看主配置文件
注意:更改完配置文件后,一定要对vsftpd服务进行重启

  • 控制匿名用户登陆
anonymous_enable=YES|NO

在这里插入图片描述

  • 家目录控制
anon_root=/software

之前看到的内容是在/var/ftp,更改后所看到的就是/software目录下的内容
在这里插入图片描述

  • 上传控制
anon_upload_enable=YES|NO   

想要上传xixi_clone的密码到xixi里面,但是此处报了两次错。550(程序本身拒绝)553(文件系统权限限制)

1.如果没有开启匿名用户上传功能,即此处是NO,则会报错550

2.此时打开上传功能即可,再次上传则提示553
在这里插入图片描述
我们先给他个满权限试试

3 .我们先给他个满权限试试

chmod 777 /var/ftp/pub

之后会发现给满权限后会有一个报错:500(权限过大)
在这里插入图片描述
默认的发布用户是不可写的,即如果权限超过755后,别人再用ftp访问的时候,服务直接就会进行限制
在这里插入图片描述
此时xixi_clone里面的内容就成功上传到xixi里了
在这里插入图片描述

  • 下载控制
anon_world_readable_only=NO ##匿名用户可以下载不能读的文件

密码上传后如果想要进行下载,此时会先报550
在这里插入图片描述
我们可以先使用man 5 vsftpd.conf先进行查看,下图表示了:“如果是开启的,匿名用户只能下载他可读的文件,即匿名用户不能下载其不可读的文件”,注意它本身是YES,所以想要下载的时候要添加到配置文件中的应为NO
在这里插入图片描述
在那里进行登陆的,下载的文件就在哪里
在这里插入图片描述

  • 目录建立控制
anon_mkdir_write_enable=YES|NO  //表示匿名用户是否能建立目录

可用?来查看我们可以进行的操作,我们会发现,不能进行touch来创建文件,但是存在mkdir可以建立目录
在这里插入图片描述
接下来我们将尝试一下
1 .mkdir westos后,此时会出现550报错在这里插入图片描述
2.设置匿名用户可以建立目录
在这里插入图片描述

  • 删除重命令控制
anon_other_write_enable=YES|NO

man 5 vsftpd.conf查询,表示了:设置成YES以后,匿名用户在做操作的过程中,除了可以上传和建立目录以外还可以进行其他事情:比如删除,重命名
在这里插入图片描述
实现删除与重命名
在这里插入图片描述

  • 登陆数量控制:
    每lftp登陆一个,就会建立一个链接。建立的链接越多,服务器的负载也就越大。
    1.控制最大登陆数量
max_clients=2 上传速率控制

设定好了之后,一次性最多可以登陆两个,之后登陆的进行排队等待
在这里插入图片描述

2.控制上传速率

anon_max_rate=102400  //100K

截取1G大小的数据到/mnt中
在这里插入图片描述
每秒28M左右
在这里插入图片描述
我们尝试下对上传速度进行限制,我们发现匿名用户受到的限制
在这里插入图片描述
本地用户并没有受到限制
在这里插入图片描述

本地用户的访问

vim /etc/vsftpd/vsftpd.conf查看主配置文件

local_enable=NO|YES    //表示本地用户能否登陆
  • 登陆控制
useradd lee
echo lee | passwd --stdin lee
lftp 192.168.0.10 -u lee

如果密码输入的是错误的,则会出现530报错
在这里插入图片描述

  • 家目录控制
local_root=/software   //指定在了/software中

默认是在家目录下,如果指定家目录的话,则会在指定目录下
在这里插入图片描述

  • 写权限控制
write_enable=NO|YES

本地用户默认权限是可以写,当修改为NO后,本地用户不可写
在这里插入图片描述

  • 上传文件权限控制
local_umask=077

在这里插入图片描述

  • 用户登陆控制
cd /etc/vsftpd
/etc/vsftpd/ftpusers ##永久黑名单
/etc/vsftpd/user_list ##默认黑名单,即默认的是黑名单,但是我们可以把他修改为白名单

在这里插入图片描述
将lee添加进ftpusers,即改即生效。
在这里插入图片描述
添加进黑名单后,就不能登录了
在这里插入图片描述

  • 用户登陆白名单
userlist_deny=NO  //如果不想设置白名单了,就把这条命令注释掉即可。

设定/etc/vsftpd/user_list位白名单,不在名单中的用户不能登陆ftp。因为名单中没有lee,所以本地用户lee登陆失败。
在这里插入图片描述
我们在名单中加入westos,在进行查看,因为westos在白名单中,所以可以登录。
在这里插入图片描述
注意:如果出现westos在永久黑名单的这种情况,那么哪怕把他加入到用户白名单中,也没有办法继续登陆

  • 锁定用户到自己的家目录中
chmod u-w /home/*
chroot_local_user=YES

在这里插入图片描述

  • 锁定用户到自己的家目录中的白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

在这里插入图片描述
将lee用户设置进白名单,此时我们可以发现lee用户可以浏览其他的地方
在这里插入图片描述

  • 锁定用户到自己的家目录中的黑名单
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

在这里插入图片描述

虚拟用户访问

  • 虚拟用户
    在我们当前系统中没有这个用户身份,只有在ftp程序中才承认这个用户身份的存在

  • 虚拟用户的价值
    如果我们在系统中建立一个普通用户来作为ftp的登陆用户的话,我们开放的权力就太大了,并且资源浪费的也就太多了。如果有些功能我们不想开放给其他用户,只想给他个登陆身份。所以我们现在可以专门为ftp服务构建一系列的认证体系,不让其使用系统认证体系,这就是虚拟用户的价值

cd /etc/pam.d后vim vsftpd
auth和account用的都是系统中 的password认证方式,ls后可发现password-auth

1.建立虚拟用户

  • 建立认证文件模板
vim /etc/vsftpd/ftp_auth_file 
westos1                       #此处小心差错,看看是否有空格。因为空格也是一个字符!!
123
westos2
123
westos3
123

在这里插入图片描述
此时我们需要注意,是否在写的时候不小心多输入了一个空格!这个如果没有注意i,在后期差错真的很难办

  • 加密认证文件
// -T 转换 -t type -f 指定转换文件
db_load -T -t hash -f ftp_auth_file ftp_auth_file.db 

在这里插入图片描述

如果需要再新加用户,还是需要重新加密认证文件

  • vim /etc/pam.d/westos,名字可以随意,但是要在pam.d这个目录下,否则程序不识别
account required pam_userdb.so db=/etc/vsftpd/
ftp_auth_file
auth required pam_userdb.so db=/etc/vsftpd/
ftp_auth_file   //写的时候不用加.db后缀,默认自动加

在这里插入图片描述

  • 修改vsftpd配置文件
vim /etc/vsftpd/vsftpd.conf 
pam_service_name=westos     ##指定认证策略文件
guest_enable=YES            ##指定虚拟用户功能开启
guest_username=ftp 			##指定虚拟用户在ftp服务器上的用户身份

在这里插入图片描述

  • systemctl restart vsftpd
  • 之后可以在客户端进行测试,登陆到的时我们匿名用户所使用的身份的位置去
    在这里插入图片描述
  • 都成功后可以发现,在我们的系统中westos1,westos2,westos3都不存在
    在这里插入图片描述

2.虚拟用户家目录的独立设定

  • 建立标识文件
mkdir -p /ftpuserdir/westos{1..3}
touch /ftpuserdir/westos1/westos1file
touch /ftpuserdir/westos2/westos2file
touch /ftpuserdir/westos3/westos3file

在这里插入图片描述

  • 指定登录到对应用户的目录下
vim /etc/vsftpd/vsftpd.conf 
local_root=/ftpuserdir/$USER
user_sub_token=$USER  //使其可以沿用系统里面的用法
systemctl restart vsftpd 

在这里插入图片描述
$USER这串字符可以表示当前用户
在这里插入图片描述

3.用户配置独立

  • 创建一个pub目录,用户可以在里面写东西
mkdir  /ftpuserdir/westos{1..3}/pub
chmod 755 /ftpuserdir/westos{1..3}/pub
chgrp /ftpuserdir/westos{1..3}/pub

在这里插入图片描述

  • 上传文件,此时会报错550(配置不允许)
    在这里插入图片描述
    此时打开这个anon_upload_enable=YES
    在这里插入图片描述

  • 打开后就能成功上传了,此时westos1/2/3均可以正常上传
    在这里插入图片描述
    如果此时要对上传的用户身份进行限定

  • man 5 vsftpd.conf进行查看
    在这里插入图片描述
    如果我们设定的值时我们/etc/vsftpd/user_conf这个目录,如果登陆的用户时chris,那么chris的配置目录就是和这个/etc/vsftpd/user_conf/chris相同的文件

  • 在主配置文件

user_config_dir=/etc/vsftpd/user_config #在此目录中与用户名称相同的文件为用户配置文件

anon_upload_enable=NO  #并且将权限设置为默认全关

在这里插入图片描述

  • 此时不能进行上传
    在这里插入图片描述
  • 此时我们设置westos2可以,其他不可以
mkdir /etc/vsftpd/user_config
vim /etc/vsftpd/user_config/westos3
anon_upload_enable=YES
systemctl restart vsftpd

在这里插入图片描述

  • 设定完成后westos3用户可以上传文件,westos1和westos2不行
    在这里插入图片描述

如果想还原默认的配置文件,删除后重装vsftpd即可

[root@haha ~]# rm -fr /etc/vsftpd           //删除
[root@haha ~]# dnf reinstall vsftpd -y      //重装
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
^[Last metadata expiration check: 1:15:04 ago on Sat 29 Feb 2020 02:16:12 PM CST.
Dependencies resolved.
================================================================================
 Package       Arch          Version               Repository              Size
================================================================================
Reinstalling:
 vsftpd        x86_64        3.0.3-28.el8          westosAppStream        180 k

Transaction Summary
================================================================================

Total size: 180 k
Installed size: 356 k
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Running scriptlet: vsftpd-3.0.3-28.el8.x86_64                             1/1 
  Reinstalling     : vsftpd-3.0.3-28.el8.x86_64                             1/2 
  Running scriptlet: vsftpd-3.0.3-28.el8.x86_64                             1/2 
  Running scriptlet: vsftpd-3.0.3-28.el8.x86_64                             2/2 
  Cleanup          : vsftpd-3.0.3-28.el8.x86_64                             2/2 
  Running scriptlet: vsftpd-3.0.3-28.el8.x86_64                             2/2 
  Verifying        : vsftpd-3.0.3-28.el8.x86_64                             1/2 
  Verifying        : vsftpd-3.0.3-28.el8.x86_64                             2/2 
Installed products updated.

Reinstalled:
  vsftpd-3.0.3-28.el8.x86_64                                                    

Complete!
[root@haha ~]# 
发布了36 篇原创文章 · 获赞 3 · 访问量 1238

猜你喜欢

转载自blog.csdn.net/ly_qiu/article/details/104395096