3-1 Vsftpd服务的部署及优化

实验环境:
server主机
    selinux关闭(重启虚拟机reboot)


vim /etc/sysconfig/selinux   
disabled 

getenforce(查看selinix状态)

    火墙开启
    dnf安装设定完成

client主机
    172.25.254.29
    selinux关闭
    本地文件仓库配置完成
    安装lftp    ##ftp协议文本浏览器

#####################1、ftp介绍#####################

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

######################2、vsftpd安装及启用######################    

dnf install vsftpd -y        ##server
dnf install lftp -y        ##client
关闭selinux
systemctl disable --now firewalld

vim /etc/vsftpd/vsftpd.conf    ##启动匿名用户的访问功能
///
12 anonymous_enable=YES
///
systemctl restart vsftpd

测试安装发布:
ftp://ip
lftp ip            ##此访问方式必须能列出资源才算访问成功
                     ##使用完成后exit退出

[root@westoslinux ~]# dnf search  ftp     
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: 134 days, 20:29:40 ago on Fri 26 Mar 2021 01:57:35 PM CST.
========================= Name & Summary Matched: ftp ==========================
ftp.x86_64 : The standard UNIX FTP (File Transfer Protocol) client
lftp-scripts.noarch : Scripts for lftp
vsftpd.x86_64 : Very Secure Ftp Daemon
tftp.x86_64 : The client for the Trivial File Transfer Protocol (TFTP)
python3-requests-ftp.noarch : FTP transport adapter for python3-requests
tftp-server.x86_64 : The server for the Trivial File Transfer Protocol (TFTP)
syslinux-tftpboot.noarch : SYSLINUX modules in /tftpboot, available for network
                         : booting
============================== Name Matched: ftp ===============================
lftp.i686 : A sophisticated file transfer program
lftp.x86_64 : A sophisticated file transfer program
============================= Summary Matched: ftp =============================
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
curl.x86_64 : A utility for getting files from remote servers (FTP, HTTP, and
            : others)

[root@westoslinux ~]# dnf install vsftpd.x86_64 lftp.x86_64  -y   ##下载

[root@westoslinux ~]# systemctl enable --now vsftpd
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.
[root@westoslinux ~]# netstat -antlupe | grep vsftpd    ##查看端口
tcp6       0      0 :::21                   :::*                    LISTEN      0          48226      2933/vsftpd         

[root@westoslinux ~]# vim /etc/vsftpd/vsftpd.conf     ##编辑

12 anonymous_enable=YES                    ##启动匿名用户的访问功能

[root@westoslinux ~]# systemctl restart vsftpd   ##重启服务
[root@westoslinux ~]# lftp 172.25.254.129   ##查看
lftp 172.25.254.129:~> ls
drwxr-xr-x    2 0        0               6 Feb 17  2020 pub
lftp 172.25.254.129:/> 

[root@westoslinux ~]# lftp 172.25.254.129 -u westos
Password: 
lftp westos@172.25.254.129:~> ls                   
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Desktop
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Documents
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Downloads
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Music
drwxr-xr-x    3 1000     1000           24 Mar 26 06:05 Pictures
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Public
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Templates
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Videos



#########################

3.vsftpd基本信息

服务名称:        vsftpd.service
配置目录:        /etc/vsftpd
主配置文件:        /etc/vsftpd/vsftpd.conf
默认发布目录:        /var/ftp
报错信息:

550        ##程序本身拒绝
553        ##文件系统权限限制
500        ##权限过大
530        ##认证失败

##################

4.匿名用户访问控制

[root@westoslinux ~]# lftp 172.25.254.129
lftp 172.25.254.129:~> ls
Interrupt                                    
lftp 172.25.254.129:~> 

[root@westoslinux ~]# vim /etc/vsftpd/vsftpd.conf     ##编辑

12 anonymous_enable=YES                    ##启动匿名用户的访问功能

[root@westoslinux ~]# vim /etc/vsftpd/vsftpd.conf 

