LinuxでRun0を使用する方法

LinuxでRun0を使用する方法
ノートパソコンの画面をクローズアップした写真。

Run0 は、Systemd ベースの Linux ディストリビューション向けの新しい革新的な権限昇格プログラムです。これは、sudo や doas などの従来の昇格アプリに代わる軽量で「構成不要」の代替手段を提供します。ここでは、Linux システムのコマンドを昇格するために Run0 を使用する基本について説明します。

その前に、Run0 とは何か、そして sudo とどう違うのかを調べておくとよいでしょう。

別のユーザーとしてプログラムを実行する方法

権限昇格アプリの最も一般的な用途の 1 つは、コマンドをルート ユーザーとして実行することです。この点で、Run0 でルート ユーザーをタップするには、実行するコマンドの前に run0 を追加する必要があります。たとえば、次の例では、ルートのみがアクセスできるディレクトリに新しいフォルダーが作成されます。

これにより、CLI パスワード プロンプトまたは現在のユーザーのパスワードを要求する小さな GUI ウィンドウが表示されます。

Run0 のパスワードプロンプトを示すスクリーンショット。

sudo や doas と同様に、Run0 はコマンドを実行するときに非ルート ユーザーに切り替えることもできます。これを行うには、フラグを追加し--user、その後にコマンドを実行するユーザーの名前を指定します。

切り替え先のユーザーのパスワードを入力し、 を押しますEnter

別のユーザーのシェルに切り替える方法

権限昇格アプリのもう 1 つの重要な部分は、ユーザーをルート シェルにドロップする機能です。これにより、ルート ユーザーとしてシステムを操作し、CLI からより複雑なコマンドを実行できるようになります。

Run0 では、追加の引数なしでプログラムを実行することでこれを実行できます。

Run0 プロンプトからのルート シェルを表示する端末。

--userプログラムを root として実行する場合と同様に、フラグ付きで Run0 を使用して、特定のユーザーとしてシェル セッションを開始することもできます。

非ルートユーザー向けの Run0 プロンプトを表示する端末。

さらに、run0 を使用すると、非ルート ユーザーに対して一時的なグループ権限を持つシェル セッションを作成できます。これは、ルートに落ちることなく、特定のユーザーとグループによってロックされているフォルダーにアクセスする場合に便利です。

たとえば、次のコマンドは、「alice」ユーザーに「www-data」グループへの一時的なアクセス権を付与します。

--chdir新しいシェル セッションにドロップするときにディレクトリの変更を強制するフラグを使用することもできます。

別のユーザーのシェルにドロップしたときに自動的にディレクトリが切り替わることを示す端末。

現在の Run0 セッションをカスタマイズする方法

Run0 の最大のセールスポイントは、スーパーユーザーのアクションを処理するために setuid (SUID) を使用しないことです。代わりに、root としてコマンドを実行するために分離された疑似 TTY を作成する systemd-run に依存します。

このアプローチの結果、Systemd はすべての Run0 シェルをサービス マネージャーの下で実行される個別のユニットとして扱います。これにより、従来の権限昇格アプリとは異なり、ルート シェル プロセスをカスタマイズできます。

ルート シェルのラベルを追加するには、--unitフラグの後に使用したい名前を指定します。

次のフラグを追加することで、ルート シェルにカスタムの説明を追加することもできます--description

次のコマンドを使用して、ルート シェルのカスタム名を一覧表示して、詳細が適切に適用されていることを確認しますsystemctl

カスタム Systemd ユニットの詳細を表示するターミナル。

デフォルトでは、Run0 はルート シェルの背景色を赤に変更します。これは視覚的なインジケーターとしては便利ですが、システムで明るいテーマを使用している場合は気が散る可能性があります。

これを変更するには、--backgroundフラグの後に 40 ~ 49 の間の値を指定します。

Run0 で異なる背景色を表示する端末。

最後に、ルート シェルの「niceness レベル」を調整することもできます。これは -20 から 19 までの値で、カーネルがプロセスを他のプロセスよりも優先するかどうかを決定します。

ルート シェルに最高の優先度を与えるには、--nice「-20」値のフラグを使用します。

修正された nice レベルでルート シェルを強調表示するターミナル。

Run0セッションをグループ化する方法

各 Linux ルート シェルをカスタマイズできるだけでなく、Run0 を使用してそれらを Systemd スライスにグループ化することもできます。これは、マシンがシステムの他の部分に影響を与えずにプロセスのリソース需要を調整できるようにする特別な構造です。

別のスライスにルート シェルを作成するには、--sliceフラグの後に移動するスライスの名前を指定して実行します。

新しいスライス内のプロセスを一覧表示して、新しいセッションが新しいスライスで実行されていることを確認します。

カスタム Systemd スライスの詳細を表示するターミナル。

フラグを使用して、新しいスライスを Run0 の元のスライスと一緒にグループ化することもできます--slice-inherit。これは、シェルをそれぞれのスライスにすでにグループ化していて、新しいシェルを追加したい場合に便利です。

Run0 を使用して Systemd コンテナでコマンドを実行する方法

Systemd-nspawn は、Docker に似た軽量 Linux コンテナを作成および管理できる特別なプログラムです。Systemd スイートの一部であるため、Run0 を使用してホスト マシンから nspawn コンテナでコマンドを実行することもできます。

まず、システムで利用可能な Systemd-nspawn コンテナを一覧表示します。

利用可能な Systemd-nspawn コンテナのリストを表示するターミナル。

次のコマンドを実行して、コンテナのルート ディレクトリ内にフォルダーを作成します。

Run0 を使用してコンテナのルート シェルにドロップすることもできます。

コンテナのシェルプロンプトを切り替えるコマンドが表示されているターミナル。

ターミナル セッションのホスト名を出力して、コンテナー内で実行されていることを確認します。

ローカル システムから Systemd-nspawn コンテナへの切り替えプロセスを示すターミナル。

Linux で Run0 を使用してルート コマンドを実行および管理する方法を学ぶことは、権限昇格アプリに関しては氷山の一角にすぎません。su、sudo、sudo -s の違いを調べて、複雑な世界を深く理解しましょう。

画像クレジット: Xavier Cee (Unsplash経由)。すべての変更とスクリーンショットはRamses Redによるものです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です