在 CentOS 上配置 SFTP 组权限,通常目标是:
/)下面给你一套最常用、最安全的做法(基于 OpenSSH 内置 SFTP + Chroot)。
# 创建 sftp 组
groupadd sftp
# 创建用户(不允许登录 shell)
useradd -g sftp -s /sbin/nologin sftpuser
# 设置密码
passwd sftpuser
⚠️ Chroot 目录必须由 root 拥有,且其他用户不可写
mkdir -p /data/sftp
chown root:root /data/sftp
chmod 755 /data/sftp
mkdir -p /data/sftp/sftpuser
chown sftpuser:sftp /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser
目录结构示例:
/data/sftp (root:root 755)
└── sftpuser (sftpuser:sftp 755)
编辑:
vi /etc/ssh/sshd_config
# Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
在文件末尾添加:
Match Group sftp
ChrootDirectory /data/sftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
✅ 这样:
sftp 组的用户/data/sftpsystemctl restart sshd
sftp sftpuser@服务器IP
应看到:
sftp> pwd
Remote working directory: /sftpuser
mkdir /data/sftp/share
chown root:sftp /data/sftp/share
chmod 775 /data/sftp/share
需要配合:
原因:
root:root755原因:
✅ CentOS 7 / 8 / Stream
✅ RHEL
✅ 使用 OpenSSH(默认)
如果你有 具体需求(比如:多用户共享、只读、审计、限制 IP),可以告诉我,我给你定制配置。