[root@westoslinux ~]# lftp 172.25.254.129   ##可以匿名访问
lftp 172.25.254.129:~> ls
drwxr-xr-x    2 0        0               6 Feb 17  2020 pub

 

登陆控制            anonymous_enable=YES|NO
家目录控制        anon_root=/westosdir


上传控制                      anon_upload_enable=YES|NO
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
lftp 192.168.0.100
cd pub
put /etc/passwd


目录建立控制            anon_mkdir_write_enable=YES|NO
删除重命令控制        anon_other_write_enable=YES|NO

[root@westoslinux ~]# vim /etc/vsftpd/vsftpd.conf 
 30 anon_upload_enable=YES
 31 anon_other_write_enable=YES
 32 #
 33 # Uncomment this if you want the anonymous FTP user to be able to create
 34 # new directories.
 35 anon_mkdir_write_enable=YES
 36 #
[root@westoslinux ~]# systemctl restart vsftpd

[root@westoslinux ~]# chmod 775 /var/ftp/pub/       ##添加权限
[root@westoslinux ~]# ls -ld /var/ftp/pub/
drwxrwxr-x 2 root root 6 Feb 17  2020 /var/ftp/pub/
[root@westoslinux ~]# chgrp ftp /var/ftp/pub/      ##更改组

[root@westoslinux ~]# lftp 172.25.254.129
lftp 172.25.254.129:/> cd pub/
lftp 172.25.254.129:/pub> mkdir zzz    ##创建
mkdir ok, `zzz' created
lftp 172.25.254.129:/pub> ls
-rw-------    1 14       50           2664 Aug 08 02:57 passwd
drwx------    2 14       50              6 Aug 08 03:02 zzz
lftp 172.25.254.129:/pub> rm -r zzz       ##删除
rm ok, `zzz' removed

lftp 172.25.254.129:/pub> put /etc/passwd    ##上传
2664 bytes transferred
lftp 172.25.254.129:/pub> ls
-rw-------    1 14       50           2664 Aug 08 03:28 passwd

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

匿名用户上传文件权限设定
anon_umask=xxx
anon_umask=022        ##当设定chown_username之后上传文权限将不是用此参数设定

匿名用户上传文件的用户身份设定
chown_upload=YES
chown_username=westos
chown_upload_mode=0644

登陆数量控制:
max_clients=2                ##在配置文件添加重启服务即可
上传速率控制
anon_max_rate=102400       ##在配置文件添加重启服务即可

[root@westoslinux ~]# vim /etc/vsftpd/vsftpd.conf 

29 # When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_ful    l_access
 30 anon_umask=022    ##当设定chown_username之后上传文权限将不是用此参数设定
 31 anon_upload_enable=YES
 32 anon_other_write_enable=YES
 33 anon_world_readable_only=NO    ##匿名用户可以下载不能读的文件
 34 #
50 # a different user. Note! Using "root" for uploaded files is not
 51 # recommended!
 52 chown_uploads=YES    匿名用户上传文件的用户身份设定
 53 chown_username=westos    
 54 chown_upload_mode=0644   ##权限
 55 #
[root@westoslinux ~]# systemctl restart vsftpd



[root@westoslinux ~]# lftp 172.25.254.129
lftp 172.25.254.129:~> cd pub
cd ok, cwd=/pub                 
lftp 172.25.254.129:/pub> ls
-rw-------    1 14       50           2664 Aug 08 03:28 passwd
lftp 172.25.254.129:/pub> put /etc/group
988 bytes transferred
lftp 172.25.254.129:/pub> ls
-rw-r--r--    1 1000     50            988 Aug 08 03:38 group
-rw-------    1 14       50           2664 Aug 08 03:28 passwd
lftp 172.25.254.129:/pub> put /etc/inittab 
490 bytes transferred
lftp 172.25.254.129:/pub> ls
-rw-r--r--    1 1000     50            988 Aug 08 03:38 group
-rw-r--r--    1 1000     50            490 Aug 08 03:38 inittab
-rw-------    1 14       50           2664 Aug 08 03:28 passwd

