LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 812|回复: 1

Vsftpd+Mysql虚拟用户配置

[复制链接]
发表于 2006-8-3 12:10:25 | 显示全部楼层 |阅读模式
debian系统  

S1: 安装vsftp
#apt-get install vsftpd

安装完毕后会产生一个ftp用户(匿名登录),目录在/home/ftp ,配置文件/etc/vsftpd.conf

S2: 简单配置
如果只是做一些简单的工作,或者对权限不是很严格的话,匿名登录就OK了 .
修改/etc/vsftpd.conf:
debian:/etc# cat /etc/vsftpd.conf|grep -v "#"
listen=YES

anonymous_enable=YES                   #允许匿名用户登录


local_enable=YES                       #Vsftpd所在系统的用户可以登录系统

write_enable=YES                       # 允许修改 , 全局


anon_upload_enable=YES                 #匿名上传



anon_mkdir_write_enable=YES            #匿名新建和写


dirmessage_enable=YES                  #起用提示功能,欢迎词等
xferlog_enable=YES                     #打开日志文件
connect_from_port_20=YES               #控制用port模式传输数据使用2端口
xferlog_file=/var/log/vsftpd.log       #日志文件路径
ftpd_banner=Welcome to FTP service.    #登录欢迎词
secure_chroot_dir=/var/run/vsftpd      #这选项指向一个空目录,并且ftp用户对此目录无写权限
pam_service_name=vsftpd                #指明VSFTPD使用用PAM验证服务时的PAM配置文件名
rsa_cert_file=/etc/ssl/certs/vsftpd.pem     #不知道  .^-


guest_enable=YES                       #启动这项功能,所有的非匿名登入者都视为guest
guest_username=iguest                定义VSFTPD的guest用户在系统中的用户名
[separator]
以上是我电脑上的vsftpd.conf文件内容(过滤了以#开头的注释行),当然,这个只是简单的一些设置,更为复杂的设置请参考vsftpd.conf文档,比如设置速度,端口,等等 !
设置了以上一些东东之后,匿名登录就可以登录系统了.. 呵呵! 但是要注意下文件夹的权限属性,
默认的/home/ftp权限:
msn@debian:/home$ ls -ld /home/ftp/
drwxr-xr-x  5 root root 1024 2006-07-26 17:22 /home/ftp/

在/home/ftp下面新建立一个文件夹,权限为777, 那匿名用户就可以上传,新建文件de .而ftp根目录只有读的权限
debian:/etc/#mkdir /home/ftp/pub
debian:/etc/#chmod 777 /home/ftp/pub
debian:/etc/#ls -ld /home/ftp/pub/
drwxrwxrwx  4 msn nogroup 1024 2006-08-02 17:50 /home/ftp/pub/



##############        以下为设置mysql验证的虚拟用户配置     #######################



S3:安装mysql以及一个mysql通过PAM验证的包
   安装mysql这里我就跳过了,有兴趣的可以找找安装mysql的文档,
   因为vsftpd是通过PAM验证,所以我们还需要一个mysql通过PAM验证的包,在Debian下它叫做libpam-mysql
  
   debian:/etc/#apt-get install libpam-mysql


S4:新建用户iguest
   vsftpd使用PAM方式来验证虚拟用户,因为虚拟用户的信息保存在数据库中,所以我们还需要一个能够读取数据库内容的本地用户,  而且还需要设置它的本地目录.
  
debian:/etc/#mkdir /var/ftp
debian:/etc/#useradd -d /var/ftp -s /bin/false iguest  #增加iguest用户,主目录为/var/ftp,设置/bin/false不允许登录系统
debian:/etc/#chown iguest.nogroup /var/ftp   #改变/var/ftp文件夹

   
S5:创建数据库
     
debian:/etc/#mysql -uroot -p
mysql>create database ftpd;
mysql>use ftpd;
mysql> create table user (
    -> id int AUTO_INCREMENT NOT NULL,
    -> name char(20) binary NOT NULL,
    -> passwd char(50) binary NOT NULL,
    -> primary key(id)
    -> );

mysql> describe user;
+--------+----------+------+-----+---------+----------------+
| Field  | Type     | Null | Key | Default | Extra          |
+--------+----------+------+-----+---------+----------------+
| id     | int(10)  |      | PRI | NULL    | auto_increment |
| name   | char(20) |      |     |         |                |
| passwd | char(50) |      |     |         |                |
+--------+----------+------+-----+---------+----------------+
#增加用户
mysql>insert into user (name,passwd) values ('adsl','123456');
让iguest能访问ftpd和表user:
mysql>grant select on ftpd.user to iguest@localhost identified by '123456';
mysql>quit

以上是在mysql里面创建一个ftpd库和user表,用来存储vsftpd登录用户和密码的.最后一个命令是让新建的iguest用户能访问ftpd和user表,用下面命令看看是否OK
debian:/etc/# mysql -uiguest -p123456 ftpd


S5:打开vsftpd的PAM验证
   将以前的内容全部注释掉,然后加入以下内容:
   #vi /etc/pam.d/vsftpd
  
   auth required pam_mysql.so user=iguest passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0

account required pam_mysql.so user=iguest passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0
   

   上面的内容比较好理解,就最后的crypt说明下,crypt=0,口令以明文方式(不加密)保存在数据库中;crypt=1,口令使用UNIX系统的DES加密方式加密后保存在数据库中;crypt=2,口令经过MySQL的password()函数加密后保存。
我们前面用的是 mysql>insert into user (name,passwd) values ('adsl','123456'); 这是明文的所以crypt=0,如果使用了values ('test',password('123456'));那么就要crypt=2

S6:重启,完成
#/etc/init.d/vsftpd restart
msn@debian:/home$ lftp adsl@localhost
口令:
lftp adsl@localhost:~> ls
-rw-r--r--    1 0        0               0 Aug 03 02:12 test.txt
  
 楼主| 发表于 2006-8-3 12:12:48 | 显示全部楼层
vsftpd.conf 详细的说明在这里
http://www.linuxsir.cn/bbs/showthread.php?t=57186
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表