VSFTPD是一种在UNIX/Linux中非常安全且快速的FTP服务器,目前已经被许多大型站点所采用。VSFTPD支持将用户名和口令保存在数据库文件或数据库服务器中。VSFTPD称这种形式的用户为虚拟用户。相对于FTP的本地(系统)用户来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源,这大大增强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取FTP服务器中的文件,增加了对用户和下载的可管理性。对于需要提供下载服务,但又不希望所有人都可以匿名下载;既需要对下载用户进行管理,又考虑到主机安全和管理方便的FTP站点来说,虚拟用户是一种极好的解决方案。本文介绍在RedHat Linux 9上如何将VSFTPD的虚拟用户名和密码保存在MySQL数据库服务器中。
以上准备工作完成后,我们就可以开始编译源代码了。假定我们下载的vsftpd-1.2.0.tar.gz在/root目录,执行以下命令:
[root@hpe45 root]# tar zxvf vsftpd-1.2.0.tar.gz
[root@hpe45 root]# cd vsftpd-1.2.0
[root@hpe45 vsftpd-1.2.0]# make
[root@hpe45 vsftpd-1.2.0]# make install
[root@hpe45 vsftpd-1.2.1]# mysql -p
mysql>;create database vsftpdvu;
mysql>;use vsftpdvu;
mysql>;create table users(name char(16) binary,passwd char(16) binary);
mysql>;insert into users (name,passwd) values ('xiaotong',password('qqmywife'));
mysql>;insert into users (name,passwd) values ('xiaowang',password('ttmywife'));
mysql>;quit
然后,授权vsftpdguest可以读vsftpdvu数据库的users表。执行以下命令:
[root@hpe45 vsftpd-1.2.0]# mysql -u root mysql -p
mysql>;grant select on vsftpdvu.users to vsftpdguest@localhost identified by 'i52serial0';
mysql>;quit
user_config_dir=/etc/vsftpd
然后,生成/etc/vsftpd目录,并在该目录下建立与特定虚拟用户同名的文件:
[root@hpe45 root]# mkdir /etc/vsftpd
[root@hpe45 root]# cd /etc/vsftpd
[root@hpe45 vsftpd_user_conf]# touch xiaowang
以上的操作为虚拟用户xiaowang建立了个人配置文件/etc/vsftpd/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负责将虚拟用户限制在其自家目录,就可以避免虚拟用户的互相访问。
具体做法参照前面第六步中所述,这里不再赘述。经过以上设置后,虚拟用户就可以拥有属于自己的目录了。作者: sjx12880805 时间: 2005-08-01 11:40 标题: 【求助】vsftpd+pam_mysql+mysql验证问题 使用vsftpd-2.0.3+MySQL-devel-4.1.12+pam_mysql-0.5.tar.gz+mysql4.1.12
在登陆的时候出现
Jan 26 02:13:01 dns vsftpd: database changed.
Jan 26 02:13:01 dns vsftpd: table changed.
Jan 26 02:13:01 dns vsftpd: usercolumn changed.
Jan 26 02:13:01 dns vsftpd: passwdcolumn changed.
Jan 26 02:13:01 dns vsftpd: crypt changed.
Jan 26 02:13:01 dns vsftpd: sqllog changed.
Jan 26 02:13:01 dns vsftpd: db_connect called.
Jan 26 02:13:01 dns vsftpd: pam_mysql: MySQL err Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Jan 26 02:13:01 dns vsftpd: returning 7 .
Jan 26 02:13:01 dns vsftpd: returning 7 after db_connect.
是什么问题?请斑竹跟各位朋友帮帮忙.