基于Linux中的ftp服务部署

首先作实验前需要部署实验环境:

1,重置server虚拟机
2,进去配置ip
3,进去配置yum源
完成后就执行以下操作来进行ftp服务的查看:

[root@localhost ~]# vim /etc/sysconfig/selinux  编辑文件
[root@localhost ~]# cat /etc/sysconfig/selinux 

SELINUX=disabled 这行改为disabled即可

[root@localhost ~]# reboot 重启
[kiosk@foundation21 Desktop]$ ssh root@172.25.254.221
[root@localhost ~]# getenforce   查看是否更改成功
Disabled
[root@localhost ~]# yum install vsftpd lftp -y  安装ftp和lftp

Complete!
[root@localhost ~]# systemctl start vsftpd  打开服务
[root@localhost ~]# systemctl enable vsftpd  开机自启动
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service'
[root@localhost ~]# netstat -antlupe | grep vsftpd  查看端口是否开启
tcp6       0      0 :::21                   :::*                    LISTEN      0          38124      1789/vsftpd         
[root@localhost ~]# firewall-cmd --list-all  查看防火墙支持状态
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

[root@localhost ~]# firewall-cmd --permanent --add-service=ftp
success   添加ftp进去

[root@localhost ~]# firewall-cmd --reload  重新读入
success
[root@localhost ~]# firewall-cmd --list-all ftp被允许
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client ftp ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

[root@localhost ~]# cd /var/ftp/  所有操作在此目录下
[root@localhost ftp]# ls
pub
[root@localhost ftp]# touch xfl
[root@localhost ftp]# ls
pub  xfl
[root@localhost ftp]# lftp 172.25.254.221 测试进去可以看到建立的文件xfl
lftp 172.25.254.221:~> ls
drwxr-xr-x    2 0        0               6 Aug 03  2015 pub
-rw-r--r--    1 0        0               0 May 05 07:07 xfl

设置selinux状态,安装ftp和lftp:
这里写图片描述
开启服务并设置开机自启动:
这里写图片描述
配置火墙状态并添加ftp,在根目录下建立文件方便测试效果:
这里写图片描述
直接在虚拟机通过lftp命令连接进行查看文件
这里写图片描述

vsftpd服务的配置参数:

在进行参数的配置时总会有一些报错。
报错ID的解析:
500 文件系统权限过大
530 用户认证失败
550 服务本身功能没有开放
553 本地文件系统权限过小

1,匿名用户设定

anonymous_enable=YES|NO 匿名用户登陆限制,将十二行改为NO就是不可以登录。

