LinuxでRun0を使用する方法
Run0 は、Systemd ベースの Linux ディストリビューション向けの新しい革新的な権限昇格プログラムです。これは、sudo や doas などの従来の昇格アプリに代わる軽量で「構成不要」の代替手段を提供します。ここでは、Linux システムのコマンドを昇格するために Run0 を使用する基本について説明します。
その前に、Run0 とは何か、そして sudo とどう違うのかを調べておくとよいでしょう。
別のユーザーとしてプログラムを実行する方法
権限昇格アプリの最も一般的な用途の 1 つは、コマンドをルート ユーザーとして実行することです。この点で、Run0 でルート ユーザーをタップするには、実行するコマンドの前に run0 を追加する必要があります。たとえば、次の例では、ルートのみがアクセスできるディレクトリに新しいフォルダーが作成されます。
これにより、CLI パスワード プロンプトまたは現在のユーザーのパスワードを要求する小さな GUI ウィンドウが表示されます。
sudo や doas と同様に、Run0 はコマンドを実行するときに非ルート ユーザーに切り替えることもできます。これを行うには、フラグを追加し--user
、その後にコマンドを実行するユーザーの名前を指定します。
切り替え先のユーザーのパスワードを入力し、 を押しますEnter。
別のユーザーのシェルに切り替える方法
権限昇格アプリのもう 1 つの重要な部分は、ユーザーをルート シェルにドロップする機能です。これにより、ルート ユーザーとしてシステムを操作し、CLI からより複雑なコマンドを実行できるようになります。
Run0 では、追加の引数なしでプログラムを実行することでこれを実行できます。
--user
プログラムを root として実行する場合と同様に、フラグ付きで Run0 を使用して、特定のユーザーとしてシェル セッションを開始することもできます。
さらに、run0 を使用すると、非ルート ユーザーに対して一時的なグループ権限を持つシェル セッションを作成できます。これは、ルートに落ちることなく、特定のユーザーとグループによってロックされているフォルダーにアクセスする場合に便利です。
たとえば、次のコマンドは、「alice」ユーザーに「www-data」グループへの一時的なアクセス権を付与します。
--chdir
新しいシェル セッションにドロップするときにディレクトリの変更を強制するフラグを使用することもできます。
現在の Run0 セッションをカスタマイズする方法
Run0 の最大のセールスポイントは、スーパーユーザーのアクションを処理するために setuid (SUID) を使用しないことです。代わりに、root としてコマンドを実行するために分離された疑似 TTY を作成する systemd-run に依存します。
このアプローチの結果、Systemd はすべての Run0 シェルをサービス マネージャーの下で実行される個別のユニットとして扱います。これにより、従来の権限昇格アプリとは異なり、ルート シェル プロセスをカスタマイズできます。
ルート シェルのラベルを追加するには、--unit
フラグの後に使用したい名前を指定します。
次のフラグを追加することで、ルート シェルにカスタムの説明を追加することもできます--description
。
次のコマンドを使用して、ルート シェルのカスタム名を一覧表示して、詳細が適切に適用されていることを確認しますsystemctl
。
デフォルトでは、Run0 はルート シェルの背景色を赤に変更します。これは視覚的なインジケーターとしては便利ですが、システムで明るいテーマを使用している場合は気が散る可能性があります。
これを変更するには、--background
フラグの後に 40 ~ 49 の間の値を指定します。
最後に、ルート シェルの「niceness レベル」を調整することもできます。これは -20 から 19 までの値で、カーネルがプロセスを他のプロセスよりも優先するかどうかを決定します。
ルート シェルに最高の優先度を与えるには、--nice
「-20」値のフラグを使用します。
Run0セッションをグループ化する方法
各 Linux ルート シェルをカスタマイズできるだけでなく、Run0 を使用してそれらを Systemd スライスにグループ化することもできます。これは、マシンがシステムの他の部分に影響を与えずにプロセスのリソース需要を調整できるようにする特別な構造です。
別のスライスにルート シェルを作成するには、--slice
フラグの後に移動するスライスの名前を指定して実行します。
新しいスライス内のプロセスを一覧表示して、新しいセッションが新しいスライスで実行されていることを確認します。
フラグを使用して、新しいスライスを Run0 の元のスライスと一緒にグループ化することもできます--slice-inherit
。これは、シェルをそれぞれのスライスにすでにグループ化していて、新しいシェルを追加したい場合に便利です。
Run0 を使用して Systemd コンテナでコマンドを実行する方法
Systemd-nspawn は、Docker に似た軽量 Linux コンテナを作成および管理できる特別なプログラムです。Systemd スイートの一部であるため、Run0 を使用してホスト マシンから nspawn コンテナでコマンドを実行することもできます。
まず、システムで利用可能な Systemd-nspawn コンテナを一覧表示します。
次のコマンドを実行して、コンテナのルート ディレクトリ内にフォルダーを作成します。
Run0 を使用してコンテナのルート シェルにドロップすることもできます。
ターミナル セッションのホスト名を出力して、コンテナー内で実行されていることを確認します。
Linux で Run0 を使用してルート コマンドを実行および管理する方法を学ぶことは、権限昇格アプリに関しては氷山の一角にすぎません。su、sudo、sudo -s の違いを調べて、複雑な世界を深く理解しましょう。
画像クレジット: Xavier Cee (Unsplash経由)。すべての変更とスクリーンショットはRamses Redによるものです。
コメントを残す