システム管理者(root)としてコマンドを実行する方法


66

管理者権限でコマンドを実行する必要があります。ルートとしてコマンドを実行する必要があると誰かが言った。どうすればいいですか?


2
メタ参照してください議論を、この質問について
ステファン・

回答:


94

主な2つのコマンドラインの可能性は次のとおりです。

  • suプロンプトが表示されたら、rootパスワードを使用して入力します。
  • sudoコマンドの前に置き、プロンプトが表示されたらパスワードを入力します。

ルートとしてシェルコマンドを実行する

sudo(グラフィック表示を実行していない場合に推奨)

これは、Ubuntu、Linux Mint、(おそらく)Debianなど、ほとんどのシステムで推奨される方法です。別のルートパスワードがわからない場合は、この方法を使用します。

Sudoでは、独自のパスワードを入力する必要があります。(目的は、キーボードを無人でロック解除したままにしておくと、そのコマンドを本当に実行したいこと、たとえばタイプミスではないことを保証するために、損傷を制限することです。)数分なので、複数のsudoコマンドを連続して実行できます。

例:

sudo service apache restart

ルートとして複数のコマンドを実行する必要がある場合は、各コマンドの前にを付けsudoます。インタラクティブシェルをルートとして実行した方が便利な場合があります。あなたはそのために使用することができますsudo -i

$ sudo -i
# command 1
# command 2
...
# exit

代わりにsudo -i、を使用できますsudo -s。違いは、ある-i私は一方で、まともなデフォルト値に環境をnitializes -s良くも悪くも用の設定ファイルを使用しています。

詳細については、sudo Webサイトを参照するかman sudo、システムに入力してください。須藤は非常に構成可能です。たとえば、特定のユーザーが特定のコマンドをrootとしてのみ実行できるように構成できます。詳細については、sudoersmanページ参照してください。sudo visudosudoersファイルの編集に使用します。

このsuコマンドは、ほとんどのUnixライクなシステムに存在します。そのユーザーのパスワードを知っていれば、別のユーザーとしてコマンドを実行できます。ユーザーを指定せずに実行すると、suデフォルトでルートアカウントが使用されます。

例:

su -c 'service apache restart'

実行するコマンドは、-cオプションを使用して渡す必要があります。コマンドがシェルによって解析されず、実行されるルートシェルにそのまま渡されるように、引用符が必要なことに注意してくださいsu

rootとして複数のコマンドを実行するには、インタラクティブシェルを起動する方が便利です。

$ su
# command 1
# command 2
...
# exit

一部のシステムでは、を使用するにはグループ番号0(wheel)と呼ばれる必要がありますsu。(ポイントは、rootパスワードが誤って誰かに漏洩した場合の損害を制限することです。)

ルートとしてログインする

ルートパスワードが設定されていて、それを所有している場合はroot、ログインプロンプトで入力してルートパスワードを入力するだけです。非常に注意し、意図しない動作をする可能性があるため、複雑なアプリケーションをルートとして実行しないでください。ルートとして直接ログインすることは、ディスク障害やアカウントから自分をロックアウトした場合などの緊急事態で主に役立ちます。

シングルユーザーモード

シングルユーザーモード、または実行レベル1では、root権限も付与されます。これは主に、マルチユーザーの実行レベルで起動できない緊急メンテナンス状況を対象としています。を渡すsingleemergency、カーネルコマンドラインでシングルユーザーモードで起動できます。シングルユーザーモードで起動することは、システムを通常起動してルートとしてログインすることと同じではないことに注意してください。むしろ、システムは実行レベル1に定義されたサービスのみを開始します。通常、これは、使用可能なシステムを持つために必要なサービスの最小数です。

telinitコマンドを使用して、シングルユーザーモードに切り替えることもできtelinit 1ます。ただし、このコマンドを実行するには、他の方法でルート権限を取得している必要があります。

多くのシステムでは、シングルユーザーモードで起動すると、パスワードを要求せずにルートシェルにアクセスできます。特に、systemd-basedシステムは、この方法で起動するときにrootパスワードの入力を求めます。

その他のプログラム

カライフ

Califeでは、許可されている場合、独自のパスワードを入力することにより、別のユーザーとしてコマンドを実行できます。これは、はるかに広く普及しているsudo(上記を参照)に似ています。Califeはsudoよりも軽量ですが、構成も簡単です。

Op

Opを使用すると、rootを含む別のユーザーとしてコマンドを実行できます。これは、任意のコマンドを実行するための本格的なツールではありません。特定のコマンドを実行するために、システム管理者が構成しopニーモニックを入力します。

スーパー

Superを使用すると、ルートを含む別のユーザーとしてコマンドを実行できます。コマンドは、システム管理者によって許可されている必要があります。

rootとしてグラフィカルコマンドを実行する

ウィキペディアも参照してください。

PolicyKit(GNOMEを使用する場合に推奨)

目的のコマンドの前にcommandを付けるだけpkexecです。これはほとんどの場合に機能しますが、普遍的には機能しないことに注意してください。

