SFTP ChRoot 导致管道破裂

Pat*_*eau 8 linux openssh sftp chroot ubuntu

我有一个网站,我想添加一些对子文件夹的限制访问。为此,我决定将 CHROOT 与 SFTP 一起使用(我主要遵循此链接:http : //shapeshed.com/chroot_sftp_users_on_ubuntu_intrepid/

现在,我已经创建了一个用户 (sio2104) 和一个组 (magento)。按照指南操作后,我的文件夹列表如下所示:

-rw-r--r--  1 root root       27 2012-02-01 14:23 index.html
-rw-r--r--  1 root root       21 2012-02-01 14:24 info.php
drwx------ 15 root root     4096 2012-02-25 00:31 magento
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我已经 chown root:root 文件夹 magento 我想监禁在用户和......顺便说一句。同样在 magento 文件夹中,我 chown sio2104:magento 一切,以便他们可以访问他们想要的东西。最后,我已将此添加到 sshd_config 文件中:

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Match Group magento
        ChrootDirectory /usr/share/nginx/www/magento
        ForceCommand internal-sftp
        AllowTCPForwarding no
        X11Forwarding no
        PasswordAuthentication yes

#UsePAM yes
Run Code Online (Sandbox Code Playgroud)

结果是……好吧,我可以输入我的登录名、密码,然后一切都以“管道损坏”错误结束。

$ sftp sio2104@10.20.0.50
[....some debug....]
sio2104@10.20.0.50's password: 
debug1: Authentication succeeded (password).
Authenticated to 10.20.0.50 ([10.20.0.50]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
Write failed: Broken pipe
Connection closed
Run Code Online (Sandbox Code Playgroud)

详细模式没有任何帮助。任何人都知道我做错了什么?如果我尝试使用个人用户使用 ssh 或 sftp 登录,则一切正常。

小智 9

我有同样的问题。

chroot-dir 必须设置为所有者 root 和组 root。(chown root:root chroot-dir)


小智 6

尝试让您的默认目录与 chroot 目录不同。

我已将 /home/ftpman 设置为我的默认目录。

vi /etc/passwd

..
ftpman:x:1001:1002::/home/ftpman:/bin/bash
Run Code Online (Sandbox Code Playgroud)

ls -la /home

...
drwxr-xr-x  5 ftpman sftponly 4096 Jun 25 11:56 ftpman
Run Code Online (Sandbox Code Playgroud)

然后我将 chroot 目录设置为 /。它对我有用

vi /etc/ssh/sshd_config

...
Match Group sftponly
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /
  ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)

  • 您的答案中几乎没有 chroot。 (7认同)