服务器用户 SOP
本部分适用于
如果你负责服务器维护、目录结构与系统运行稳定性,这一章就是为你准备的。
你的工作重点:
- 确保目录在服务器上"真实存在"
- 确保目录"可访问"(Linux 权限正确)
- 建立和维护统一的目录结构
你不负责:
- 用户权限配置(这是 Admin 的工作)
- 部门逻辑划分(这也是 Admin 的工作)
- Virtual Folder 和 Group 的管理(这些都是 Admin 的工作)
核心原则(必须理解)
SFTPGo 不能绕过 Linux 文件系统权限
这是最重要的一条原则。
SFTPGo 的任何权限配置都不能绕过 Linux 文件系统权限。
即使 Admin 在 SFTPGo 后台把权限配置得再完美,如果 Linux 系统层面不允许访问,用户还是会被拒绝。
两层权限是"且"的关系:
- Linux 允许 且 SFTPGo 允许 = 用户能访问 ✅
- Linux 允许但 SFTPGo 不允许 = 用户不能访问 ❌
- Linux 不允许但 SFTPGo 允许 = 用户不能访问 ❌
你的职责: 你只负责确保 Linux 这一层是"允许"的。至于 SFTPGo 那一层怎么配置,那是 Admin 的事。
推荐服务器目录结构(标准)
为了保证整个系统清晰、可维护,我们使用统一的目录结构:
/srv/sftpgo/data/
├── home/ # 用户个人目录
│ └── user@example.com/
└── departments/ # 部门共享目录
└── tech/
└── shared/
设计说明:
home/:仅用于用户个人空间,每个用户有自己的子目录departments/:仅用于部门共享目录,所有 Virtual Folder 映射的目录都在这里- 不在其他路径散落共享数据,保持结构清晰
创建共享目录的标准流程
当需要为某个部门创建新的共享目录时,按照以下步骤操作:
1. 创建真实目录
mkdir -p /srv/sftpgo/data/departments/tech/shared
注意:
- 目录路径要遵循标准结构:
/srv/sftpgo/data/departments/[部门名]/[目录名] - 使用
-p参数可以自动创建父目录
2. 设置合理的属主与权限
# 假设 SFTPGo 运行用户为 sftpgo
chown -R sftpgo:sftpgo /srv/sftpgo/data/departments/tech/shared
chmod -R 755 /srv/sftpgo/data/departments/tech/shared
重要提示:
- 必须确保 SFTPGo 运行用户(通常是
sftpgo)对该目录有读写权限 - 如果权限设置不对,即使 Admin 在后台配置得再完美,用户也会看到
Permission denied - 设置完成后,可以用
ls -la检查权限是否正确
3. 服务器端只负责"真实存在 + 可访问"
你只需要确保:
- ✅ 目录在服务器上真实存在
- ✅ SFTPGo 运行用户能访问这个目录
你不负责:
- ❌ 不在这里处理用户逻辑(哪些用户能访问,这是 Admin 的工作)
- ❌ 不在这里做部门权限细分(这也是 Admin 的工作)
- ❌ 权限细分由 SFTPGo Admin 通过 Group 管理,不是你的职责
完成后的后续工作:
- 告诉 Admin 目录路径(如:
/srv/sftpgo/data/departments/tech/shared) - 让 Admin 去配置 Virtual Folder 和 Group
- 你的工作到这里就完成了
系统初始化配置(首次部署时)
如果是首次部署 SFTPGo,需要先完成以下配置:
1. 安装 SFTPGo 服务
按照 SFTPGo 官方文档进行安装。
2. 配置基本参数
- 设置 SFTPGo 运行用户(通常是
sftpgo) - 配置数据目录路径(统一使用
/srv/sftpgo/data/)
3. 创建标准目录结构
# 创建基础目录
mkdir -p /srv/sftpgo/data/home
mkdir -p /srv/sftpgo/data/departments
# 设置属主和权限
chown -R sftpgo:sftpgo /srv/sftpgo/data
chmod -R 755 /srv/sftpgo/data
4. 设置管理员账户
创建初始 Admin 账户,用于后续的 SFTPGo 后台管理。
5. 启动服务
systemctl start sftpgo
systemctl enable sftpgo # 设置开机自启
网络和存储配置
网络配置
- 端口设置:默认 SFTP 端口 22,Web 管理端口按需配置
- SSL/TLS 配置:配置 SSL 证书确保安全传输
- 防火墙规则:开放必要的端口(如 22、Web 管理端口)
存储配置
- 存储路径设置:统一使用
/srv/sftpgo/data/作为数据根目录 - 备份策略:定期备份
/srv/sftpgo/data/目录 - 磁盘配额:监控磁盘使用情况,避免磁盘空间不足
服务器端禁止事项
为了保持系统的稳定性和可维护性,以下操作是严格禁止的:
❌ 不直接修改 SFTPGo 系统文件
- 不要直接修改
/usr/share/sftpgo/下的模板或 CSS - 不要手动编辑
/var/lib/sftpgo/内的数据文件 - 这些文件由 SFTPGo 管理,手动修改可能导致配置丢失或系统异常
❌ 不在服务器层面"模拟权限"
- 不要试图通过 Linux 权限来"模拟"用户权限控制
- 例如:不要给不同用户设置不同的 Linux 权限来区分部门
- 权限逻辑应该完全交由 SFTPGo 的 Group 管理,你只负责"能不能访问",不负责"该不该访问"
❌ 不随意修改目录结构
- 不要在不遵循标准结构的地方创建目录
- 不要在
/srv/sftpgo/data/之外的地方存放共享数据 - 保持目录结构统一,便于后续维护
常见操作场景
场景 1:为新部门创建共享目录
需求: 技术部需要一个新的共享目录 tech-docs
操作步骤:
# 1. 创建目录
mkdir -p /srv/sftpgo/data/departments/tech/tech-docs
# 2. 设置权限
chown -R sftpgo:sftpgo /srv/sftpgo/data/departments/tech/tech-docs
chmod -R 755 /srv/sftpgo/data/departments/tech/tech-docs
# 3. 验证权限
ls -la /srv/sftpgo/data/departments/tech/
后续工作:
- 告诉 Admin 目录路径:
/srv/sftpgo/data/departments/tech/tech-docs - 让 Admin 去配置 Virtual Folder 和 Group
场景 2:修复权限问题
现象: Admin 反映配置都正确,但用户无法访问
排查步骤:
# 1. 检查目录是否存在
ls -la /srv/sftpgo/data/departments/tech/shared
# 2. 检查属主是否正确(假设 SFTPGo 运行用户为 sftpgo)
# 如果属主不对,修复:
chown -R sftpgo:sftpgo /srv/sftpgo/data/departments/tech/shared
# 3. 检查权限是否正确
# 如果权限不对,修复:
chmod -R 755 /srv/sftpgo/data/departments/tech/shared
# 4. 验证 SFTPGo 运行用户是否有权限
sudo -u sftpgo test -r /srv/sftpgo/data/departments/tech/shared && echo "可读" || echo "不可读"
sudo -u sftpgo test -w /srv/sftpgo/data/departments/tech/shared && echo "可写" || echo "不可写"
场景 3:扩容或迁移存储
如果需要对存储进行扩容或迁移:
-
停止 SFTPGo 服务(避免数据不一致)
systemctl stop sftpgo -
迁移数据
# 备份原有数据
cp -a /srv/sftpgo/data /backup/sftpgo-data-backup-$(date +%Y%m%d)
# 迁移到新位置(假设新位置是 /new/storage/sftpgo/data)
mv /srv/sftpgo/data /new/storage/sftpgo/data
# 创建软链接(如果路径需要保持不变)
ln -s /new/storage/sftpgo/data /srv/sftpgo/data -
检查权限
chown -R sftpgo:sftpgo /new/storage/sftpgo/data -
启动 SFTPGo 服务
systemctl start sftpgo
与 Admin 的协作流程
你的工作和 Admin 的工作是衔接的:
标准协作流程
-
你创建目录
- 创建
/srv/sftpgo/data/departments/[部门]/[目录] - 设置正确的权限
- 验证权限正常
- 创建
-
告诉 Admin 目录路径
- 提供完整路径:
/srv/sftpgo/data/departments/[部门]/[目录] - 告诉 Admin 这个目录已经准备好了
- 提供完整路径:
-
Admin 配置 Virtual Folder 和 Group
- Admin 会在 SFTPGo 后台创建 Virtual Folder
- Admin 会配置 Group 和用户权限
- 这部分工作你不需要参与
-
问题反馈
- 如果 Admin 反映权限问题,检查 Linux 层面的权限
- 如果 Linux 权限正常,问题可能在 SFTPGo 配置,让 Admin 检查
记住:你只负责"能不能",Admin 负责"该不该"
检查清单
创建或修改目录后,可以用这个清单检查:
- 目录路径是否遵循标准结构?
- 目录是否存在?
- 属主是否为 SFTPGo 运行用户(通常是
sftpgo)? - SFTPGo 运行用户是否有读权限?
- SFTPGo 运行用户是否有写权限(如果需要)?
- 权限设置是否合理(通常是 755 或 750)?
- 是否已告知 Admin 目录路径?
常见错误
避免以下错误:
- ❌ 在服务器层面手动修改权限来"模拟"用户权限控制
- ❌ 不遵循统一的目录结构,随意创建路径
- ❌ 忽略 Linux 文件系统权限,认为 SFTPGo 配置够了就行
- ❌ 不设置正确的目录属主,导致 SFTPGo 无法访问
- ❌ 直接修改 SFTPGo 系统文件(
/usr/share/sftpgo/、/var/lib/sftpgo/)
风险提示
⚠️ 目录权限设置错误可能导致用户无法访问,即使 Admin 配置得再完美也不行。
⚠️ 删除或修改目录前,务必确认 Admin 已了解并同意。
⚠️ 修改系统配置前,建议先备份相关文件。
相关文档
- 📖 权限模型与核心概念 - 理解 Linux 权限与 SFTPGo 权限的关系
- 🎯 Admin 管理 SOP - 了解 Admin 的工作,便于协作
- 🔍 故障排查速查表 - 遇到问题时查阅