• Vsftpd: 基于PAM认证的虚拟用户和匿名用户


    目录

    环境说明
    效果说明及截图
    ①. 安装组件
    ②. 系统账户建立
    ③. 编辑vsftpd的配置文件
    ④. 生成虚拟用户的数据库文件
    ⑤. 生成一个使用vsftpd_login.db数据文件的PAM认证文件
    ⑥. 创建共享目录
    ⑦. 创建虚拟用户的配置文件
    ⑧. 开启服务测试用户权限

    环境说明

      系统: CentOS 6.6 64位

      版本: vsftpd 2.2.2

    效果说明及截图

      匿名用户登录仅有下载的权限

      虚拟用户登录有上传下载, 创建删除文件夹, 删除文件, 更改名字等权限

    ①. 安装组件

    #安装vsftpd服务相关组件
    a. yum install vsftpd -y
    #安装pam认证相关组件
    b. yum install pam -y
    #安装db4来支持文件数据库
    c. yum install db4 -y

    ②. 系统账户建立

    1. 建立vsftpd服务的宿主用户

    useradd vsftpd -s /sbin/nologin
    #默认的Vsftpd的服务宿主用户是root,但是这不符合安全性的需要。这里建立名字为vsftpd的用户,用他来作为支持vsftpd的服务宿主用户。由于该用户仅用来支持vsftpd服务用,因此没有许可他登陆系统的必要,并设定他为不能登陆系统的用户。

    2. 建立virtualuser虚拟宿主用户

    useradd virtualuser -s /sbin/nologin
    #虚拟用户并不是系统用户,也就是说这些FTP的用户在系统中是不存在的。他们的总体权限其实是集中寄托在一个在系统中的某一个用户身上的,所谓virtualuser的虚拟宿主用户,就是这样一个支持着所有虚拟用户的宿主用户。由于他支撑了ftp的所有虚拟的用户,那么他本身的权限将会影响着这些虚拟的用户,因此,处于安全性的考虑,也要非分注意对该用户的权限的控制,该用户也绝对没有登陆系统的必要,这里也设定他为不能登陆系统的用户。使用-d参数指定用户的主目录,用户主目录并不是必须存在的。如果没有存在指定的目录的话,那么它将不会被建立

    ③. 编辑vsftpd的配置文件

    1. 备份配置文件

    cp vsftpd.conf vsftpd.conf.bak

    2. vim /etc/vsftpd/vsftpd.conf

     1 否启用匿名用户
     2 anonymous_enable=YES
     3 #匿名用户根目录, 默认是/var/ftp
     4 #anon_root=/ftp
     5 local_enable=YES
     6 #本地用户根目录
     7 #local_root=/ftp
     8 #匿名用户的权限
     9 write_enable=NO
    10 #上传权限
    11 anon_upload_enable=NO
    12 #创建文件夹
    13 anon_mkdir_write_enable=NO
    14 #如果设为YES,则允许匿名登入者有新增目录的权限,只有在write_enable=YES时,此项才有效当然,匿名用户必须要有对上层目录的写入权
    15 anon_other_write_enable=YES
    16 #表示用户可以浏览FTP目录和下载文件
    17 anon_world_readable_only=NO
    18 #设定禁止上传文件更改宿主
    19 chown_uploads=NO
    20 #设定上传后文件的权限
    21 local_umask=022
    22 anon_umask=022
    23 xferlog_enable=YES
    24 xferlog_file=/var/log/vsftpd.log
    25 #设定日志使用标准的记录格式
    26 xferlog_std_format=YES
    27 #设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户
    28 nopriv_user=vsftpd
    29 #主动模式
    30 #connect_from_port_20=YES
    31 #广告信息
    32 dirmessage_enable=YES
    33 ftpd_banner=Welcome to blah FTP service.
    34 #禁止用户登出自己的FTP主目录
    35 chroot_list_enable=NO
    36 chroot_local_user=YES
    37 #禁止用户登录ftp后使用ls -R命令递归查询
    38 ls_recurse_enable=NO
    39 #设定启用虚拟用户功能
    40 guest_enable=YES
    41 #指定虚拟用户的宿主用户
    42 guest_username=virtualuser
    43 #设定虚拟用户的权限符合他们的宿主用户
    44 virtual_use_local_privs=YES
    45 #设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置
    46 pam_service_name=vsftpd
    47 #设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟
    48 用户名相同。
    49 user_config_dir=/etc/vsftpd/user_conf
    50 ## 这两行很重要!指定PAM配置文件为ftp.vu,并指定不同虚拟用户配置文件的存放路径
    51 listen=YES
    52 #pasv_min_port=30000
    53 
    54 #pasv_max_port=30999
    vsftpd.conf

    3.建立vsftpd的日志文件,并更该属主为vsftpd的服务宿主用户:

    touch /var/log/vsftpd.log
    chown vsftpd.vsftpd /var/log/vsftpd.log

    4.建立虚拟用户配置文件存放路径:

    mkdir /etc/vsftpd/user_conf/

    ④. 生成虚拟用户的数据库文件:

    1. 先创建一个logins.txt,并在里面写入用户名及密码,注意,单数行为用户名,双数行为对应的密码:

    vim /root/logins.txt
    william
    123456

    2. 将logins.txt转换成db文件:

    db_load -T -t hash -f /root/logins.txt /etc/vsftpd/vsftpd_login.db
    chmod 600 /etc/vsftpd/vsftpd_login.db

    ⑤. 生成一个使用vsftpd_login.db数据文件的PAM认证文件。

    vim /etc/pam.d/vsfptd
      auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login crypt=hash
      account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login crypt=hash
    注意: 把原有各行均注释掉,然后加入上面两行:
    注意: crypt=hash必须加上,否则依然会出priv_sock_get_result问题!
    注意: 你的系统如果是64位, 为/lib64, 32位为/lib:

    ⑥. 创建共享目录

    mkdir /var/ftp/sharepoint
    给匿名用户sharepoint文件夹授权
    setfacl -m u:ftp:rx /var/ftp/sharepoint
    getfacl /var/ftp/upload/: 验证
    说明: 匿名用户使用ftp系统用户权限, 此处控制了匿名用户对目录的权限

    ⑦. 创建虚拟用户的配置文件

    cd /etc/vsftpd/user_conf

    • vim william
      local_root=/var/ftp
      write_enable=YES
      anon_world_readable_only=NO
      anon_upload_enable=YES
      anon_mkdir_write_enable=YES
      anon_other_write_enable=YES

      注意: 配置文件以虚拟用户的名字命名

    ⑧. 开启服务测试用户权限

    service vsftpd restart

  • 相关阅读:
    ASP.NET中JS简单调用webservices的方法
    WINDOWS SERVER 2003使用IIS服务配置WEB站点(转)
    Tomcat安装配置(转)
    javascript 调用.net后台的数据 和方法
    win7下,sql2005安装,提示 iis功能和com+目录要求 的解决
    Vista或windows7远程桌面控制服务器较慢 反应迟钝
    Asp.net Ajax的使用
    记录远程登陆用户的IP
    Ext.menu.Menu 属性及基础应用
    关于VS2005 无法使用切换到设计视图的解决方法
  • 原文地址:https://www.cnblogs.com/William-Guozi/p/Linux_vsftpd.html
Copyright © 2020-2023  润新知