热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vsftpd配置(虚拟用户、匿名用户登录)

一、ftp服务搭建(一)概述1.ftp连接及传输模式(1)控制连接TCP21,用于发送FTP命令信息

一、ftp服务搭建

(一)概述

1.ftp连接及传输模式

(1)控制连接

TCP21,用于发送FTP命令信息

(2)数据连接

TCP20,用于上传、下载数据

(3)数据连接的建立类型

                   主动模式:服务端从20端口主动向客户端发起连接

                   被动模式:服务端在指定范围内某个端口被动等待客户端连接

2.FTP传输模式

(1)文本模式

ASCII模式,以文本序列传输数据

(2)二进制模式

Binary模式,以二进制序列传输数据

3. FTP用户的类型

(1)匿名用户

anonymous或ftp

(2)本地用户

账号名称、密码等信息保存在passwd、shadow文件

(3)虚拟用户

使用独立的账号/密码数据文件

4.常见的FTP服务器程序

IIS、Serv-U

wu-ftpd、Proftpd

vsftpd(Very Secure FTP Daemon)

5.常见的FTP客户端程序

ftp命令

CuteFTP、FlashFXP、LeapFTP、Filezilla

gftp、kuftp

6.Vsftpd软件包

(1)官方站点

http://vsftpd.beasts.org/

(2)主程序

/usr/sbin/vsftpd

(3)服务名

vsftpd

(4)用户控制列表文件

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

(5)主配置文件

/etc/vsftpd/vsftpd.conf

7.安装后目录解读

解读生成的目录

没有截完!

(1)用户控制列表文件

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

(2)主配置文件

/etc/vsftpd/vsftpd.conf

(3)利用service启动的执行文件

/etc/rc.d/init.d/vsftpd

(4)ftp用户默认工作目录(宿主目录)

/var/ftp

(5)ftp用户默认登录的目录

/var/ftp/pub

(二)匿名用户访问ftp

1.安装vsftpd

2.修改配置文件

修改的项用红色标注出来了!

3.给相关的目录设置权限

给你想给匿名用户控制访问的目录设置权限!

比如给/var/ftp/pub目录设置777,这样匿名用户就可以在配置文件参数允许的情况下删除文件,创建文件了。

比如,配置文件中有这样一条参数:anon_other_write_enable=NO,那么就算是/var/ftp/pub目录的权限为777,那你也不可能删除其中的东西!

4.启动

service vsftpd start

5.测试

匿名用户登录后,会默认出现在/var/ftp目录,且只能在/var/ftp目录下活动,不能移动到服务器的根目录下!

(1)安装ftp客户端

安装6.5光盘自带的ftp包。

(2)关闭防火墙与selinux

service iptables stop

setenforce 0  (getenforce查看状态)

(3)登录测试

利用本机测试访问:  ftp  192.168.8.116  (192.168.8.116为搭建vsftpd服务的主机IP)

二、本地用户登录

(一)本地用户可以移动到服务器的根目录

不推荐,因为不安全!

1.安装vsftpd

2.修改配置文件

不修改配置文件,直接用原来默认的!

默认起作用的关键是黄色框住的!

3.添加一个用于测试的本地用户(实体用户)并修改密码

4.测试

关闭防火墙与selinux后,安装ftp客户端后再测试!详情见本文匿名用户登录测试小点下!

(1)创建目录测试

其实现在用ftp登录是直接登录到该账户自己本身的默认工作目录的!如果该账户没有默认的工作目录,那么该账户是不能通过ftp登录的!

(2)回到根目录测试

(二)本地用户只能在不能移动到服务器的根目录

1.安装vsftpd

2.修改配置文件

红色框住的参数是控制本地用户是否被束缚在该用户的默认工作目录下的参数!

存在这句,ftp登录的实体用户就不到达根目录!

3.添加一个用于测试的本地用户(实体用户)并修改密码

4.测试

关闭防火墙与selinux后,安装ftp客户端后再测试!详情见本文匿名用户登录测试小点下!

 

(1)安装客户端软件

(2)创建目录测试

(3)移动到其他目录测试

不能移动到其他目录,只能在用户的默认工作目录活动!

(三)仅一部分本地用户可以移动到服务器的根目录

1.安装vsftpd

2.修改配置文件

红色框住的第一行为不允许ftp登录的用户跳转到根目录,

第二行为开启部分用户可以跳转到根目录的功能

第三行为用户列表文件

3.创建用户列表文件

文件内容只有可以跳转到根目录的用户!

比如:

4.添加用户并改密

5.启动

6.测试

(1)安装ftp客户端

(2)切换目录测试

用su登录(su在/etc/vsftpd/chroot_list文件中)

用tang登录

