Linux基础学习

By admin in 茶社 on 2019年11月2日

使用vsftpd服务传输文件

1 安装vsftpd

[root@qdlinux ~]# yum install vsftpd
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:3.0.2-22.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================
 Package                    Arch                       Version                           Repository               Size
=======================================================================================================================
Installing:
 vsftpd                     x86_64                     3.0.2-22.el7                      dvd                     169 k

Transaction Summary
=======================================================================================================================
Install  1 Package

Total download size: 169 k
Installed size: 348 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : vsftpd-3.0.2-22.el7.x86_64                                                                          1/1 
  Verifying  : vsftpd-3.0.2-22.el7.x86_64                                                                          1/1 

Installed:
  vsftpd.x86_64 0:3.0.2-22.el7                                                                                         

Complete!
[root@qdlinux ~]# 

2 安装ftp lftp客户端软件

[root@qdlinux ~]# yum install ftp lftp -y
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package ftp.x86_64 0:0.17-67.el7 will be installed
---> Package lftp.x86_64 0:4.4.8-8.el7_3.2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================
 Package                  Arch                       Version                             Repository               Size
=======================================================================================================================
Installing:
 ftp                      x86_64                     0.17-67.el7                         dvd                      61 k
 lftp                     x86_64                     4.4.8-8.el7_3.2                     dvd                     752 k

Transaction Summary
=======================================================================================================================
Install  2 Packages

Total download size: 812 k
Installed size: 2.5 M
Downloading packages:
-----------------------------------------------------------------------------------------------------------------------
Total                                                                                  8.7 MB/s | 812 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : lftp-4.4.8-8.el7_3.2.x86_64                                                                         1/2 
  Installing : ftp-0.17-67.el7.x86_64                                                                              2/2 
  Verifying  : ftp-0.17-67.el7.x86_64                                                                              1/2 
  Verifying  : lftp-4.4.8-8.el7_3.2.x86_64                                                                         2/2 

Installed:
  ftp.x86_64 0:0.17-67.el7                                lftp.x86_64 0:4.4.8-8.el7_3.2                               

Complete!

3 启动服务并加入开机自启动

[root@qdlinux ~]# systemctl start vsftpd
[root@qdlinux ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

4 查看监听端口状态

[root@qdlinux ~]# ss -lntup | grep vsftpd
tcp    LISTEN     0      32       :::21                   :::*                   users:(("vsftpd",pid=1411,fd=3))

CentOS6.5下部署vsftpd实战

1.实验需求:

1)使用RPM包安装vsftpd服务

2)实现匿名用户访问,验证仅可以访问和下载,不可以上传

3)实现匿名用户可上传、下载、修改等完全权限(现实环境中这样的需求可能性很小)

4)实现把登陆的用户禁锢在自己的家目录中

5)实现限制某些用户的访问

6)实现虚拟用户的访问

7)实现针对不同的虚拟用户拥有不同的权限

2.实验环境:**

Linux服务器系统版本:Red Hat Enterprise Linux 6.5IP:192.168.20.3

Windows客户机系统版本:Windows 7 Ultimate x64 IP:192.168.20.2

vsftpd软件版本:vsftpd-2.2.2

3.**实验步骤:**

基本安装操作

A.挂载系统光盘并安装vsftpd**

这里我们使用rpm安装包安装vsftpd,安装包放在系统光盘中的Packages目录中,我们首先挂载系统光盘到系统的mnt目录下

[[email protected]~]#
mount /dev/sr0 /mnt

图片 1

到Packages目录下找到vsftpd服务的软件包并安装,安装完成。

[[email protected]~]#
rpm -ivh
/mnt/Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm图片 2

B.查看vsftpd配置文件**

[[email protected]
~]# grep -v “#”/etc/vsftpd/vsftpd.conf #过滤掉配置文件中#号的注释

anonymous_enable=YES#已开启匿名用户的访问

local_enable=YES#已开启本地账号的访问

write_enable=YES#已开启写入的权限

local_umask=022#本地用户上传文件的权限是644,文件夹是755

———————以下配置为服务默认,此实验中无需关心———————-

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

实现匿名用户访问,验证仅可以访问和下载,不可以上传

根据vsftpd配置文件的默认配置,当vsftpd搭建好之后什么都不做就可以被匿名用户和本地用户访问了

A.效果验证:**

[[email protected]~]#
service vsftpd start#启动服务

为vsftpd 启动 vsftpd: [确定]

测试之前,必须把防火墙和selinux关掉

[[email protected]
~]# serviceiptables stop

iptables:将链设置为政策 ACCEPT:filter [确定]

