FTP 服务器

FTP 服务器




FTP 服务器

    ftp  是文件传输协议 软件有 pure-Ftpd 等
    sftp 基于 SSH 的 安全文件传输协议  软件有  internal-sftp  和  vsftpd 等


internal-sftp 搭建       \\ 系统自带的 sftp工具
    
    # useradd -s /sbin/nologin -M sftp01    \\ 创建用户 sftp01 并禁止ssh登录 不创建家目录
    # passwd sftp01
    # mkdir -p /data/sftp        \\ 创建sftp根目录
    # chown root:root /data/sftp  \\ 此目录开始一直往上到系统根目录为止的目录拥有者都只能是root
    # chmod 755 /data/sftp         \\ 此目录开始一直往上到系统根目录为止都不可以具有群组写入权限 最大权限为755 设置成777会报错
    # mkdir -p /data/sftp/sftp01    \\ 创建 sftp01 的根目录
    # chown root:sftp01 /data/sftp/sftp01 \\ 此为sftp01根目录 sftp01用户并没有写权限 可以在此目录下面 创建工作目录 具有写权限
    # chmod 755 /data/sftp/sftp01          \\ 此目录权限也只能是755 否则无法限制目录 会读取到 系统根目录下的所有文件
    # usermod -d /data/sftp/sftp01 sftp01   \\ -d 修改用户登入时的目录  既此sftp用户的根目录
    # mkdir -p /data/sftp/sftp01/upload      \\ 创建上传的工作目录 如有需要 可以创建多个
    # chown sftp01:sftp01 /data/sftp/sftp01/upload   \\ 给予权限
    # vim /etc/ssh/sshd_config
        # Subsystem      sftp    /usr/libexec/openssh/sftp-server        \\ 注释掉此行    配置文件最后
      Subsystem       sftp    internal-sftp    \\ 指定使用sftp服务使用系统自带的internal-sftp 如不添加用户无法通过sftp登录
      Match Group sftp01,sftp02                 \\ 匹配用户 如果要匹配多个组 多个组之间用逗号分割
      ChrootDirectory /data/sftp/%u              \\ 这里的%u指的是账号名,/home/sftp/%u 含义是:/sftp/sftpuser
      ForceCommand    internal-sftp               \\ 指定sftp命令
      AllowTcpForwarding no                        \\ 这两行是禁止用户端口转发   如要使用端口转发就删掉这两个行
      X11Forwarding no
    # systemctl restart sshd
    # ss -tnl                                   \\ sftp 使用的 ssh 端口
    # sftp -o Port=22 sftp01@127.0.0.1           \\ 本机 linux 测试连接
    # sftp -o Port=59157 sftp01@192.168.10.13     \\ 其他 linux 测试连接

    windows 可以使用 FileZilla 或 xshell自带的 xftp 6 连接
        sftp地址 sftp://192.168.10.13
        端  口 22
        用户名 sftp01
        密  码 123456

    注:
        关于 internal-sftp 服务
            对目录的所有权限不能精确控制删除权限

        关于 /usr/sbin/nologin 和 /bin/false 的区别
            /bin/false: 什么也不做只是返回一个错误状态 然后立即退出 户会无法登录 并且不会有任何提示
            /bin/false: 是最严格的禁止login选项,一切服务都不能用。
            /sbin/nologin: 会礼貌的向用户显示一条信息 并拒绝用户登录:This account is currently not available.
            /sbin/nologin: 只是不允许login系统
            有一些软件 比如一些ftp服务器软件 对于本地非虚拟账户 只有用户有有效的shell才能使用ftp服务
            这时候就可以使用nologin使用户即不能登录系统 还能使用一些系统服务 比如ftp服务. /bin/false则不行 这是二者的重要区别之一
        关于 错误  Couldn't read packet: Connection reset by peer  是由于 权限导致的


........................................................................................................................


