最近、次のような回避策を見つけました。
/ etc / ssh / sshd_config:
...
Subsystem sftp internal-sftp
Match Group sftponly
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp
ディレクトリの権限:
root@server:~ # chown root:root /home
root@server:~ # chmod 111 /home
root@server:~ # chmod 700 /home/*
これで、制限されたユーザー/homeの要件を満たし、ChrootDirectoryリストに表示できなくなりsftponlyますが、ホームディレクトリが通常どおりに設定されている場合、ユーザーはログインできません(/home/$LOGNAME)。chrootされた環境では、ホームディレクトリは内部では/homeなく直下にありますルート(/)。
回避策1
制限されたユーザーの家をchrootの下での表示方法に設定します。
root@server:~ # usermod -d /username username
洞窟1
無制限のユーザーまたは一部の管理スクリプトのいずれかがbashのチルダ展開を使用~usernameして/usernameいる場合は、それが現在に展開されるようになりますが、これは意味がありません。
また、sftponlyユーザーを作成する管理者は、デフォルト以外の家を使用することを忘れないでください。スクリプトで解決できます。管理者が使用することを覚えておく必要があります。
回避策2
これは、私たちが最終的に使用した前のものの代替です:
root@server:~ # ln -s . /home/home
それは/homeそれ自身のdirnameへのシンボリックリンクを作成します。chrootの下では、chroot /home/usernameを使用しない場合と同じディレクトリをポイントしています。sftpでログインした制限付きユーザーの場合、と表示され/usernameます。このディレクトリは、その所有者(制限付きユーザー)に書き込み可能です。制限付きユーザーは、兄弟の親ディレクトリまたはホームディレクトリを名前でリストすることはできません。
sftponlyユーザーの唯一の特別な点は、sftponlyグループへの参加です。回避策1よりも対処が簡単であることがわかりました。
洞窟2
- 'home'という名前のユーザーにホームディレクトリを設定することはできません /home/home
- /home階層を横断してシンボリックリンクをたどるスクリプトには注意が必要です。
 
              
chroot、ユーザーが自分のエドChrootDirectory?彼らはそれにアクセスできますか?