iptables:清除防火墙规则: [确定]

iptables:正在卸载模块:[确定]

[[email protected]
~]# setenforce 0

我们在客户机上用文件夹的方式访问 ftp://192.168.20.3

图片 3

现在来测试一下匿名用户的上传和下载权限

注意:我们用匿名账号ftp登陆(无密码),查看现在所在的工作目录为/,这个/并不是服务器的根目录,而是匿名用户自己的家目录,ls查看发现里面有一个pub的文件夹

图片 4

家目录就是服务器上/var/ftp这个目录:

图片 5

我们验证匿名用户可不可以下载首先要在ftp这个目录下新建一个可供下载的文件[[email protected]
~]# cd/var/ftp #切换到ftp目录下

[[email protected]]#
echo “this is test ftp” > test.txt #新建一个test.txt文件,内容为this
is test ftp

图片 6

回到客户机上的cmd控制台

C:UsersAdministrator>f:
//切换到f盘,我们下载的文件就会下载到f盘

图片 7

用匿名账号ftp登陆,下载test.txt文件,打开f盘,看到已经下载的文件

图片 8

现在来验证匿名用户是否可以上传文件,我们把刚才下载都客户机上的test.txt文件改名为tes.txt文件用于上传测试(避免重名)

图片 9

上传时被拒绝,所以我们知道匿名用户是只可以下载不能够上传的。

那如果是系统本地账号的话可不可以上传呢?

[[email protected]]#
useradd tom #新建一个tom的账户

[[email protected]]#
passwd tom #设置tom的密码

回到客户机的cmd控制台,用tom登陆并上传tes.txt文件,上传成功。

图片 10

[[email protected]]#
ls -l /home/tom
#查看上传的文件的权限为644(因为配置文件中local_umask=022)

图片 11

注意:如果selunux没有关掉,用本地账户也是不可以登陆的,会报以下错误

图片 12

实现匿名用户可上传、下载、修改等完全权限

我们要让匿名用户可以上传文件夹,需要修改配置文件:

anon_mkdir_write_enable=YES

注意:当我们不知道如何去配置要添加哪些或要修改哪些选项时,我们可以借助man手册来寻求帮助:

[[email protected]
vsftpd]# manvsftpd.conf

在手册里面查找跟anon相关的内容,我们看到有一项是other
write,他的默认值是No,如果设为yes就可以允许用户上传、创建目录并且删除、重命名等操作

接着我们到vsftpd.conf脚本中插入一行内容:anon_other_write_enable=YES

修改完毕之后匿名用户就获得了最高权限(可读写,删除,重命名)

A.修改后的脚本**

图片 13

B.效果验证**

[[email protected]]#
service vsftpd reload#重新加载配置

关闭 vsftpd: [确定]

为 vsftpd 启动 vsftpd: [确定]

回到客户端的cmd控制台,以ftp匿名账号登陆,并删除文件,提示失败。

图片 14

回到服务器查看ftp这个目录的权限,是没有写权限的,所以也就无法删除

图片 15

[[email protected]]#
chmod 777 /var/ftp #将ftp权限设为最大

图片 16

回到客户机,用ftp登陆,发现直接登陆就报错了,因为我们把var/ftp这个目录权限改到最大了,这样匿名用户就可以为所欲为了,为了安全,vsftpd设置了直接就不允许登陆了。

图片 17

那么如果我们想让匿名用户有最大权限应该怎么做呢?这时我们应该对ftp目录下的子目录进行操作

[[email protected]]#
chmod 755 /var/ftp #把ftp的权限改为默认的755

[[email protected]]#
cd /var/ftp

[[email protected]]#
mkdir anon #在ftp目录下新建一个anon目录

[[email protected]]#
chmod 777 anon #修改目录权限为最大

图片 18

[[email protected]]#
cp test.txt anon #将test文件拷贝到anon目录下,用于后面的删除测试

[[email protected]]#
ls -l #查看test文件权限为不可写就不可以删除

图片 19

[[email protected]]#
chmod 666 test.txt #将文件权限改为可写

图片 20

这样,test.txt就可以被匿名用户删除了。

回到客户机的cmd控制台,用ftp登陆,切换到anon目录,删除test.txt文件,删除成功。当然匿名用户也是可以进行其他操作了这里就不一一测试了。

图片 21

实现把登陆的用户禁锢在自己的家目录中

现在我们用本地账号tom登陆,默认的当前工作目录是tom自己的家目录,我们可以将他任意切换到服务器的任何目录下:

图片 22

