本文介绍下,在linux系统中,为ftp创建虚拟用户的方法,这里使用vsftpd作为服务器软件,有需要的朋友参考学习下。

vsftpd虚拟用户创建示例

Linux的FTP服务支持3种用户:

1.匿名帐户

2.本地帐户

3.虚拟用户

使用虚拟用户的好处:

匿名帐户可以很好的保证FTP服务器的安全性,但是,对匿名用户的权限管理不够灵活.如果想对访问FTP的帐户给予更多的权限,就可以用本地帐户来 实现.但是,本地帐户默认情况下是可以登陆Linux系统的,这样对Linux系统来说是一个安全隐患.那么怎么能在灵活的赋予FTP用户权限的前提下, 保证FTP服务器乃至整个Linux系统的安全呢?

使用虚拟用户就是一种解决办法.

在Linux下配置FTP服务器的虚拟用户的方法。

FTP虚拟用户的工作原理:

虚拟用户并不是一个合法的Linux系统帐户,但是它可以用来登陆该系统上运行的FTP服务器.

当用户在连接上FTP服务器后,会被要求输入用户名和密码。

FTP服务器在拿到这个用户名和密码后,会调用相应的PAM认证模块对,和系统中的FTP认证文件进行相比较。

如果该用户名和密码与FTP认证文件中的某条记录相符,就通过认证,然后该帐户就被映射成一个Linux下的本地帐户,然后根据使用该本地帐户对FTP资源进行访问。

否则则断开该连接请求。

开始配置FTP虚拟用户。

vsftpd虚拟用记的配置步骤:

1.准备一个虚拟用户的口令库文件.该文件中保存的用户名和密码是用户连接FTP服务器时,需要输入的用户名和密码。

文件可以自己创建,位置无关紧要,文件格式为:奇数行为用户名,偶数行为密码.

例如:touch login.txt //创建一个名为login.txt的虚拟用户口令库文件

vi login.txt    //编辑该口令库文件

mike   //虚拟用户mike

123    //虚拟用户mike的密码

john   //虚拟用户john

321    //虚拟用户john的密码

保存退出.

2.用刚才建立的虚拟用户口令库文件生成FTP服务器的认证文件.该认证文件是一个被加密后的密文.PAM在调用相应的认证模块后,会对从FTP服务器发来的用户名和密码进行加密,然后在跟该文件进行对比,发现相符条目后,登陆用户才会被允许登陆.

复制代码 代码示例:

db_load -T -t hash -f login.txt /etc/vsftpd/vsftpd_login.db

//在运行该命令前,别忘记安装db4-utils软件包,该包包含有db_load命令等.关于该命令的使用不在本文讨论范围内.其中-f参数后跟的为刚才创建的虚拟用户口令库文件.最后的路径为生成的FTP认证文件的存放位置。

将该FTP认证文件的权限设置为600,以确保安全。

3.建立虚拟用户所需要的PAM配置文件.由于FTP服务器在接受到用户的用户名和口令后会调用PAM认证,所以我们还要创建虚拟用户的PAM配置文件.

我们将该文件保存在/etc/pam.d目录下,文件名暂时取为:vsftpd.这里要注意一点就是,该文件名要与FTP服务主配置文件(/etc/vsftpd/vsftpd.conf)中的pam_service_name=vsftpd选项的选项值相同。创建好该文件后,将下面的内容加入到该文件中:

auth  required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

修改完成,保存退出。

注意3个红色文件的文件名.该3个文件为1个文件,只不过在使用中写法不同.

4.由于用户在通过PAM的认证后要被映射成一个本地用户,所以我们还要建立一个本地用户供虚拟用户使用.我们只需要对该本地用户赋予FTP主目录的适当访问权限就行.即使FTP服务器遭到攻击,这个本地用户也没有访问其他目录的权限,相对比较安全一些.

useradd -d /home/ftpsite virtual        //用户名为virtual,主目录为FTP的根

chmod 700 /home/ftpsite        //将其权限设置为700,可以根据实际情形进行修改

5.在FTP的主配置文件中,启用FTP虚拟用户.增加如下选项即可:

guest_enable=YES

guest_username=virtual    //将虚拟用户映射成本地的哪个用户.这里用的是virtual,刚才建立的那个用户.

pam_service_name=/etc/vsftpd/vsftpd    //切记要修改该项的值

6.配置到这里就完成了,别忘记重启FTP服务进行测试.

7.为不同的虚拟用户分配权限

默认情况下,虚拟用户拥有相同的权限,就是virtual的权限,我们可以根据实际需求对不同的虚拟用户分配权限.

首先,在FTP的主配置文件中加一个选项:

复制代码 代码示例:

user_config_dir=/etc/vsftpd_user_conf    //文件名和路径都可以自己定义

mkdir /etc/vsftpd_user_conf

在该目录下编辑不同虚拟用户的权限配置文件了,比如要对mike编辑其权限。

touch mike //建立mike的权限文件.文件名要与虚拟用户名相同

根据实际需求为该文件添加下面的选项和值:

anon_world_readable_only=NO      //表示用户可以浏览FTP目录和下载文件

anon_upload_enable=YES  //表示用户可以上传文件

anon_mkdir_write_enable=YES      //表示用户有创建和删除目录的权限

