分类:
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服务器,可以浏览目录、下载文件,也可以上传文件,但不具备其他写入权限 |