温馨提示×

如何禁止debian sftp写

小樊
37
2026-10-24 04:32:40
栏目: 智能运维

在 Debian 上“禁止 SFTP 写操作”,常见有 3 种做法,按推荐程度从高到低说明。


一、用 OpenSSH 内置的 readonly 模式(最推荐,Debian 9+)

OpenSSH 7.4+ 支持 SFTP 只读模式。

1. 修改 sshd_config

sudo nano /etc/ssh/sshd_config

为指定用户或组添加:

Match User sftpuser
    ForceCommand internal-sftp -R

或按组:

Match Group sftp
    ForceCommand internal-sftp -R

-R 表示 read-only SFTP(禁止上传、删除、改名)

2. 重启 ssh

sudo systemctl restart ssh

✅ 优点:简单、官方支持、不影响 SSH 其他功能


二、用文件系统权限禁止写(通用但有限)

如果不想用 -R,可以直接限制目录权限。

chown root:root /srv/sftp
chmod 755 /srv/sftp

用户目录:

chown sftpuser:sftpuser /srv/sftp/upload
chmod 555 /srv/sftp/upload
  • 555 → 只读
  • 用户无法创建/删除文件

⚠ 缺点:

  • 用户仍可能用 rename 等方式“间接写”
  • 不如 -R 严格

三、使用 chroot + 只读挂载(高级)

适合完全隔离的 SFTP 服务器

Match User sftpuser
    ChrootDirectory /srv/sftp
    ForceCommand internal-sftp -R

并挂载只读:

mount -o remount,ro /srv/sftp

验证是否生效

sftp sftpuser@host
put test.txt

应出现:

remote write failed

推荐方案总结

需求 方案
仅禁止 SFTP 写 ForceCommand internal-sftp -R ✅
同时限制目录 chroot + -R
极端安全 只读挂载

如果你能提供:

  • Debian 版本
  • 是否使用 chroot
  • 是单用户还是用户组

我可以给你精确配置示例。

0 踩