ubuntu中vsftpd虚拟用户实现不同用户不同权限

在vsftpd中要实现不同用户不同权限,可以利用虚拟用户来实现。


      vsftpd的本地用户本身是系统的用户,除了可以登录FTP服务器外,还可以登录系统使用其他系统资源,而vsftpd的虚拟用户则是FTP服务的专用用户,虚拟用户只能访问FTP服务器资源。对于只需要通过FTP对系统有读写权限,而不需要其他系统资源的用户或情况来说,采用虚拟用户方式是很适合的。


      vsftpd的虚拟用户采用单独的用户名/口令保存方式,与系统账号(passwd/shadow)分离,这大大增强了系统的安全性。vsftpd可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器中,如MySQL等。vsftpd验证虚拟用户,则采用PAM方式。由于虚拟用户的用户名/口令被单独保存,因此在验证时,vsftpd需要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是guest用户,这正如同匿名用户也需要有一个系统用户ftp一样。当然,guest用户也可以被认为是用于映射虚拟用户。




目标
    建立3个虚拟用户
      用户       密码            权限
    norco1  norcoarm1  [只允许下载]
    norco2  norcoarm2  [允许建立,修改,但是不允许删除]
    norco3  norcoarm3  [全部权限]
    对应3个子目录
    /opt/ftp/norco1
    /opt/ftp/norco2
    /opt/ftp/norco3




环境:
    Ubuntu 12.04.2
    vsftpd 2.3.5




1、安装vsftpd
    $sudo apt-get install vsftpd
    $sudo apt-get install db4.8-util


2、建立本地虚拟用户
    #useradd -m -d /home/vsftpd vsftpd
    指定目录为/home/vsftpd


3、建立虚拟用户数据库
    #mkdir /etc/vsftpd
    #vim /etc/vsftpd/loginuser.txt
    loginuser.txt文件内容:
    norco1
    norcoarm1
    norco2
    norcoarm2
    norco3
    norcoarm3
    注:奇数行为用户名,偶数行为密码。
    #db4.8_load -T -t hash -f /etc/vsftpd/loginuser.txt /etc/vsftpd/vsftpd_login.db
    #chmod 600 /etc/vsftpd/vsftpd_login.db
    生成数据库文件之后建议删除 loginuser.txt


4、建立基于vsftpd_login的PAM授权文件
    检查文件/lib/security/pam_userdb.so是否存在, 如果没有,试试下面方式
    #ln -s /lib/i386-linux-gnu/security/pam_userdb.so /lib/security/pam_userdb.so
    新建文件/etc/pam.d/vsftpd.vu
    #vim /etc/pam.d/vsftpd.vu
    vsftpd.vu文件内容:
    auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
    account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login


5、设置用户权限
    建立用来存放用户权限设置文件的目录
    #mkdir /etc/vfstpd
    #cd /etc/vfstpd
    并在该文件夹下依次建立与 loginuser.txt对应的帐号名称相同的文件
    内容可以参考下面:
    
    #vim norco1
    #[norco1]只允许下载
    anon_world_readable_only=NO
    local_root=/opt/ftp/norco1
    
    #vim norco2    
    #[norco2]允许建立,修改,但是不允许删除
    anon_world_readable_only=NO
    write_enable=YES
    anon_mkdir_write_enable=YES
    anon_upload_enable=YES
    local_root=/opt/ftp/norco2
    
    #vim norco3
    #[norco3]全部权限
    anon_world_readable_only=NO
    write_enable=YES
    anon_mkdir_write_enable=YES
    anon_upload_enable=YES
    anon_other_write_enable=YES
    local_root=/opt/ftp/norco3


6、设置vsftpd.conf
    #vim /etc/vsftpd.conf
    修改内容如下:
    listen=YES
    connect_from_port_20=YES
    ftpd_banner=Welcome to virtual FTP service.


    anonymous_enable=NO
    local_enable=YES
    write_enable=NO
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO
    chroot_local_user=YES


    guest_enable=YES
    guest_username=vsftpd


    pam_service_name=vsftpd.vu
    user_config_dir=/etc/vsftpd
    xferlog_enable=YES
    xferlog_file=/var/log/vsftpd.log


7、重新启动vsftpd
    #service vsftpd restart




【可能出现的问题】
1、无法登陆
解决方法:
    (1)检查ftp根目录目录是否存在;
    (2)检查上面设置的各个路径是否正确;
    (3)查看ftp根目录的owner属性是否是 vsftpd
        #ls -al /home
        如果不是
        #chown -R vsftpd /home/vsftpd
        #chmod -R 0755 /opt/ftp
    (4)如果出现如下错误:
         vsftpd: refusing to run with writable root inside chroot() 问题
    为了避免一个安全漏洞,从 vsftpd 2.3.5 开始,chroot 目录必须不可写。使用命令:
# chmod a-w /home/user


【日常维护】
    (1)更新帐号
        #db4.8_load -T -t hash -f /etc/vsftpd/loginuser.txt /etc/vsftpd/vsftpd_login.db
    (2)更新/etc/vsftpd下不同用户对应的权限
    (3)重启vsftpd
        #service vsftpd restart


访问方法
    ftp://norco1:norcoarm1@192.168.56.101
    ftp://norco2:norcoarm2@192.168.56.101
    ftp://norco3:norcoarm3@192.168.56.101


    ftp://norco1:norcoarm1@192.168.1.85
    ftp://norco2:norcoarm2@192.168.1.85
    ftp://norco3:norcoarm3@192.168.1.85


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值