- 论坛徽章:
- 0
|
配置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 (
http://sourceforge.net/projects/pam-mysql/
)
phpMyAdmin-2.11.9.5-all-languages.tar.gz (
http://www.phpmyadmin.net/
)
##########################################################################
一、安装软件包
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服务器,可以浏览目录、下载文件,也可以上传文件,但不具备其他写入权限
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/40349/showart_1997402.html |
|