这样是非常不安全的,所以我们要让用户登陆之后仅仅只能在他的家目录这个范围活动不允许他任意切换到其他目录,我们需要修改配置文件使这行配置生效:chroot_local_user=YES

A.修改后的脚本**

图片 23

B.效果验证**

[[email protected]]#
service vsftpd reload #重新加载配置

关闭vsftpd: [确定]

为vsftpd 启动 vsftpd: [确定]

回到客户机的cmd控制台,用tom登陆,切换到根,发现这时候的根是他自己的家目录,并不是服务器上的根目录下了,他已经被禁锢在自己的家目录中了。

图片 24

实现限制某些用户的访问

我们查看vsftpd目录下的内容,发现有一个user_list文件

图片 25

查看user_list文件内容,发现这个里面都是被拒绝登陆的用户,所以我们要让谁不可以登陆就把账号写进这个文件里面就可以了,这里我们测试不让tom登陆

图片 26

A.修改后的脚本**

图片 27

B.效果验证**

回到客户机的cmd控制台,用tom登陆,登陆失败。

图片 28

注意:这里tom登陆失败的原因是因为我们把tom写进了user_list这个文件当中,另外也是因为配置文件中userlist_enable=YES这行设置,如果配置成userlist_deny=YES那么就是只允许user_list中的用户登陆

实现虚拟用户的访问

如果我们只是想要新建vsftpd账号而不让他作为一个系统账号的话就可以用到虚拟账号功能了

[[email protected]
vsftpd]# vim vuser #新建一个叫做vuser的文件

在这个文件中基数行为用户名,偶数行为密码,我们新建两个用户lisa和jack

图片 29

图片 30

[[email protected]
vsftpd]# db_load -T -thash -f vuser vuser.db#将vuser转换成数据库文件
db_load是命令 -T指定转换-t 指定转换类型为hash
-f指定要转换的文件vuser.db为转换后的文件名

[[email protected]
vsftpd]# file vuser.db
#查看文件类型,可以看到vuser已经被转换成一个vsftpd能识别的hash数据库文件

图片 31

[[email protected]
vsftpd]#chmod 600vuser
#为了安全,不想让其他用户可以看到这个文件里有哪些东西,修改权限为600

[[email protected]
vsftpd]#chmod 600vuser.db

虚拟用户创建之后,要给虚拟用户映射到一个系统账号

[[email protected]
vsftpd]# useradd -d/opt/vuser -s /sbin/nologin
vuser#新建一个虚拟用户的映射账号vuser,指定宿主目录为opt/vuser,并指定不允许登陆系统

[[email protected]
vsftpd]#
vim/etc/pam.d/vsftpd.vu#为虚拟用户创建pam认证模块命名为vsftpd.vu

在认证文件中加入以下两行认证信息:

auth required pam_userdb.sodb=/etc/vsftpd/vuser

account required pam_userdb.sodb=/etc/vsftpd/vuser

#这里的vuser其实是vuser.db,这里省略了db,否则会报错

之后到vsftpd.conf配置文件中插入以下三行内容:

guest_enable=YES#开启虚拟用户访问

guest_username=vuser#映射到系统账号vuser

pam_service_name=vsftpd.vu#指定pam认证模块

注意:vsftpd有一个默认的pam认证模块,需要注释掉

A.修改后的脚本**

图片 32

B.效果验证**

[[email protected]]#
service vsftpd restart #重启服务

关闭 vsftpd: [确定]

为vsftpd 启动 vsftpd: [确定]

回到客户机的cmd控制台,用lisa登陆并上传文件成功

图片 33

[[email protected]]#
ls -l
/opt/vuser#查看上传的文件的属主是vuser,说明lisa是映射到vuser这个系统账号了

图片 34

接着我们把tes.txt文件改名为te.txt防止重名,以jack登陆并上传te.txt

图片 35

查看jack上传的文件的属主依然是vuser

图片 36

注意:如果虚拟用户都可以登陆成功但是上传时提示权限被拒绝的话,需要去vsftpd.conf文件中使这行生效anon_upload_enable=YES

实现针对不同的虚拟用户拥有不同的权限

以上实验中lisa和jack的权限是一样的,现在我们让lisa上传的文件权限为600而jack上传的文件权限为644,我们需要开启这个单独配置文件功能

打开vsftpd.conf配置文件,加入以下一行配置告诉他去vu_dir目录下找他们的单独配置文件:

user_config_dir=/etc/vsftpd/vu_dir

[[email protected]
vsftpd]# mkdir vu_dir #在vsftpd目录下新建vu_dir目录

[[email protected]
vsftpd]# cd vu_dir

