Chinaunix首页 | 论坛 | 博客
  • 博客访问: 715908
  • 博文数量: 130
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2198
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-29 12:48
个人简介

每一个“丑得人神共愤”的泡妞高 手都有一颗坚忍的心,这证明了人类 在绝境中毫不妥协的求生精神,反正丑都丑了,索性放开手脚大干一场,这就叫“无产阶级失去的是锁链,得到的是全世界”

文章分类

全部博文(130)

文章存档

2013年(130)

我的朋友

分类: LINUX

2013-05-17 17:25:36

Ubuntu下vsftpd+mysql进行虚拟账户认证

1.安装需要的软件包

  • sudo apt-get install libpam-mysql mysql-server mysql-client phpmyadmin

2.设置数据库

创建相应的数据库账户

  1. create database vsftpd character set utf8;
创建相应的数据库

  1. grant create, update, select, insert, delete, alter, drop, index on vsftpd.* to 'vsftpd'@'localhost' identified by 'vsftpd';
创建相应的表

  1. use vsftpd;
  2. create table accounts (
  3. id int not null auto_increment primary key,
  4. username varchar(128) not null unique,
  5. password varchar(128) not null
  6. );

3.配置pam

使用如下内容替换/etc/pam.d/vsftpd文件的内容

  1. auth required pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=2
  2. account required pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=2

4.添加系统账户

sudo useradd --home /home/ftp --gid nogroup -m --shell /bin/false vsftpd

5.配置vsftpd(参见 man vsftpd.conf)

启用本地登录
local_enable=YES
指定vsftpd使用的pam服务名
pam_service_name=vsftpd
(配置到这里就可以是用mysql里的账户登录了,不过数据库里面的账户需和系统账户对应)
将虚拟用户(mysql中)映射到vsftpd系统用户
guest_enable=YES
guest_username=vsftpd
指定虚拟用户登录后切换到的目录
user_sub_token=$USER
local_root=/home/ftp/$USER
使虚拟账户拥有本地账户的权限而不是默认的anonymous权限
virtual_use_local_privs=YES
(配置到这里就可以正常使用了,但是这没有使用chroot,任何用户可以遍历系统所有文件)
设置vsftpd执行权限
nopriv_user=vsftpd
启用本地登录的chroot
chroot_local_user=YES

6.测试

数据库添加虚拟用户
insert into accounts (username, password) values('wuhuaxu', password('wuhuaxu'));
为虚拟用户添加主目录,因为chroot不允许主目录有写权限,目前较好的解决方法就是在主目录下创建一个用户具有全部权限的目录
sudo mkdir -p /home/ftp/wuhuaxu/upload
sudo chown -R vsftpd:nogroup /home/ftp/wuhuaxu
sudo chmod a-w /home/ftp/wuhuaxu
登录到ftp,进行各种测试

阅读(1047) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~