pure-Ftpd 搭建

    # yum install pure-ftpd                                      \\ epel 源     宝塔面板上的ftp
    # useradd pureftp01 -M -s /sbin/nologin                       \\ 不创建的家目录
    # pure-pw useradd pureftp01 -u pureftp01 -d /data/pureftp01 -m \\ 创建虚拟用户 关联系统用户 -d 设置ftp登录目录           
    # mkdir -p /data/pureftp01                          \\ -m 创建数据库文件 如果没有 -m 需单独执行命令 # pure-pw mkdb
    # chown -R pureftp01:pureftp01 /data/pureftp01
    # vim /etc/pure-ftpd/pure-ftpd.conf                              \\ 主配置文件
        PureDB                        /etc/pure-ftpd/pureftpd.pdb     \\ 虚拟用户数据库   去掉注释即可
        NoAnonymous                  yes                               \\ 关闭匿名用户访问
        # KeepAllFiles                 yes                  \\ 允许用户断点续传 这两项同开启时 不允许用户删除文件 只能上传
        # NoRename                     yes                   \\ 不允许自动重命名 这两项同开启时 不允许用户删除文件 只能上传

    # systemctl restart pure-ftpd                              \\ 新加用户 不用重启也可以



    pure-Ftpd 配置文件详解
        ChrootEveryone               yes   \\ 锁定所有用户到家目录中   默认开启
        MaxClientsNumber             50     \\ 最大的客户端数量
        MaxClientsPerIP              8       \\ 同一个ip 允许 8个连接
        DisplayDotFiles              yes      \\ 不显示隐藏文件
        AnonymousOnly                no        \\ 只允许匿名用户     默认关闭
        NoAnonymous                  no         \\ 不允许 匿名用户    默认关闭
        DontResolve                  yes         \\ 禁止反向解析
        MaxIdleTime                  15           \\ 最大空闲时间
        # LDAPConfigFile                /etc/pure-ftpd/pureftpd-ldap.conf    \\ LDAP配置文件目录
        # MySQLConfigFile               /etc/pure-ftpd/pureftpd-mysql.conf    \\ Mysql 配置文件目录
        # PGSQLConfigFile               /etc/pure-ftpd/pureftpd-pgsql.conf     \\ PGSQL 配置文件目录
        # PureDB                        /etc/pure-ftpd/pureftpd.pdb             \\ 虚拟用户数据库
        # UnixAuthentication           yes       \\ 主机认证
        LimitRecursion               10000 8      \\ 列表最大显示文件 最深8个目录
        AnonymousCanCreateDirs       no            \\ 是否允许匿名用户创建用户
        MaxLoad                      4              \\ 最多可下载的数量
        # PassivePortRange             30000 50000   \\ 主动连接的端口范围
        # ForcePassiveIP               192.168.0.1    \\ 设置地址 总是指向到 匿名目录
        # AnonymousRatio               1 10            \\ 匿名用户上传下载速度比率
        # UserRatio                    1 10             \\ 用户上传下载速度比率
        # Bind                         127.0.0.1,21      \\ 绑定的ip 和端口
        # AnonymousBandwidth           8                  \\ 匿名用户的带宽 8KB
        # UserBandwidth                8                   \\ 用户的带宽 8KB
        Umask                        133:022                \\ 文件和目录的 Umask 码
        MinUID                      1000                     \\ 用户ID要大于1000才能登录
        AllowUserFXP                 no                       \\ 是否允许用户使用FXP协议
        AllowAnonymousFXP            no                        \\ 是否允许匿名用使用FXP协议
        ProhibitDotFilesWrite        no           \\ 是否允许写入点文件
        ProhibitDotFilesRead         no            \\ 是否允许读取点文件
        AnonymousCantUpload         yes             \\ 不允许匿名用户上传
        NoChmod                      yes             \\ 不允许用户改变权限
        # KeepAllFiles                 yes            \\ 允许用户断点续传
        # Quota                        1000:10         \\ 磁盘配额
        MaxDiskUsage                   99               \\ 磁盘最大利用率
        # NoRename                     yes               \\ 不允许自动重命名
        # IPV4Only                     yes                \\ 只允许使用IPV4协议