詳細についてはman pkexec、を参照してください。

KdeSu、KdeSudo(KDEを使用する場合に推奨)

kdesuおよびkdesudosusudoそれぞれのグラフィカルなフロントエンドです。X Windowプログラムを簡単にrootとして実行できます。それらはKDEの一部です。タイプ

kdesu -c 'command --option argument'

そして、ルートパスワードを入力するか、入力します

kdesudo -c 'command --option argument'

パスワードを入力します(実行が許可されている場合sudo)。KdeSuで「パスワードを保持する」オプションをチェックすると、ログインセッションごとに1回だけルートパスワードを入力する必要があります。

その他のプログラム

ツッス

Ktsuss(「suをシンプルに保つ、愚かな」)は、suのグラフィカルバージョンです。

べース

Beesuは、suコマンドのグラフィカルなフロントエンドであり、Red HatベースのオペレーティングシステムのGksuを置き換えました。主にRHELとFedora用に開発されました。

廃止されたメソッド

gksu そして gksudo

gksuおよびgksudosusudoそれぞれのグラフィカルなフロントエンドです。X Windowプログラムを簡単にrootとして実行できます。それらはGnomeの一部です。タイプ

gksu command --option argument

そして、ルートパスワードを入力するか、入力します

gksudo command --option argument

パスワードを入力します(実行が許可されている場合sudo)。

gksuおよびgksudo廃止されました。GNOMEではPolicyKitに置き換えられており、多くのディストリビューション(Ubuntuなど)はデフォルトでインストールしなくなりました。それらが利用可能であるか、適切に動作していることに依存しないでください。

シェルベースの方法のいずれかを使用して手動で

「ルートセクションとしてシェルコマンドを実行する」のいずれかの方法を使用します。ルートへの移行中にDISPLAY環境変数もXAUTHORITY環境もリセットされないようにする必要があります。これには、この質問の範囲外のメソッドの追加構成が必要になる場合があります。

全体的に、これは悪い考えです。これは主に、グラフィカルアプリケーションがルートとして構成ファイルを読み書きするためです。通常のユーザーとしてそれらのアプリケーションを再度使用しようとすると、それらのアプリケーションには独自の構成を読み取る権限がありません。

ルートとしてファイルを編集する

ルートとしてファイルを編集するにはどうすればよいですか?を参照してください


2
sudo(1)インストールされ、(2)使用がsudoersファイルにあり、操作の実行が許可されている場合にのみ機能することに注意してください。
-n0pe

2
これを更新する必要があります。最近多くのディストリビューションで/ をpkexec置き換えています。gksugksudo
strugee

1
@strugee-これを更新しようとしましたか?Redhatの下のものも正しくありません。
slm


3

この質問はLinux固有のものではなかったため、Solaris 9+(またはTrusted Solaris 8)で同じ目標を達成する方法は次のとおりです。

Solarisには、バージョン9以降、RBAC(Role Based Access Control)と呼ばれる一連のツールが含まれています。

RBACの要点は、ユーザーおよび/またはロールへの承認と権利の付与、またはユーザーへのロールの付与により、誰がどの特権で何を実行できるかについて、非常にきめ細かいモデルを作成できることです。

基本的に、/ etc / security / auth_attrで承認を特定し、/ etc / user_attrでユーザーまたはロールに付与します。

プロファイルは/ etc / security / prof_attrで定義します。次に、コマンドを/ etc / security / exec_attr内のそれらのプロファイルに関連付けてから、それらのプロファイルを/ etc / user_attrファイル内のユーザーに割り当てます。

それらのものが完了したら、あなたが実際に実行pfexec <command>に付与されている特権または権限でコマンドを実行するためにそのためのユーザーというコマンドを。

RBACの良いところは、コマンド自体またはユーザーに、ユーザー+コマンドの組み合わせに対してのみ付与される追加の特権がないことです。したがって、バイナリ+を作成したり、単にsudoを使用してユーザーがほとんど何でも実行できるようにするよりも安全です。(sudoをロックできることは知っていますが、私の経験ではほとんどの人はそうではありません)

RBACのもう1つの利点は、rootを役割アカウントにし、その役割を「su」コマンドとrootパスワードでrootになることができるユーザーに割り当てることができることです。rootユーザーはまた、あなたがrootのパスワードを無効にすることができ、Linuxのモデルよりも、(私の意見では)優れているシングルユーザーモードにログインすることができますpasswd -d root、またはrootアカウントをロックしpasswd -l root、非常にrootでログインしますどちらも、何かがうまくいかないときは難しい。

Ben RockwoodのRBACに関する優れたブログ投稿は、(Open)SolarisでのRBACの使用で読むことができます。


3

または、いくつかのコマンドに超能力を与えることができます。私は、所有者の許可でコマンドが実行される特別な許可について話しています。

コマンドのパスを取得し、そのパスの#which <command>SUIDまたはSGIDを設定します。

PS-SUIDおよびSGIDビットは注意して与える必要があります。システムが安全でなくなる可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.