如何将 ssh 用户限制为具有写权限的特定目录?

如何将 ssh 用户限制为具有写权限的特定目录?

我使用以下配置,它成功地将 ssh 用户限制到特定文件夹,但是当我将组的权限更改为读+写时,用户无法登录服务器

/etc/passwd我改变了

/bin/bash用户的/bin/false

/etc/ssh/sshd_config我添加

Subsystem sftp internal-sftp
    Match Group dnduser
    ChrootDirectory /home/dnduser
    ForceCommand internal-sftp
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no

工作/home/dnduser目录权限无写权限

#chmod 755 /home/dnduser -R

#chown root:dnduser /home/dnduser -R

当我将权限更改为

#chmod 775 /home/dnduser -R

用户无法登录

答案1

递归 chmod 是危险的,应该避免,因为您要将目录和文件的模式更改为相同;文件通常不需要执行位,正如 Ulrich 指出的那样,$HOME 中的某些文件不能是组或其他可读/可写的。

修复损坏:

find /home/dnduser -type f -exec chmod 640 {} \;
find /home/dnduser -type d -exec chmod 750 {} \;

第二man sshd_config句话是最相关的:

 ChrootDirectory
         Specifies the pathname of a directory to chroot(2) to after authentication.  At session startup sshd(8) checks that all components of the
         pathname are root-owned directories which are not writable by any other user or group.  After the chroot, sshd(8) changes the working direc‐
         tory to the user's home directory.  Arguments to ChrootDirectory accept the tokens described in the TOKENS section.

为了帮助调试,您可以使用“ssh -vvv”在超级详细模式下运行 ssh,并在服务器端(对于基于 RH 的系统)查看 /var/log/secure 和 /var/log/messages 的日志输出。您应该从服务器日志输出中获取下一步调查位置的指针,但我觉得手册页指向...问题的根源...。

答案2

从手册页到sshd_config

在会话启动时,sshd(8)检查路径名的所有组成部分是否为 root 拥有的目录,任何其他用户或组都无法写入这些目录。

如果你想让chroot用户访问特定目录,那么他只能写入子目录。时期。

相关内容