温馨提示×

centos如何禁用sftp写权限

小樊
59
2026-10-14 19:09:21
栏目: 智能运维

在 CentOS 上“禁用 SFTP 写权限”有多种实现方式,取决于你是要所有用户只读、特定用户/组只读,还是限制到某个目录不可写。下面按常见场景说明。


一、最常用:通过 SSH 配置限制 SFTP 为只读(推荐)

场景:指定用户或组只能 SFTP 下载,不能上传/删除

1. 修改 SSH 配置

编辑配置文件:

vi /etc/ssh/sshd_config

在文件末尾添加(示例为用户 sftpuser):

Match User sftpuser
    ForceCommand internal-sftp -R
    PasswordAuthentication yes

说明:

  • -R 表示 只读模式(read-only)
  • 用户不能上传、删除、重命名
  • 仍可使用 sftp 登录并下载

如果是用户组:

Match Group sftp
    ForceCommand internal-sftp -R

保存后重启 SSH:

systemctl restart sshd

二、通过目录权限禁用写权限(通用)

如果你只是想让某个目录不能写:

chown root:root /data/sftp
chmod 755 /data/sftp
  • 用户只能读
  • 不能在该目录创建文件

⚠ 注意:

  • 使用 internal-sftp 时,目录属主不能是普通用户
  • 否则可能登录失败

三、使用 Chroot + 只读(更安全)

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

目录权限要求:

chown root:root /data/sftp
chmod 755 /data/sftp

四、彻底禁用 SFTP(只允许 SSH)

如果你是想完全禁用 SFTP:

systemctl stop sshd

或编辑:

Subsystem sftp /usr/libexec/openssh/sftp-server

改为:

# Subsystem sftp /usr/libexec/openssh/sftp-server

然后:

systemctl restart sshd

五、验证是否生效

sftp sftpuser@localhost

尝试:

put test.txt

应提示:

Permission denied

总结推荐

需求 方法
某用户只读 ForceCommand internal-sftp -R
某组只读 Match Group + -R
目录不可写 chmod 755 + root 属主
完全禁用 SFTP 注释 Subsystem

如果你能说明:

  • CentOS 版本(7 / 8 / Stream)
  • 是否用 chroot
  • 是全部用户还是部分用户

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

0 踩