NASサーバーの1つにssh-chrootjailをセットアップしようとしています。システムはNAS4Free(nanobsdに基づく)で実行されます。ユーザーは、1つのコマンドのみを実行できる必要があります。これは、sshを別のサーバーに開き、そこで1つのコマンドを実行するbashスクリプトです。
chrootをセットアップするために、sshd構成にこれがあります。
Match User op
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
スクリプトには次の行が含まれています:
ssh -i /.ssh/id_rsa [email protected]$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 [email protected] /]$ 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
をマウントしてデバイスファイルを取得します 刑務所内のインスタンス。また、刑務所にdevfs
かどうかを制御するためのノブがあるのもそのためです。 マウントでき、どのdevfsルールセットがそれに適用されるか。
/dev/null
が必要な場合 変更したルート環境では、mount_nullfs
を使用する必要があります 実際の/dev
を作成します 変更されたルート内に表示されるツリー。善意の刑務所を使用する場合は、/dev
にdevfsをマウントするように構成するだけです。 。
善意の刑務所を使用する場合は、もちろん、sshd
を実行するように設定します。 刑務所内 、刑務所のIPアドレスをリッスンし、刑務所のでサービスとして有効になっている /etc/rc.conf
通常の方法で。
さらに読む
-
mknod
。 FreeBSD11.0マニュアル。 -
devfs
。 FreeBSD11.0マニュアル。 -
devfs.rules
。 FreeBSD11.0マニュアル。 - ドキュメント:ハウツー:刑務所。 NAS4Freewiki。
- MatteoRiondato。 「刑務所」。 FreeBSDハンドブック 。
- スコットロブ(2015-03-04)。 FreeBSD Jails 。