红联Linux门户
Linux帮助

Vsftpd+Mysql虚拟用户配置

发布时间:2006-09-08 00:49:41来源:红联作者:莫奕
debian系统

S1: 安装vsftp

引用:

--------------------------------------------------------------------------------
[code]#apt-get install vsftpd[/code]
--------------------------------------------------------------------------------

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

S2: 简单配置
如果只是做一些简单的工作,或者对权限不是很严格的话,匿名登录就OK了 .
修改/etc/vsftpd.conf:

引用:

--------------------------------------------------------------------------------
[code]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用户在系统中的用户名[/code]

--------------------------------------------------------------------------------



以上是我电脑上的vsftpd.conf文件内容(过滤了以#开头的注释行),当然,这个只是简单的一些设置,更为复杂的设置请参考vsftpd.conf文档,比如设置速度,端口,等等 !
设置了以上一些东东之后,匿名登录就可以登录系统了.. 呵呵! 但是要注意下文件夹的权限属性,
默认的/home/ftp权限:

引用:

--------------------------------------------------------------------------------
[code]msn@debian:/home$ ls -ld /home/ftp/
drwxr-xr-x 5 root root 1024 2006-07-26 17:22 /home/ftp/[/code]

--------------------------------------------------------------------------------

在/home/ftp下面新建立一个文件夹,权限为777, 那匿名用户就可以上传,新建文件de .而ftp根目录只有读的权限

引用:

--------------------------------------------------------------------------------
[code]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/[/code]

--------------------------------------------------------------------------------

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

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

引用:

--------------------------------------------------------------------------------
[code]debian:/etc/#apt-get install libpam-mysql[/code]
--------------------------------------------------------------------------------

S4:新建用户iguest
vsftpd使用PAM方式来验证虚拟用户,因为虚拟用户的信息保存在数据库中,所以我们还需要一个能够读取数据库内容的本地用户, 而且还需要设置它的本地目录.

引用:

--------------------------------------------------------------------------------
[code]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文件夹[/code]

--------------------------------------------------------------------------------

S5:创建数据库

引用:

--------------------------------------------------------------------------------
[code]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[/code]

--------------------------------------------------------------------------------

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

引用:

--------------------------------------------------------------------------------
[code]debian:/etc/# mysql -uiguest -p123456 ftpd[/code]

--------------------------------------------------------------------------------

S5:打开vsftpd的PAM验证
将以前的内容全部注释掉,然后加入以下内容:
[code]#vi /etc/pam.d/vsftpd[/code]

引用:

--------------------------------------------------------------------------------
[code]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[/code]

--------------------------------------------------------------------------------


上面的内容比较好理解,就最后的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:重启,完成

引用:

--------------------------------------------------------------------------------
[code]#/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[/code]
文章评论

共有 0 条评论