三、虚拟用户登录

(一)所有虚拟用户登录到同一个目录(不设权限)

注意:当允许虚拟用户登录时,就不能实现实体用户登录!!两者不共存!

1.安装vsftpd

2.修改配置文件

配置文件的要求:允许本地用户登录,因为虚拟用户最终是映射到本地用户来登录的。

还有根据情况添加匿名用户的权限!因为虚拟用户登录上去后,权限由匿名用户权限管理!比如:anon_mkdir_write_enable=YES等

添加这三项:

guest_enable=YES

guest_username=su(要映射到的用户)

pam_service_name=vsftpd.vu(vsftpd.vu为后面编写的pam模块的名字)

3.创建实体用户

useradd  -s  /sbin/nologin   su

如果后面测试时,用虚拟用户登录后不能执行ls命令的话,就先将该实体用户的权限设置为757,等可以ls后再将该目录的权限改为755。

修改命令(chmod  -R 757  /home/su)R选项为递归参数!

4.创建虚拟账户文件

用户 密码…的格式

5.将该文件生成数据库文件

[root@sutang vsftpd]# db_load -T -t hash -f vuser.list vusers.db

{---***选项-T允许应用程序能够将文本文件转译载入进数据库。

-t hash使用hash码加密

-f 指定包含用户名和密码文本文件。此文件格式要示:奇数行用户名、偶数行密码***---}

确认该文件类型:

[root@sutang vsftpd]# file vusers.db

vusers.db: Berkeley DB (Hash, version 9, native byte-order)

6.编写pam模块

一般在/etc/pam.d目录下编写!vim  /etc/pam.d/vsftpd.vu

#%PAM-1.0

auth required pam_userdb.so db=/etc/vsftpd/vusers

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

其中vusers是上一步生成的数据库文件的文件名,不要后缀名!!!

7.启动

service vsftpd start

8.测试

虚拟用户默认登录的位置为映射的实体用户的默认工作目录下,而且不能跳到其他位置!

关闭防火墙与selinux后,安装ftp客户端后再测试!详情见本文匿名用户登录测试小点下!

(二)设置各个虚拟用户的权限的ftp

1.修改配置文件

红色框中的内容是要修改的!剩下的保持默认就好!

第一个红框:实体用户的默认权限!(因为虚拟用户映射到实体用户,所以必须给实体用户相应的权限)

第二个红框:虚拟用户和匿名用户的权限设置,这里因为要实现各个虚拟用户的权限不同,就将此全部设置成NO!这里的权限设置相当于全局权限,对所有虚拟用户的权限都有效!

第三个红框:设置虚拟用户的开启、映射的实体用户、使用的pam模块

第四个红框:设置虚拟用户的指定权限文件的目录,在该目录下是一些和虚拟用户用户名同名的文件,这些文件中存放有每一虚拟用户的指定权限!

2.创建实体用户

useradd  -s  /sbin/nologin  su

如果后面测试时,用虚拟用户登录后不能执行ls命令的话,就先将该实体用户的权限设置为757,等可以ls后再将该目录的权限改为755。

3.创建虚拟账户文件

用户 密码…的格式

4.将该文件生成数据库文件

[root@sutang vsftpd]# db_load -T -t hash -f vuser.list vusers.db

确认该文件类型:

[root@sutang vsftpd]# file vusers.db

vusers.db: Berkeley DB (Hash, version 9, native byte-order)

5.编写pam模块

#%PAM-1.0

auth required pam_userdb.so db=/etc/vsftpd/vusers

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

其中vusers是上一步生成的数据库文件的文件名,不要后缀名!!!

6.创建虚拟用户的权限目录并创建权限设置文件

此处的目录的路径一定要和配置文件中的第四个红框内容相同!

mkdir  /etc/vsftpd/vusers_config

进入该目录并创建指定的文件

我在这个目录中创建了aaa这个虚拟用户对应的配置文件,内容如上图!

7.启动

8.测试

aaa虚拟用户登录测试

bbb虚拟用户登录测试

bbb用户没写单独的配置文件,直接用的是主配置文件中的全局权限控制!(详情见配置文件第二个红框)

 


推荐阅读
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 本文详细介绍了 phpMyAdmin 的安装与配置方法,适用于多个版本的 phpMyAdmin。通过本教程,您将掌握从下载到部署的完整流程,并了解如何根据不同的环境进行必要的配置调整。 ... [详细]
  • CentOS 7.2 配置防火墙端口开放
    本文介绍如何在 CentOS 7.2 系统上配置防火墙以开放特定的服务端口,包括 FTP 服务的临时与永久开放方法,以及如何验证配置是否生效。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
author-avatar
沉醉不知归路1222
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有