在 Ubuntu 上配置 SFTP 权限,通常是为了让用户 只能通过 SFTP 访问指定目录,不能 SSH 登录。下面按常见场景一步步说明。
sudo adduser sftpuser
(按提示设置密码)
sudo mkdir -p /sftp/sftpuser
sudo chown root:root /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser
⚠️ 注意:
SFTP 根目录必须属于 root,且其他用户不能写
sudo mkdir /sftp/sftpuser/upload
sudo chown sftpuser:sftpuser /sftp/sftpuser/upload
编辑:
sudo nano /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /sftp/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
sudo systemctl restart ssh
✅ 此时:
/sftp/sftpuserupload 目录sudo groupadd sftpusers
sudo usermod -aG sftpusers sftpuser
sshd_config:
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
目录结构:
/sftp/user1
/sftp/user2
| 目录 | 拥有者 | 权限 |
|---|---|---|
| Chroot 根目录 | root | 755 |
| 上传目录 | sftp用户 | 755 / 775 |
❌ 错误示例(会导致登录失败):
chown sftpuser /sftp/sftpuser
会报:
fatal: bad ownership or modes for chroot directory
sudo tail -f /var/log/auth.log
chmod 555 /sftp/sftpuser
chmod 775 upload
如果你有具体需求(比如:
可以告诉我,我帮你定制配置。