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が許可されていない操作を返す理由の説明を見つけようとしましたが、役立つものは見つかりませんでした。
誰かがこれを修正する方法を説明できますか?
を使用して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
通常の方法で。
mknod
。 FreeBSD11.0マニュアル。devfs
。 FreeBSD11.0マニュアル。devfs.rules
。 FreeBSD11.0マニュアル。