温馨提示×

CentOS SFTP如何设主目录

小樊
42
2026-07-08 18:12:31
栏目: 智能运维

CentOS 上配置 SFTP 用户的主目录(Home Directory),通常有两种常见场景:


一、使用系统用户(最常见)

1️⃣ 创建用户并设置主目录

useradd -m -d /home/sftpuser sftpuser
passwd sftpuser
  • -m:自动创建主目录
  • -d:指定主目录路径

查看主目录:

grep sftpuser /etc/passwd

2️⃣ 限制 SFTP 只能访问主目录(Chroot)

编辑 SSH 配置:

vi /etc/ssh/sshd_config

在文件末尾添加:

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

3️⃣ 设置目录权限(非常关键)

Chroot 目录必须归 root 所有,且其他用户不能写

chown root:root /home/sftpuser
chmod 755 /home/sftpuser

创建可写目录:

mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload

✅ 用户登录后只能看到 /upload 可写


4️⃣ 重启 SSH

systemctl restart sshd

5️⃣ 测试 SFTP

sftp sftpuser@服务器IP

二、自定义 SFTP 主目录(不在 /home)

例如:

mkdir -p /data/sftpuser
useradd -d /data/sftpuser sftpuser
passwd sftpuser

然后同样设置:

chown root:root /data/sftpuser
chmod 755 /data/sftpuser

并在 sshd_config

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

三、常见问题排查

❌ 登录失败(Permission denied)

  • Chroot 目录不是 root:root
  • Chroot 目录权限大于 755
  • SELinux 未关闭或策略未放行

查看日志:

tail -f /var/log/secure

✅ SELinux 处理(如启用)

setsebool -P ssh_chroot_rw_homedirs on

四、总结(标准做法)

项目 要求
Chroot 目录 root 所有
用户可写目录 子目录
SSH 配置 internal-sftp
权限 755

如果你需要 多用户 / 多目录 / 虚拟用户 / 只读 / 只上传 等方案,我可以给你更完整的配置示例。

0