跳到主要内容
版本:Current

服务器用户 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:扩容或迁移存储

如果需要对存储进行扩容或迁移:

  1. 停止 SFTPGo 服务(避免数据不一致)

    systemctl stop sftpgo
  2. 迁移数据

    # 备份原有数据
    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
  3. 检查权限

    chown -R sftpgo:sftpgo /new/storage/sftpgo/data
  4. 启动 SFTPGo 服务

    systemctl start sftpgo

与 Admin 的协作流程

你的工作和 Admin 的工作是衔接的:

标准协作流程

  1. 你创建目录

    • 创建 /srv/sftpgo/data/departments/[部门]/[目录]
    • 设置正确的权限
    • 验证权限正常
  2. 告诉 Admin 目录路径

    • 提供完整路径:/srv/sftpgo/data/departments/[部门]/[目录]
    • 告诉 Admin 这个目录已经准备好了
  3. Admin 配置 Virtual Folder 和 Group

    • Admin 会在 SFTPGo 后台创建 Virtual Folder
    • Admin 会配置 Group 和用户权限
    • 这部分工作你不需要参与
  4. 问题反馈

    • 如果 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 已了解并同意。
⚠️ 修改系统配置前,建议先备份相关文件。


相关文档