LinuxでRun0を使用する方法

ノートパソコンの画面のクローズアップを示す写真。

Run0は、SystemdベースのLinuxディストリビューション向けの新しく革新的な特権昇格プログラムです。これは、sudoやdoasなどの従来の昇格アプリケーションに対する軽量で「設定不要」の代替手段を提供します。ここでは、Linuxシステムのコマンドを昇格させるためのRun0の基本的な使用方法を示します。

目次

  • 異なるユーザーとしてプログラムを実行する方法
  • 異なるユーザーのシェルに切り替える方法
  • 現在のRun0セッションをカスタマイズする方法
  • Run0セッションをグループ化する方法
  • Run0を使用してSystemdコンテナでコマンドを実行する方法

その前に、Run0とは何か、sudoとはどのように異なるのかを知りたいかもしれません。

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

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

run0 mkdir/etc/maketecheasier

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

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

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

run0 --user=alice /home/alice/alice-program.sh

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

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

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

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

rootとしてプログラムを実行するのと同様に、特定のユーザーとしてシェルセッションを開始するためにRun0を--userフラグとともに使用することも可能です:

run0 --user=alice

さらに、run0は非rootユーザーのために一時的なグループ権限を持つシェルセッションを作成することを許可します。これは、特定のユーザーとグループの背後にロックされたフォルダーにアクセスしたい場合に便利です。

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

run0 --user=alice --group=www-data

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

run0 --user=alice --chdir=/home/alice/Documents

知っておくと良いこと:ファイルシステム内のファイル権限を再帰的に変更する方法を探ることで、Linuxマシンについてもっと学びましょう。

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

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

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

rootシェルにラベルを追加するには、--unitフラグを使用し、使用したい名前を続けます:

run0 --unit=maketecheasier

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

run0 --unit=maketecheasier --description="こんにちは、世界!"

systemctlを使用して、rootシェルのカスタム名が正しく適用されているか確認します:

systemctl list-units maketecheasier.service

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

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

これを変更するには、--backgroundフラグを使用し、40から49の間の値を続けます:

run0 --unit=maketecheasier --background=42

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

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

run0 --nice=-20

注意:--niceフラグは、個々のRun0コマンドにも機能します。たとえば、run0 --nice=-20 vimを使用して、Vimを高いCPU優先度で実行できます。

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

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

異なるスライスでrootシェルを作成するには、--sliceフラグを実行し、移動したいスライスの名前を続けます:

run0 --slice=maketecheasier

注意:新しいSystemdスライスを作成するために、--sliceフラグに新しい名前を提供できます。

新しいスライスの下で新しいセッションが実行されていることを確認するには、その中のプロセスをリストします:

systemctl status maketecheasier.slice

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

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

run0 --slice=maketecheasier --slice-inherit

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

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

まず、システム内の利用可能なSystemd-nspawnコンテナをリストします:

machinectl list

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

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

run0 run0 --machine=maketecheasier --user=root mkdir/hello-world

注意:現在、Run0には、--machineフラグで実行する際に特権を昇格できないバグがあります。特権昇格を強制するために、2つ目のrun0コマンドを追加することでこれを修正できます。

Run0を使用してコンテナのrootシェルにドロップすることも可能です:

run0 run0 --machine=maketecheasier --user=root

ターミナルセッションのホスト名を印刷することで、現在コンテナ内で実行していることを確認します:

echo$HOSTNAME

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

LinuxでRun0を使用してrootコマンドを実行および管理する方法を学ぶことは、特権昇格アプリケーションに関する氷山の一角に過ぎません。su、sudo、sudo -sの違いを見て、複雑な世界に深く潜り込んでみてください。

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