FreeBSD7.0 PAM+MySQL+vsFTPd实现虚拟用户登陆
(2009-01-20 10:20:55)
标签:
杂谈 |
分类: 技术文章 |
一、安装所需软件 1、MySQL 2、vsFTPd 3、pam_mysql
二、配置
1、添加虚拟用户映射的系统用户vsftpd,密码为空,禁止终端登陆,并设置相应的ftp目录:
# adduser
Username: vsftpd
Full name:
Uid (Leave empty for default):
Login group [vsftpd]:
Login group is test. Invite test into other groups? []:
Login class [default]:
Shell (sh csh tcsh nologin) [sh]: nologin
Home directory [/home/vsftpd]:
Use password-based authentication? [yes]: n
Lock out the account after creation? [no]:
Username : vsftpd
Password : <disabled>
Full Name :
Uid : 1005
Class :
Groups : vsftpd
Home : /home/vsftpd
Shell : /usr/sbin/nologin
Locked : no OK? (yes/no): y
# chmod go+rx /home/vsftpd (使其目录有写的权限)
2、mysql添加用户vsftpd 密码123456 3、建立数据库vsftp和表users
# mysql> create database vsftp;
# mysql> grant select on vsftp.* to vsftpd@localhost identified by ‘123456′;
# mysql> grant select on vsftp.* to vsftpd@127.0.0.1 identified by
‘123456′;
# mysql> use vsftp;
# mysql> create table users ( id int AUTO_INCREMENT NOT NULL,name char(20) binary NOT NULL,
-> passwd char(48) binary NOT NULL,primary key(id));
4、添加测试的虚拟用户, 其密码采取加密存放的方式
mysql> insert into users(name,passwd) values(’test1′,password(’123456′));
mysql> insert into users(name,passwd) values(’test2′,password(’123456′));
查看结果(不出意外的话这步可以取消)
mysql> select * from users;
5、改/etc/pam.d/ftp文件,删除里面的内容添加下面两行
auth required /usr/lib/pam_mysql.so user=vsftpd passwd=123456
host=localhost db=vsftpd table=users
account required /usr/lib/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users
注意:上面两行没有回车符,空格用tab代替(不用tab代替也可以,个人喜好)
6、修改vsftpd.conf使其从mysql认证
# ee /usr/local/etc/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
ftpd_banner=Welcome !!! Yeah!!!
添加以下选项
guest_enable=YES
guest_username=vsftp
listen=YES 如果使用inetd方式启动,就不需要这项
pam_service_name=ftp
以上配置请自行探索,但红色字体的必须添加。
三、测试
1、启动vsftpd服务
# /usr/loclal/libexec/vsftpd &
# ftp localhost
Trying 127.0.0.1…
Connected to localhost. 220 Welcome !!! Yeah!!!
Name (localhost:XXXX):test1
331 Please specify the password. Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files. ftp>
2、让vsftpd服务随系统启动
a) 编辑rc.conf
# ee /etc/rc.conf 添加一行
/usr/local/libexec/vsftpd &
保存退出即可
b)从inetd启动 # ee /etc/inetd.conf 添加一行
ftp stream tcp nowait root /usr/local/libexec/vsftpd vsftpd
然后编辑rc.conf 添加一行
inetd_enable=YES
以上两种任选一种
3、限制用户目录和权限
在vsftpd.conf中添加一行
user_config_dir=/etc/vsftpd_user_conf
在etc目录中建立vsftpd_user_conf目录,进入vsftpd_user_conf目录新建用户配置文件(如 ee test1)
# ee test1 local_root=/ftp/ #限制用户目录为/ftp
anon_upload_enable=YES #开放用户上传权限
anon_mkdir_write_enable=YES #可新建文件夹
anon_other_write_enable=YES #可删除文件 (这项为管理权限普通用户可不加)
至此结束
二、配置
1、添加虚拟用户映射的系统用户vsftpd,密码为空,禁止终端登陆,并设置相应的ftp目录:
Username: vsftpd
Full name:
Uid (Leave empty for default):
Login group [vsftpd]:
Login group is test.
Login class [default]:
Shell (sh csh tcsh nologin) [sh]: nologin
Home directory [/home/vsftpd]:
Use password-based authentication? [yes]: n
Lock out the account after creation? [no]:
Username : vsftpd
Password : <disabled>
Full Name :
Uid : 1005
Class :
Groups : vsftpd
Home : /home/vsftpd
Shell : /usr/sbin/nologin
Locked : no OK? (yes/no): y
# chmod go+rx /home/vsftpd (使其目录有写的权限)
2、mysql添加用户vsftpd 密码123456 3、建立数据库vsftp和表users
# mysql> create database vsftp;
# mysql> grant select on vsftp.* to vsftpd@localhost identified by ‘123456′;
# mysql> grant select on vsftp.* to vsftpd@127.0.0.1
# mysql> use vsftp;
# mysql> create table users ( id int AUTO_INCREMENT NOT NULL,name char(20) binary NOT NULL,
-> passwd char(48) binary NOT NULL,primary key(id));
4、添加测试的虚拟用户, 其密码采取加密存放的方式
mysql> insert into users(name,passwd) values(’test1′,password(’123456′));
mysql> insert into users(name,passwd) values(’test2′,password(’123456′));
查看结果(不出意外的话这步可以取消)
mysql> select * from users;
5、改/etc/pam.d/ftp文件,删除里面的内容添加下面两行
account required /usr/lib/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users
注意:上面两行没有回车符,空格用tab代替(不用tab代替也可以,个人喜好)
6、修改vsftpd.conf使其从mysql认证
# ee /usr/local/etc/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
ftpd_banner=Welcome !!! Yeah!!!
添加以下选项
guest_username=vsftp
listen=YES 如果使用inetd方式启动,就不需要这项
pam_service_name=ftp
以上配置请自行探索,但红色字体的必须添加。
三、测试
1、启动vsftpd服务
# /usr/loclal/libexec/vsftpd &
# ftp localhost
Trying 127.0.0.1…
Connected to localhost. 220 Welcome !!! Yeah!!!
Name (localhost:XXXX):test1
331 Please specify the password. Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files. ftp>
2、让vsftpd服务随系统启动
a) 编辑rc.conf
# ee /etc/rc.conf 添加一行
/usr/local/libexec/vsftpd &
保存退出即可
b)从inetd启动 # ee /etc/inetd.conf 添加一行
ftp stream tcp nowait root /usr/local/libexec/vsftpd vsftpd
然后编辑rc.conf 添加一行
inetd_enable=YES
以上两种任选一种
3、限制用户目录和权限
在vsftpd.conf中添加一行
user_config_dir=/etc/vsftpd_user_conf
在etc目录中建立vsftpd_user_conf目录,进入vsftpd_user_conf目录新建用户配置文件(如 ee test1)
# ee test1 local_root=/ftp/ #限制用户目录为/ftp
anon_upload_enable=YES #开放用户上传权限
anon_mkdir_write_enable=YES #可新建文件夹
anon_other_write_enable=YES #可删除文件 (这项为管理权限普通用户可不加)
至此结束