web-dev-qa-db-ja.com

再起動と電源オフにroot権限が必要なのはなぜですか?

端末からLinuxを再起動またはシャットダウンするには、それぞれrebootおよびpoweroffを使用できます。ただし、これらのコマンドは両方ともroot特権を必要とします。これはなぜですか? root権限を持つ必要がないことにより、どのようなセキュリティリスクが生じますか? GUIは、ユーザーがシャットダウンまたは再起動する方法を提供するので、なぜ端末コマンドをrootとして実行する必要があるのですか?

GUIからのオプションといえば、端末がLinuxコンピューターをシャットダウンまたは再起動するためにroot権限を必要とする場合、GUIはパスワードの入力を必要とせずに同じことを行うオプションをどのように提示できますか?

63
Rohan

警告:この回答の終わりまでに、あなたはおそらくLinuxについてあなたが思っていたよりも多く知っているでしょう

rebootおよびpoweroffにroot権限が必要な理由

GNU/Linuxオペレーティングシステムはマルチユーザーであり、その [〜#〜] unix [〜#〜] 先行バージョンも同様です。システムは共有リソースであり、複数のユーザーが同時に使用できます

以前は、これは通常 コンピュータ端末ミニコンピュータ または メインフレーム に接続されていました。

PDP-11

人気のPDP-11ミニコンピューター。今日の基準では少し大きい:)

