私は現在xpraを設定しており、仮想ドライバを使用してroot以外のユーザーとしてXインスタンスを実行しようとしていますが、システムXorgバイナリはSUIDです。システムは自動的に更新されるため、SUIDではなくバイナリコピーを作成して維持したくありません。また、例えばtmpディレクトリから削除を実行するためにコピーなどのハッキングを使用しないようにしています。これには微妙なセキュリティホールがあるかもしれませんが、本能的に可能であると信じるきちんとした1行にすることを好みます。機能が公開されます)。私が知っている限り、シンボリックリンクは許可ビットマスキング機能を提供しませんが、許可されます。
現在の最良の解決策は、binディレクトリにnosuidバインドマウントを実行することです。これは、トリックを実行しているように見えますが、上記のようにシステムツリー/ fstabに混乱を与えないソリューションを好みます(たとえば、いくつかの魔法の環境変数はnosuidマウントと同じ方法でsuidを無効にするか、suidメカニズムをバイパスします。いくつかのコマンドラインを実行するjutsuを無効にします。
どんなアイデアがありますか?
答え1
動的にリンクされている場合は、X
次のように動的リンカーを呼び出すことができます。
/lib/ld.so /path/to/X
(あなたのシステムに適応してくださいld.so
(例/lib/ld-linux.so.2
:)。
例:
$ /lib64/ld-linux-x86-64.so.2 /bin/ping localhost
ping: icmp open socket: Operation not permitted
答え2
あなたが持っているならばstrace
、そしてそれはいいいえsetuidがルートの場合
strace -e '!all'プログラム名[議論]
動作する必要があります。 トラック(1)(エラー発生時)次のように言います。
setuidビットを使用するプログラムは、トレース時に有効なユーザーID権限を持っていません。
権限のないユーザーが使用するとセキュリティ上の問題が発生するためです。できるsetuidプログラムを追跡します(追跡によってプロセスのメモリを調べて変更できるため)。そして、SETUID INSTALLATIONという特別なセクションで上記を少し避けます。
strace
rootにsetuidをインストールすると... setuidとsetgidプログラム〜する正しい有効な権限で実行して追跡します。 ...完全なroot権限を持つ信頼できるユーザーのみがこれらのタスクを実行できます。
したがって、strace
ルートにsetuidをインストールすると、上記のトリックは機能しません。しかし、一般的にこれは真実ではないはずです。そしてそのような場合でも、SUIDではなくプライベートアップデートを作成して行うことができます(自動アップデートを使用してもそうするべきではないようです)strace
。/bin/strace
必要個人コピーを更新してください。 )
コマンドは何か-e
教えてください。strace
金利通気口が追跡されます。
-e all
「すべてのイベント追跡」(デフォルト)を意味するため、-e '!all'
追跡がないことを意味します. 1strace
これは実際にプログラム(Xプログラム)が実行されるのを待って見ている以外に何もしない結果をもたらします。とにかく不要な出力が生成された場合は、出力にリダイレクトします。
(これはコンソール出力を見る必要/dev/null
がないと仮定します。
!all
!