fo8v01pbio 发表于 2016-6-10 11:20:43

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]
查看完整版本: vsFTPd建立多个虚拟用户支持ftp不同访问