热门标签 | 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用户没写单独的配置文件,直接用的是主配置文件中的全局权限控制!(详情见配置文件第二个红框)

 


推荐阅读
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 本文介绍了如何通过安装 rpm 包来使用 resize2fs 和 ext2online 工具进行系统文件的扩容。提供了详细的步骤和注意事项。 ... [详细]
  • Linux下MySQL 8.0.28安装指南
    本文详细介绍了在Linux系统上安装MySQL 8.0.28的步骤,包括下载数据库、解压数据包、安装必要组件和启动MySQL服务。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 基于Linux系统的Kickstart自动化服务器部署方案
    本文针对企业需求,提出了一种基于Linux系统的Kickstart自动化服务器部署方案。该方案旨在通过无盘批量安装操作系统,提高企业IT基础设施的部署效率。Kickstart是一种利用Anaconda工具实现服务器自动化安装的技术,能够显著简化和加速操作系统的安装过程。通过详细的实施规划,本文介绍了Kickstart的工作原理及其在实际部署中的应用,为企业提供了高效的自动化部署解决方案。 ... [详细]
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
  • 在网络故障排查中,tcpdump 是一款强大的工具,尤其在 Linux 环境下。尽管开发环境中问题较少,但在测试或生产环境中,往往会遇到各种难以预料的异常情况。通过在问题发生的环境中启用 tcpdump 进行抓包,并重现问题,可以获取到宝贵的原始数据,为问题的诊断提供关键线索。本文将详细介绍如何使用 tcpdump 进行实战操作,帮助读者掌握这一技能。 ... [详细]
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社区 版权所有