热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

vsftp如何配置虚拟用户实现不同用户拥有不同权限和不同目录

本文介绍在debian上如何实现VSFTPD的虚拟用户名和密码保存在数据库文件和MySQL数据库服务器中。并达到不同用户(以三个为例)不同权限,不同目录:a.web用户,本地目录是:/var/www,可以上传下载,可以新建文件夹,可以删除文件和文件夹;b.download用户,

    本文介绍在debian上如何实现VSFTPD的虚拟用户名和密码保存在数据库文件和MySQL数据库服务器中。并达到不同用户(以三个为例)不同权限,不同目录:

    a.web用户,本地目录是:/var/www,可以上传下载,可以新建文件夹,可以删除文件和文件夹;

    b.download用户,本地目录是:/home/ftp,只能浏览和下载;

    c.admin用户 ,本地目录是:/home/ftp,可以上传下载,可以新建文件夹,可以删除和更改文件和文件夹名。

    三个帐号均不能登录系统,并且用ftp连接时锁定在自己的家目录(每个用户可以不同目录),而不能进入系统文件夹。

    基本思路:用虚拟用户访问FTP,为每个虚拟用户建立一个独立的配置文件,使不同的虚拟用户具有不同的主目录,不同的权限。

    基本流程:ftp用户访问→PAM配置文件(由vsftpd.conf中pam_service_name指定)→PAM论证→区别用户读取配置文件(由vsftpd.conf中user_config_dir指定配置文件路径,文件名即用户名)

具体步骤如下:(以下步骤由于要分方法来写,所以并没有按照流程的步骤来写,所以看上去条理不是太清晰,建议做完后自己按照流程理一理思路)

1、首选安装vsftpd:
   #apt-get install vsftpd

2、建立本地虚拟用户:
   #useradd -d /home/ftp virtual

3、在/home/ftp/创建目录并改变其属性和它的宿主
   #chown virtual /home/ftp
   #chmod 700 /home/ftp

4、改变web发布页所在目录(/var/www)属性和它的宿主
   #chown virtual /var/www
   #chmod 775 /var/www  (可根据具体情况修改这个权限)

5、创建ftp用户配制文件目录:/etc/vsftpd/user_conf
   #mkdir /etc/vsftpd/user_conf

6、在/etc/vsftpd/user_conf目录中创建以用户名命名的配置文件web、download、admin

    “download”文件内容如下:
    local_root=/home/ftp (当然,你高兴也可以设置成其它,但要注意virtual用户对此目录的权限)
    anon_world_readable_only=NO (使download用户的能下载,也只能下载;写成YES,将不能列出文件和目录)

    “admin”文件内容如下:
    local_root=/home/ftp
    anon_world_readable_only=NO
    write_enable=YES (写权限)
    anon_mkdir_write_enable=YES (新建目录权限)
    anon_upload_enable=YES(上传权限)
    anon_other_write_enable=YES(删除/重命名的权限)

    “web”文件内容如下:
    local_root=/var/www    
    anon_world_readable_only=NO
    anon_umask=022 (由于web页面的特殊性,故单独设置上传文件权限为755,此掩码值可根据具体情况更改)    
    write_enable=YES (写权限)
    anon_mkdir_write_enable=YES (新建目录权限)
    anon_upload_enable=YES(上传权限)
    anon_other_write_enable=YES(删除/重命名的权限)

7、在/etc/vsftpd.conf加入或者更改以下配置语句:
   anonymous_enable=NO (当然你也可以设成YES,同时允许匿名用户登陆)
   local_enable=YES (必须置YES,因为虚拟用户是映射到virtual这个本地用户来访问的)
   guest_enable=YES(启用虚拟用户)
   guest_username=virtual(将虚拟用户映射为本地virtual用户)
   pam_service_name=ftp.vu(指定PAM配置文件为ftp.vu)
   user_config_dir=/etc/vsftpd/user_conf(指定不同虚拟用户配置文件的存放路径)

以下步骤方法一和方法二略有不同,具体如下:

方法一(帐号和密码保存在数据库文件中) :

8、建立用户列表logins.txt 内容如下

   web        (帐号)
   ******     (用户密码)

   download   (帐号)
   *******    (用户密码)

   admin      (帐号)
   *******    (用户密码)

9、安装: libdb3-util,目的:可以使用db3_load
   #apt-get install libdb3-util

10、建立访问者数据文件
   #db3_load ?T ?t hash ?f /tmp/logins.txt /etc/vsftpd/vsftpd_login.db

11、在/etc/pam.d/中创建文件ftp.vu, 添加如下内容:
   auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
   account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login 

local_root=/data/repository/snapshot

anon_umask=022

write_enable=YES

anon_mkdir_write_enable=YES

anon_upload_enable=YES

download_enable=NO


 

乱码补丁:

其它发行版本则要手动安装:
下载源码-解压-把补丁复制到源码目录

命令:
#patch -p0 #patch -p0 #.configure
#make
#make install


方法二(帐号写入MySQL数据库):

8、安装Mysql:
   #apt-get install mysql-server mysql-client

   为了安全,请给Mysql设置密码:
   #mysqladmin password  ***** (****就是你新设的Mysql的密码)

9、将虚拟用户帐号和密码保存在Mysql数据库中:
我们建立数据库vsftpdvu,表users,字段name和passwd用于保存虚拟用户的用户名和口令,同时增加三个虚拟用户download、admin 、web。
  
  #mysql ?p  
        mysql>create database vsftpdvu;
        mysql>use vsftpdvu;
        mysql>create table users(name char(16) binary,passwd char(16) binary);
        mysql>insert into users (name,passwd) values ("download",password("****"));(此下的***是download用户的密码)
        mysql>insert into users (name,passwd) values ("admin",password("*****"));(此处的***是admin用户的密码)
          mysql>insert into users (name,passwd) values ("web",password("*****")); (此处的***是web用户的密码)
        mysql>quit
  
10、授权virtual可以读vsftpdvu数据库的users表。
  #mysql -u root mysql -p
        mysql>grant select on vsftpdvu.users to virtual@localhost identified by "*****"; ((****并非步骤8中的密码)
        mysql>quit
  
  如果要验证刚才的操作是否成功可以执行下面命令:
  #mysql -u virtual ?p**** vsftpdvu (****是步骤10中设的密码)
  mysql>select * from users;
  如果成功,将会列出download、web、apollo和加密后的密码。

11、安装MySQL的PAM验证
   #apt-get install libpam-mysql

12、我们要设置vsftpd的PAM验证文件。新建开/etc/pam.d/ftp.vu文件,加入以下内容:
  auth required pam_mysql.so user=virtual passwd=**** host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
(****是步骤10中设的密码)
account required pam_mysql.so user=virtual passwd=**** host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
(****是步骤10中设的密码)

   crypt表示口令字段中口令的加密方式:
   crypt=0,口令以明文方式(不加密)保存在数据库中;
   crypt=1,口令使用UNIX系统的DES加密方式加密后保存在数据库中;
   crypt=2,口令经过MySQL的password()函数加密后保存。

最后,重新启动VSFTPD
    #/etc/init.d/vsftpd restart


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 阿里云服务器iis设置方法与上千种Linux桌面版本相比,Linux服务器只有可怜的十几种。但想要选对适合你的企业需要的仍然不是件容易的事情,选Linux服务器首先要 ... [详细]
author-avatar
往事如烟zhang_214
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有