温馨提示×

centos sftp目录如何锁定

小樊
40
2026-09-21 06:32:42
栏目: 智能运维

在 CentOS 上“锁定 SFTP 目录”通常指的是:限制 SFTP 用户只能访问指定目录,不能进入上级目录(chroot)。下面按常见场景说明。


一、使用 OpenSSH 自带 chroot(推荐)

1. 创建 SFTP 用户和目录

useradd -m -s /sbin/nologin sftpuser
passwd sftpuser

mkdir -p /data/sftp/sftpuser
chown root:root /data/sftp
chown sftpuser:sftpuser /data/sftp/sftpuser

⚠️ 注意:

  • chroot 目录必须归属 root
  • 用户真正可写目录要单独建

2. 修改 SSH 配置

编辑:

vi /etc/ssh/sshd_config

注释或删除:

# Subsystem sftp /usr/libexec/openssh/sftp-server

添加:

Subsystem sftp internal-sftp

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

3. 重启 SSH

systemctl restart sshd

✅ 效果:

  • sftpuser 登录后根目录是 /data/sftp
  • 不能访问 /、/home 等系统目录

二、多用户统一锁定(Match Group)

groupadd sftpusers
usermod -aG sftpusers sftpuser

sshd_config:

Match Group sftpusers
    ChrootDirectory /data/sftp/%u
    ForceCommand internal-sftp

目录结构:

/data/sftp/user1
/data/sftp/user2

三、只读 / 禁止写(可选)

chmod 555 /data/sftp/sftpuser

或仅允许上传:

chmod 755 /data/sftp/sftpuser

四、常见问题

❌ 登录失败(bad ownership)

报错:

fatal: bad ownership or modes for chroot directory

解决:

chown root:root /data/sftp
chmod 755 /data/sftp

❌ 能登录但无法写文件

因为 chroot 目录不能写,需建子目录:

mkdir /data/sftp/sftpuser/upload
chown sftpuser:sftpuser /data/sftp/sftpuser/upload

五、验证

sftp sftpuser@localhost

登录后应看到:

sftp> pwd
Remote working directory: /

如果你说的是:

  • 锁定某个目录不能删
  • 只允许访问某个子目录
  • 使用 vsftpd 而不是 sftp

可以告诉我,我给你对应方案。

0 踩