#########################################

5.本地用户的访问

登陆控制
useradd westos
useradd lee

echo lee | passwd --stdin westos

echo lee | passwd --stdin lee

lftp        172.25.254.129 -u westos

local_enable=YES|NO        #YES为可登录


写权限控制(有)
write_enable=NO|YES        ##默认可写,写功能的总开关,关闭后匿名用户也不可写

家目录控制(没有)
local_root=/westosdir

上传文件权限控制(有)
local_umask=077             ##默认上传权限为644,即umask=022

用户登录控制
/etc/vsftpd/ftpusers          ##永久黑名单(权限最大)
                                          #即改即生效
/etc/vsftpd/user_list        ##临时黑名单(可能会因为设定变成白名单)
                                          #即改即生效

用户登录白名单(没有)
userlist_deny=NO                ##设定/etc/vsftpd/user_list为白名单
                                                ##不在名单中的用户不能登录ftp

[root@westoslinux ~]# useradd lee
[root@westoslinux ~]# echo lee | passwd --stdin lee
Changing password for user lee.

[root@westoslinux ~]# lftp 172.25.254.129 -u lee
Password: 
lftp lee@172.25.254.129:~> ls
lftp lee@172.25.254.129:~> exit  
[root@westoslinux ~]# su - lee
[lee@westoslinux ~]$ pwd
/home/lee
[lee@westoslinux ~]$ touch leefile{1..5}
[lee@westoslinux ~]$ logout
[root@westoslinux ~]# lftp 172.25.254.129 -u lee
Password: 
lftp lee@172.25.254.129:~> ls                      
-rw-rw-r--    1 1001     1001            0 Aug 08 06:39 leefile1
-rw-rw-r--    1 1001     1001            0 Aug 08 06:39 leefile2
-rw-rw-r--    1 1001     1001            0 Aug 08 06:39 leefile3
-rw-rw-r--    1 1001     1001            0 Aug 08 06:39 leefile4
-rw-rw-r--    1 1001     1001            0 Aug 08 06:39 leefile5
lftp lee@172.25.254.129:~> exit
[root@westoslinux ~]# lftp 172.25.254.129 -u westos
Password: 
lftp westos@172.25.254.129:~> ls                   
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Desktop
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Documents
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Downloads
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Music
drwxr-xr-x    3 1000     1000           24 Mar 26 06:05 Pictures
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Public
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Templates
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Videos

[root@westoslinux ~]# vim /etc/vsftpd/user_list   ##添加lee
[root@westoslinux ~]# cat /etc/vsftpd/user_list   ##查看
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
lee
[root@westoslinux ~]# lftp 172.25.254.129 -u lee   ##登陆不上去
Password: 
lftp lee@172.25.254.129:~> ls                      
ls: Login failed: 530 Permission denied.          
lftp lee@172.25.254.129:~> exit
[root@westoslinux ~]# lftp 172.25.254.129 -u westos
Password: 
lftp westos@172.25.254.129:~> ls                   
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Desktop
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Documents
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Downloads
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Music
drwxr-xr-x    3 1000     1000           24 Mar 26 06:05 Pictures
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Public
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Templates
drwxr-xr-x    2 1000     1000            6 Mar 26 06:04 Videos
lftp westos@172.25.254.129:~> 