[[email protected]
vu_dir]# vi jack
#在vu_dir目录下为jack新建一个单独的配置文件(暂时不写任何内容保存退出)

图片 37

我们用man手册查看一下anon_umask(匿名上传)这个选项,发现默认权限是600,所以前面我们看到lisa和jack上传的文件权限是600

图片 38

如果要使jack的上传权限是644,那就把这个值设为022即可

接着我们就vi jack在文件中加入一行内容:anon_umask=022

A.修改后的脚本**

图片 39

图片 40

B.效果验证**

[[email protected]_dir]#
service vsftpd restart #重启服务

关闭 vsftpd: [确定]

为 vsftpd 启动 vsftpd: [确定]

回到客户机的cmd控制台,用jack登陆并上传t.txt文件

图片 41

服务器上查看上传的文件权限为644,实验成功。

图片 42

4.实验总结:**

1)vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。

2)vsftpd中的虚拟用户又是一个非常实用的功能,满足不同用户的不同访问特性,在配置文件中一定要注意权限的配置,以降低权限虚拟用户是默认作为匿名用户进行处理的。

1.实验需求:
1)使用RPM包安装vsftpd服务
2)实现匿名用户访问,验证仅可以访问和下载,不可以上传
3)实现匿名用户可…

使用匿名开放模式

服务启动后默认访问的目录为/var/ftp,且匿名用户没有上传、创建、重命名、删除功能.但是具有下载功能.

服务开启后直接访问

图片 43

创建文件夹被拒绝

图片 44

重命名失败

图片 45

我们来修改配置文件让匿名用户可以上传文件,编辑配置文件vim /etc/vsftpd/vsftpd.conf,修改为如下内容

anon_upload_enable=YES
anon_umask=022

现在依然无法上传文件,这是因为ftp的权限问题导致的,我们将其修改为ftp用户权限.

==注意:默认匿名用户家目录/var/ftp的权限是755,这个权限是不能改变的,切记!==

[root@qdlinux var]# ll -d ftp
drwxr-xr-x 3 root root 30 Aug 13 21:32 ftp

[root@qdlinux var]# chown -Rf ftp /var/ftp/pub

[root@qdlinux var]# ll ftp
total 0
-rw-r--r-- 1 root root  0 Aug 13 21:32 1.txt
drwxr-xr-x 2 ftp  root 19 Aug 13 21:32 pub

现在已经可以上传文件了,但是只能上传到ftp/pub目录中,因为刚才给的就是这个目录的权限.现在就做到了只能上传文件和下载的目的,但是不能创建文件夹.

上传文件

图片 46

重命名失败

图片 47

创建文件夹被拒绝

图片 48

[root@qdlinux var]# ll ftp/pub
total 0
-rw-r--r-- 1 ftp root 0 Aug 13 21:32 2.txt
-rw-r--r-- 1 ftp ftp  0 Aug 13 21:51 new.txt
[root@qdlinux var]# 

如果需要开启匿名用户可以创建文件夹功能,修改配置文件如下所示.

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022

现在匿名用户可以上传文件和下载文件以及创建文件夹.但是不能重命名.

如果需要开启匿名用户上传下载和创建文件夹以及重命名和删除功能,修改配置文件如下所示.

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022

现在匿名用户可以做到上传和下载,创建文件夹和删除文件夹和文件以及重命名.

上传文件
图片 49

新建文件夹
图片 50

这是匿名用户的最大权限了,一般匿名访问的话,只要做到下载功能就可以了。网站提供什么用户下载什么。


使用本地用户模式

示例演示公司内部有一台FTP和WEB服务器,FTP的功能主要用于维护网站内容,用于上传文件、创建目录、更新网页等等。公司有两个部门负责维护任务,他们分别用team1和team2账号进行管理,要求仅允许team1和team2账号登录ftp服务器,单不能登录本地系统,并将这两个账号的根目录限制为/var/www/html,不能进去该目录以外的任何目录。

前期准备首先安装apachevsftpd,具体安装方法这里就不介绍了。

创建测试账号team1和team2

[root@qdlinux ~]# useradd -s /sbin/nologin team1 
[root@qdlinux ~]# useradd -s /sbin/nologin team2
[root@qdlinux ~]# echo "123456" | passwd --stdin team1
Changing password for user team1.
passwd: all authentication tokens updated successfully.
[root@qdlinux ~]# echo "123456" | passwd --stdin team2
Changing password for user team2.
passwd: all authentication tokens updated successfully.

接下来修改配置文件,这里在RHEL6中和RHEL7中配置有些不同

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
local_root=/var/www/html
allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

