最近、次のような回避策を見つけました。
/ 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
?彼らはそれにアクセスできますか?