锁定用户到自己家目录中(有,是否能切换到/)
默认下用户可以浏览/,不安全,所以将其锁定在自己的家目录
chroot_local_user=YES        ##YES=锁定,
chmod u-w /home/*        ##显示权限过大时,删除写权限则不被锁定

文件当中指定用户被锁定在自己家目录(黑名单)
chmod u+w /home/*
chroot_local_user=NO        ##默认为NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list


文件当中指定用户不被锁定(白名单)
chmod u+w /home/*
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

########################################################

6.虚拟用户访问

#1.建立虚拟用户过程########
1.vim /etc/vsftpd/westos_pam                #建立认证文件模板
user1                
123
user2
123
user3
123

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

3.vim /etc/pam.d/westos

account        required        pam_userdb.so        db=/etc/vsftpd/westos_pam

auth        required                pam_userdb.so        db=/etc/vsftpd/westos.pam

4.vim /etc/vsftpd/vsftpd.conf

pam_service_name=westos        ##指定认证策略文件
guest_enable=YES                        ##指定虚拟用户功能开启
guest_username=ftp                ##指定虚拟用户在ftp服务器上的用户身份

[root@westoslinux vsftpd]# lftp 172.25.254.129 -u user1
Password: 
lftp user1@172.25.254.129:~> ls                    
drwxrwxr-x    2 0        50             35 Aug 08 03:40 pub
lftp user1@172.25.254.129:/> exit

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

mkdir -p /ftphome/westos{1..3}        ##与虚拟用户名相同才能使用$
touch /ftphome/westos1/westos1file
touch /ftphome/westos2/westos2file
touch /ftphome/westos3/westos3file
mkdir /ftphome/westos{1..3}/pub

vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER
user_sub_token=$USER

systemctl restart vsftpd

[root@westoslinux ~]# mkdir -p /ftphome/user{1..3}
[root@westoslinux ~]# touch /ftphome/user1/userfile
[root@westoslinux ~]# touch /ftphome/user1/pub
[root@westoslinux ~]# touch /ftphome/user2/user2file
[root@westoslinux ~]# touch /ftphome/user2/pub
[root@westoslinux ~]# touch /ftphome/user3/user3file
[root@westoslinux ~]# touch /ftphome/user3/pub
[root@westoslinux ~]# ls -l /ftphome/user{1..3}
/ftphome/user1:
total 0
-rw-r--r-- 1 root root 0 Aug  8 15:38 pub
-rw-r--r-- 1 root root 0 Aug  8 15:38 userfile

/ftphome/user2:
total 0
-rw-r--r-- 1 root root 0 Aug  8 15:38 pub
-rw-r--r-- 1 root root 0 Aug  8 15:38 user2file

/ftphome/user3:
total 0
-rw-r--r-- 1 root root 0 Aug  8 15:39 pub
-rw-r--r-- 1 root root 0 Aug  8 15:38 user3file

[root@westoslinux ~]# vim /etc/vsftpd/vsftpd.conf 
pam_service_name=westos
userlist_enable=YES
guest_enable=YES
guest_username=ftp
local_root=/ftphome/$USER
user_sub_token=$USER

[root@westoslinux ~]# systemctl restart vsftpd

#########用户配置独立##############

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

vim /etc/vsftpd/westos/user1

anon_upload_enable=YES

设定完成后westos2用户可以上传文件
westos1和westos3不行

热门文章

暂无图片
编程学习 ·

C语言二分查找详解

二分查找是一种知名度很高的查找算法,在对有序数列进行查找时效率远高于传统的顺序查找。 下面这张动图对比了二者的效率差距。 二分查找的基本思想就是通过把目标数和当前数列的中间数进行比较,从而确定目标数是在中间数的左边还是右边,将查…
暂无图片
编程学习 ·

GMX 命令分类列表

建模和计算操作命令: 1.1 . 创建拓扑与坐标文件 gmx editconf - 编辑模拟盒子以及写入子组(subgroups) gmx protonate - 结构质子化 gmx x2top - 根据坐标生成原始拓扑文件 gmx solvate - 体系溶剂化 gmx insert-molecules - 将分子插入已有空位 gmx genconf - 增加…
暂无图片
编程学习 ·

一文高效回顾研究生课程《数值分析》重点

数值分析这门课的本质就是用离散的已知点去估计整体,就是由黑盒子产生的结果去估计这个黑盒子。在数学里这个黑盒子就是一个函数嘛,这门课会介绍许多方法去利用离散点最大化地逼近这个函数,甚至它的导数、积分,甚至微分方程的解。…
暂无图片
编程学习 ·

在职阿里5年,一个28岁女软测工程师的心声

简单的先说一下,坐标杭州,14届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) ​ 编辑切换为居中…
暂无图片
编程学习 ·

字符串左旋c语言

目录 题目: 解题思路: 第一步: 第二步: 第三步: 总代码: 题目: 实现一个函数,可以左旋字符串中的k个字符。 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符…
暂无图片
编程学习 ·

设计模式--观察者模式笔记

模式的定义与特点 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式&#xf…
暂无图片
编程学习 ·

睡觉突然身体动不了,什么是睡眠痽痪症

很多朋友可能有这样的体验,睡觉过程中突然意识清醒,身体却动弹不了。这时候感觉非常恐怖,希望旁边有一个人推自己一下。阳光以前也经常会碰到这样的情况,一年有一百多次,那时候很害怕晚上到来,睡觉了就会出…
暂无图片
编程学习 ·

深入理解C++智能指针——浅析MSVC源码

文章目录unique_ptrshared_ptr 与 weak_ptrstd::bad_weak_ptr 异常std::enable_shared_from_thisunique_ptr unique_ptr 是一个只移型别(move-only type,只移型别还有std::mutex等)。 结合一下工厂模式,看看其基本用法&#xff…
暂无图片
编程学习 ·

@TableField(exist = false)

TableField(exist false) //申明此字段不在数据库存在,但代码中需要用到它,通知Mybatis-plus在做写库操作是忽略它。,.
暂无图片
编程学习 ·

Java Web day15

第十二章文件上传和下载 一、如何实现文件上传 要实现Web开发中的文件上传功能,通常需要完成两步操作:一.是在Web页面中添加上传输入项;二是在Servlet中读取上传文件的数据,并保存到本地硬盘中。 需要使用一个Apache组织提供一个…
暂无图片
编程学习 ·

【51nod 2478】【单调栈】【前缀和】小b接水

小b接水题目解题思路Code51nod 2478 小b接水 题目 输入样例 12 0 1 0 2 1 0 1 3 2 1 2 1输出样例 6解题思路 可以发现最后能拦住水的都是向两边递减高度(?) 不管两个高积木之间的的积木是怎样乱七八糟的高度,最后能用来装水的…
暂无图片
编程学习 ·

花了大半天写了一个UVC扩展单元调试工具

基于DIRECTSHOW 实现的,用的是MFC VS2019. 详见:http://www.usbzh.com/article/detail-761.html 获取方法 加QQ群:952873936,然后在群文件\USB调试工具&测试软件\UVCXU-V1.0(UVC扩展单元调试工具-USB中文网官方版).exe USB中文网 USB中文…
暂无图片
编程学习 ·

贪心(一):区间问题、Huffman树

区间问题 例题一:区间选点 给定 N 个闭区间 [ai,bi]请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 N,表示区间数。 接下来 …
暂无图片
编程学习 ·

C语言练习实例——费氏数列

目录 题目 解法 输出结果 题目 Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子…
暂无图片
编程学习 ·

Android开发(2): Android 资源

个人笔记整理 Android 资源 Android中的资源,一般分为两类: 系统内置资源:Android SDK中所提供的已经定义好的资源,用户可以直接拿来使用。 用户自定义资源:用户自己定义或引入的,只适用于当前应用的资源…
暂无图片
编程学习 ·

零基础如何在短时间内拿到算法offer

​算法工程师是利用算法处理事物的职业 算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。 如果一个算法有缺陷,或不适合于某个问题,执…
暂无图片
编程学习 ·

人工智能:知识图谱实战总结

人工智能python,NLP,知识图谱,机器学习,深度学习人工智能:知识图谱实战前言一、实体建模工具Protegepython,NLP,知识图谱,机器学习,深度学习 人工智能:知识图…
暂无图片
编程学习 ·

【无标题】

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…