• 欢迎访问Ppabc博客网站,专注于Linux、CentOS、Apache、Nginx、MySQL、PHP等开源工具安装优化的技术博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入Ppabc博客
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏Ppabc博客吧

freebsd7.2+vsftpd+mysql通过pam验证实现虚拟用户配置(转)

Freebsd admin 9年前 (2010-01-20) 294次浏览

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.
#以上的信息显示配置成功


Selinux 中国 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:freebsd7.2+vsftpd+mysql 通过 pam 验证实现虚拟用户配置(转)
喜欢 (0)