........................................................................................................................


vsftpd 搭建

    # rpm -qa | grep vsftp
    # yum install vsftpd
    # systemctl restart vsftpd
    # ss -tnl                      \\ 21端口被监听

    # vim /etc/vsftpd/user_list      \\ 该文件用来指示的默认账户在默认情况下也不能访问ftp
    # vim /etc/vsftpd/ftpusers        \\ 文件用来指定哪些用户不能访问ftp服务器


    匿名用户访问                      \\ 匿名用户是使用 ftp 用户登录而已
        # cat /etc/passwd | grep ftp  \\ 可以看到 ftp 用户的家目录为 /var/ftp 所以ftp匿名用户登录后的目录为 /var/ftp
        # vim /etc/vsftpd/vsftpd.conf  \\ 主配置文件
            anon_upload_enable=YES      \\ 允许匿名用户
            anon_mkdir_write_enable=YES  \\ 开启匿名用户创建目录  否则匿名用户无法创建目录
            chroot_local_user=YES         \\ 不允许用户进入主目录之外的目录  默认为NO  默认ftp用户是可以向上切换到要目录之外的
            anon_root=/data/ftp01          \\ 修改匿名用户的登录目录为 /data/ftp01 默认即可 此目录ftp用户不可有写权限 否则报错
            anon_umask=022                  \\ 设置上传文件的权限为644  控制文件的下载权限  可以下载上传的文件
            anon_other_write_enable=YES      \\ 删除权限   如果没有此权限则匿名用户不能删除只能上传   *** 权限控制 ***
        # mkdir -p /data/ftp01/upload         \\ 创建工作目录
        # chown ftp:ftp /data/ftp01/upload     \\ 给所有权限      如果使用默认目录 # chown ftp:ftp /var/ftp/pub 
        # systemctl restart vsftpd

        windows 连接
            计算机的地址栏 --> ftp://192.168.10.13

        windows 可以使用 FileZilla 或 xshell自带的 xftp 6 连接
            sftp地址 ftp://192.168.10.13     \\ 由于是匿名用户 其他为空即可


    非匿名用户访问
        # vim /etc/vsftpd/vsftpd.conf
            chroot_local_user=YES               \\ 不允许用户进入主目录之外的目录
            local_root=/data/ftp01               \\ 修改登录目录  默认为用户的家目录
            local_umask=022                       \\ 下载权限     默认开启
            write_enable=YES                       \\ 写入权限   如果关闭只能下载 不能上传、删除、重命名
            #cmds_denied=DELE                       \\ 不能删除文件  如有需要 需要的话可以打开注释
            #download_enable=NO                     \\ 只能上传、删除、重命名  不能下载  需要的话可以打开注释
        # useradd -s /sbin/nologin -M vsftp01         \\ 创建用户 不允许登录 不创建家目录
        # passwd vsftp01
        # usermod -d /data/ftp01 vsftp01
        # mkdir -p /data/ftp01/upload                   \\ 创建工作目录
        # rm -r /var/ftp                                 \\ 此目录是匿名用户登录 如不使用匿名用户登录 删除即可
        # chown vsftp01:vsftp01 /data/ftp01/upload        \\ 给所有权限 
        # systemctl restart vsftpd

        # vim /etc/pam.d/vsftpd
            #auth       required    pam_shells.so            \\ 注释掉
            auth       required     pam_nologin.so            \\ 需要加一行      否则会报错 530 Login incorrect.

        windows 连接
            计算机的地址栏 --> ftp://192.168.10.13

        windows 可以使用 FileZilla 或 xshell自带的 xftp 6 连接
            sftp地址 ftp://192.168.10.13        \\ 由于是匿名用户 其他为空即可


    虚拟用户      \\ 未配置 需要的时候 自行查询即可


    注:
        vsftpd 可实现用户对文件的 上传 下载 及 删除的控制
        只上传  不能下载及删除
        只上传及下载 不能删除
        上传 下载 删除都可以













Teo

You must be logged in to post a comment