freebsd7.2+vsftpd+mysql通过pam验证实现虚拟用户配置
本文主要讲解如何在freebsd7.2下采用pam验证方式通过vsftpd+mysql实现ftp虚拟用户。通过本文您将了解(本文的安装环境是freebsd7.2):
pam-mysql安装
vsftpd安装
vsftpd下ftp虚拟用户配置
概述:
为什么要用虚拟用户?由于如果用本地用户来作为ftp账号,那么这个账号除了可以用来管理ftp服务器外还可执行其他的一些系统操作,相对来说这降低了系统的安全。而虚拟账户通过pam验证方式采用专用的ftp账号,密码和账号都独立于系统账号密码之外,这类用户除了授权的ftp访问外将无法访问系统的其他资源。对于ftp的虚拟用户我们可以简单地把他理解为代理机制。虚拟客户实质上是通过本地账户来执行授权的操作。因此,在添加虚拟账户之前必须建立一个专用的ftp用户,这个用户应该可以用来访问数据库获取客户资料以用户验证虚拟用户的权限。下面标红的地方必须一样!
一、安装pam-mysql
#cd /usr/ports/security/pam-mysql
#make install clean
#cp /usr/local/lib/pam_mysql.so /usr/lib(或者 #ln -s /usr/local/lib/pam_mysql.so /usr/lib/pam_mysql.so
二、安装vsftpd
#cd /usr/ports/ftp/vsftpd
#make install clean
#cd /usr/local/etc
#ee vsftpd.conf #如果没有这个文件,则执行#cp vsftpd.conf.dist vsftpd.conf
打开vsftpd配置文件后修改这些地方:
anonymouse_enable=NO #禁止匿名用户
local_eanble=YES #启用本地用户登录
write_enable=YES #ftp管理站点肯定需要传东西
local_umask=022 #这个是默认的
dirmessage_enable=YES #显示文件夹信息
xfenlog_enable=YES #启用上下载日志
connect_from_port_20=YES
idle_session_time=300 #休眠5分钟即超时
ftpd_banner=Welcome to Ezool ftp service.
chroot_local_user=NO #将本地用户限制在自己的家目录,不建议直接打开这个选项
chroot_list_enable=YES #启用限制列表,chroot_local_user选项关闭后这里将把列表中的用户限制在本家目录下,如果上面的选项打开则相反
chroot_list_file=/usr/local/etc/vsftpd.chrot_list #你可以放置任何地方
secure_chroot_dir=/usr/local/shre/vsftpd/empty #随便填写一个空的地址给他就行
listen=YES #启用监听
background=YES #作为后台程序运行
guest_enable=YES #启用虚拟用户登录
guest_username=vsftpd_guest #将用来从本地运行的用户
pam_service_name=vsftpd #pam验证文件名
virtual_use_local_prive=YES
user_config_dir=/usr/local/etc/vsftpd/vsftpd_user_conf
#user_config_dir是设置给每个虚拟用户的配置文件存放位置,虚拟用户的配置文件名与他的名称一样,比如给ftp用户ezoolftp单独配置,则文件的存放位置应为 /usr/local/etc/vsftpd/vsftpd_user_conf/ezoolftp(文件夹的地址与user_config_diruser_config_dir设置相同)
更多关于vsftpd选项请参考官方站点的资料:http://vsftpd.beasts.org/vsftpd_conf.html
三、创建用户和用户组设置文件夹
#pw groupadd ftp #如果用户组已存在就不用添加
#pw useradd vsftpd_guest -g ftp -d /www -s /usr/local/sbin/nologin
#pw usermod -u vsftpd_guest password “ezool_org” #设置用户的密码
#以上将创建一个指向/www服务器根目录地址的用户,该用户属于ftp组,无登录权限
#chown vsftpd_guest:vsftpd_guest /www
#chmod og-w /www
四、创建数据库
#mysql -u root -p
mysql>create database vsftpdv;
mysql>use vsftpdv;
mysql>create table users(name varchar(20) binary,passwd char(16) binary);
mysql>insert into users (name,passwd) values (‘ezool_org’,password(‘ezool_org’));
#以下语句将授权vsftpd_guest访问vsftpd数据库
mysql>grant select on vsftpdv.users to vsftpd_guest@localhost identified by ‘ezool_org’;
mysql>quit
测试数据库
#mysql -u vsftpd_guest -p
Enter password:
mysql>use vsftpd;
mysql>select * from users;
… …
n rows in set (0.00 sec)
mysql > \q
Bye
五、设置pam验证
#ee /usr/local/etc/pam.d/vsftpd #这里新建一个vsftpd.conf中pam_service_name指定的文件
输入如下的内容:
auth required pam_mysql.so user=vsftpd_guest passwd=ezool_org host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=2
account required pam_mysql.so user=vsftpd_guest passwd=ezool_org host=localhost db=vsftpd table=users usercommon=name passwdcolumn=passwd crypt=2
六、设置自启动(以独立进程运行)
#ee /etc/rc.conf #添加下面的内容
vsftpd_enable=”YES”
启动、关闭、重启vsftpd
#/usr/local/etc/rc.d/vsftpd start|restart|stop
测试vsftpd
#ftp localhost
Trying 127.0.0.1…
Connected to localhost.
220 Welcome to Ezool FTP servic.
Name (localhost:root):vsftpd_guest
331 Please specify the password.
Password:
Remote system type is UNIX.
Using binary mode to transfer files.
#以上的信息显示配置成功