您的位置:首页 > 数据库 > SQL

vsftp + pgsql 虚拟用户认证

2008-02-04 22:54 274 查看
软件
vsftpd /usr/ports/ftp/
postgresql /usr/ports/database/
pam_pgsql /usr/ports/security

创建数据表
su pgsql
createdb vsftp
psql vsftp

create table ftpuser (
id serial,
users varchar(32) not null,
ftppwd varchar(32) not null,
expired bool default false not null,
newtoken bool default false not null,
unique (id)
);

插入一些记录,测试用.
例如:
---------------------------------------------
|id | users | ftppwd | expired | newtoken |
-----------------------------------------
|1 | upload | upload | false | false |
---------------------------------------------

创建角色,用于pam论证时登录数据库.
create role ftplogin with password 'loginpwd'
alter role ftplogin with login

修改pam_pgsql认证设置
/etc/pam_pgsql.conf

database = vsftp #pgsql里的数据库名
user = ftplogin #登录数据库的用户名,就是刚才创建的role.
password = loginpwd #role的密码
table = ftpuser #记录用户的表名
user_column = users #ftp 用户名对应的字段
pwd_column = ftppwd #密码字段
expired_column = expired #是否失效, 为false的才能登录.
newtok_column = newtoken #是否需要改密码.

创建pam认证服务设置
/etc/pam.d/vsftpd

# auth
auth required pam_pgsql.so

# account
account required pam_pgsql.so

# password
password required pam_pgsql.so

创建一个系统用户:virtual.
可设为nologin.

修改vsftpd配置文件
/usr/local/etc/vsftpd.conf

guest_enable=YES #允许虚拟用户
guest_username=virtual #虚拟用户登录时使用此帐号运行vsftpd
pam_service_name=vsftpd #pam认证的服务名与/etc/pam.d/中的相同.
user_config_dir=/usr/local/etc/vsftpd_user_conf #为虚拟用户进行单独配置的配置文件的目录.


在/usr/local/etc/创建目录vsftpd_user_conf
其中创建与虚拟用户同名的配置文件.

/usr/local/etc/vsftpd_user_conf/upload
其内容:
local_root=/home/upload #指定upload虚拟用户的主目录是/home/upload

在/home里创建upload目录.
chown virtual:virtual upload #将所有者改为virtual.

注,为实现匿名用户只读,特定用户可读可写可删,可以进行单独配置.
关掉vsftpd.conf里的匿名用户上传权限,这时虚拟用户也不能上传.
修改vsftpd_user_conf/upload文件.
加入:
anon_world_readable_only=NO #开放匿名用户访问
anon_upload_enable=YES #开放上传权限
anon_mkdir_write_enable=YES #开放创建目录权限
这样就可以特定用户可读可写.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: