Linux(ubuntu16.04LTS) 下安装并配置vsftp

本文只记录自己在安装配置过程中对vsftp的简单理解和一些遇到的问题,因此将直接跳过vsftp的安装。

理解:

1. 主要的几个文件:

    a. /etc/vsftpd.conf: vsftp的配置文件,需要根据对ftp的需求进行相应的修改。
    b. /etc/pam.d/vsftpd: 启用虚拟模式时,使用pam_service时所需的配置
    c. /etc/virtual_user: 记录虚拟用户的用户名和密码,奇数行为用户名,偶数行为密码
    d. /etc/virtual_user.db: 最后生成的db文件,用于设置 [b.]当中的参数
    e. /etc/virtual_user_config/*: 一个虚拟用户对应一个文件,并设置用户的权限
2. vsftp 的基本操作步骤:
    a. 创建真实用户并指定用户的root目录,并设置登陆方式
       useradd -d /xxx/xxx -s /sbin/nologin account
    b. passwd 为用户创建密码
    c. 创建[1.c]中的文件,并将要开放的虚拟用户按照[1.c]中的格式加入进去
    d. 使用db4 中的 db_load 将[c.]中的文件生成db
       db_load -T -t hash -f /etc/virtual_user /etc/virtual_user.db
    e. 为[1.e]中的每个用户创建对应的配置文件,并设置权限
       guest_enable=YES
       guest_username=account
       write_enable=YES
       anon_world_readable_only=NO
       anon_mkdir_write_enable=YES
       anon_other_write_enable=YES(delete)
       anon_upload_enable=YES
       anon_max_rate=200000(200kb/s)
       local_root=/xxx/xxx/xxx (to restrict virtual users' root directory)
    f. 将[e.]中的文件路径作为参数加入到[1.a]中的vsftpd.conf中去
       user_config_dir=/etc/virtual_user_config
    g. 编辑[1.b]中的内容,注释原来的内容,并添加
       auth required /lib/security/pam_userdb.so db=/etc/virtual_user
       account required /lib/security/pam_userdb.so db=/etc/virtual_user
    h. 修改[1.a]中的配置
       listen=YES(listen mode)
       local_enable=YES(yes to enable local user to login through ftp,no to diable)
       anonymous_enable=NO(disallow anonymous user to login through ftp)
       write_enable=YES
       chroot_list_enable=YES
       chroot_list_file=/etc/vsftpd.chroot_list(allow users listed in the file to login to their root)
       user_config_dir=/etc/virtual_user_config
       allow_writeable_chroot=YES
       seccomp_sandbox=NO (if you can not login, you can add this)

遇到的问题:
1. 有2次因为自己的拼写,导致一直有错误发生,所以拼写一定要仔细检查,学会查看系统log来定位问题很重要
2. 在/etc/pam.d/vsftpd中有2个地方曾遇到错误:
    a. 由于64位和32位系统的区别,[2.g]中的路径可能会发生变化,由于我的系统是64位,而上述是32位的路径,所以链接会530
       在查看了相应的log(/var/log/***.log)后,发现有 No such directory or directory not found
    b. 由于拼写account的时候掉了一个n,而导致同样的530,也是通过排查log后才发现问题  --- 2017.05.22
    c. 今天按照上述思路重新配置vsftpd的时候,成功实现了下面所述的“待解决问题”,通过挂在目录实现了不同组别的用户目录分离,但又可以彼此共享特定文件。
       目前遇到的问题是所有的用户都可以正常登陆并按照计划可以访问指定的文件夹,却都不能进行上传操作。最后通过尝试发现创建这些用户时为他们所指定的/root
       目录的“所有者和组别”都是“root” 利用 chown来更改来解决这个问题        -2017.05.23

待解决的问题:
1. 通过目录挂载的方式(或其他办法)来实现不同用户对不同目录的权限控制 (解决)
:实现两个部门单独有各自的文件夹,只能访问自己的文件夹且具有上传下载的权限,但两个部门间可以互相共享文件
另有一个管理员账户,对所有部门具有 上传,下载,删除 等权限
方案:
    创建3组账户, admin depart1 depart2, 为他们指定的/root目录都为 /home/ftp
    然后在/home/ftp下创建2个文件夹:depart1 depart2, 默认情况下这些目录的所有者和组别 都为 root:root
    在/home目录下 sudo chown -R admin:root ftp 使得该目录及下面所有子目录都归admin所有(实现admin账户的功能)
    此时仍然对于depart1 和 depart2 账户来说,由于权限原因,仍然无法进行相应的操作。
    cd /etc ---> sudo vi passwd 在最后可以发现刚刚创建的几个账户, 如:
        admin:1001:1001::/home/ftp
        depart1:1002:1002::/home/ftp
        depart2:1003:1003::/home/ftp
    将depart1 和 depart2 后面都更改为 1001:1001,这样一来,depart1 depart2账户的权限已经相当于admin了
    那么问题来了,所有的账户都是admin的权限了 ? of course not!
    通过[2.e]中的参数,为所对应为admin depart1 depart2(local users)的虚拟账户(virtual users)配置不同的权限,
    并通过local_root=/xxx/xxx/xxx 参数来限制虚拟用户登陆到ftp后所在的目录,例如:
        对于对应为depart1的虚拟用户配置来说, local_root=/home/ftp/depart1
          ~~~~   depart2~~~~~~         , local_root=/home/ftp/depart2
        这样不同部门的虚拟用户登陆上去之后只能访问自己的文件夹, 对与admin来说则应该为 local_root=/home/ftp
    接下来,部门之间如何共享呢?
    在/home/ftp/depart1 /home/ftp/depart2 下面同时建立一个"share"文件夹
    然后 sudo mount --bind /home/ftp/depart1/share /home/ftp/depart2/share,每个用户在自己的root目录下都可以访问share文件夹,
    且都具有上传,下载权限,且访问的share里面的内容是同样的。

现在大功告成了! 感触最大的是,这样的一些操作和理解,真的是需要对linux系统有一个全面的理解,反过来说摸索的过程也让我对linux系统有了一个新的认识!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值