グラフィカル ワークステーションのコンソールで操作しているユーザーは、ルート認証や再起動などのパスワードを明らかに必要とせずに、いくつかのプログラムを実行できることに気づきました。このプロセスには、SUID プログラム /usr/sbin/userhelper
の巧妙な使用が含まれます。 当初の設計よりも広い文脈で適用されます。
グラフィカル ユーザーは、中間のエイリアス プログラム /usr/bin/consolehelper
を実行します。 これは、特定の PAM (Programmable Authentication Modules) 構成に基づいてアクションを許可し、コマンドを SUID プログラムに送信して、ユーザー プログラムを特権で実行します。ユーザーが適切な権限を持っていない場合、要求されたプログラムはユーザーの Linux 環境で実行されます。
現在展開されているように、再起動に必要な PAM 構成ファイルには、ユーザーがコンソールにログインしているか、現在ルート環境で実行されているかをチェックして、パスワード要求を禁止します。
udisk を使用します。 (ただし、FUSE はネットワーク ファイルシステムの場合に使用されます)。実験には、udisk へのコマンドライン インターフェイスを使用できます。最近のバージョンでは、コマンドライン インターフェイス udisksctl
が付属しています .
udisksd
root として実行され、D-Bus を使用してユーザー リクエストを受け入れます。
udisksd
PolicyKit を使用 PolKit を使用して、許可されるリクエストを決定します。追加の権限が必要な場合があります。内蔵ドライブのフォーマット。これには、Windows UAC プロンプトやコマンド ラインでの sudo と同様に、追加の認証手順が必要になる場合があります。追加の認証がどのように調整されているか正確にはわかりません.
現在、D-Bus 経由のリクエストは、リクエストを行うプロセスを識別する SCM_CREDENTIALS を使用して Unix ソケットを使用して行われます。
決定に使用される要素の 1 つは、ユーザーがローカルでログインしているか、ネットワーク経由でログインしているかです (例:ssh
)。この情報は systemd-logind
によって提供されていると思います (pam-systemd
と共謀して ).