Linux中FTP服务对不同用户的处理

1.ftp的定义

(1)FTP(文件传输协议)

是INTERNET上常用的网络协议之一,它为系统提供了通过网络与远程服务器进行传输的简单方法。在REDHAT ENTREPRISE
LINUXX 6中,FTP服务器包法名称为诶VSFTPD,它代表very secure file transferprotocol
damon
服务器名称也称作vsftpd。默认配置文件让ANONYMOUS用户只能下载位于chroot目录中的内容。/var/ftp/这以为着远程FTP客户端能以用户anonymous或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)

(2)ftp协议提供的软件:
在rhel7中是vsftpd
(3)vsftpd配置服务中部分命令的含义

命令 含义
anonymous_enable=YES/NO 匿名用户是否可以登陆
local_enable=YES/NO 本地用户是否可以登陆
write_enable=YES/NO ftp是否可以对登陆用户可写
anon_upload_enable=YES 匿名用户可以上传文件
anon_root=/westos 匿名用户家目录的修改
anon_umask=022 匿名用户上传文件时修改默认权限
anon_world_readable_only=NO 匿名用户的下载,NO表示可以下载,YES表示不可以下载,下载是一个写的过程
anon_other_write_enable=YES 匿名用户可以删除文件
anon_mkdir_write_enable=YES 匿名用户可以创建目录
chown_uploads=YES,chown_username=hello,chown_upload_mode=0644 匿名用户使用的用户身份的修改(新上传的文件的uid时新设置的用户uid,而权限也是新设置用户的文件权限644)
anon_max_rate=102400 最大上传速率为100k左右
max_clients=1 设置最大连接数
write_enable=YES 本地用户可以上传文件
local_umask=022 本地用户上传文件权限
local_root=/westos 设置本地用户的家目录
chroot_local_user=YES,chroot_list_enable=YES(设置名单可用),chroot_list_file=/etc/vsftpd/chroot_list(名单的文件为/etc/vsftpd/chroot_list) 限制本地用户浏览“/”目录
chroot_local_user=YES 用户白名单的建立
chroot_local_user=NO 用户黑名单的建立
userlist_enable=YES(表示启用名单)uaerlist_deny=NO(若是NO表示名单是白名单,若是YES表示名单是黑名单 建立临时黑白名单
guest_enable=YES,guest_username=ftp,pam_service_name=ftpuser(pam认证的文件名) 指定虚拟帐号的身份
local_root=/var/ftpuserdir/ $USER,user_sub_token= $USER 指定虚拟帐号访问自己的家目录
user_config_dir=/etc/vsftpd/user_config,userlist_enable=YES 让指定的虚拟用户上传文件

2.部署ftp服务

yum install vsftpd -y systemctl start vsftpd systemctl enable vsftpd
firewall-cmd --permanent --add-service=ftp firewall-cmd --reload
[root@ftp-server ftp]# lftp 172.25.254.100 lftp 172.25.254.100:~> ls
drwxr-xr-x 2 0 0 6 Mar 07 2014 pub ftp服务的基本信息 软件安装包:vsftpd
默认发布目录:/var/ftp 协议接口:21/tcp 服务配置文件:/etc/vsftpd/vsftpd.conf vsftpd是
服务端,lftp是客户端
报错id的解析: 500 ##文件系统权限过大 530 ##用户认证失败 550 ##服务本身功能未开放 553 ##本地文件系统权限过小

具体分析:
<1>将selinux的状态设置为disavbled并利用getenforce查看selinux是否生效,会发现没有立即生效,重启后再次查看,成功生效

[root@sshd_server ~]# vim /etc/sysconfig/selinux
[root@sshd_server ~]# getenforce
[root@sshd_server ~]# reboot
[kiosk@foundation66 Desktop]$ ssh [email protected] -X
[root@sshd_server ~]# getenforce

在这里插入图片描述
配置的界面为:
在这里插入图片描述
<2>进入防火墙配置界面并将ftp设置成防火墙无法阻拦
-1-查看防火墙状态使其防火墙开启

[root@sshd_server ~]# systemctl status firewalld

-2-进入防火墙配置界面

[root@sshd_server ~]# firewall-config	

在这里插入图片描述
首先点击Permanent,之后点击public中选择ftp,最后点击options中的reload firewalld更新防火墙的设置
在这里插入图片描述
-3-查看防火墙中ftp服务是否开启了

[root@sshd_server yum.repos.d]# firewall-cmd --list-all

在这里插入图片描述
<3>配置本地yum源

[root@sshd_server ~]# cd /etc/yum.repos.d
[root@sshd_server yum.repos.d]# ls
[root@sshd_server yum.repos.d]# vim rhel_dvd.repo
[root@sshd_server yum.repos.d]# yum clean all	##清除原来的yum缓存信息
[root@sshd_server yum.repos.d]# yum repolist	##列出新的yum源

在这里插入图片描述
在文件中更改的内容为:
在这里插入图片描述
<4>安装vsftpd和lftp软件并开启vsftpd服务

[root@sshd_server yum.repos.d]# yum install vsftpd lftp -y
[root@sshd_server yum.repos.d]# systemctl start vsftpd

在这里插入图片描述
<5>使用真机进行远程连接此虚拟机,发现可以成功读取到虚拟机内的文件

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls  
……            
lftp 172.25.254.123:/> quit

在这里插入图片描述
<6>进入虚拟机中切换到/var/ftp目录下,并在此目录下再次建立一个文件名称为westos的文件

[root@sshd_server yum.repos.d]# cd /var/ftp
[root@sshd_server ftp]# ls
[root@sshd_server ftp]# touch westos
[root@sshd_server ftp]# ls

在这里插入图片描述
<7>此时用真机进行查看再次远程连接虚拟机,发生成功读取到改变的虚拟机的文件

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls  
……            
lftp 172.25.254.123:/> quit

在这里插入图片描述

3.设置匿名用户和本地用户的登陆

注意:每个实验进行完后,都要将其恢复成初始化,否则有可能会影响实验结果
<1>使其匿名用户不能登陆
-1-编辑vsftpd服务的配置文件并使其生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
将配置中的文件中anonymous_enable=YES更改成anonymous_enable=NO
在这里插入图片描述
-2-真机用匿名用户登陆并查看,发现可以登陆但无法查看

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls              
……                       
lftp 172.25.254.123:~> quit

在这里插入图片描述
-3-真机中用本地用户登陆并查看,发现可以登陆并可以查看

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:~> quit

在这里插入图片描述
<2>使其本地用户不能登陆
-1-编辑vsftpd服务的配置文件并使其生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
将配置中的文件中local_enable=YES更改成local_enable=NO
在这里插入图片描述
-2-真机用本地用户登陆并查看,发现可以登陆但无法查看

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password: 
lftp [email protected]:~> ls      
……                                  
lftp [email protected]:~> quit

在这里插入图片描述

4.对匿名用户的相关设置

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

(1)匿名用户上传文件
-1-真机中用匿名用户登陆,在/pub目录下试图上传文件,但发现出现550报错

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> cd /pub
lftp 172.25.254.123:/pub> put /etc/group
lftp 172.25.254.123:/pub> quit

在这里插入图片描述
-2-编辑vsftpd服务的配置文件并使其生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
将配置文件中第29行的注释取消掉,使anon_upload_enable=YES生效
在这里插入图片描述
-3-再次在真机用匿名登陆并试图上传,550报错没有了,但又出现系统报错553,说明其权限不够

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> cd /pub
lftp 172.25.254.123:/pub> put /etc/group
lftp 172.25.254.123:/pub> quit

在这里插入图片描述
-4-更改其/var/ftp/pub目录下的用户组和权限

[root@sshd_server ~]# ll -d /var/ftp/pub
[root@sshd_server ~]# chgrp ftp /var/ftp/pub
[root@sshd_server ~]# chmod 775 /var/ftp/pub
[root@sshd_server ~]# ll -d /var/ftp/pub

在这里插入图片描述
-5-在真机用匿名用户登陆并试图上传,发现成功登陆并上传

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> cd /pub
lftp 172.25.254.123:/pub> put /etc/group
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> quit

在这里插入图片描述
(2)匿名用户家目录的修改
-1-编辑vsftpd服务的配置文件并使其生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中增加以下内容:anon_root=/westos
在这里插入图片描述
-2-建立目录并在目录中创建几个文件

[root@sshd_server ~]# mkdir /westos
[root@sshd_server ~]# touch /westos/westosfile{1..3}
[root@sshd_server ~]# ls /westos

在这里插入图片描述
-3-真机中用匿名用户登陆,发现匿名用户查看到的文件均为新建的文件

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> quit

在这里插入图片描述
-4-将vsftpd服务的配置文件修改并使其生效,将加目录变回/var/ftp/

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
将配置文件中anon_root=/westos删除或加注释
在这里插入图片描述
-5-真机中用匿名用户登陆,发现查看到的文件又回到原来目录的文件

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> quit

在这里插入图片描述
(3)匿名用户上传文件时修改默认权限
-1-在真机中用匿名用户登陆,查看/pub目录下的文件,发现创建的文件默认的权限都是600

[root@sshd_server ~]# lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> cd /pub
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> quit

在这里插入图片描述
-2-编辑vsftpd服务的配置文件并使其生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中增加内容anon_umask=022,使其匿名用户上传文件的权限修改成644
在这里插入图片描述
-3-再次在真机中用匿名用户登陆,上传一个新的文件发现新的文件的权限发生了改变

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> put /etc/passwd
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> quit

在这里插入图片描述
(4)匿名用户的下载
-1-在真机中用匿名用户登陆,出现550报错,默认情况下匿名用户不可以下载

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub                 
lftp 172.25.254.123:/pub> get adjtime
lftp 172.25.254.123:/pub> quit

在这里插入图片描述
-2-编辑vsftpd服务的配置文件并使其生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
增加配置文件中的内容为anon_world_readable_only=NO,NO表示可以下载,YES表示不可以下载,下载是一个写的过程
在这里插入图片描述
-3-再次在真机中用匿名用户登陆,发现可以成功下载

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> get passwd
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> quit

在这里插入图片描述
(5)匿名用户的删除
-1-在真机中用匿名用户试图删除文件,会出现550报错

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls /pub
lftp 172.25.254.123:/> rm -rf /pub/passwd	##不显示报错
lftp 172.25.254.123:/> rm /pub/passwd
lftp 172.25.254.123:/> quit

在这里插入图片描述
-2-编辑vsftpd服务的配置文件并使其生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中增加以下内容:anon_other_write_enable=YES使其匿名用户可以删除
在这里插入图片描述
-3-在真机中用匿名用户试图删除文件,发现设置过后可以成功删除文件

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls /pub
lftp 172.25.254.123:/> rm /pub/passwd
lftp 172.25.254.123:/> ls /pub
lftp 172.25.254.123:/> quit

在这里插入图片描述
-4-删除家目录下的文件,发现由于服务不支持无法删除

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> rm westos
lftp 172.25.254.123:/> quit

在这里插入图片描述
(6)匿名用户创建目录
-1-在真实主机中用匿名用户登陆,发现无法创建目录,出现550报错

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> mkdir test
lftp 172.25.254.123:/pub> quit

在这里插入图片描述
-2-编辑vsftpd服务的配置文件并使其生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中将anon_mkdir_write_enable=YES前的注释删除,使匿名用户可以创建目录
在这里插入图片描述
-3-在真实主机中用匿名用户登陆,发现更改配置文件后便可以成功创建目录

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> mkdir test
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> quit

在这里插入图片描述
(7)匿名用户使用的用户身份的修改
-1-编辑vsftpd服务的配置文件并使其生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中增加以下内容:

chown_uploads=YES
chown_username=hello
chown_upload_mode=0644

在这里插入图片描述
-2-新建一个用户并查看其id

[root@sshd_server ~]# useradd hello
[root@sshd_server ~]# id hello

在这里插入图片描述
-3-在真机用匿名用户登陆并上传,发现新上传的文件的uid时新设置的用户uid,而权限也是新设置用户的文件权限644

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> put /etc/passwd
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> quit

在这里插入图片描述
-4-再次编辑vsftpd服务的配置文件并使其生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中将以下内容删除或注释掉:

#chown_uploads=YES
#chown_username=hello
#chown_upload_mode=0644

在这里插入图片描述
-5-在真机中用匿名用户上传文件,发现上传的文件的uid为ftp的uid

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> put /etc/adjtime
lftp 172.25.254.123:/pub> ls

在这里插入图片描述
查看ftp的uid:

[root@sshd_server ~]# id ftp
uid=14(ftp) gid=50(ftp) groups=50(ftp)

在这里插入图片描述
(8)最大上传速率
-1-在真机划分一个文件

[kiosk@foundation66 Desktop]$ dd if=/dev/zero of=bigfile bs=1M count=1000
[kiosk@foundation66 Desktop]$ pwd

在这里插入图片描述
-2-在真机中用匿名匿名登陆并在/pub目录下上传刚刚在真机中划分的文件,可以看到上传速度约为61M/S

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> put /home/kiosk/Desktop/bigfile
……                        
lftp 172.25.254.123:/pub> quit

在这里插入图片描述
-3-上传完文件后删除该文件

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> rm /pub/bigfile              
lftp 172.25.254.123:/pub> quit

在这里插入图片描述
-4-再次编辑vsftpd服务的配置文件并使其生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中加以下内容:anon_max_rate=102400,使其最大上传速率为100k左右
在这里插入图片描述
-5-在真机中用匿名匿名登陆并在/pub目录下上传刚刚在真机中划分的文件,可以扩散到上传速度约为61M/S,因为成功上传需要很久,所以ctrl+c中断上传过程

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> put /home/kiosk/Desktop/bigfile
lftp 172.25.254.123:/pub> ls                              
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> rm bigfile
lftp 172.25.254.123:/pub> quit

在这里插入图片描述
在这里插入图片描述注意:因为上传占用资源,所以命令ls可能不能及时查看
(9)设置最大连接数
-1-编辑vsftpd服务的配置文件并使其生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中增加以下内容:max_clients=1,使其最多可以有一个主机可以远程连接
在这里插入图片描述
-2-在真机中用虚拟用户登陆,发现可以成功登陆并查看

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> quit

在这里插入图片描述
-3-重新开启一个虚拟机并用虚拟用户登陆,发现可以成功登陆但无法查看

[root@client_sshd ~]# lftp 172.25.254.122
lftp 172.25.254.122:~> ls                             
lftp 172.25.254.122:~> quit

在这里插入图片描述

5.对本地用户的相关设定

(1)本地用户上传文件
-1-真实主机中用本地用户student登陆,发现本地用户登陆可以成功上传文件,原因是因为在配置文件中允许本地用户上传文件

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:~> put /etc/passwd
lftp [email protected]:~> ls
lftp [email protected]:~> quit

在这里插入图片描述
-2-查看新上传的文件所在的位置并将其删除

[root@sshd_server ~]# cd /home/student
[root@sshd_server student]# ls
[root@sshd_server student]# rm -rf passwd
[root@sshd_server student]# ls

在这里插入图片描述
-3-编辑vsftpd服务的配置文件并生效,使其本地用户无法上传文件

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中将write_enable=YES更改成write_enable=NO,使其本地用户无法上传文件
在这里插入图片描述
-4-真实主机中用本地用户student登陆,发现本地用户登陆但无法上传文件,会出现550报错

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:~> put /etc/passwd
lftp [email protected]:~> quit

在这里插入图片描述
(2)设置本地用户上传文件权限
-1-真实主机中用本地用户登陆并上传文件查看其权限,可知新上传的文件的权限为644

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password: 
lftp [email protected]:~> put /etc/passwd
lftp [email protected]:~> ls
lftp [email protected]:~> quit

在这里插入图片描述
-2-编辑vsftpd服务的配置文件并生效,更改其本地用户的上传文件权限

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
将配置文件中local_umask=022更改成local_umask=077
在这里插入图片描述
-3-再次在真实主机中用本地用户登陆并上传文件查看其权限,可知新上传的文件的权限为600

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:~> put /etc/group
lftp [email protected]:~> ls
lftp [email protected]:~> quit

在这里插入图片描述
(3)设置本地用户的家目录
-1-编辑vsftpd服务的配置文件并生效,将其本地用户的家目录更改成/westos

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中添加的内容如下:local_root=/westos
在这里插入图片描述
-2-真实主机中登陆并查看家目录下的内容,发现是/westos目录下的内容

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:~> quit

在这里插入图片描述
-3-再次编辑vsftpd服务的配置文件并生效,将其本地用户的家目录更改成原来的

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
将配置文件中的local_root=/westos删除或注释掉
在这里插入图片描述
-4-再次在真实主机中登陆并查看家目录下的内容,发现是原来目录下的内容

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:~> quit

在这里插入图片描述
(4)限制本地用户浏览“/”目录
-1-在主机中登陆并试图浏览”/“目录,发现默认可以访问“/”目录

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:~> cd /
lftp [email protected]:/> ls
lftp [email protected]:/> quit

在这里插入图片描述
-2-编辑vsftpd服务的配置文件并生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中添加以下内容的注释符号删除:

chroot_local_user=YES		
chroot_list_enable=YES	##设置名单可用
chroot_list_file=/etc/vsftpd/chroot_list	##名单的文件为/etc/vsftpd/chroot_list

在这里插入图片描述
-3-编辑名单(名单本身是没有的,可以使用vim直接创建)
[root@sshd_server ~]# vim /etc/vsftpd/chroot_list
[root@sshd_server ~]# cat /etc/vsftpd/chroot_list
在这里插入图片描述
-4-查看用户是否存在

[root@sshd_server ~]# id westos
[root@sshd_server ~]# id student

在这里插入图片描述
-5-用户白名单的建立,当chroot_list_enable=YES时,说明名单里的用户可以访问
用户student在白名单内,发现可以查看“/”目录:

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:~> cd /
lftp [email protected]:/> ls
lftp [email protected]:/> quit

在这里插入图片描述
用户westos不在白名单内,发现无法查看“/”目录:

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos
Password: 
lftp [email protected]:~> ls       
lftp [email protected]:~> cd 
lftp [email protected]:~> ls
lftp [email protected]:~> quit

在这里插入图片描述
-6-将用户westos加入到白名单中

[root@sshd_server ~]# vim /etc/vsftpd/chroot_list
[root@sshd_server ~]# cat /etc/vsftpd/chroot_list

-7-用户westos在白名单内,发现可以成功查看“/”目录

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos
Password: 
lftp [email protected]:~> ls       
lftp [email protected]:~> cd /
lftp [email protected]:/> ls
lftp [email protected]:/> quit

-8-用户黑名单的建立,首先编辑vsftpd服务的配置文件并生效

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中将chroot_local_user=YES更改成chroot_local_user=NO,更改后说明名单里的用户都不可以访问
在这里插入图片描述
-9-查看是否有用户bai

[root@sshd_server ~]# id bai

在这里插入图片描述
-10-查看黑名单

[root@sshd_server ~]# cat /etc/vsftpd/chroot_list

在这里插入图片描述
-11-对不在黑名单的用户和在黑名单的用户查看“/”目录
用户bai不在黑名单内,发现可以查看“/”目录:

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u bai
Password: 
lftp [email protected]:~> ls
lftp [email protected]:~> cd /
lftp [email protected]:/> ls
lftp [email protected]:/> quit

在这里插入图片描述
用户student在黑名单内,发现无法查看“/”目录:

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:~> cd /
lftp [email protected]:~> ls
lftp [email protected]:~> quit

在这里插入图片描述
用户westos在黑名单内,发现无法查看“/”目录:

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos
Password: 
lftp [email protected]:~> ls       
lftp [email protected]:~> cd /
lftp [email protected]:~> ls

在这里插入图片描述
(5)限制本地用户登陆
-1-进入/etc/vsftpd目录,并编辑永久黑名单(ftpusers),并将student用户写入

[root@sshd_server ~]# cd /etc/vsftpd
[root@sshd_server vsftpd]# ls
[root@sshd_server vsftpd]# vim ftpusers

在这里插入图片描述
黑名单如下:
在这里插入图片描述
-2-在真机中用student用户进行登陆,发现可以登陆但无法查看,出现530报错

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password: 
lftp [email protected]:~> ls                          
lftp [email protected]:~> quit

在这里插入图片描述
-3-在真机中用westos用户进行登陆,发现可以登陆而且可以查看

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos
Password: 
lftp [email protected]:~> ls                          
lftp [email protected]:~> quit

在这里插入图片描述
(6)建立临时黑白名单
<1>建立临时白名单
-1-编辑vsftpd服务的配置文件并生效,设定临时白名单

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
配置文件中添加以下内容:
userlist_enable=YES ##表示启用名单
uaerlist_deny=NO ##若是NO表示名单是白名单,若是YES表示名单是黑名单在这里插入图片描述
-2-查看用户是否存在

[root@sshd_server ~]# id student
[root@sshd_server ~]# id bai
[root@sshd_server ~]# id westos

在这里插入图片描述
-3-进入白名单并将用户westos加入白名单

[root@sshd_server ~]# cd /etc/vsftpd
[root@sshd_server vsftpd]# ls
[root@sshd_server vsftpd]# vim user_list

在这里插入图片描述
白名单如下:
在这里插入图片描述
-4-在主机中查看用户是否可以成功查看,若白名单开启,只有在白名单中才可以登陆并查看
用户westos在白名单中,故可以成功登陆并成功查看

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos
Password: 
lftp [email protected]:~> ls       
lftp [email protected]:~> quit

在这里插入图片描述
用户bai不在白名单中,故可以成功登陆但并不可以查看,出现530报错

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u bai
Password: 
lftp [email protected]:~> ls       
lftp [email protected]:~> quit

在这里插入图片描述
注意:在永久黑名单中设置的用户即使写入白名单中,也会出现530报错
<2>建立临时黑名单
-1-编辑vsftpd服务的配置文件并生效,设定临时白名单

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
配置文件中添加以下内容:
userlist_enable=YES ##表示启用名单
uaerlist_deny=YES ##若是NO表示名单是白名单,若是YES表示名单是黑名单
在这里插入图片描述
-2–在主机中查看用户是否可以成功查看,在名单中的用户无法查看,在名单外(临时和永久黑名单外)的用户可以查看
在黑名单内的用户无法查看

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos
Password: 
lftp [email protected]:~> ls          
lftp [email protected]:~> quit

在这里插入图片描述
在黑名单外的用户可以查看

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u bai
Password: 
lftp [email protected]:~> ls          
lftp [email protected]:~> quit

在这里插入图片描述

6.对虚拟用户的相关设置

(1)建立虚拟用户
-1-查看vsftpd服务是否开启以及防火墙是否允许开启ftp

[root@sshd_server ~]# systemctl status vsftpd
[root@sshd_server ~]# firewall-cmd --list-all

在这里插入图片描述
-2-创建虚拟帐号以及密码,其中虚拟帐号为westos1,westos2,westos3

[root@sshd_server ~]# vim /etc/vsftpd/userfile
[root@sshd_server ~]# cat /etc/vsftpd/userfile

在这里插入图片描述
注意:帐号和密码间必须换行,且帐号和密码前不能有空格
-3-给文件进行加密并查看文件是否成功加密,成功加密后查看其文件的内容会发现已经乱码
[root@sshd_server ~]# db_load -T -t hash -f /etc/vsftpd/userfile /etc/vsftpd/userfile.db ##加密前的文件,加密后的文件的类型

[root@sshd_server ~]# cd /etc/vsftpd
[root@sshd_server vsftpd]# ls
[root@sshd_server vsftpd]# cat userfile.db	##查看加密后文件的内容
��4G4���<��'эh^111westos2[root@sshd_server vsftpd]# 

在这里插入图片描述
注意:-T表示转换类型,-t hash 表示哈希加密,-f表示文件转换类型
-4-创建pam认证文件

[root@sshd_server ~]# vim /etc/pam.d/ftpuser
[root@sshd_server ~]# cat /etc/pam.d/ftpuser

在这里插入图片描述
注意:
1.文件中不要写.db后缀,因为保存后会自动生成
2.文件默认不对文件加密,pam是一种认证软件,认证的策略是vsftpd。account通过required才可以进行下一步。
3.插件检测帐号存在的软件,
4.auth通过required改变后原来系统中的用户便无法登陆
-5-编辑vsftpd服务的配置文件并生效,开启虚拟帐号

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中增加以下内容:
指定虚拟帐号的身份:

guest_enable=YES
guest_username=ftp
pam_service_name=ftpuser(pam认证的文件名)

在这里插入图片描述
-6-在真机中登陆三个虚拟用户,发现都可以成功登陆(虚拟用户的家目录是本地用户的家目录)

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos1
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:/> quit
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos2
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:/> quit
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos3
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:/> quit

在这里插入图片描述
(2)指定虚拟帐号访问自己的家目录
-1-建立递归目录,以及虚拟用户的家目录

[root@sshd_server ~]# mkdir /var/ftpuserdir/westos{1..3} -p
[root@sshd_server ~]# mkdir /var/ftpuserdir/westos{1..3}/pub
[root@sshd_server ~]# mkdir /var/ftpuserdir/westos1/westosfile1
[root@sshd_server ~]# mkdir /var/ftpuserdir/westos2/westosfile2
[root@sshd_server ~]# mkdir /var/ftpuserdir/westos3/westosfile3

在这里插入图片描述
-2-编辑vsftpd服务的配置文件并生效,使其在配置文件中指定任意用户登陆后访问的自己的家目录

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中增加的内容如下(尽量关闭其他的匿名用户的相关配置):

local_root=/var/ftpuserdir/$USER
user_sub_token=$USER

在这里插入图片描述
-3-在真机中试图查看三个虚拟帐号,会发现访问的都是自己的家目录

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos1
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:/> quit
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos2
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:/> quit
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos3
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:/> quit

在这里插入图片描述
(3)独立用户的配置目录
让指定的虚拟用户上传文件
-1-编辑vsftpd服务的配置文件并生效,设定用户独立配置目录的路径并启用名单

[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd

在这里插入图片描述
在配置文件中写入以下内容(尽量关闭其他的匿名用户的相关配置):
user_config_dir=/etc/vsftpd/user_config
userlist_enable=YES
在这里插入图片描述
-2-建立目录

[root@sshd_server ~]# cd /etc/vsftpd
[root@sshd_server vsftpd]# mkdir user_config
[root@sshd_server vsftpd]# ls![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212034612538.png)
[root@sshd_server vsftpd]# cd user_config
[root@sshd_server user_config]# ls

-3-在目录中写入westos1的配置文件,使得虚拟帐号westos1可以上传并使其生效

[root@sshd_server user_config]# vim westos1
[root@sshd_server user_config]# cat westos1
[root@sshd_server user_config]# systemctl restart vsftpd

在这里插入图片描述
-4-修改虚拟帐号中/pub的权限(不然不具备权限上传)

[root@sshd_server user_config]# chmod 775 /var/ftpuserdir/westos*/pub
[root@sshd_server user_config]# chgrp ftp /var/ftpuserdir/westos*/pub
[root@sshd_server user_config]# ls -l /var/ftpuserdir/westos*

在这里插入图片描述
-5-真机登陆westos1并上传,发现可以上传,而其他帐号无法上传
westos1用户可以上传:

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos1
Password: 
lftp [email protected]:~> ls      
lftp [email protected]:/> cd /pub
lftp [email protected]:/pub> put /etc/group
lftp [email protected]:/pub> ls
lftp [email protected]:/pub> quit

在这里插入图片描述
westos2用户无法上传:

[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos2
Password: 
lftp [email protected]:~> cd /pub 
lftp [email protected]:/pub> put /etc/group
lftp [email protected]:/pub> quit

在这里插入图片描述
(海上月是天上月,眼前人是心上人)

猜你喜欢

转载自blog.csdn.net/qq_39376481/article/details/87048591