设为首页 收藏本站
查看: 1230|回复: 0

[经验分享] vsFTPd建立多个虚拟用户支持ftp不同访问

[复制链接]

尚未签到

发表于 2016-6-10 11:20:43 | 显示全部楼层 |阅读模式
  

首先我们假定你已经安装了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口令数据库文件.
[iyunv@redhat home]# db_load -T -t hash -f /home/loguser.txt /etc/vsftpd/account.db
[iyunv@redhat home]# 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


  [iyunv@redhat home]# chmod 600 /etc/vsftpd/account.db


[iyunv@redhat home]# 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/目录,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。
  
  [iyunv@redhat home]#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(即使之不能登录系统)
[iyunv@redhat home]#


useradd vsftpd -d /home/vsftpd -s /bin/false
[iyunv@redhat home]#





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中



[iyunv@redhat home]#








mkdir /etc/vsftpd/vsftpd_user_conf



[iyunv@redhat home]#








cd /etc/vsftpd/vsftpd_user_conf



[iyunv@redhat








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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-228595-1-1.html 上篇帖子: 用Java的Socket加IO流模拟FTP功能 下篇帖子: FTP网站文件到本地的C#代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表