web-dev-qa-db-ja.com

/ dev / null操作がサポートされていないため、chrootされたjailのsshが機能しない

NASサーバーの1つにssh-chroot jailをセットアップしようとしています。システムはNAS4Free(nanobsdに基づく)で実行されます。ユーザーは1つのコマンドしか実行できないはずです。 、これは、sshを別のサーバーに開き、そこで1つのコマンドを実行するbashスクリプトです。

Chrootをセットアップするために、これをsshd構成に含めます。

Match User op
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no

スクリプトには次の行が含まれています。

ssh -i /.ssh/id_rsa backup@$externalresource -t "/mnt/storage/backup/run_project.sh '$1' '$2'"

Sshを使用してそのchrootにログインできますが、スクリプトを実行すると、スクリプトでsshコマンドを実行しようとすると次のエラーが発生します。

Couldn't open /dev/null: Operation not supported

Chroot内でsshplainを実行しようとすると同じことが起こります

[I have no name!@nas /]$ ssh
Couldn't open /dev/null: Operation not supported

/ dev/nullは次のようになります。

$ ls -la dev/
total 8
drwx--x--x  2 root  staff    512 Nov 29 18:16 .
drwxr-xr-x  8 root  staff    512 Nov 29 18:06 ..
crw-rw-rw-  1 root  staff   0x18 Nov 29 18:16 null

もちろん、666パーミッションがないと、/ dev/nullパーミッション拒否エラーが発生します。

を使用してdev/nullを作成しました

mknod dev/null c 2 2

/ dev/nullが許可されていない操作を返す理由の説明を見つけようとしましたが、役立つものは見つかりませんでした。

誰かがこれを修正する方法を説明できますか?

4
user6329530

を使用してdev/nullを作成しました

mknod dev/null c 2 2

あなたの知識は時代遅れです。 NAS4FreeがFreeBSD10や11のようなものに基づいているので、物事はもはやこのようには機能しません(とにかくそれらはnullデバイスのデバイス番号ではありません。)mknodマニュアルを読んでください。 mknodを実行して、実際のディスクまたはRAMファイルシステムにデバイスノードを作成することはできますが、作成するノードはほとんどまったく役に立ちません。ご覧のとおり、カーネルでは、デバイスを使用してデバイスを開くことはできません。

これが、刑務所(実際の刑務所、オペレーティングシステムに付属している刑務所、sshd_configでセットアップできる単純なchroot環境ではない)では、devfsインスタンスをマウントすることでデバイスファイルを取得する理由です。刑務所。また、jailにdevfsをマウントできるかどうか、およびどのdevfsルールセットを適用するかを制御するノブがあるのもそのためです。

変更したルート環境で/dev/nullが必要な場合は、mount_nullfsを使用して、変更したルート内で実際の/devツリーを表示する必要があります。善意の刑務所を使用する場合は、/devにdevfsをマウントするように構成するだけです。

善意の刑務所を使用する場合は、もちろん、sshd刑務所内を実行するように設定し、刑務所のIPアドレスをリッスンし、でサービスとして有効にします。刑務所の/etc/rc.conf通常の方法で。

参考文献

6
JdeBP