CentOS 的 SFTP chroot

CentOS 的 SFTP chroot

我在为客户端 chroot SFTP 访问时遇到了一些问题。

我可以访问该目录,但问题是我无法读/写,我只能访问该目录。

以下是我所做的:

# cat /etc/passwd | grep comege
comege:x:1001:1001::/home/sftp/comege/home/:/sbin/nologin

# cat /etc/group | grep sftp
sftp-only:x:1001:

# sshd_config
Subsystem sftp internal-sftp
Match Group sftp-only
ChrootDirectory /home/sftp/%u
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

为了测试目的,SELinux 被设置为宽松。

当我使用 SFTP 连接到服务器时出现以下错误:

Error listing directory '/'. Permission denied

权限:

/home/sftp/comege and parent directories belongs to root:root.

/home/sftp/comege/home belongs to comege:sftp-only

我认为问题是 comege 在连接时没有重定向到 /home/sftp/comege/home,所以它到达属于 root 的 /home/sftp/comege,因此缺少权限(?)

答案1

看起来 chroot 目录的权限/home/sftp/comege未设置为允许用户读取comege

权限/home/sftp/comege应如下所示:

# ls -la /home/sftp/comege
total 0
drwxr-xr-x 1 root   root       8 Jul 19 12:00 .
drwxr-xr-x 1 root   root      12 Jul 19 11:59 ..
drwx------ 1 comege sftp-only 76 Jul 19 12:00 home

使用以下命令更改权限:

# chmod 755 /home/sftp/comege

请注意,这没有考虑 SELinux 权限。

按照设计,chrooted 环境中的 SFTP 会话将从 chroot “监狱” 中的用户开始,必须由 root 拥有。用户只能写入顶级根目录的子目录中的文件。一个惯例是为用户上传创建一个名为“incoming”的子目录,而不是原始示例中显示的“home”目录。

相关内容