You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何限制SFTP用户在指定目录仅可删除文件不可创建上传

实现SFTP用户可列目录/下载/删除但禁止上传的配置方案

Linux文件系统目录的写权限同时管控文件新增、删除两类操作,无法通过单纯的文件权限拆分两种能力,因此需要结合目录权限配置 + SSH服务端SFTP操作限制组合实现需求。

1. 准备前提信息

先明确几个自定义变量,你可以根据实际场景替换:

  • 受限SFTP用户:sftp_user01
  • 受限用户所属组:sftp_restricted_group
  • 目标管控目录:/data/sftp/public/subdir

2. 配置目标目录基础权限

首先设置目录的所有者与所属组,保证用户有进入、读取目录的基础权限:

# 修改目录所属关系,所有者为root,所属组为受限用户组
chown root:sftp_restricted_group /data/sftp/public/subdir
# 设置目录权限:所有者读写执行,所属组读执行+可修改目录条目(删除文件需要该权限),其他用户无权限
chmod 2750 /data/sftp/public/subdir

2750中的setgid位可选,作用是保证目录内原有文件的所属组继承父目录,避免因文件所属组不匹配导致用户无法读取/删除。

3. 修改SSH服务配置限制SFTP操作

编辑/etc/ssh/sshd_config文件,在末尾添加针对受限用户/组的匹配规则:

# 针对指定用户组生效,也可改为 Match User sftp_user01 对单个用户生效
Match Group sftp_restricted_group
    # Chroot目录必须所有者为root、权限不高于755,按需修改为你的实际根目录
    ChrootDirectory /data/sftp/public
    # 强制使用内置SFTP服务,禁用上传/修改/新建类操作,保留读取/删除操作
    ForceCommand internal-sftp -P open:write,write,rename,mkdir,rmdir,symlink,link
    X11Forwarding no
    AllowTcpForwarding no

这里-P参数是SFTP操作黑名单,我们禁用了写文件、重命名、新建目录、创建链接等新增/修改类操作,仅保留读取、列出目录、删除文件的操作权限。

4. 验证配置生效

首先校验SSH配置合法性,避免配置错误导致SSH服务崩溃:
sshd -t
无报错后重启SSH服务生效:
systemctl restart sshd

用SFTP客户端登录验证权限是否符合预期:

  • 执行ls subdir 可正常列出目录内文件
  • 执行get subdir/old_file.txt 可正常下载文件
  • 执行rm subdir/old_file.txt 可正常删除目标文件
  • 执行put new_file.txt subdir/ 会返回权限拒绝,无法上传

注意事项

  • 如果你使用的是老旧Linux发行版,先执行ssh -V确认openssh版本≥5.8,否则不支持internal-sftp的-P参数
  • ChrootDirectory指定的目录必须所有者为root,权限最大为755,否则SFTP登录会报错

内容的提问来源于stack exchange,提问作者Thobias Bergqvist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:36:03