web-dev-qa-db-ja.com

ユーザースクリプトの実行を制限する

Debianサーバーでゲームエンジンを実行しています。ゲームにはボットが含まれ、ボットはプレイヤーによってPythonでコード化されます。

  1. プレイヤーがPythonでボットを書く
  2. 検証時に、コードはサーバーに送信されます
  3. Pythonスクリプトがコードを実行します

ボットのスクリプトは通常のPythonスクリプトなので、プレーヤーは好きなように実行できます。プレーヤーがモジュールをインポートできるようにしたいのですが、サーバーを壊さないようにします(つまり、サーバーをスキャンします)。ファイルシステム、ファイルの削除、またはさらに悪い)。

次のことを知って、スクリプトがシステムを壊さないようにするにはどうすればよいですか。

  • スクリプトは、TCP/IPでゲームエンジン(localhost)と通信できる必要があります。
  • プレイヤーが標準のPythonモジュールをインポートできるようにしたい
  • 後でゲームは他のスクリプト言語(Ruby、Perl、Lua、JS…)をサポートする予定です

ユーザーやグループと遊ぶのもいいのではないかと思います。もう1つは、FreeBSDjailに似たものである可能性があります。私はこれらの方法のどれにも精通していません。

2
Jim

あなたが望むことは chroot で、あるいはおそらく lxc でdebianで行うことができます。

編集:
overlayfsまたはsquashfsを使用して、実行していることをより速く(瞬時に)行うことができます。そのためには、debootstrapとsquashfs-toolsが必要です。

これらのツールを使用すると、ユーザーにさまざまなランタイムバージョンまたはアーキテクチャを提供して選択することができます。そのためには、qemu-user-staticChrootDebootstrapが必要です。

1
Behrooz