Chinaunix首页 | 论坛 | 博客
  • 博客访问: 134826
  • 博文数量: 58
  • 博客积分: 1411
  • 博客等级: 上尉
  • 技术积分: 750
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-25 11:41
文章分类
文章存档

2010年(20)

2009年(37)

2008年(1)

我的朋友

分类:

2009-09-09 09:49:34





配置vsftpd+MySQL的虚拟用户支持

2009.07.12 Tsengyia#126.com
http://selinux.cublog.cn

##########################################################################
系统环境:RHEL5 [ 2.6.18-8.el5xen ]
软件环境:
  RHEL5光盘自带的软件包——
    httpd-2.2.3-6.el5
    mysql-server-5.0.22-2.1
    mysql-5.0.22-2.1
    mysql-devel-5.0.22-2.1
    mysql-connector-odbc-3.51.12-2.2
    php-mysql-5.1.6-5.el5
    php-5.1.6-5.el5
    php-pdo.5.1.6-5.el5
    php-mbstring-5.1.6-5.el5
   
  需另行下载的软件包——
    pam_mysql-0.7pre2.tar.gz (

)
    phpMyAdmin-2.11.9.5-all-languages.tar.gz (

)
##########################################################################

一、安装软件包
  1. 安装配置httpd、mysql、mysql-devel、php软件包(略)
  2. 安装配置phpMyAdmin软件包,以方便通过Web界面管理MySQL数据库系统(略)
  3. 安装vsftpd软件包(略)
    —— 若不需要通过Web界面管理数据库(中的虚拟用户),可以不安装httpd、php、phpMyAdmin

二、创建映射用户及虚拟用户账号
  1. 创建映射用户virtual
shell> useradd -d /ftproot -s /sbin/nologin virtual        //无需为该系统账号设置密码
shell> chmod 755 /ftproot                                  //此目录作为所有虚拟用户账号的默认FTP根目录

  2. 创建虚拟用户账号tsengyia、kylin
shell> service mysqld start
shell> mysql -u root -p
mysql> create database vusersdb;
mysql> use vusersdb;
mysql> create table vusers(name char(16),passwd char(48),primary key (name));
mysql> insert into vusers values('tsengyia',password('123pw'));        //添加虚拟用户账号tsengyia
mysql> insert into vusers values('kylin',password('456pw'));           //添加虚拟用户账号kylin
mysql> grant select on vusersdb.vusers to
[email=virtual@localhost]virtual@localhost[/email]
identified by
[email='pw@topscrt']'pw@topscrt'[/email]
;         //为映射用户赋予查询权限

  —— 需要注意的是,从MySQL4.1版本开始,password()函数生成的加密字串需要占用41个字节,因此vusers表中的passwd字段宽度应大于或等于该值,否则将导致虚拟用户验证失败
    后续对虚拟用户账号的管理可以通过以下几种途径:
        1) 直接使用mysql语句在vusers表中添加、删除、修改账号记录
        2) 使用phpMyAdmin套件的Web管理界面管理账号记录

三、建立支持数据库的PAM认证文件
  1. 安装pam-mysql软件包
shell> tar zxvf pam_mysql-0.7pre2.tar.gz
shell> ./configure
shell> make install
shell> ln -sf /usr/lib/security/pam_mysql.so /lib/security        //建立符号连接以方便系统自动找到模块

  2. 建立PAM认证文件
shell> cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.vu
shell> vi /etc/pam.d/vsftpd.vu
#%PAM-1.0
#//以下2行内容用于虚拟用户认证,若只需使用虚拟用户账号,可以将其中的“sufficient”改为“required”,并删除其他配置参数
auth  sufficient  pam_mysql.so user=virtual
[email=passwd=pw@topscrt]passwd=pw@topscrt[/email]
host=localhost db=vusersdb table=vusers usercolumn=name passwdcolumn=passwd crypt=2
account  sufficient  pam_mysql.so user=virtual
[email=passwd=pw@topscrt]passwd=pw@topscrt[/email]
host=localhost db=vusersdb table=vusers usercolumn=name passwdcolumn=passwd crypt=2
#//此行以下为原有PAM认证文件中的配置内容,可以保留以便同时支持系统用户账号
session  optional  pam_keyinit.so force revoke
auth  required  pam_listfile.so
auth  required  pam_shells.so
auth  include  system-auth
account  include  system-auth
session  include  system-auth
session  required  pam_loginuid.so

  ——在上述pam_mysql.so的认证参数中,crypt的取值表示使用不同的密码加密方式,取值如下:
      0或者“plain”,使用明文密码;
      1或者“Y”,使用crypt()函数加密;
      2或者“mysql”,使用MySQL的password()函数加密;
      3或者“md5”,使用MD5加密;
      4或者“sha1”,使用SHA1加密。
  —— 关于pam_mysql的各项PAM配置参数可以参考源码目录中的README文档

四、调整vsftpd服务配置
  1. 修改vsftpd.conf主配置文件
shell> vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES        //启用匿名FTP用户
anon_umask=022
local_enable=YES            //启用本地系统用户
local_umask=022
chroot_local_user=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
connect_from_port_20=YES
pasv_min_port=12500
pasv_max_port=12800
userlist_enable=NO
tcp_wrappers=YES
guest_enable=YES                        //启用虚拟用户支持
guest_username=virtual
pam_service_name=vsftpd.vu              //使用的PAM认证文件
user_config_dir=/etc/vsftpd/vudir       //设置个别虚拟用户的账号配置文件所在文件夹
……
  —— 关于vsftpd.conf文件中的各配置参数,可以参考其man手册页

  2. 为个别虚拟用户建立单独的配置文件
shell> mkdir /etc/vsftpd/vudir
shell> vi /etc/vsftpd/vudir/tsengyia
anon_upload_enable=YES                 //允许上传
anon_mkdir_write_enable=YES            //允许创建目录
anon_other_write_enable=YES            //允许删除、改名文件或目录等
shell> vi /etc/vsftpd/vudir/kylin
download_enable=NO                     //禁止下载
shell> useradd jerry
shell> passwd jerry
shell> chown -R virtual.virtual /home/jerry
shell> vi /etc/vsftpd/vudir/jerry
local_root=/home/jerry                //登陆后的FTP根目录改为/home/jerry,若无此项配置则仍然对应为/ftproot
anon_upload_enable=YES

   
五、启动vsftpd服务,并进行测试
    1. 以匿名的方式登陆FTP服务器,可以浏览目录、下载文件,但不具有上传权限
    2. 以虚拟用户账号tsengyia登陆FTP服务器,可以浏览目录、下载文件,也可以上传文件、建立目录、删除及改名文件和目录等
    3. 以虚拟用户账号kylin登陆FTP服务器,可以浏览目录内容,但禁止下载文件
    4. 以系统用户账号jerry登陆FTP服务器,可以浏览目录、下载文件,也可以上传文件,但不具备其他写入权限
阅读(644) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~