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 可实现用户对文件的 上传 下载 及 删除的控制
只上传 不能下载及删除
只上传及下载 不能删除
上传 下载 删除都可以