共有キャンセル(2)をキャンセルする方法はありますか?

共有キャンセル(2)をキャンセルする方法はありますか?

に電話して実行時に共有のキャンセルをキャンセルするunshare ./fooprogram方法はありますか?fooprogram

答え1

方法がある場合はカーネルの脆弱性です。

このレビューを書く時点では、最新のカーネル(5.7.2)、この問題に関する文書があります:

unshare()システムコールは、スレッドが作成時に共有されているすべてのリソースを選択的に「共有解除」できるようにする基本要素をLinuxスレッドモデルに追加します。

[… ]

unshare()新しいプロセスを作成せずに共有リソースを制御したいアプリケーション用の拡張Linuxスレッドユーティリティ。unshare()プロセス/スレッドの概念を仮想マシンとして実装するLinuxで利用可能な基本要素のセットを自然に補完します。

後で続く:

unshare()カーネルのプロセス固有の名前空間メカニズムを使用して、複数インスタンス化されたディレクトリを実装するために使用できます。ユーザー固有および/またはセキュリティコンテキストインスタンス別など、複数のインスタンス化ディレクトリ/tmpまたは/var/tmpユーザーホームディレクトリの各セキュリティコンテキストインスタンスは、そのディレクトリを使用するときにユーザープロセスを分離します。を使用すると、unshare()PAMモジュールを介してユーザーがログインしたときに個人の名前空間を簡単に設定できます。

文書には「回復不可能」と明示的には記載されていませんが、セキュリティの目的でunshare()1つの合法的な使用が記載されています。unshare()

これが逆転することができれば、目的は失われると思うかもしれません。

関連情報