可以把不限制的账户放到这里面,创建用户列表文件,因为此账户会访问到其他目录.但这样做事很危险的.

[root@qdlinux ~]# touch /etc/vsftpd/chroot_list
[root@qdlinux ~]# vim /etc/vsftpd/chroot_list 
teamleader

修改apache的根目录权限/var/www/html

[root@qdlinux ~]# ll -d /var/www/html/
drwxr-xr-x 2 root root 6 May  9  2017 /var/www/html/
[root@qdlinux ~]# chmod -R o+w /var/www/html/

访问测试

图片 51

不限制用户访问

图片 52

不限制用户访问,用户可以随意到任何目录

图片 53

限制用户访问,用户只能在此目录中,在安全方面相对要好很多.

图片 54

文件上传后文件拥有者权限

图片 55


虚拟用户模式

示例演示为了宣传公司的产品信息,计划搭建FTP服务器,为客户提供相关资料的下载,仅允许下载产品信息,禁止上传。公司的合作单位和可以在FTP服务器上上传和下载,但是不能删除数据。

创建用户进行FTP认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。编辑vim /etc/vsftpd/vuser.list

ftp
123456
vip
123456

由于明文的信息既不安全,也不符合让vsftpd服务程序直接加在的格式,因此需要使用db_load命令用哈希算法将明文信息文件转成数据库文件。在RHEL6中需要安装db4-utils,在RHEL7中libdb-utils

[root@qdlinux ~]# rpm -qf `which db_load`
libdb-utils-5.3.21-20.el7.x86_64
[root@qdlinux ~]# db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db
[root@qdlinux ~]# file /etc/vsftpd/vuser.db 
/etc/vsftpd/vuser.db: Berkeley DB (Hash, version 9, native byte-order)

降低数据库文件的权限避免其他人看到数据库文件的内容,然后把明文信息文件删除。

[root@qdlinux ~]# chmod 600 /etc/vsftpd/vuser.db
[root@qdlinux ~]# ll /etc/vsftpd/vuser.db
-rw------- 1 root root 12288 Aug 14 01:19 /etc/vsftpd/vuser.db

建立用于支持虚拟用户的PAM文件

vim /etc/pam.d/vsftpd.vu

auth    required        pam_userdb.so   db=/etc/vsftpd/vuser
account required        pam_userdb.so   db=/etc/vsftpd/vuser

建立用户存储文件的根目录以及虚拟用户映射的系统本地用户。

[root@qdlinux ~]# useradd -d /var/ftp/share -s /sbin/nologin ftpuser
[root@qdlinux ~]# useradd -d /var/ftp/vip -s /sbin/nologin ftpvip
[root@qdlinux ~]# chmod -R 500 /var/ftp/share/
[root@qdlinux ~]# chmod -R 700 /var/ftp/vip/

修改配置文件

anonymous_enable=NO
local_enable=YES
allow_writeable_chroot=YES
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/vuserconfig
max_clients=300
max_per_ip=10

建立虚拟账号配置文件

[root@qdlinux ~]# mkdir /etc/vsftpd/vuserconfig
[root@qdlinux ~]# touch /etc/vsftpd/vuserconfig/ftp
[root@qdlinux ~]# touch /etc/vsftpd/vuserconfig/vip

vim编辑/etc/vsftpd/vuserconfig/ftp中的内容

guest_enable=YES
guest_username=ftpuser
anon_world_readable_only=NO
anon_max_rate=50000

vim编辑/etc/vsftpd/vuserconfig/vip中的内容

guest_enable=YES
guest_username=ftpvip
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_max_rate=2000000

测试ftp账户

[root@qdlinux ~]# lftp 192.168.56.15 -u ftp,123456
lftp ftp@192.168.56.15:~> ls          
drwx------    5 0        0              97 Aug 13 18:14 grub2
-r--r--r--    1 0        0        11607904 Aug 13 18:13 mariadb-server.rpm

访问限速测试

图片 56

图片 57

测试vip账户

[root@qdlinux ~]# lftp 192.168.56.15 -u vip
Password: 
lftp vip@192.168.56.15:~> ls          
-rw-------    1 1004     1004      5505024 Aug 13 18:33 kali-linux-2018.2-amd64.iso
-rw-------    1 1004     1004     111017984 Aug 13 18:36 kali-linux-2018.2-amd641.iso
-r--r--r--    1 0        0        11607904 Aug 13 18:30 mariadb-server.rpm

上传和下载访问速度测试

图片 58

图片 59

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2020 大奖888网页版登陆 版权所有