anon_other_write_enable=YES      //表示用户具有文件改名和删除文件的权限

以上就是linux下配置vsftpd虚拟用户的全部内容了,希望对大家有所帮助。

Linux虚拟用户怎么建立,linux下ftp虚拟用户的创建方法相关推荐

  1. linux下ftp虚拟账号创建2

    环境:CentOS 5.0 操作系统 一.安装: 1.安装Vsftpd服务相关部件: [root@CentOS ~]# yum install vsftpd*  或 [root@CentOS ~]# ...

  2. 【Linux】【服务器】 CentOS7下远程访问mysql数据库_创建用户及授予权限_查看用户、修改密码详细步骤

    一.创建用户 CREATE USER 'username'@'%' IDENTIFIED BY 'password'; username:你将创建的用户名: %:指定该用户在哪个主机上可以登录,%表示 ...

  3. linux怎么删除mysql用户和组_linux下在mysql数据库中创建和删除用户

    第一步:进入mysql mysql -uroot msyql -p 回车输入root用户的密码(安装mysql时自己指定的) 创建一个test用户,密码位test,"%"代表联网中 ...

  4. oracle命令解锁用户,在命令行下进行Oracle用户解锁

    在DBA的日常工作中,经常遇到为Oracle用户解锁的操作:这篇文章给出在命令行下进行Oracle用户解锁的操作方法,通过几条简单的解锁语句就能完成此项工作.下面是具体的过程: 默认的scott用户是 ...

  5. oracle命令解锁用户,在命令行下进行Oracle用户解锁的语句

    在DBA的日常工作中,经常遇到为Oracle用户解锁的操作:这篇文章给出在命令行下进行Oracle用户解锁的操作方法,通过几条简单的解锁语句就能完成此项工作.下面是具体的过程: 默认的scott用户是 ...

  6. Linux(Ubuntu 16.04)下非root用户编译安装Python 3.8.6

    鬼知道我一天天都在什么破事上浪费时间.--鲁迅(不是 起因 老板舍不得买卡,需要训练一个训练起来非常耗时的模型,借了别人服务器使,人家给了一台硬件相当不错(我活这么久没见过).软件极其落后的机器,系统 ...

  7. linux 七种运行级别,linux 的七个运行级别-通过实例学习 chkconfig 服务的...-linux不能自动关闭rc0.d目录下K开头程序的解决方法_169IT.COM...

    通过实例学习 chkconfig 服务的添加.顺序,感兴趣的朋友可以参考下. chkconfig --level 345 nfs off --add name 这个选项增加一项新的服务,chkconf ...

  8. linux c++ 调用matlab,ubuntu系统下C++调用matlab程序的方法详解

    前言 最近因为工作的需要在研究C++怎么调用matlab程序,发现网上的资料较少,所以将自己学习的内容总结分享出来,下面话不多说了,来一起看看详细的介绍吧. 实验平台: ubuntu  matlab ...

  9. redis linux 运行依赖,在Ubuntu系统下安装Redis Desktop Manager的方法

    以下为你介绍在Ubuntu16.04系统下安装Redis可视化工具Redis Desktop Manager.不管是哪个Redis Desktop Manager版本,都可以采用下面的安装方式进行. ...

最新文章

  1. C++输入/输出文件
  2. 恭喜你!在25岁前看到了这篇最最靠谱的深度学习入门指南
  3. Kubernetes 一键部署实践
  4. javascript编程知识点
  5. scala下载新的版本号
  6. MDK5 安装指导书
  7. excel分离中英文
  8. 软件测试常问面试题,你真的会搭建测试环境吗?
  9. 为了防止世界被破坏,春运的抢票攻略在等着你们
  10. 计算机组装防静电措施,浅谈组装电脑如何防静电与去除机箱静电的方法
  11. C中code定义的数据要存储在ROM程序存储区基于8051单片机C语言编程实例100例都用CODE定义数组。因为51单片机RAM128字节汇编语言标号代表指令所在ROM地址标号+DB定义数据在ROM
  12. [WinError 2] 系统找不到指定的文件
  13. 乔布斯那些经典的激励我们的语录
  14. 强化学习之Grid World的时序差分算法解析【MiniWorld】SYSU_2023SpringRL
  15. python中print横向打印
  16. Mock.js语法使用与学习
  17. 批处理bat文件连接SQL Server数据库并执行相关sql代码
  18. 【STM32H7的DSP教程】第50章 STM32H7的样条插补实现,波形拟合丝滑顺畅
  19. 电动汽车智能充电桩的设计应用 具体功能介绍
  20. 分享-阿里云快速硬盘(磁盘)挂载教程

热门文章

  1. 什么是驻点和拐点_拐点和驻点的区别
  2. 在 vscode 上刷力扣 Leetcode 可以这样来
  3. mongodb查询后排序
  4. 三节点大数据环境安装教程1
  5. Android Jni 调用
  6. 当我们谈论Unidbg时我们在谈什么
  7. 漫画:什么是Linux管道
  8. 如何注册微信个人公众号,教程来啦!怎样注册微信个人公众订阅号
  9. 逆向入门,pc微信多开
  10. mac火狐浏览器不能打开任何网址问题解决方案!