vsFTPd建立多个虚拟用户支持ftp不同访问
首先我们假定你已经安装了vsftpd,并在/home/vsftpd 目录下建立了以下2个子目录
[*]dcp_temp
[*]dcp_bak
下面,我们要建2个虚拟用户,密码分别是用户名后加"00"
[*]mrsuser
[*]mrsadmin
使得
[*]用户mrsuser
的主目录为 dcp_temp,在该目录下只有只读权限
[*]用户mrsadmin 的主目录为 vsftpd,在该目录下拥有所有权限
创建虚拟用户数据库
创建文本文件loguser.txt
格式如下:
userid
password
于是,我们/home/loguser.txt文件的内容为
mrsuser
mrsuser00
mrsadmin
mrsadmin00
生成数据库
保存虚拟帐号和密码的文本文件无法被系统帐号直接调用哈~我们需要使用db_load命令生成db口令数据库文件.
# db_load -T -t hash -f /home/loguser.txt /etc/vsftpd/account.db
# ll /etc/vsftpd/
总计
20
-rw------- 1 root root 4449 12-25 20:34 vsftpd.conf
-rw-r--r-- 1 root root 12288 12-25 23:12 account.db
生成数据库成功
数据库文件中保存着虚拟帐号的密码信息,为了防止非法用户盗取哈,我们可以修改该文件的访问权限。生成的认证文件的权限应设置为只对
root
用户可读可写,即
600
# chmod 600 /etc/vsftpd/account.db
# ll /etc/vsftpd/account.db
-rw------- 1 root root 12288 12-25 23:12 /etc/vsftpd/account.db
配置PAM文件
为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块.PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。PAM模块配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。
#vi /etc/pam.d/vsftpd //修改vsftpd对应的PAM配置文件/etc/pam.d/vsftpd,将默认配置使用“#”全部注释,添加相应字段
#%PAM-1.0
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include system-auth
#account include system-auth
#session include system-auth
#session required pam_loginuid.so
authrequired /lib/security/pam_userdb.sodb=/etc/vsftpd/account
accountrequired /lib/security/pam_userdb.sodb=/etc/vsftpd/account
注意
:
我们上一步建立的数据库account.db在此处被使用:
db=/etc/vsftpd/account
格式是这样的,去掉.db后缀
我们建立的虚拟用户将采用PAM进行验证,这是通过/etc/vsftpd.conf文件中的 语句pam_service_name=vsftpd来启用的,稍后你将发现。
为虚拟用户创建本地系统用户
新建一个系统用户vsftpd,用户家目录为/home/vsftpd, 用户登录终端设为/bin/false(即使之不能登录系统)
#
useradd vsftpd -d /home/vsftpd -s /bin/false
#
chown vsftpd:vsftpd /home/vsftpd
/etc/vsftpd.conf
根据需要修改/etc/vsftpd.conf,一般要确保含有以下设置:
anonymous_enable=NO //禁用匿名用户登录
local_enable=YES //启用本地用户登录设置
write_enable=YES //允许使用任何可以修改文件系统的FTP的指令
dirmessage_enable=YES
connect_from_port_20=YES
chroot_local_user=YES //将所有本地用户限制在家目录中
listen=YES
guest_enable=YES //如果启用,所有的非匿名用户登录时将被视为”游客“,其名字将被映射为guest_username里所指定的名字。
guest_username=vsftpd //是刚才为虚拟用户创建本地系统用户名。
user_config_dir=/etc/vsftpd/vsftpd_user_conf//把各个用户的配置文件放到目录/etc/vsftpd/vsftpd_user_conf中
pam_service_name=vsftpd //配置vsftpd使用的PAM模块为vsftpd
max_clients=300 //设置FTP服务器最大接入客户端数为300个
max_per_ip=20 //设置每个IP地址最大连接数为20个
现在为止,我们的2个用户都可以工作了,可是它们的根目录现在都是/home/vsftpd,权限也都一样。 那么怎么才能完成我们预定的目标呢?
/etc/vsftpd/vsftpd_user_conf
在上面的配置中,有这么一行
user_config_dir=/etc/vsftpd/vsftpd_user_conf
现在,我们要把各个用户的配置文件放到目录/etc/vsftpd/vsftpd_user_conf中
#
mkdir /etc/vsftpd/vsftpd_user_conf
#
cd /etc/vsftpd/vsftpd_user_conf
vsftpd_user_conf
]#
touch mrsuser mrsadmin
mrsuser文件中的内容如下
write_enable=YES
anonymous_enable=NO
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
download_enable=YES
local_root=/home/vsftpd/dcp_temp
那么,mrsadmin的内容呢? 其实也很简单
write_enable=YES
anonymous_enable=NO
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
download_enable=YES
local_root=/home/vsftpd
这里要注意不能有空格,不然登录的时候会提示出错。 我的这里面也有问题.
重启vsftpd我们就可以看到效果了^_^
参考:
http://www.phpfans.net/article/htmls/201008/Mjk0MTU4.html
在拥有上传或创建文件的权限下,若出现 553 Could not create file
若vsftpd用户都使用同一个主目录
,假设是/home/vsftpd
这个目录的权限应该是770,owner是root,group是vsftpd
chmod 770 /home/vsftpd
chown root:vsftpd /home/vsftpd
页:
[1]