一、需求概述
1. 背景描述
SFTP 服务面向公司不同部门的用户开放,使用各自的目录(及权限),并设置磁盘限额。
2. 信息描述
信息 |
需求 |
操作系统 |
CentOS 7.x |
OpenSSH 版本 |
OpenSSH_7.4p1 |
SFTP 服务端 IP |
192.168.10.1/24 |
物理磁盘 |
/dev/sdb |
逻辑卷 |
/dev/vgdata/lv_data |
SFTP 根目录 |
/sftp/home/ |
SSH 监听端口 |
22 和 10022 |
管理员用户与 UID |
sftpadm(600) |
管理员群组与 GID |
sftp(600) |
二、系统环境准备
1. 文件系统空间相关
# 0. 准备一块独立的物理磁盘:
[root@sftpfileserver ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE
sdb 8:16 0 100G 0 disk
# 1. 进行分区:
[root@sftpfileserver ~]# parted -s /dev/sdb mklabel gpt mkpart primary 0% 100%
# 2. 创建PV:
[root@sftpfileserver ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@sftpfileserver ~]# pvs /dev/sdb1
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- <100.00g <100.00g
# 3. 创建VG,将PV加入该VG池中:
[root@sftpfileserver ~]# vgcreate vgdata /dev/sdb1
Volume group "vgdata" successfully created
[root@sftpfileserver ~]# vgs /dev/vgdata
VG #PV #LV #SN Attr VSize VFree
vgdata 1 0 0 wz--n- <100.00g <100.00g
# 4. 使用VG新建LV空间:
[root@sftpfileserver ~]# lvcreate -l 100%Free -n lv_data vgdata
Logical volume "lv_data" created.
[root@sftpfileserver ~]# lvs /dev/vgdata/lv_data
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_data vgdata -wi-a----- <100.00g
# 5. 对LV进行格式化,标记为FS:
[root@sftpfileserver ~]# mkfs.xfs /dev/vgdata/lv_data
meta-data=/dev/vgdata/lv_data isize=512 agcount=4, agsize=6553344 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=26213376, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=12799, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# 6. 新建挂载路径:
[root@sftpfileserver ~]# mkdir -p /sftp/home
# 7. 挂载文件系统:
[root@sftpfileserver ~]# mount /dev/vgdata/lv_data /sftp/home
# 8. 更新fstab文件:
[root@sftpfileserver ~]# echo "/dev/mapper/vgdata-lv_data /sftp/home xfs defaults 0 0" >> /etc/fstab
# 9. 查看FS状态:
[root@sftpfileserver ~]# df -h /sftp/home
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vgdata-lv_data 100G 33M 100G 1% /sftp/home
[root@sftpfileserver ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 100G 0 disk
└─sdb1 8:17 0 100G 0 part
└─vgdata-lv_data 253:3 0 100G 0 lvm /sftp/home
# 10. 更新目录权限:
[root@sftpfileserver ~]# chmod 0755 /sftp
[root@sftpfileserver ~]# chmod 0755 /sftp/home
[root@sftpfileserver ~]# chown -R root:root /sftp
2. SSH 监听多端口
# 1. 新增如下配置行:
[root@sftpfileserver ~]# vi /etc/ssh/sshd_config
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
ListenAddress 0.0.0.0:22
ListenAddress 0.0.0.0:10022
# 2. 重载sshd服务:
[root@sftpfileserver ~]# systemctl reload sshd.service
三、SFTP 配置方案
方式一:SFTP 用户 “家目录” 即 “存储根目录”
0. 需求信息:
群组(部门) |
SFTP 用户 |
SFTP 用户家目录(存储根路径) |
认证方式 |
权限要求 |
dep_app |
mystic |
/sftp/home/mystic |
密码 pwd |
只能访问自己的目录,无法访问其它 SFTP 用户的目录及文件。 |
dep_db |
king |