美文网首页
Ubantu20搭建Vsftpd服务

Ubantu20搭建Vsftpd服务

作者: 阿当运维 | 来源:发表于2021-08-13 10:52 被阅读0次

    环境:Ubantu20.04

    需求:

    搭建ftp服务器,共享目录 /tmp/jkyy-ftp ,创建2个用户。
    jkyyrw ---对文件可读可写可删除
    jkyy ---只读权限

    搭建过程

    1. 更新源,安装vsftpd服务
    apt-get update
    apt install vsftpd
    
    1. 编辑vsftpd配置文件
      位置:/etc/vsftpd.conf
    listen=YES
    #listen_ipv6=NO
    anonymous_enable=NO  #禁止匿名用户登录
    local_enable=YES     #本地账户登录开启
    write_enable=YES     #开启全局写权限
    local_umask=022     #默认上传文件权限掩码(755)
    dirmessage_enable=YES  
    use_localtime=YES   #本地时间
    xferlog_enable=YES  #记录日志开启
    connect_from_port_20=YES   
    xferlog_file=/var/log/vsftpd.log   #日志
    xferlog_std_format=YES   #日志格式化开启
    
    #限制可访问的目录为/tmp/jkyy-ftp ,不可上翻目录,
    #chroot_local_user为是否限制用户在自己家目录下 YES为限制,NO为不限制
    #chroot_list_enable为是否启动限制用户的名单。后面的list_file可以理解为“特权用户”。
    #至于是限制名单还是放行名单,完全取决于chroot_local_user是YES还是NO。特权=取反
    chroot_local_user=YES
    chroot_list_enable=NO
    chroot_list_file=/etc/vsftpd.chroot_list
    local_root=/tmp/jkyy-ftp 
    allow_writeable_chroot=YES  #允许chroot写权限,不加会500错误
    
    #限制用户白名单
    userlist_enable=YES
    userlist_deny=NO
    userlist_file=/etc/allow_ftp_list
    
    secure_chroot_dir=/var/run/vsftpd/empty
    #pam_service_name=vsftpd
    pam_service_name=ftp 
    rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    ssl_enable=NO
    
    utf8_filesystem=YES
    
    1. 重启服务, 检测服务是否正常启动
    root@t01:~# systemctl restart vsftpd
    root@t01:~# systemctl status vsftpd
    ● vsftpd.service - vsftpd FTP server
         Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
         Active: active (running) since Fri 2021-08-13 02:29:06 UTC; 10s ago
        Process: 13475 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
       Main PID: 13487 (vsftpd)
          Tasks: 1 (limit: 2316)
         Memory: 592.0K
         CGroup: /system.slice/vsftpd.service
                 └─13487 /usr/sbin/vsftpd /etc/vsftpd.conf
    
    Aug 13 02:29:06 t01 systemd[1]: Starting vsftpd FTP server...
    Aug 13 02:29:06 t01 systemd[1]: Started vsftpd FTP server.
    
    1. 创建我们的ftp目录
    mkdir  /tmp/jkyy-ftp
    
    1. 创建ftp用户组
    groupadd ftpgroup
    
    1. 创建用户,指定家目录为我们的ftp目录。并添加到ftp组
    useradd -d /tmp/jkyy-ftp  -g ftpgroup -s  /sbin/nologin jkyyrw
    useradd -d /tmp/jkyy-ftp  -g ftpgroup -s  /sbin/nologin jkyy
    passwd jkyyrw
    passwd jkyy
    
    1. 修改ftp目录的属主属组以及权限
    chown -R jkyyrw:ftpgroup /tmp/jkyy-ftp
    chmod  -R 755 /tmp/jkyy-ftp/
    
    1. 确认修改结果
    root@t01:/tmp# ll /tmp/
    total 48
    drwxrwxrwt 11 root    root     4096 Aug 13 02:20 ./
    drwxr-xr-x 19 root    root     4096 Aug 11 10:51 ../
    drwxr-xr-x  2 jkyyrw  ftpgroup 4096 Aug 13 02:09 jkyy-ftp/
    
    1. 登录测试
    image.png

    中途遇到的问题

    1. 500 OOPS: cannot change directory:/home/xxx
      创建用户的没有指定家目录,跟着提示看/home,并无这个用户的家目录。
      解决:重新创建用户指定家目录,或者在/home下自己创建一个用户的家目录。
    2. /sbin/nologin用户无法登录ftp。其他登陆类型用户可以登录ftp
      解决:编辑/etc/shells 加入/sbin/nologin即可。etc/shells是用来说明有效shell的配置文件。
    3. 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
      这个问题是vsftpd配置没配置好,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
      解决: 加入 allow_writeable_chroot=YES
    4. 登录ftp总是出现密码错误
      苏州街:/etc/vsftpd.conf配置文件的pam_service_name=vsftpd改为pam_service_name=ftp,即可解决。pam_service_name=ftp

    相关文章

      网友评论

          本文标题:Ubantu20搭建Vsftpd服务

          本文链接:https://www.haomeiwen.com/subject/pejdbltx.html