web-dev-qa-db-ja.com

フォルダーとサブフォルダーへのsftp読み取り/書き込みアクセスを提供し、他のすべてを制限する

ユーザーにUbuntu 14.04サーバーへのアクセスを提供する必要がありますが、特定のフォルダーのみに制限されています。 sshのセキュリティを楽しみ、新しいサービスとポート(つまり、ftp)を開かないために、sftpを使い続けたいと思います。ただし、ユーザーを作成してsshアクセスを有効にするだけでは寛大すぎるため、ユーザーはsshを介してログオンし、すべてのユーザーが表示できるものをすべて見ることができます。

ログイン後にユーザーが特定のディレクトリにいることを確認し、権限に応じてファイルの読み取り/書き込みを行い、許可されている場合はフォルダーを作成する必要があります。ユーザーの「ルート」フォルダより上のファイルやディレクトリにはアクセスできません。

これを達成するために推奨される方法は何でしょうか?これには非常に制限されたシェルタイプがありますか?私が試した

$ usermod -s /bin/false <username>

しかし、これではユーザーはベースフォルダーのサブフォルダーにcdできません。

5
Passiday

ユーザーをSFTPに制限する場合は、SSHデーモン構成ファイル/etc/ssh/sshd_configで簡単に行うことができます。ファイルの最後にMatchブロックを置きます:

Match User bob
ForceCommand internal-sftp
ChrootDirectory /path/to/root
AllowTCPForwarding no
PermitTunnel no
X11Forwarding no

Jailディレクトリが/etc/passwdで宣言されているユーザーのホームディレクトリである場合、明示的なパスを指定する代わりにChrootDirectory %hを使用できます。この構文では、ユーザーアカウントのグループをSFTPのみとして指定できます。ユーザーデータベースで宣言されているグループがsftponlyであるすべてのユーザーは、SFTPに制限されます。

Match Group sftponly
ForceCommand internal-sftp
ChrootDirectory %h
AllowTCPForwarding no
PermitTunnel no
X11Forwarding no