在 CentOS 上限制 SFTP 用户权限,通常目标是:
下面给你一套最常用、最安全的做法(Chroot + 内部 SFTP)。
# 创建用户
useradd sftpuser
# 设置密码
passwd sftpuser
# 创建 SFTP 根目录(必须是 root 拥有)
mkdir -p /sftp/sftpuser
# 赋予权限(关键)
chown root:root /sftp/sftpuser
chmod 755 /sftp/sftpuser
⚠️ Chroot 目录必须归属 root,且其他用户不可写
mkdir /sftp/sftpuser/upload
chown sftpuser:sftpuser /sftp/sftpuser/upload
chmod 755 /sftp/sftpuser/upload
用户只能在 upload 里上传/修改文件。
编辑配置文件:
vi /etc/ssh/sshd_config
# Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /sftp/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
如果有多个用户,可用:
Match Group sftpusers
groupadd sftpusers
usermod -G sftpusers sftpuser
配置改为:
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
目录结构:
/sftp/sftpuser/
usermod -s /sbin/nologin sftpuser
systemctl restart sshd
sftp sftpuser@服务器IP
✅ 能登录
✅ 只能看到 /sftp/sftpuser
✅ 只能在 upload 写文件
❌ 不能 ssh sftpuser@ip
原因:
原因:
/var/log/secure如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置。