[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
drwxrwxr-x    2 0        50             20 May 06 01:38 pub
-rw-r--r--    1 0        0               0 May 05 07:07 xfl
lftp 172.25.254.221:/> quit
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
Interrupt 然后将匿名用户打开。       

文件更改内容:
这里写图片描述
在主配置文件中将匿名用户关闭就不可以登陆,然后重新打开重启服务。
这里写图片描述

2,<匿名用户上传>

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
write_enable=YES
anon_upload_enable=YES
匿名用户依赖于普通用户可写,需要同时打开服务
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub 赋予权限不然会报错权限太小
测试连接lftp 172.25.254.221,cd /pub,put /etc/passwd,或者pub /etc/group就可以进行效果的测试。
详细操作:

[root@localhost ftp]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
drwxr-xr-x    2 0        0               6 Mar 07  2014 pub
-rw-r--r--    1 0        0               0 May 07 01:27 xfl
lftp 172.25.254.221:/> cd /pub
lftp 172.25.254.221:/pub> ls
lftp 172.25.254.221:/pub> put /etc/passwd
put: Access failed: 550 Permission denied. (passwd)  服务功能没有开放
lftp 172.25.254.221:/pub> quit
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf 
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf   打开匿名用户上传功能
[root@localhost ftp]# systemctl restart vsftpd
[root@localhost ftp]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
drwxr-xr-x    2 0        0               6 Mar 07  2014 pub
-rw-r--r--    1 0        0               0 May 07 01:27 xfl
lftp 172.25.254.221:/> cd /pub
lftp 172.25.254.221:/pub> ls
lftp 172.25.254.221:/pub> put /etc/passwd
put: Access failed: 553 Could not create file. (passwd)
lftp 172.25.254.221:/pub> ls
lftp 172.25.254.221:/pub> put /etc/group  报错因为权限过小
put: Access failed: 553 Could not create file. (group)
lftp 172.25.254.221:/pub> quit
[root@localhost ftp]# chgrp ftp /var/ftp/pub
[root@localhost ftp]# chmod 775 /var/ftp/pub  赋予权限
[root@localhost ftp]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
drwxrwxr-x    2 0        50              6 Mar 07  2014 pub
-rw-r--r--    1 0        0               0 May 07 01:27 xfl
lftp 172.25.254.221:/> cd /pub
lftp 172.25.254.221:/pub> put /etc/group  可以上传
863 bytes transferred
lftp 172.25.254.221:/pub> ls
-rw-------    1 14       50            863 May 07 01:54 group
lftp 172.25.254.221:/pub> quit

文件更改内容:
这里写图片描述
更改了主配置文件之后上传报错从550到553,代表权限太小,需要赋予权限:
这里写图片描述
赋予权限再次上传成功:
这里写图片描述

3,匿名用户家目录修改

anon_root=/ftpdir
在主配置文件中任意一行添加即可。

[root@localhost ~]# mkdir /ftpdir/westosdir -p
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
drwxr-xr-x    2 0        0               6 May 05 07:36 westosdir家目录已经被更改
lftp 172.25.254.221:/> quit
效果已经出现进去删除添加的家目录重启服务即可。

文件更改内容:
这里写图片描述
查看家目录已经被更改,作完实验删除添加的家目录重启服务:
这里写图片描述

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

将主配置文件中的默认权限修改为:
anon_umask=055进行效果查看。

[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> cd /pub
cd ok, cwd=/pub
lftp 172.25.254.221:/pub> put /etc/passwd
2048 bytes transferred
lftp 172.25.254.221:/pub> ls
drwx------    2 14       50              6 May 06 02:34 aaa
-rw-------    1 14       50        3339674 May 06 02:17 bigfile
-rw-------    1 14       50           2048 May 06 02:39 passwd  权限为600
lftp 172.25.254.221:/pub> quit
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> cd /pub
cd ok, cwd=/pub
lftp 172.25.254.221:/pub> put /etc/group
865 bytes transferred
lftp 172.25.254.221:/pub> ls
drwx------    2 14       50              6 May 06 02:34 aaa
-rw-------    1 14       50        3339674 May 06 02:17 bigfile
-rw--w--w-    1 14       50            865 May 06 02:40 group  修改权限为622
-rw-------    1 14       50           2048 May 06 02:39 passwd
lftp 172.25.254.221:/pub> quit

文件更改内容:
这里写图片描述
未添加权限为600
这里写图片描述
添加权限之后上传文件权限就变成了622
这里写图片描述

5,匿名用户建立目录

anon_mkdir_write_enable=YES|NO将主配置文件更改为YES就可以匿名用户建立目录。

[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> cd /pub
cd ok, cwd=/pub
lftp 172.25.254.221:/pub> ls
-rw-------    1 14       50        3339674 May 06 02:17 bigfile
lftp 172.25.254.221:/pub> mkdir aaa
mkdir: Access failed: 550 Permission denied. (aaa)  不可以建立文件夹,没有权限
lftp 172.25.254.221:/pub> quit
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> cd /pub
cd ok, cwd=/pub
lftp 172.25.254.221:/pub> ls
-rw-------    1 14       50        3339674 May 06 02:17 bigfile
lftp 172.25.254.221:/pub> mkdir aaa   改为YES就可以建立文件夹
mkdir ok, `aaa' created                
lftp 172.25.254.221:/pub> ls
drwx------    2 14       50              6 May 06 02:34 aaa
-rw-------    1 14       50        3339674 May 06 02:17 bigfile
lftp 172.25.254.221:/pub> quit

文件更改内容:
这里写图片描述
操作演示:
这里写图片描述

6,匿名用户下载:

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

[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
drwxrwxr-x    2 0        50             20 May 06 02:16 pub
-rw-r--r--    1 0        0               0 May 05 07:07 xfl
lftp 172.25.254.221:/> cd /pub
lftp 172.25.254.221:/pub> ls
-rw-------    1 14       50        3339674 May 06 02:17 bigfile
lftp 172.25.254.221:/pub> get bigfile  匿名用户不可以下载
get: Access failed: 550 Failed to open file. (bigfile)
lftp 172.25.254.221:/pub> quit
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> cd /pub
cd ok, cwd=/pub
lftp 172.25.254.221:/pub> ls
-rw-------    1 14       50        3339674 May 06 02:17 bigfile
lftp 172.25.254.221:/pub> get bigfile   匿名用户可以下载
3339674 bytes transferred
lftp 172.25.254.221:/pub> ls
-rw-------    1 14       50        3339674 May 06 02:17 bigfile
lftp 172.25.254.221:/pub> quit

文件更改内容:
这里写图片描述
操作演示:
这里写图片描述

7,匿名用户删除:

anon_other_write_enable=YES|NO 改变成yes代表可以删除。

[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
drwxrwxr-x    2 0        50             20 May 06 02:09 pub
-rw-r--r--    1 0        0               0 May 05 07:07 xfl
lftp 172.25.254.221:/> cd /pub
lftp 172.25.254.221:/pub> ls
-rw-------    1 14       50       2097152000 May 06 01:40 bigfile
lftp 172.25.254.221:/pub> rm -fr bigfile   未开启时不可以删除
lftp 172.25.254.221:/pub> ls
-rw-------    1 14       50       2097152000 May 06 01:40 bigfile
lftp 172.25.254.221:/pub> quit
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
drwxrwxr-x    2 0        50             20 May 06 02:09 pub
-rw-r--r--    1 0        0               0 May 05 07:07 xfl
lftp 172.25.254.221:/> cd /pub
lftp 172.25.254.221:/pub> ls
-rw-------    1 14       50       2097152000 May 06 01:40 bigfile
lftp 172.25.254.221:/pub> rm -fr bigfile 开启了之后匿名用户可以删除。
rm ok, `bigfile' removed                
lftp 172.25.254.221:/pub> ls
lftp 172.25.254.221:/pub> quit

文件更改内容:
这里写图片描述
未更改前匿名用户不可以删除文件:
这里写图片描述
更改后匿名用户可以删除:
这里写图片描述

8,最大上传速率:

在主配置文件中添加限速anon_max_rate=102400。

[root@localhost ~]# dd if=/dev/zero of=/mnt/bigfile bs=1M count=2000
2000+0 records in
2000+0 records out
2097152000 bytes (2.1 GB) copied, 23.258 s, 90.2 MB/s
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> ls
drwxrwxr-x    2 0        50              6 May 06 02:11 pub
-rw-r--r--    1 0        0               0 May 05 07:07 xfl
lftp 172.25.254.221:/> cd /pub
lftp 172.25.254.221:/pub> ls
lftp 172.25.254.221:/pub> put /mnt/bigfile 
2097152000 bytes transferred in 38 seconds (52.96M/s) 速度特别快  
lftp 172.25.254.221:/pub> quit
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.221
lftp 172.25.254.221:~> cd /pub
cd ok, cwd=/pub
lftp 172.25.254.221:/pub> ls
-rw-------    1 14       50       453701444 May 06 02:15 bigfile
lftp 172.25.254.221:/pub> rm bigfile  
rm ok, `bigfile' removed                
lftp 172.25.254.221:/pub> put /mnt/bigfile  有明显的速度对比
Interrupt                                                           
lftp 172.25.254.221:/pub> quit删除限速文件。

文件更改内容:
这里写图片描述
前后速度对比:
这里写图片描述

9,本地用户设定:

local_enable=YES|NO 本地用户登陆限制,建立一个本地用户登录的时候显示不出来
write_enable=YES|NO 本地用户写权限限制,不能上传put /etc/passwd用此命令实现
一开始将配置文件登陆以及可写全部关闭:
这里写图片描述
查看效果报错530,不认证用户:
这里写图片描述
开启登陆可写一次性进行测试:
这里写图片描述
可以登陆进行上传文件:
这里写图片描述

10,本地用户上传文件权限

local_umask=077(从022改为077)
默认为022,我们将其更改为077查看效果。

[root@localhost ~]# id westos
uid=1001(westos) gid=1001(westos) groups=1001(westos)
[root@localhost ~]# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
[root@localhost ~]# lftp 172.25.254.221 -u westos
Password: 
lftp westos@172.25.254.221:~> ls       
-rw-r--r--    1 1001     1001         2538 May 05 07:49 passwd
lftp westos@172.25.254.221:~> ls
-rw-r--r--    1 1001     1001         2538 May 05 07:49 passwd
lftp westos@172.25.254.221:~> put /etc/group
865 bytes transferred
lftp westos@172.25.254.221:~> ls
-rw-r--r--    1 1001     1001          865 May 06 02:04 group  建立的group权限为644
-rw-r--r--    1 1001     1001         2538 May 05 07:49 passwd
lftp westos@172.25.254.221:~> quit
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.221 -u westos
Password: 
lftp westos@172.25.254.221:~> ls       
-rw-r--r--    1 1001     1001          865 May 06 02:04 group
-rw-r--r--    1 1001     1001         2538 May 05 07:49 passwd
lftp westos@172.25.254.221:~> put /etc/westos
put: /etc/westos: No such file or directory
lftp westos@172.25.254.221:~> rm -fr group  可以删除是因为开启了本地用户删除
rm ok, `group' removed
lftp [email protected]:~> put /etc/group
865 bytes transferred
lftp [email protected]:~> ls
-rw-------    1 1001     1001          865 May 06 02:06 group 重新建立权限为600
-rw-r--r--    1 1001     1001         2538 May 05 07:49 passwd
看到效果恢复权限。

文件更改内容;
这里写图片描述
未更改前上传文件权限为644:
这里写图片描述
更改后上传文件权限为600:
这里写图片描述

11,限制本地用户浏览目录

限制本地用户浏览/目录,所有用户被锁定到自己的家目录中
chroot_local_user=YES,变成NO表示可以随意浏览
chmod u-w /home/* 赋予权限

[root@localhost ~]# lftp 172.25.254.221 -u westos
Password: 
lftp westos@172.25.254.221:~> ls       
-rw-------    1 1001     1001          865 May 06 02:06 group
-rw-r--r--    1 1001     1001         2538 May 05 07:49 passwd
lftp westos@172.25.254.221:~> cd /
cd ok, cwd=/
lftp [email protected]:/> ls
lrwxrwxrwx    1 0        0               7 May 07  2014 bin -> usr/bin
dr-xr-xr-x    4 0        0            4096 Jul 10  2014 boot
drwxr-xr-x   18 0        0            2800 May 07 01:23 dev
drwxr-xr-x  134 0        0            8192 May 07 03:00 etc
drwxr-xr-x    3 0        0              22 May 07 02:09 ftpdir
drwxr-xr-x    4 0        0              33 May 07 03:00 home
lrwxrwxrwx    1 0        0               7 May 07  2014 lib -> usr/lib
lrwxrwxrwx    1 0        0               9 May 07  2014 lib64 -> usr/lib64
drwxr-xr-x    2 0        0               6 Mar 13  2014 media
drwxr-xr-x    2 0        0              20 May 07 02:49 mnt
drwxr-xr-x    3 0        0              15 Jul 10  2014 opt
dr-xr-xr-x  132 0        0               0 May 07 01:23 proc
dr-xr-x---   18 0        0            4096 May 07 03:20 root
drwxr-xr-x   34 0        0            1100 May 07 01:24 run
lrwxrwxrwx    1 0        0               8 May 07  2014 sbin -> usr/sbin
drwxr-xr-x    2 0        0               6 Mar 13  2014 srv
dr-xr-xr-x   13 0        0               0 May 07 01:23 sys
drwxrwxrwt   10 0        0            4096 May 07 03:07 tmp
drwxr-xr-x   13 0        0            4096 May 07  2014 usr
drwxr-xr-x   23 0        0            4096 May 07 01:24 var
lftp westos@172.25.254.221:~> quit
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# chmod u-w /home/*  必须缩减权限不然会提醒权限太大
[root@localhost ~]# lftp 172.25.254.221 -u westos
Password: 
lftp westos@172.25.254.221:~> ls       
-rw-------    1 1001     1001          865 May 06 02:06 group
-rw-r--r--    1 1001     1001         2538 May 05 07:49 passwd
lftp westos@172.25.254.221:/> cd /
lftp westos@172.25.254.221:/> ls
-rw-------    1 1001     1001          865 May 06 02:06 group
-rw-r--r--    1 1001     1001         2538 May 05 07:49 passwd
lftp [email protected]:/> quit

文件更改内容变成YES代表锁在家目录中:
这里写图片描述
更改前用户可以自由浏览目录:
这里写图片描述
更改后用户被限制到自己的家目录中。
这里写图片描述

11-1用户黑名单建立

chroot_local_user=NO 意味着所有人可以浏览
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

[root@localhost ~]# vim /etc/vsftpd/chroot_list 所以这就是黑名单
[root@localhost ~]# cat /etc/vsftpd/chroot_list
westos
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.221 -u student 非黑名单用户可以自由浏览
Password: 
lftp student@172.25.254.221:~> ls      
lftp student@172.25.254.221:~> cd /
cd ok, cwd=/
lftp student@172.25.254.221:/> ls
lrwxrwxrwx    1 0        0               7 May 07  2014 bin -> usr/bin
dr-xr-xr-x    4 0        0            4096 Jul 10  2014 boot
drwxr-xr-x   18 0        0            2880 May 06 01:00 dev
drwxr-xr-x  134 0        0            8192 May 06 02:51 etc
drwxr-xr-x    3 0        0              22 May 05 07:36 ftpdir
drwxr-xr-x    4 0        0              33 May 05 07:41 home
lrwxrwxrwx    1 0        0               7 May 07  2014 lib -> usr/lib
lrwxrwxrwx    1 0        0               9 May 07  2014 lib64 -> usr/lib64
drwxr-xr-x    2 0        0               6 Mar 13  2014 media
drwxrwxrwx    2 0        0              20 May 06 01:24 mnt
drwxr-xr-x    3 0        0              15 Jul 10  2014 opt
dr-xr-xr-x  154 0        0               0 May 06 00:52 proc
dr-xr-x---   15 0        0            4096 May 06 02:51 root
drwxr-xr-x   35 0        0            1140 May 06 01:00 run
lrwxrwxrwx    1 0        0               8 May 07  2014 sbin -> usr/sbin
drwxr-xr-x    2 0        0               6 Mar 13  2014 srv
dr-xr-xr-x   13 0        0               0 May 06 00:52 sys
drwxrwxrwt   14 0        0            4096 May 06 01:00 tmp
drwxr-xr-x   13 0        0            4096 May 07  2014 usr
drwxr-xr-x   23 0        0            4096 May 06 00:52 var
lftp student@172.25.254.221:/> quit
[root@localhost ~]# lftp 172.25.254.221 -u westos
Password: 
lftp westos@172.25.254.221:~> cd /     黑名单用户被锁在家目录中
cd ok, cwd=/
lftp westos@172.25.254.221:/> ls
-rw-------    1 1001     1001          865 May 06 02:06 group
-rw-r--r--    1 1001     1001         2538 May 05 07:49 passwd
lftp westos@172.25.254.221:/> cd /
lftp westos@172.25.254.221:/> ls
-rw-------    1 1001     1001          865 May 06 02:06 group
-rw-r--r--    1 1001     1001         2538 May 05 07:49 passwd
lftp westos@172.25.254.221:/> quit

文件更改内容:
这里写图片描述
非黑名单用户可以自由浏览:
这里写图片描述
黑名单用户被锁定在自己的家目录中:
这里写图片描述

11-2用户白名单建立

chroot_local_user=YES 将所有人锁定在家目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# vim /etc/vsftpd/chroot_list  建立的为白名单
[root@localhost ~]# cat /etc/vsftpd/chroot_list
westos
[root@localhost ~]# lftp 172.25.254.221 -u westos  白名单用户可以自由浏览
Password: 
lftp westos@172.25.254.221:~> cd /     
cd ok, cwd=/
lftp westos@172.25.254.221:/> ls
lrwxrwxrwx    1 0        0               7 May 07  2014 bin -> usr/bin
dr-xr-xr-x    4 0        0            4096 Jul 10  2014 boot
drwxr-xr-x   18 0        0            2880 May 06 01:00 dev
drwxr-xr-x  134 0        0            8192 May 06 02:51 etc
drwxr-xr-x    3 0        0              22 May 05 07:36 ftpdir
drwxr-xr-x    4 0        0              33 May 05 07:41 home
lrwxrwxrwx    1 0        0               7 May 07  2014 lib -> usr/lib
lrwxrwxrwx    1 0        0               9 May 07  2014 lib64 -> usr/lib64
drwxr-xr-x    2 0        0               6 Mar 13  2014 media
drwxrwxrwx    2 0        0              20 May 06 01:24 mnt
drwxr-xr-x    3 0        0              15 Jul 10  2014 opt
dr-xr-xr-x  154 0        0               0 May 06 00:52 proc
dr-xr-x---   15 0        0            4096 May 06 02:54 root
drwxr-xr-x   35 0        0            1140 May 06 01:00 run
lrwxrwxrwx    1 0        0               8 May 07  2014 sbin -> usr/sbin
drwxr-xr-x    2 0        0               6 Mar 13  2014 srv
dr-xr-xr-x   13 0        0               0 May 06 00:52 sys
drwxrwxrwt   14 0        0            4096 May 06 01:00 tmp
drwxr-xr-x   13 0        0            4096 May 07  2014 usr
drwxr-xr-x   23 0        0            4096 May 06 00:52 var
lftp westos@172.25.254.221:/> quit
[root@localhost ~]# lftp 172.25.254.221 -u student非白名单用户不可以浏览。
Password: 
lftp student@172.25.254.221:~> cd /    
cd ok, cwd=/
lftp student@172.25.254.221:/> ls
lftp student@172.25.254.221:/> cd /
lftp student@172.25.254.221:/> ls
lftp student@172.25.254.221:/> quit
做完实验注释掉:

文件更改内容:
这里写图片描述
非白名单用户不可以随意浏览:
这里写图片描述
白名单用户可以随意浏览:
这里写图片描述

12,限制本地用户登录

12-1 vim /etc/vsftpd/ftpusers 用户黑名单永久的,级别最高

vim /etc/vsftpd/ftpusers        ##用户黑名单永久的,级别最高
[root@localhost ftp]# vim /etc/vsftpd/ftpusers 添加westos为黑名单
[root@localhost ftp]# systemctl restart vsftpd
[root@localhost ftp]# lftp 172.25.254.221 -u westos  黑名单用户没办法登陆
Password:     
lftp westos@172.25.254.221:~> ls       
ls: Login failed: 530 Login incorrect.          
lftp westos@172.25.254.221:~> quit
[root@localhost ftp]# lftp 172.25.254.221 -u student  其他用户可以登陆
Password: 
lftp student@172.25.254.221:~> ls      
lftp student@172.25.254.221:~> quit  
[root@localhost ftp]# vim /etc/vsftpd/ftpusers    删除黑名单用户
[root@localhost ftp]# systemctl restart vsftpd
[root@localhost ftp]# lftp 172.25.254.221 -u westos  westos用户可以登陆
Password: 
lftp westos@172.25.254.221:~> ls       
-rw-------    1 1001     1001          878 May 07 03:20 group
-rw-r--r--    1 1001     1001         2092 May 07 03:03 passwd
lftp westos@172.25.254.221:~> quit

永久黑名单用户添加:
这里写图片描述
操作演示:
这里写图片描述

12-2 vim /etc/vsftpd/user_list 用户临时黑名单

[root@localhost ~]# vim /etc/vsftpd/user_list  添加westos为临时黑名单用户
[root@localhost ~]# lftp 172.25.254.221 -u westos  不可以登陆
Password: 
lftp westos@172.25.254.221:~> ls       
ls: Login failed: 530 Permission denied.          
lftp westos@172.25.254.221:~> quit  
[root@localhost ftp]# lftp 172.25.254.221 -u student 非黑名单用户可以登陆
Password: 
lftp student@172.25.254.221:~> ls      
lftp student@172.25.254.221:~> quit
[root@localhost ~]# vim /etc/vsftpd/user_list    删除黑名单用户可以登陆
[root@localhost ~]# lftp 172.25.254.221 -u westos
Password: 
lftp westos@172.25.254.221:~> ls       
-rw-------    1 1001     1001          865 May 06 02:06 group
-rw-r--r--    1 1001     1001         2538 May 05 07:49 passwd
lftp westos@172.25.254.221:~> quit

文件更改内容:
这里写图片描述
操作演示:
这里写图片描述

12-3 用户白名单设定:

主配置文件更改;
124 pam_service_name=vsftpd
125 userlist_enable=YES
126 userlist_deny=NO
127 tcp_wrappers=YES
设置解释:
userlist_deny=NO
/etc/vsftpd/user_list 参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp。

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# vim /etc/vsftpd/user_list  也是添加westos为白名单可以登陆
[root@localhost ~]# lftp 172.25.254.221 -u westos
Password: 
lftp westos@172.25.254.221:~> ls       
-rw-------    1 1001     1001          865 May 06 02:06 group
-rw-r--r--    1 1001     1001         2538 May 05 07:49 passwd
lftp westos@172.25.254.221:~> quit
[root@localhost ~]# lftp 172.25.254.221 -u student 非白名单用户不可以登陆
Password: 
lftp student@172.25.254.221:~> ls      
ls: Login failed: 530 Permission denied.          
lftp student@172.25.254.221:~> quit

文件更改内容:
这里写图片描述
操作演示:
这里写图片描述

12-4 黑白名单同时存在:

如果黑白名单同时有一个人,则ftpusers永久黑名单权限最高,还是不能执行。

[root@localhost ~]# vim /etc/vsftpd/user_list  添加westos白名单
[root@localhost ~]# vim /etc/vsftpd/ftpusers   添加westos黑名单
[root@localhost ~]# lftp 172.25.254.221 -u westos  黑名单权限高不可以登陆
Password: 
lftp westos@172.25.254.221:~> ls       
Interrupt                          
lftp westos@172.25.254.221:~> quit
删除黑白名单,还原原来。

黑名单权限高。
这里写图片描述

13,ftp虚拟用户的设定,系统不识别明文规定。 (创建虚拟帐号身份)

vim /etc/vsftpd/westos 文件名称任意
ftpuser1 添加虚拟用户
123
ftpuser2
123
ftpuser3
123

db_load -T -t hash -f /etc/vsftpd/westos /etc/vsftpd/westos.db 加密

vim /etc/pam.d/westos 文件名称任意
account帐号 required必须通过否则认证被拒绝 pam_userdb.so认证帐号 db=/etc/vsftpd/westos后缀不需要,用户名单
auth密码 required必须通过否则认证被拒绝 pam_userdb.so认证密码 db=/etc/vsftpd/westos密码名单

vim /etc/vsftpd/vsftpd.conf
文件添加内容:
pam_service_name=westos 文件中为认证策略
guest_enable=YES
(虚拟帐号身份指定)
guest_username=ftpuser
chmod u-w /home/ftpuser 修改权限

[root@localhost vsftpd]# vim westos  添加虚拟用户密码
[root@localhost vsftpd]# cat westos
ftpuser1
123
ftpuser2
123
ftpuser3
123
[root@localhost vsftpd]# db_load -T -t hash -f /etc/vsftpd/westos /etc/vsftpd/westos.db  加密文件
[root@localhost vsftpd]# ls   查看时候加密已经存在
chroot_list  user_list   vsftpd.conf             westos
ftpusers     vsftp.conf  vsftpd_conf_migrate.sh  westos.db
[root@localhost vsftpd]# vim /etc/pam.d/westos  编辑帐号密码文件
[root@localhost vsftpd]# cat /etc/pam.d/westos
account  required  pam_userdb.so   db=/etc/vsftpd/westos
auth  required  pam_userdb.so   db=/etc/vsftpd/westos
[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf 编辑主配置文件
[root@localhost vsftpd]# cat /etc/vsftpd/vsftpd.conf | tail -n 5
pam_service_name=westos   读取的密码文件
guest_enable=YES
guest_username=westos     虚拟机中存在的用户即可
userlist_enable=YES
tcp_wrappers=YES
[root@localhost vsftpd]# systemctl restart vsftpd   重启
[root@localhost vsftpd]# lftp 172.25.254.221 -u ftpuser1 登录
Password: 
lftp ftpuser1@172.25.254.221:~> ls     
注意文件内容即可,不错误就可以。

注意密码文件名字需要与文件中对应即可,如图虚拟用户可以登陆:
这里写图片描述
主配置文件内容:
这里写图片描述

14,虚拟帐号家目录独立指定

vim   /etc/vsftpd/vsftpd.conf    编辑主配置文件
    local_root=/vftpdir/$USER
    user_sub_token=$USER

详细操作

[root@localhost ~]# mkdir /vftpdir  建立文件夹
[root@localhost ~]# touch /vftpdir/vftpfile
[root@localhost ~]# cd /vftpdir
[root@localhost vftpdir]# ls
vftpfile
[root@localhost vftpdir]# mkdir ftpuser{1..3}
[root@localhost vftpdir]# ll
total 0
drwxr-xr-x 2 root root 6 May  6 03:12 ftpuser1
drwxr-xr-x 2 root root 6 May  6 03:12 ftpuser2
drwxr-xr-x 2 root root 6 May  6 03:12 ftpuser3
-rw-r--r-- 1 root root 0 May  6 03:12 vftpfile
[root@localhost vftpdir]# touch ftpuser1/ftpuser1file
[root@localhost vftpdir]# touch ftpuser2/ftpuser2file
[root@localhost vftpdir]# touch ftpuser3/ftpuser3file
[root@localhost vftpdir]# ls
ftpuser1  ftpuser2  ftpuser3  vftpfile
[root@localhost vftpdir]# cd ftpuser1
[root@localhost ftpuser1]# ll
total 0
-rw-r--r-- 1 root root 0 May  6 03:12 ftpuser1file
[root@localhost ftpuser1]# vim /etc/vsftpd/vsftpd.conf 
[root@localhost ftpuser1]# cat /etc/vsftpd/vsftpd.conf | tail -n 6
guest_enable=YES
guest_username=westos
local_root=/vftpdir/$USER    vftpdir指一开始建立的目录
user_sub_token=$USER
userlist_enable=YES
tcp_wrappers=YES
[root@localhost ftpuser1]# systemctl restart vsftpd  每次操作都需要重启
[root@localhost ftpuser1]# lftp 172.25.254.221 -u ftpuser1  查看各自的家目录已经成功
Password: 
lftp ftpuser1@172.25.254.221:~> ls     
-rw-r--r--    1 0        0               0 May 06 07:12 ftpuser1file
lftp ftpuser1@172.25.254.221:/> quit
[root@localhost ftpuser1]# lftp 172.25.254.221 -u ftpuser2
Password: 
lftp ftpuser2@172.25.254.221:~> ls     
-rw-r--r--    1 0        0               0 May 06 07:12 ftpuser2file
lftp ftpuser2@172.25.254.221:/> quit
[root@localhost ftpuser1]# lftp 172.25.254.221 -u ftpuser3
Password: 
lftp ftpuser3@172.25.254.221:~> ls     
-rw-r--r--    1 0        0               0 May 06 07:12 ftpuser3file
lftp ftpuser3@172.25.254.221:/> quit

建立目录创造实验环境:
这里写图片描述
编辑主配置文件:
这里写图片描述
进行查看独立家目录是否成功:
这里写图片描述

15,虚拟帐号配置独立

虚拟用户也依赖于匿名用户的参数控制。
vim /etc/vsftpd/vsftpd.conf
最后一行添加:
user_config_dir=/etc/vsftpd/userconf
操作演示:

[root@localhost ftpuser1]# vim /etc/vsftpd/vsftpd.conf  最后一行添加制定内容
[root@localhost ftpuser1]# systemctl restart vsftpd
[root@localhost ftpuser1]# cd /vftpdir
[root@localhost vftpdir]# ls
ftpuser1  ftpuser2  ftpuser3  vftpfile
[root@localhost vftpdir]# ll
total 0
drwxr-xr-x 2 root root 25 May  6 03:12 ftpuser1
drwxr-xr-x 2 root root 25 May  6 03:12 ftpuser2
drwxr-xr-x 2 root root 25 May  6 03:12 ftpuser3
-rw-r--r-- 1 root root  0 May  6 03:12 vftpfile
[root@localhost vftpdir]# mkdir ftpuser{1..3}/pub  建立/pub目录
[root@localhost vftpdir]# vim /etc/vsftpd/vsftpd.conf 
[root@localhost vftpdir]# vim /etc/vsftpd/vsftpd.conf 将匿名用户上传关闭,因为虚拟用户依赖于匿名用户。
[root@localhost vftpdir]# systemctl restart vsftpd   重启
[root@localhost vftpdir]# chgrp westos ftpuser{1..3}/pub
[root@localhost vftpdir]# chmod 775 ftpuser{1..3}/pub  赋予权限
[root@localhost vftpdir]# lftp 172.25.254.221 -u ftpuser3
Password: 
lftp ftpuser3@172.25.254.221:~> ls     
-rw-r--r--    1 0        0               0 May 06 07:12 ftpuser3file
drwxrwxr-x    2 0        1001            6 May 06 07:40 pub
lftp ftpuser3@172.25.254.221:/> cd /pub
lftp ftpuser3@172.25.254.221:/pub> ls
lftp ftpuser3@172.25.254.221:/pub> put /etc/passwd 不可上传因为功能关闭
put: Access failed: 550 Permission denied. (passwd)
lftp ftpuser3@172.25.254.221:/pub> quit
[root@localhost vftpdir]# mkdir /etc/vsftpd/conf_dir -p  建立主配置文件中的目录
[root@localhost vftpdir]# vim /etc/vsftpd/conf_dir/ftpuser2  给虚拟用户单独的上传权限
[root@localhost vftpdir]# cat /etc/vsftpd/conf_dir/ftpuser2  ftpuser2可以上传
anon_upload_enable=YES
[root@localhost vftpdir]# systemctl restart vsftpd
[root@localhost vftpdir]# lftp 172.25.254.221 -u ftpuser3
Password: 
lftp ftpuser3@172.25.254.221:~> ls     
-rw-r--r--    1 0        0               0 May 06 07:12 ftpuser3file
drwxrwxr-x    2 0        1001            6 May 06 07:40 pub
lftp ftpuser3@172.25.254.221:/> cd /pub
lftp ftpuser3@172.25.254.221:/pub> ls
lftp ftpuser3@172.25.254.221:/pub> put /etc/group   不可以上传因为没有权限
put: Access failed: 550 Permission denied. (group)
lftp ftpuser3@172.25.254.221:/pub> quit
[root@localhost vftpdir]# lftp 172.25.254.221 -u ftpuser2
Password: 
lftp ftpuser2@172.25.254.221:~> ls     
-rw-r--r--    1 0        0               0 May 06 07:12 ftpuser2file
drwxrwxr-x    2 0        1001            6 May 06 07:40 pub
lftp ftpuser2@172.25.254.221:/> cd /pub
lftp ftpuser2@172.25.254.221:/pub> ls
lftp ftpuser2@172.25.254.221:/pub> put /etc/passwd  可以上传,有自己单独的权限
2048 bytes transferred
lftp ftpuser2@172.25.254.221:/pub> ls
-rw-------    1 1001     1001         2048 May 06 07:52 passwd
lftp ftpuser2@172.25.254.221:/pub> quit

主配置文件中添加内容:
这里写图片描述
主配置文件中关闭匿名用户上传功能:
这里写图片描述
操作演示:
这里写图片描述
ftpuser3用户没有独立的上传权限不可以上传:
这里写图片描述
ftpuser2用户可以上传:
这里写图片描述

还原最初环境:

[root@localhost vftpdir]# rm -fr /etc/vsftpd/  删除建立的目录
[root@localhost vftpdir]# yum reinstall vsftpd -y  重装ftp

这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/aaaaaab_/article/details/80221950