服务器 频道

debainsarge下用postgresql给vsftp配置用户

  【IT168 服务器学院】debainsarge下用postgresql给vsftp配置虚拟用户

  1.切换到root,安装vsftpd libpam-pgsql postgresql三个软件包

  2.修改/etc/vsftpd.conf,加上下面五行
  local_enable=YES
  guest_enable=YES
  guest_username=vsftpv
  virtual_use_local_privs=YES
  write_enable=YES

  3.useradd vsftpv -d /home/ftp
  创建一个系统用户vsftpv
  cd /home/ftp
  mkdir i
  chown vsftpv:users i
  chmod 755 i

  4.编辑/etc/postgresql/pg_hba.conf
  找到文件中的这两行
  # All other connections by UNIX sockets
  local all all ident sameuser
  将第二行修改为
  local all all password

  5.重新启动postgresql

  6.切换到postgres用户(一般只能先切换到root用户,在root用户下切换到postgres用户)。
  运行createdb vsftp来创建数据库vsftp。
  运行psql vsftp,就进入了psql。
  在vsftp=#提示符下
  create user vsftpident with password ''0w03f80'' nocreatedb nocreateuser;
  创建用户vsftpident
  create table users(name varchar(10), pass varchar(40), expired boolean, needchangepass boolean);
  创建一个表user
  insert into users values(''lhy'', ''liuhuayu'',''f'',''f'');
  插入一行记录,lhy就是虚拟用户用户名,liuhuayu就是密码。
  grant select on users to vsftpident;
  加权限
  q退出psql

  7.回到root下,编辑/etc/pam.d/vsftpd
  首先把所有内容都注释掉,然后加入如下3行
  auth required pam_pgsql.so
  account required pam_pgsql.so
  password required pam_pgsql.so

  8.创建/etc/pam_pgsql.conf,内容如下:
  database = vsftp
  user = vsftpident
  password = 0w03f80
  table = users
  user_column = name
  pwd_column = pass
  expired_column = expired
  newtok_column = needchangepass

  9.重新启动vsftpd

  10.ftp 127.0.0.1可以用用户lhy密码liuhuayu登录了
  可以在i目录下有完全权限。

  注:网上似乎中文资料不多,自己摸索了一下
  但对postgresql本身不熟悉,所以不好说方式是不是笨拙。
  内容中都几乎是必须的东西,而真正用的时候还要加一些东西(比如安全和方便考虑)
  第4步是vsftp+postgres中文资料中从未没提到过的,也让我失败了很长时间和很多次,后来到处乱碰找到的问题所在。
  

0
相关文章