LINUX

关注公众号 jb51net

关闭
操作系统 > LINUX >

vsftpd 配置

jb51.net


  [root@hpe45 vsftpd]# chmod 700 /home/vsftpdguest
  ②允许虚拟用户上传文件
  write_enable=YES
  anon_upload_enable=YES
  ③允许虚拟用户修改文件名和删除文件
  anon_other_write_enable=YES
  由于以上选项的设置同样会对匿名用户生效。如果不想匿名用户趁机拥有同样的权限,最好是禁止匿名用户登录。
  在VSFTPD-1.2.0中当virtual_use_local_privs=YES时,只需write_enable=YES,虚拟用户就可以就拥有写权限。
6.5.3.3、虚拟用户的其他配置
  ①限定虚拟用户在自家目录。
  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
  ②虚拟用户的个人配置。
  如果想让个别的虚拟用户拥有自己特别的配置,同样可以建立虚拟用户的个人配置文件。在主配置文件中加入:
  user_config_dir=/etc/vsftpd/vsftpd_user_conf
  生成/etc/vsftpd/vsftpd_user_conf目录,在该目录下建立与特定虚拟用户同名的文件:
  [root@hpe45 vsftpd]# mkdir vsftpd_user_conf
  [root@hpe45 vsftpd]# cd vsftpd_user_conf
  [root@hpe45 vsftpd_user_conf]# touch xiaowang
  然后在xiaowang文件中就可以加入专对xiaowang生效的选项设置了。
  注:如果在个人配置文件中加入chroot_local_user=YES是无效的。
6.5.3.4、虚拟用户个人目录设置
  大家可以发现,无论是哪个虚拟用户,登录后所在的目录都是/home/vsftpdguest,即都是guest_username用户的自家目录。下面,介绍如何为每个虚拟用户建立自家目录。
  一种作法是在虚拟用户的个人配置文件中使用local_root选项指定虚拟用户的自家目录。以xiaowang为例,在第上步的基础上,首先/etc/vsftpd/vsftpd_user_conf/xiaowang文件中加入:
  local_root=/home/xiaowang
  新建xiaowang目录,并将权限设为vsftpdguest:
  [root@hpe45 home]# mkdir xiaowang
  [root@hpe45 home]# chown vsftpdguest.vsftpdguest ./xiaowang
6.5.4、MySQL保存虚拟用户
  本节介绍如何将虚拟用户的用户名和口令保存在MySQL的数据库中。这主要分二个部分,一是将用户和口令保存在数据库,二是设置相应的PAM认证。为了方便论述,做如下假定:数据库vsftpdvu,表users,字段name和passwd用于保存虚拟用户的用户名和口令;为了安全,只授权vsftpdguest读vsftpdvu数据库的users表。
  1、虚拟用户的用户名/口令的保存。这部分在MySQL数据库中完成。首先,创建数据库vsftpdvu以及表users,并插入虚拟用户xiaotong、xiaowang。执行以下命令:
  [root@hpe45 vsftpd]#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]#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和加密后的密码。
  2、设置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.o复制到/lib/security目录下。
  接下来,我们要设置vsftpd的PAM验证文件。打开/etc/pam.d/vsftpd文件,加入以下内容:
  auth required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
  account required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
  上面涉及到的参数,只要对应前面数据库的设置就可以明白它们的含义。这里需要说明的是crypt参数,crypt=0,口令以明文方式(不加密)保存在数据库中;crypt=1,口令使用UNIX系统的DES加密方式加密后保存在数据库中;crypt=2,口令经过MySQL的password()函数加密后保存。