私は、ユーザーが自分のホームディレクトリの外でファイルを変更/表示できないように制限する方法について、インターネット上のいくつかのガイドに従いました。
だから私はユーザーを作成しました。ジョンと呼びます。そして彼の基本グループであるsftpというグループも作りました。私も彼のホームディレクトリを私が収監したいディレクトリに更新しました。 (この場合/var/www/
)その後、いくつかの設定行を追加しました。/etc/ssh/sshd_config
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcoForwarding no
これを使ったことがありません。 Johnは自分のホームディレクトリの外にあるディレクトリにアクセスできます。それからそれを具体化しようとします。
Match User john
ChrootDirectory /var/www
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no
やはり動作しません。 Johnはまだすべてのファイルにアクセスできます。だから、両方の設定を試してみましたが、どちらも機能しませんでした。
Johnsシェルはいくつかのガイドでまたは/bin/bash
に設定すると言われていますが、もちろんFilezillaと接続することはできません。/bin/false
/bin/nologin
ディストリビューションはUbuntu 14.04です。
ベストアンサー1
ブロックの次の行を変更しますMatch Group sftp
。
ChrootDirectory /var/www/%u
ディレクトリ名にユーザー名を指定して/var/wwwにディレクトリを作成すると、複数のユーザーをその/var/www/user-ディレクトリにchrootできます。
また、権限を確認する必要があります。 /var/www/user-name ディレクトリーには、ユーザーとグループが root で、755 権限が必要です。そのディレクトリ内のユーザーを所有者として、グループsftpをグループとして含める必要があるいくつかのディレクトリまたは必要なディレクトリ(入力および出力ディレクトリなど)を作成する必要があります。 700権限または権限に適していると思われるすべての権限をお勧めします。その後、ユーザーはルートディレクトリまたは/var/www/userツリーの外に何も書き込むことなくログインしてディレクトリにアクセスできる必要があります。
シェルを/bin/falseまたは/bin/nologinに設定すると、sftp接続のみが許可されます。これはsftpアクセスのみが必要な場合は面白いです。そうしないと、ユーザーはシステムにSSHを介して接続できますが、おそらく望ましくありません。 。
編集:ところで、AllowTcoForwarding no
sftpブロックの行が間違っています。正しい行に変更してください(AllowTc
血Forwarding
)ここではただのタイプミスではない場合に備えて申し上げます。