端末からLinuxを再起動またはシャットダウンするには、それぞれreboot
およびpoweroff
を使用できます。ただし、これらのコマンドは両方ともroot特権を必要とします。これはなぜですか? root権限を持つ必要がないことにより、どのようなセキュリティリスクが生じますか? GUIは、ユーザーがシャットダウンまたは再起動する方法を提供するので、なぜ端末コマンドをrootとして実行する必要があるのですか?
GUIからのオプションといえば、端末がLinuxコンピューターをシャットダウンまたは再起動するためにroot権限を必要とする場合、GUIはパスワードの入力を必要とせずに同じことを行うオプションをどのように提示できますか?
警告:この回答の終わりまでに、あなたはおそらくLinuxについてあなたが思っていたよりも多く知っているでしょう
reboot
およびpoweroff
にroot権限が必要な理由GNU/Linuxオペレーティングシステムはマルチユーザーであり、その [〜#〜] unix [〜#〜] 先行バージョンも同様です。システムは共有リソースであり、複数のユーザーが同時に使用できます。
以前は、これは通常 コンピュータ端末ミニコンピュータ または メインフレーム に接続されていました。
人気のPDP-11ミニコンピューター。今日の基準では少し大きい:)
現代では、これはネットワーク経由でリモートで(通常は [〜#〜] ssh [〜#〜] を介して)、 シンクライアント または- マルチシート構成 、同じコンピューターにハードウェアが接続されているローカルユーザーが複数いる場合。
マルチシート構成。 Tiago Vignattiによる写真
実際には、同じコンピュータを同時に使用する数百または数千のユーザーが存在する可能性があります。 ユーザーがコンピュータの電源を切り、他のユーザーがそれを使用できなくても、あまり意味がありません。
マルチユーザーシステムでは、これにより、実質的に サービス拒否攻撃 を防ぐことができます。
多くのLinuxディストリビューションはGUIを提供していません。実行するデスクトップLinuxディストリビューションは通常、単一のユーザーパターンを指向しているため、GUIからこれを許可することは理にかなっています。
コマンドが依然としてroot特権を必要とする考えられる理由:
実際のメカニズムは、特定のデスクトップマネージャー(GUI)によって異なります。一般的に言えば、このタイプのタスクに使用できるメカニズムはいくつかあります。
Linuxは、メインフレーム、サーバー、デスクトップからスーパーコンピューター、携帯電話、および 電子レンジ まで、非常に多様なコンテキストで使用されています。みんなをいつも幸せに保つのは難しいです! :)
Linuxの起源はUnixであり、Unixは当初、マルチユーザーオペレーティングシステムとして開発されました。システムを再起動したい場合、1人のユーザーが他のユーザーを混乱させる可能性があります。 root権限を持つ管理者だけがそれを行うことができます。
これは非常に自然でポリシー上の問題であり、便利です。物理的にマシンにログインしているため、GUIから許可されていました。 (一部のLinuxディストリビューションでは、GUIがrootとして実行されていない場合でもパスワードの入力を求められます。Centos6を使用していて、ユーザーのGUIシャットダウン/再起動オプションがなく、ログアウトとロックオプションしかない)
疑似端末からは、ユーザーがサーバーまたはマシンにsshでログインしてシャットダウンまたはリブートしないようにするため、rootであるか、sudo特権を持っている必要があります。
(あらゆる種類の)シャットダウンはallユーザーに影響を与えます。ログインしているからといって、J。ランダムユーザーが通常実行できるようにする必要はありません。
通常、許可されたオペレーターのみが再起動を許可されるべきであり、場合によっては、物理的にアクセスできるオペレーター-多くのLinuxシステムは、ケースの電源ボタンからシャットダウンできます。私はこれを知っていました。最近では、システムを組み立てるときは通常、ボタンを外したままにします...
のために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権限なしで電源ボタンを押してコンピューターをシャットダウンする方法
他のユーザーがすでに書いたように、「通常の」ユーザーは他のユーザーのプロセスを終了したり、サービス(Webサーバー、メールサーバーなど)をシャットダウンしたりすることはできません。そのため、スーパーユーザー権限が必要です。
GUIは、setuidメカニズム https://en.wikipedia.org/wiki/Setuid を介してシャットダウンまたは再起動できます。簡単に言うと、rebootコマンド自体にroot権限があり、通常のユーザーとして再起動を実行できます。リブート実行可能ファイルを操作することは許可されていないため(実行権限はあるが書き込み権限はありません)、これはマシンに対するroot権限を取得する方法を提供しません。
そして(再び他の人がすでに書いたように)GUIはマシンで物理的に実行されると想定されているため、サーバーではなくユーザーコンピューターであり、(電源を抜くことによって)とにかくコンピューターの電源を切ることができます。 root権限について;)他のユーザーがログインしているかどうか(たとえば、ルートシェルのどこか)をチェックし、他のユーザーがログインしている場合はシャットダウンできないGUIも見ました。
編集:Pandyaによって修正されたように、通常のユーザーとして再起動/シャットダウンできるポリシーキットです