在 CentOS 上“禁用 SFTP 写权限”有多种实现方式,取决于你是要所有用户只读、特定用户/组只读,还是限制到某个目录不可写。下面按常见场景说明。
编辑配置文件:
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 时,目录属主不能是普通用户Match User sftpuser
ChrootDirectory /data/sftp
ForceCommand internal-sftp -R
目录权限要求:
chown root:root /data/sftp
chmod 755 /data/sftp
如果你是想完全禁用 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 |
如果你能说明:
我可以给你精确配置示例。