[转]VSFTP+MySQL虚拟用户配置[2]

[入库:2005年9月21日] [更新:2007年3月24日]

本文简介:

  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表示口令字段中口令的加密方式: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负责将虚拟用户限制在其自家目录,就可以避免虚拟用户的互相访问。具体做法参照前面第六步中所述,这里不再赘述。经过以上设置后,虚拟用户就可以拥有属于自己的目录了。

 leaper 回复于:2004-05-03 09:42:38
好东西,先收起来

 zqqa 回复于:2004-05-19 09:26:21
大哥,我照你方法配完了。可进去的时候总是说用户密码不对阿

 alibab 回复于:2004-05-31 11:27:25
真的不错,不过我在想,是不是可以用Qmail的Vpopmail库中的用户信息作为FTP的用户来认证,或是修改一下也可,这样,有一套用户就可以管理WEB和MAIL了, 

 alibab 回复于:2004-07-03 19:02:38
大哥, 帮帮呀,出现以下错误, lmysqlclient 是怎陌回事, 
[root@bail pam_mysql]# make
mkdir -p ./dynamic
gcc -shared -Xlinker -x -L/usr/lib/mysql -lz -o pam_mysql.so dynamic/pam_mysql.o  -lmysqlclient -lcrypt
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
make: *** [pam_mysql.so] Error 1

 alibab 回复于:2004-07-03 19:03:45
mysql_devel我已经装上了, 怎样才能去掉lmysqlclient错误呀

 alibab 回复于:2004-07-03 20:33:05
cp /usr/local/mysql/lib/libmysqlclient.10.0 /usr/lib  上面 lmysqlclien的问题解决了, 

在客户端连接时,总是提示口令不对.

找不到问题所在

 qdinfo 回复于:2005-03-01 17:10:08
好东东啊。可是按装到这一步出错了。
大家帮我看看。
我的MYSQL是用tar.gz包按装的。




qdinfo:~/pam_mysql# ls
Changelog  CREDITS  Makefile  Makefile.bsd  pam_mysql.c  Readme
qdinfo:~/pam_mysql# make
mkdir -p ./dynamic
gcc -O2 -Dlinux -DLINUX_PAM -ansi -D_POSIX_SOURCE -Wall -Wwrite-strings -Wpointer-arith -Wcast-qual -Wcast-align -Wtraditional -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wshadow -pedantic -fPIC -DPAM_DYNAMIC  -c pam_mysql.c -o dynamic/pam_mysql.o
pam_mysql.c:35:25: mysql/mysql.h: 没有那个文件或目录
pam_mysql.c:56:34: security/pam_modules.h: 没有那个文件或目录
pam_mysql.c:57:31: security/pam_misc.h: 没有那个文件或目录
pam_mysql.c:81: error: parse error before '*' token
pam_mysql.c:81: warning: type defaults to `int' in declaration of `mysql_auth'
pam_mysql.c:81: error: ISO C forbids data definition with no type or storage class
pam_mysql.c:106: error: parse error before '*' token
pam_mysql.c:109: warning: function declaration isn't a prototype
pam_mysql.c:111: error: parse error before '*' token
pam_mysql.c:113: warning: function declaration isn't a prototype
pam_mysql.c:115: error: syntax error before "int"
pam_mysql.c:115: error: parse error before '*' token
pam_mysql.c:116: warning: function declaration isn't a prototype
pam_mysql.c:117: error: syntax error before "int"
pam_mysql.c:117: error: parse error before '*' token
pam_mysql.c:118: warning: function declaration isn't a prototype
pam_mysql.c:119: error: syntax error before "int"
pam_mysql.c:119: error: parse error before '*' token
pam_mysql.c:120: warning: function declaration isn't a prototype
pam_mysql.c:121: error: syntax error before "int"
pam_mysql.c:121: error: parse error before '*' token
pam_mysql.c:122: warning: function declaration isn't a prototype
pam_mysql.c:123: error: syntax error before "int"
pam_mysql.c:123: error: parse error before '*' token
pam_mysql.c:124: warning: function declaration isn't a prototype
pam_mysql.c:125: error: syntax error before "int"
pam_mysql.c:125: error: parse error before '*' token
pam_mysql.c:126: warning: function declaration isn't a prototype
pam_mysql.c:133: error: parse error before '*' token
pam_mysql.c:133: warning: function declaration isn't a prototype
pam_mysql.c:141: error: parse error before '*' token
pam_mysql.c:141: warning: function declaration isn't a prototype
pam_mysql.c:143: error: parse error before '*' token
pam_mysql.c:144: warning: function declaration isn't a prototype
pam_mysql.c:151: error: parse error before '*' token
pam_mysql.c:151: warning: function declaration isn't a prototype
pam_mysql.c: In function `breakArgs':
pam_mysql.c:157: warning: traditional C rejects ISO C style function definitions
pam_mysql.c: In function `parseArgs':
pam_mysql.c:233: warning: traditional C rejects ISO C style function definitions
pam_mysql.c: At top level:
pam_mysql.c:391: error: parse error before '*' token
pam_mysql.c:391: warning: function declaration isn't a prototype
pam_mysql.c: In function `db_connect':
pam_mysql.c:392: error: `PAM_AUTH_ERR' undeclared (first use in this function)
pam_mysql.c:392: error: (Each undeclared identifier is reported only once
pam_mysql.c:392: error: for each function it appears in.)
pam_mysql.c:399: error: `PAM_SUCCESS' undeclared (first use in this function)
pam_mysql.c:401: warning: implicit declaration of function `mysql_init'

本文关键:[转]VSFTP+MySQL虚拟用户配置
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top