web-dev-qa-db-ja.com

SSH / SFTPユーザーをApacheWebサイトのサブフォルダーに制限するにはどうすればよいですか?

現在、LinuxサーバーでApacheをセットアップしており、ログインして特定のディレクトリ内のファイルのみを編集できる新しいユーザーを作成する必要があります。

私は現在、自分のWebサイトを次のように設定しています。

/ data/htdocs/mywebsite /

これに対する権限はApache:apacheです

今私がする必要があるのは、新しいユーザー「joeblogs」を作成し、このユーザーが/ data/htdocs/mywebsite/store /にのみアクセスするように制限することです。

ユーザーはSSHとSFTPを使用できる必要がありますが、常にこのフォルダーに直接誘導される必要があります。また、ユーザーは/ store /フォルダーへのフルアクセス権を持ちながら、他のフォルダーやファイルを表示できない必要があります。システム/

これについての助けがあれば、私は何時間も輪になって走り回っています。

5
MonkeyBlue

SSHには組み込みのユーザーをchrootする機能がありますが(4.9p1以降)、インタラクティブセッションにSSHを使用するのはやや困難です。

ただし、sftpの制限はかなり簡単で、ユーザーごと、またはグループごとに構成できます。

Match User joeblogs
    ChrootDirectory /data/htdocs/mywebsite/store/
    ForceCommand internal-sftp
    AllowTcpForwarding no

ユーザーがシェルを必要とし、いくつかのデバイスファイルが存在する必要があるため、インタラクティブセッションはより複雑です。

man 5 sshd_configから:

ChrootDirectoryには、ユーザーのセッションをサポートするために必要なファイルとディレクトリが含まれている必要があります。インタラクティブセッションの場合、これには少なくともシェル(通常はsh(1))と、null(4)、zero(4)、stdin(4)、stdout(4)、stderr(4)、arandomなどの基本的な/ devノードが必要です。 (4)およびtty(4)デバイス

Chroot内で必要なユーティリティのコピーを作成して維持する必要があるため、これはお勧めしません。それでもこのルートを試してみたい場合は、sshd_configのマニュアルページで詳細を読むことができます。 ここ

1
JimB