サブフォルダへの制限付きアクセスを追加したいWebサイトがあります。このために、SFTPでCHROOTを使用することにしました(私はほとんどこのリンクをたどりました: 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
ご覧のとおり、私はroot:rootをjailしたいフォルダーmagentoをchownしました-ユーザーと...ちなみに他のすべて。また、magentoフォルダーで、sio2104:magentoにすべてをchownして、必要なものにアクセスできるようにします。最後に、これを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
その結果は...まあ、ログインとパスワードを入力できますが、すべて「壊れたパイプ」エラーで終了します。
$ sftp [email protected]
[....some debug....]
[email protected]'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 [email protected]
debug1: Entering interactive session.
Write failed: Broken pipe
Connection closed
冗長モードは何の助けにもなりません。誰かが私が間違ったことを知っていますか?個人ユーザーでsshまたはsftpでログインしようとすると、すべてが正常に動作します。
私も同じ問題を抱えていました。
Chroot-dirは、所有者ルートとグループルートに設定する必要があります。 (chown root:root chroot-dir)
デフォルトのディレクトリをchrootディレクトリとは異なるものにしてみてください。
/ home/ftpmanをデフォルトのディレクトリとして設定しました。
vi /etc/passwd
..
ftpman:x:1001:1002::/home/ftpman:/bin/bash
そして
ls -la /home
...
drwxr-xr-x 5 ftpman sftponly 4096 Jun 25 11:56 ftpman
次に、chrootディレクトリを/に設定します。そしてそれは私のために働く
vi /etc/ssh/sshd_config
...
Match Group sftponly
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /
ForceCommand internal-sftp
100%確実ではありませんが、chrootプロセスを理解している限り、SSHdはまずユーザーとしてforkし、次にchrootを試みます。システム上のsio2104
でディレクトリにアクセスできないため、これは明らかに失敗します。
magento
フォルダー(chmod o+rx
)のファイルシステム権限を緩和してみてください。