我正在尝试为我们的客户设置 sftp 访问权限,以便下载或上传文件。在尝试设置目录权限和用户访问权限时,我不断收到此类错误。
server1 sshd[21760]: Accepted password for user01 from 192.168.1.118 port 51026 ssh2
server1 sshd[21760]: pam_unix(sshd:session): session opened for user user01 by (uid=0)
server1 sshd[21775]: fatal: bad ownership or modes for chroot directory "/home/user01"
server1 sshd[21760]: pam_unix(sshd:session): session closed for user user01
我在 sshd_config 文件中有以下设置:
Match Group sftp_users
ChrootDirectory %h
ForceCommand internal-sftp
文件夹/文件权限显示如下:
drwxr-xr-x 4 user01 sftp_users 4096 Mar 28 09:26 /home/user01
我有一个这样的安装驱动器:
//windowserver/ftproot/customers/user01 on /home/user01 type cifs (rw)
我无法理解/确定的是,如果用户“user01”对本地计算机上自己的主目录具有读/写访问权限,但使用 ssh/sftp 时会返回“所有权/模式错误”。是不是因为 user01 的会话是由 uid=0 打开的?在这种情况下,user01 的 uid 为 502,而 root 的 uid 为 0。
如果需要我在此处提供的其他信息,请告诉我,我会发布该信息。
答案1
Chroot 目录应该是目标的父目录,因此在本例中是 /home
ChrootDirectory /home
答案2
从其他人的帮助/建议中,我了解到,如果您将子文件夹添加到用户的主目录并将该子文件夹设置为由用户 chown,则一切都会按预期工作。总结:
/home/user01 should be chown'd by root.
/home/user01/shared should be chown'd by user01
然后,当 user01 登录时,他们只能看到名为 shared 的文件夹,但无法导航到 shared 上方的父文件夹。由于 user01 登录拥有所有权,因此 user01 可以从该目录读取文件并向该目录写入文件。