zoukankan      html  css  js  c++  java
  • 无错版Vsftpd Mysql Pam设置虚拟用户要领

     
    VSFTPD是一种在UNIX/Linux中很是安静冷静偏僻偏僻且快速的FTP做事器,现在曾经被许多大年夜型站点所回收。VSFTPD支撑将用户名和口令糊口生存在数据库文件或数据库做事器中。VSFTPD称这种体式名目的用户为虚拟用户。相凑合FTP的当地(零碎)用户来说,虚拟用户只是FTP做事器的专有用户,虚拟用户只能访问FTP做事器所供应的本钱,这大年夜大年夜加强');零碎自己的安静冷静偏僻偏僻性。相凑合匿名用户而言,虚拟用户需要用户名和密码才干获取FTP做事器中的文件,增加了对用户和下载的可处理性。凑合需要供应下载做事,但又不希望全数人都可以匿名下载;既需要对下载用户停止处理,又考虑到主机安静冷静偏僻偏僻和处理随意对于的FTP站点来说,虚拟用户是一种极好的处理方案。本文引见在RedHat Linux 9上如何将VSFTPD的虚拟用户名和密码糊口生存在MySQL数据库做事器中。
      一、VSFTPD的安插
      现在,VSFTPD的最新版本是1.2.0版。官方下载地址为ftp://vsftpd.beasts.org/users/cevans/vsftpd-1.2.0.tar.gz。在安插前,需要先做以下筹办变乱:
      VSFTPD默许设置中需要“nobody”用户。在零碎中添加此用户,假如用户曾经存在,useradd饬令有照应提示。
      [root@hpe45 root]# useradd nobody
      useradd: user nobody exists
      VSFTPD默许设置中需要“/usr/share/empty”目次。在零碎中此目次,假如目次曾经存在,mkdir饬令有照应提示。
      [root@hpe45 root]# mkdir /usr/share/empty/
      mkdir: cannot create directory '/usr/share/empty': File exists
      VSFTPD供应匿名FTP做事时,需要“ftp”用户和一个有效的匿项目次。
      [root@hpe45 root]# mkdir /var/ftp/
      [root@hpe45 root]# useradd -d /var/ftp ftp
      接上去的操难熬');刁难于ftp用户能否曾经存在都是有用的。
      [root@hpe45 root]# chown root.root /var/ftp
      [root@hpe45 root]# chmod og-w /var/ftp
      以上筹办变乱完成后,我们就可以入部下手编译源代码了。假定我们下载的vsftpd-1.2.0.tar.gz在/root目次,测验考试以下饬令:
      [root@hpe45 root]# tar zxvf vsftpd-1.2.0.tar.gz
      [root@hpe45 root]# cd vsftpd-1.2.0
      [root@hpe45 vsftpd-1.2.0]# make
      [root@hpe45 vsftpd-1.2.0]# make install
      上面的“make install”饬令将编译好的二进制文件、手册等复制到照应目次。在RHL9上,能够需要手动测验考试以下复制:
      [root@hpe45 vsftpd-1.2.0]# cp vsftpd /usr/local/sbin/vsftpd
      [root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf.5 /usr/local/share/man/man5
      [root@hpe45 vsftpd-1.2.0]# cp vsftpd.8 /usr/local/share/man/man8
      接上去,我们复制一个大略的设置文件作为根本供反面修正。
      [root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf /etc
      [root@hpe45 vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp
      复制PAM验证文件,以准许当地用户登录VSFTPD。
      [root@hpe45 vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp
      二、创建guest用户
      VSFTPD回收PAM要领验证虚拟用户。由于虚拟用户的用户名/口令被零丁糊口生存,因此在验证时,VSFTPD需要用一个零碎用户的身份来读取数据库文件或数据库做事器以完成验证,这就是VSFTPD的guest用户。这正彷佛匿名用户也需要有一个零碎用户ftp一样。固然,我们也可以把guest用户看成是虚拟用户在零碎中的代表。上面在零碎中添加vsftpdguest用户,作为VSFTPD的guest。
      [root@hpe45 vsftpd-1.2.0]# useradd vsftpdguest
      当虚拟用户登录后,地址的职位为vsftpdguest的自家目次/home/vsftpdguest。假如要让虚拟用户登录到/var/ftp等其他目次,修正vsftpdguest的自家目次即可。
      三、设置VSFTPD设置文件
      在/etc/vsftpd.conf文件中,列入以下选项:
      guest_enable=YES
      guest_username=vsftpdguest
      然后测验考试以下饬令,让VSFTPD在后台运转:
      [root@hpe45 vsftpd-1.2.0]# /usr/local/sbin/vsftpd &
      四、将虚拟用户糊口生存在MySQL数据库做事器中
      我们建立数据库vsftpdvu,表users,字段name和passwd用于糊口生存虚拟用户的用户名和口令,同时增加两个虚拟用户xiaotong和xiaowang。
      [root@hpe45 vsftpd-1.2.0]# 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 ('xiaotong',password('qqmywife'));
      mysql>;insert into users (name,passwd) values ('xiaowang',password('ttmywife'));
      mysql>;quit
      然后,受权vsftpdguest可以读vsftpdvu数据库的users表。测验考试以下饬令:
      [root@hpe45 vsftpd-1.2.0]# mysql -u root mysql -p
      mysql>;grant select on vsftpdvu.users to vsftpdguest@localhost identified by 'i52serial0';
      mysql>;quit
      假如要验证方才的操纵能否告成可以测验考试上面饬令:
      [root@hpe45 vsftpd]#mysql -u vsftpdguest -pi52serial0 vsftpdvu
      mysql>;select * from users;
      假如告成,将会列出xiaotong、xiaowang和加密后的密码
      五、设置MySQL的PAM验证
      这里我们要用到一个操纵mysql停止pam验证的开源项目(http://sourceforge.net/projects/pam-mysql/)。首先从网站下载它的递次包pam_myql-0.5.tar.gz,复制到/root目次中。在编译安插之前,要确保mysql-devel的RPM包曾经安插在你的凝滞上,假如没有请从RHL安插光盘中安插该包。然后,测验考试以下饬令:
      [root@hpe45 root]#tar xvzf pam_mysql-0.5.tar.gz
      [root@hpe45 root]#cd pam_mysql
      [root@hpe45 pam_mysql]#make
      [root@hpe45 pam_mysql]#make install
      make install这一步能够会出现错误,那只高手动将该目次下天生的pam_mysql.so复制到/lib/security目次下。
      接上去,我们要设置vsftpd的PAM验证文件。翻开/etc/pam.d/ftp文件,列入以下内容:
      auth required pam_mysql.so user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
      account required pam_mysql.so user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
      上面触及到的参数,只需对应后面数据库的设置就可以理解它们的含义。这里需要申明的是crypt参数。crypt表示口令字段中口令的加密要领:crypt=0,口令以明文要领(不加密)糊口生存在数据库中;crypt=1,口令运用UNIX零碎的DES加密要领加密后糊口生存在数据库中;crypt=2,口令经过MySQL的password()函数加密后糊口生存。
      六、进一步的虚拟用户设置
      经过以上的步伐,虚拟用户就可以正常运用了。这里引见进一步的虚拟用户设置。首先,引见虚拟用户的权限设置。
      VSFTPD-1.2.0新添了virtual_use_local_privs参数,当该参数激活(YES)时,虚拟用户运用与当地用户相同的权限。当此参数封锁(NO)时,虚拟用户运用与匿名用户相同的权限,这也就是VSFTPD-1.2.0之前版本对虚拟用户权限的处置处分要领。这两者种做法比照,后者愈加严厉一些,希奇是在有写访问的景象下。默许环境下此参数是封锁的(NO)。
      当virtual_use_local_privs=YES时,只需设置write_enable=YES,虚拟用户就可以就拥有写权限。而virtual_use_local_privs=NO时,对虚拟用户权限的设置就更多一些更严厉一些。
      控制虚拟用户阅读目次:假如让用户不克不及阅读目次,但仍可以对文件操纵,那么需要测验考试以下二个步伐:一,设置文件中,anon_world_readable_only=YES。二,虚拟用户目次的权限改为只能由vsftpdguest操纵:
      [root@hpe45 root]# chown vsftpdguest.vsftpdguest /home/vsftpdguest
      [root@hpe45 root]# chmod 700 /home/vsftpdguest
      准许虚拟用户上传文件:
      write_enable=YES
      anon_upload_enable=YES
      准许虚拟用户修正文件名和删除文件:
      anon_other_write_enable=YES
      由于以上选项的设置异样会对匿名用户失落效。假如不想匿名用户乘隙拥有异样的权限,最好是胁制匿名用户登录。
      其次,由于虚拟用户在零碎中是vsftpdguest身份,以是可以访问到零碎的其他目次。为了愈加安静冷静偏僻偏僻,我们可以将虚拟用户限制在自家目次下。有两种做法:一,在设置文件中增加以下选项
      chroot_local_user=NO
      chroot_list_enable=YES
      chroot_list_file=/etc/vsftpd.chroot_list
      然后,在/etc/vsftpd.chroot_list文件中列入虚拟用户名xiaotong和xiaowang。
      第二种做法,在设置文件中修正chroot_local_user=YES。
      经过修正后,虚拟用户登录后其根目次就限制在/home/vsftpdguest下,无法访问其他目次。
      七、虚拟用户的小我目次
      大家可以创造,无论是哪个虚拟用户,登录后地址的目次都是/home/vsftpdguest,即都是guest_username用户的自家目次。上面,引见如何为每个虚拟用户建立自家目次。首先,在主设置文件中列入以下选项:
      user_config_dir=/etc/vsftpd/vsftpd_user_conf
      然后,天生/etc/vsftpd/vsftpd_user_conf目次,并在该目次下建立与特定虚拟用户同名的文件:
      [root@hpe45 root]# mkdir /etc/vsftpd/vsftpd_user_conf
      [root@hpe45 root]# cd /etc/vsftpd/vsftpd_user_conf
      [root@hpe45 vsftpd_user_conf]# touch xiaowang
      以上的操纵为虚拟用户xiaowang建立了小我设置文件/etc/vsftpd/vsftpd_user_conf/xiaowang。接上去,在xiaowang的小我设置文件中将xiaowang的自家目次修正为/home/xiaowang,设置选项为:
      local_root=/home/xiaowang
      然后,新建xiaowang目次,并将权限设为vsftpdguest:
      [root@hpe45 vsftpd_user_conf]# mkdir /home/xiaowang
      [root@hpe45 vsftpd_user_conf]# chown vsftpdguest.vsftpdguest ./xiaowang
      [root@hpe45 vsftpd_user_conf]# chmod 600 /home/xiaowang
      经过以上设置,xiaowang登录VSFTPD后,用“pwd”指令就可以创造被自己被定位到自己的“/home/xiaowang”目次。
      从文件零碎条理来看,由于“/home/xiaowang”目次的权限是属于vsftpdguest的,以是其他的虚拟用户异样也可以访问xiaowang的自家目次。处理这个题目结果也很大略,我们只需要让VSFTPD担当将虚拟用户限制在其自家目次,就可以停止虚拟用户的互相访问。详细做法参照后面第六步中所述,这里不再赘述。经过以上设置后,虚拟用户就可以拥有属于自己的目次了。
      usr/bin/ld: cannot find -lmysqlclient
      你要把/usr/local/mysql/lib/mysql的文件拷到/usr/lib/下就不会有如许的错误了。
     
     
    来自: 新客网(www.xker.com) 详文参考:http://www.xker.com/page/e2007/0808/29326.html


    版权声明: 原创作品,准许转载,转载时请务必以超链接体式名目标明文章 原始来由 、作者信息和本声明。否则将深究法则责任。

  • 相关阅读:
    Adline网络的LMS算法与梯度下降
    Adaline网络识别印刷体数字0到9-java实现
    使用java API操作hdfs--拷贝部分文件到本地
    使用java API操作hdfs--拷贝部分文件到hdfs
    使用java API操作hdfs--读取hdfs文件并打印
    使用java API操作hdfs--通过filesystem API 来读取数据
    使用java API操作HDFS-相关环境的设置
    使用命令行的方式操作hdfs
    namenode和datanode 的namespaceID导致的问题
    The authenticity of host '172.16.33.53 (172.16.33.53)' can't be established的问题(日志六)
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975469.html
Copyright © 2011-2022 走看看