Cプログラム実行権限のみを持つユーザーの作成

Cプログラム実行権限のみを持つユーザーの作成

オンラインコードエディタを作成しようとしています。私のシナリオ:「C」プログラムに対する要求はWebサーバーを介して受信されます。 rootユーザーがファイルを作成してファイルをコンパイルした後、ユーザーに成功を確認します。

私たちはnodejsそれをバックエンドで使用しています。これでプログラムを実行する時間です。nodejsuid(root以外のユーザー)を使用してこのユーザーコードを生成するオプションが提供されています。

ls、pxなどの権限のないユーザーを作成し、上記の手順でコンパイルされた実行可能ファイルを実行するにはどうすればよいですか?

私が試した解決策の1つは、rootユーザーだけがこれらすべてのコマンドを実行でき、そのユーザーは単純な「C」プログラムのみを実行できるように、、、の/usr/bin権限を700に変更することです。ただし、ユーザーにはまだディレクトリを表示するオプションがあるため、デフォルトではすべてのディレクトリに700のユーザーが必要です。これは良い考えですか?/bin/usr/sbin//sbin/usr/local/bin/usr/local/sbin/etc

他のオプションは衣類です。まだこれを試していません。

友人が提案した3番目のオプションはchrootですが、人々はこれがセキュリティ対策のためではないと言います。

誰でもこの問題を解決する方法を案内できますか?

答え1

Chrootはこれを行うより伝統的な方法であり、それを機能させることができますが、Webインターフェイスを介して行うため、より複雑になります。競合状態(同じchroot環境を使用する複数のユーザー)を避ける必要があります。 、各要求に対してディレクトリ構造を動的に構築する必要があり、おそらく頭では考えられない他のものがあるかもしれません。

lxcLinuxを使用している場合は、コンテナ()またはDockerプロジェクトを確認してください。https://docs.docker.com。特にDockerプラットフォームを使用すると、ここで必要な作業をとても素敵で簡単に実行できます。つまり、外部の世界(Webサーバーなど)のリソースに影響を与えることなく、完全に刑務所に閉じ込められたプロセスを実行するために使用できる一時的な軽量仮想マシンを作成できます。プログラムを実行したい特定のオペレーティングシステム環境(Fedora 12など)のデフォルトのドッカーイメージをダウンロードし、ユーザーのプログラムソースをその環境にインポートしながらその環境を実行するようにドッカーに指示し、それに応じてコンパイラを実行します。ドッカーに指示します。その環境で生成されたファイルを使用してください。その後、ドッカーに一時的な環境を破壊するように指示します。何も残っておらず、(ほぼ)セキュリティリスクもありません。

関連情報