現代では、これはネットワーク経由でリモートで(通常は [〜#〜] ssh [〜#〜] を介して)、 シンクライアント または- マルチシート構成 、同じコンピューターにハードウェアが接続されているローカルユーザーが複数いる場合。

multi-seat

マルチシート構成。 Tiago Vignattiによる写真

実際には、同じコンピュータを同時に使用する数百または数千のユーザーが存在する可能性があります。 ユーザーがコンピュータの電源を切り、他のユーザーがそれを使用できなくても、あまり意味がありません。

Root権限を必要としないことにより、どのようなセキュリティリスクが生じますか?

マルチユーザーシステムでは、これにより、実質的に サービス拒否攻撃 を防ぐことができます。

GUIは、ユーザーがシャットダウンまたは再起動する方法を提供するので、ターミナルコマンドをrootとして実行する必要があるのはなぜですか?

多くのLinuxディストリビューションはGUIを提供していません。実行するデスクトップLinuxディストリビューションは通常、単一のユーザーパターンを指向しているため、GUIからこれを許可することは理にかなっています。

コマンドが依然としてroot特権を必要とする考えられる理由:

  • デスクトップ指向のディストリビューションのほとんどのユーザーは、コマンドラインではなくGUIを使用するので、問題はありません。
  • 受け入れられているUNIX規則との整合性
  • (間違いながら誤解しやすい)セキュリティ。単純なプログラムやスクリプトがシステムの電源をオフにするのを防ぎます。

GUIはroot権限なしでどのようにシャットダウンを提示できますか?

実際のメカニズムは、特定のデスクトップマネージャー(GUI)によって異なります。一般的に言えば、このタイプのタスクに使用できるメカニズムはいくつかあります。

  • ルートとしてGUI自体を実行する(うまくいけば、適切な実装ではそれが起こらないはずです...)
  • setuid
  • NOPASSWDを使用したSudo
  • コマンドをそれらの特権を持つ別のプロセスに伝達します。通常は D-Bus で行われます。一般的なGUIでは、これは通常 polkit によって管理されます。

要約すれば

Linuxは、メインフレーム、サーバー、デスクトップからスーパーコンピューター、携帯電話、および 電子レンジ まで、非常に多様なコンテキストで使用されています。みんなをいつも幸せに保つのは難しいです! :)

61
goncalopp

Linuxの起源はUnixであり、Unixは当初、マルチユーザーオペレーティングシステムとして開発されました。システムを再起動したい場合、1人のユーザーが他のユーザーを混乱させる可能性があります。 root権限を持つ管理者だけがそれを行うことができます。

45
Fred

これは非常に自然でポリシー上の問題であり、便利です。物理的にマシンにログインしているため、GUIから許可されていました。 (一部のLinuxディストリビューションでは、GUIがrootとして実行されていない場合でもパスワードの入力を求められます。Centos6を使用していて、ユーザーのGUIシャットダウン/再起動オプションがなく、ログアウトとロックオプションしかない)

疑似端末からは、ユーザーがサーバーまたはマシンにsshでログインしてシャットダウンまたはリブートしないようにするため、rootであるか、sudo特権を持っている必要があります。

35
Ijaz Ahmad Khan

(あらゆる種類の)シャットダウンはallユーザーに影響を与えます。ログインしているからといって、J。ランダムユーザーが通常実行できるようにする必要はありません。

通常、許可されたオペレーターのみが再起動を許可されるべきであり、場合によっては、物理的にアクセスできるオペレーター-多くのLinuxシステムは、ケースの電源ボタンからシャットダウンできます。私はこれを知っていました。最近では、システムを組み立てるときは通常、ボタンを外したままにします...

10
Toby Speight

のために1st 質問:

Root権限を必要としないことにより、どのようなセキュリティリスクが生じますか? GUIは、ユーザーがシャットダウンまたは再起動する方法を提供するので、ターミナルコマンドをrootとして実行する必要があるのはなぜですか?

はい、 this の回答で述べたように、Linuxは本質的にマルチユーザーシステムとして設計されています。 1人のシステムで複数のユーザーが作業している場合、他のユーザーが作業している間に、1人の通常のユーザーがシステムの電源を切ることが許可されていると悪いことになります。 Webサーバーが離れた場所にいるユーザーによって停止された場合、どうなるか想像してみてください。 したがって、システム管理者(別名rootユーザー)のみがシステムのpoweroffまたはrebootを実行できます。

次のことも考えられます。

$ which poweroff reboot
/sbin/poweroff
/sbin/reboot

したがって、poweroffおよびrebootは、ユーティリティとルートのみを保持する/sbinディレクトリの下にあります。コマンド、システムの起動、復元、回復、修復に不可欠なバイナリ。

したがって、これらのコマンドはsystem-administrator/rootユーザーによって実行されることが想定されています。マンページにアクセスしてください。

DESCRIPTION
       These programs allow a system administrator to reboot, halt or poweroff the system.

関連する質問もご覧ください: シャットダウンして再起動するためにターミナルでrootになる必要があるのはなぜですか?


2のためにnd 質問:

GUIからのオプションといえば、ターミナルがLinuxコンピュータをシャットダウンまたは再起動するためにroot権限を必要とする場合、GUIはパスワードの入力を必要とせずに同じことを行うオプションをどのように提示できますか?

GUIは利便性の問題であり、明らかにユーザーがGUIにログインしており、何が起こっているか、何をしているかを知っています。そのため、ユーザーからのパスワードプロンプト/要求、つまり、シャットダウンまたは再起動を許可されていない メカニズム のようなpolicy-kit。しかし、コマンドラインの場合、物事はまったく異なります...

もちろん、Desktop-Environmentが提供する同等のコマンドを使用できます。例、gnomeの場合、gnome-session-quitを使用して、ルート権限を必要としない適切なオプションを指定できます。

関連する質問もご覧ください: root権限なしで電源ボタンを押してコンピューターをシャットダウンする方法

5
Pandya

他のユーザーがすでに書いたように、「通常の」ユーザーは他のユーザーのプロセスを終了したり、サービス(Webサーバー、メールサーバーなど)をシャットダウンしたりすることはできません。そのため、スーパーユーザー権限が必要です。

GUIは、setuidメカニズム https://en.wikipedia.org/wiki/Setuid を介してシャットダウンまたは再起動できます。簡単に言うと、rebootコマンド自体にroot権限があり、通常のユーザーとして再起動を実行できます。リブート実行可能ファイルを操作することは許可されていないため(実行権限はあるが書き込み権限はありません)、これはマシンに対するroot権限を取得する方法を提供しません。

そして(再び他の人がすでに書いたように)GUIはマシンで物理的に実行されると想定されているため、サーバーではなくユーザーコンピューターであり、(電源を抜くことによって)とにかくコンピューターの電源を切ることができます。 root権限について;)他のユーザーがログインしているかどうか(たとえば、ルートシェルのどこか)をチェックし、他のユーザーがログインしている場合はシャットダウンできないGUIも見ました。

編集:Pandyaによって修正されたように、通常のユーザーとして再起動/シャットダウンできるポリシーキットです

3
pseyfert