温馨提示×

如何在Debian SFTP中设置用户配额

小樊
35
2025-12-19 22:57:54
栏目: 智能运维

在 Debian 上为 SFTP 用户设置磁盘配额

一 准备与前置条件

  • 确认 SFTP 已启用并采用 internal-sftp + Chroot 的常用安全做法,便于将配额精确作用到用户可写目录。示例思路:创建 sftpusers 组,使用 Match Group sftpusers 段,设置 ChrootDirectory %hForceCommand internal-sftp,并关闭转发。若尚未配置,可先按此思路完成基础 SFTP 环境与权限布局,再继续配额设置。

二 安装并启用配额工具

  • 安装配额工具包:
    • sudo apt update
    • sudo apt install quota
  • 在包含用户数据(如 /home)的文件系统上启用配额选项。编辑 /etc/fstab,在对应挂载项添加 usrquota,grpquota(按需二选一或同时启用)。例如:
    • /dev/sda1 /home ext4 defaults,usrquota,grpquota 0 2
  • 重新挂载使选项生效(以 /home 为例):
    • sudo mount -o remount /home
  • 验证挂载选项是否已包含配额:
    • cat /proc/mounts | grep ’ /home’
  • 初始化配额数据库并开启配额(以 /home 为例):
    • sudo quotacheck -cum /home
    • sudo quotaon -vug /home
  • 说明:上述步骤为在 Debian 上启用文件系统级配额的标准流程,适用于 SFTP 场景中对用户或组的磁盘与 inode 限制。

三 为用户设置配额

  • 交互式编辑用户配额(磁盘块与 inode 的软/硬限制):
    • sudo edquota -u username
    • 在编辑器中设置例如:blocks 的 soft/hard、inodes 的 soft/hard(软限制为预警阈值,硬限制为强制上限)。
  • 非交互式设置示例(将用户 alice 的磁盘硬限制设为 10GB,inode 硬限制设为 100000,单位为 KB/个):
    • sudo setquota -u alice 0 10485760 0 100000 /home
  • 说明:blocks 通常以 1KB 为单位;inodes 限制文件数量。设置完成后,用户通过 SFTP 写入时会在达到软/硬限制时分别触发告警与拒绝。

四 验证与运维

  • 查看用户配额与当前用量:
    • quota -u username
    • 或 repquota -u /home(汇总报告)
  • 测试与排错要点:
    • 从客户端连接测试上传是否受限:sftp username@your_server_ip
    • 若配额不生效,复核:/etc/fstab 挂载选项是否含 usrquota/grpquota、是否已执行 quotacheck/quotaon、用户写入目录是否在已启用配额的文件系统内。
    • 若采用 Chroot,请确保用户可写目录的所有权和权限正确(常见做法:Chroot 根目录属 root:root 755,可写子目录属用户;否则可能导致写入失败与配额统计异常)。

0