ルートとしてログインするのが悪いのはなぜですか?


192

私は、多くの場合、あなたは、人々はそれは恐ろしい何かだとかのようにrootでログイン/ランニングについてのように冗談を言って見フォーラムや他のウェブサイト上の記事に遭遇してきた誰もがそれについて知っているべきです。ただし、検索で問題が明らかになることはあまりありません。

Linuxの専門家には広く知られているかもしれませんが、その理由は本当にわかりません。何年も前にLinux(RedhatとMandrake)を初めて試したときは常にrootで実行していたことを覚えています。

実際には、rootユーザー(SuSe?)の壁紙として、明るい赤色の背景に警告サインのあるディストリビューションがいくつかあります。私は今でもWindowsインストールで通常使用するために「管理者」アカウントを使用しており、そこでも問題に遭遇したことはありません。


15
ルートとしてプログラムを実行しても問題はないと思います。それだけで、あなたがLinuxにあまり賢くないなら、あなたはあなたのOSのコアを傷つけるかもしれません(sudoerさえそれをすることができます)。それ以外は問題はない。しかし、それは私の見解です。
ガウラブブトラ

1
関連する質問はこちら
loevborg

ルートモードに入るのは、ディストリビューションによって異なります。私は個人的に、Fedoraが箱から出してすぐに「sudo」を許可しないことに悩まされています。ただし、OpenSUSEとUbuntoには事前に構成されたsudoがあります。したがって、適切なディストリビューションを選択すると、ファイルにアクセスできないという煩わしさを最小限に抑えることができます。
djangofan

4
@GauravButolaは、たとえあなたが専門家であっても、アプリケーションが危険にさらされた場合の悪い考えです。
-strugee

2
@DaboRossは、Windowsで管理者として働いているとコメントしています。そのOSでの私の(小さな)経験のために、それはUbuntuに似ているように思えます:それはあなたが望むものを何でもできるという意味で特権アカウントですが、たとえば新しいソフトウェアをインストールする前に許可を求めます。したがって、Ubuntuに翻訳されたWindowsでユーザー「管理者」を使用するのと同等の方法は、パスを要求しないようにsudoを設定してメインユーザーを実行することです。
Rmano 14年

回答:


154

これは、長年にわたって導入されてきたセキュリティモデルを無効にします。アプリケーションは、非管理セキュリティ(または単なる人間)で実行されることを意図しているため、基礎となるシステムを変更するには、特権を昇格する必要があります。たとえば、最近のRhythmboxのクラッシュで/usr、バグが原因でディレクトリ全体が消去されることは望ましくありません。または、攻撃者がROOTシェルを取得できるようにするために、ProFTPDに投稿されたばかりの脆弱性。

アプリケーションをユーザーレベルで実行し、管理タスクを必要な場合にのみrootユーザーに任せることは、どのオペレーティングシステムでも良い習慣です。


5
...そして、災害時の些細なエラーからあなたを守ります。私は1990年以来のUnixユーザ/ admのだが、それでも私は確かにやって正確に間違った場所にスペースを滑ることができますrm -rf tmp/tests/*...
Rmano

9
1.)ほとんどの人は、ホームディレクトリをルートディレクトリよりも重要だと考えます。前者は再インストールできないためです。だから私はあなたの要点がわからない。2.)セキュリティの面では、あなたは正しいです。しかし、これまでずっと(多くの人がそうであるように)管理者アカウントを使用してきたWindows(多くのマルウェアが存在する場所)からやって来て、これを本当の危険と考えるのは大変です。私はsudoLinuxの2番目のコマンドごとにパスワードを入力するのが面倒です。Linuxユーザーは怠け者ではないのですか?????
phil294

同意しない-_-:〜:|
-Edgy1

@LazyPowerはあなたの答えを編集してくれてありがとう、しかし今はもう理解できません。私のプライベートUbuntu〜フォルダを変更するには、プログラムにsudo権限は必要ありません。Rhythmboxは、CAN私の全体の$ HOME /音楽ディレクトリを一掃します!そして、それは私が気にするすべてです!これはルート権限にどのように関係しますか?
phil294

1
@Blauhirnを呼び出すのは良いことです。/ usr全体を削除したくないことを反映するために、追加の編集を送信しました。$ HOMEフォルダーを保護するという点では、適切なバックアップ以外は役に立ちません。この特定のシナリオは、優れた実践ほどセキュリティに関連するとは思いません。コールアウトをありがとう。
-lazyPower

79

ほんの一言:セキュリティ。

  1. ルートとしてログインしています=すべてのアプリケーションはルート権限で実行されています-Firefox、Flash、OpenOfficeなどのすべての脆弱性がシステムを破壊する可能性があります。はい、Ubuntu / Linux向けのウイルスはほとんどありませんが、それはまた、優れたセキュリティとデフォルトの非特権ユーザーによるものです。
  2. ウイルスだけでなく、アプリケーションの小さなバグがシステムファイルを消去したり、...
  3. あなたがrootとしてログインしているとき、あなたはすべてをすることができます-システムは尋ねません!このディスクをフォーマットしますか?OK、ワンクリックで完了です。あなたはrootであり、あなたが何をしているのか知っているからです...

16
私のユーザーアカウントがすべて所有するデータファイルは、システムファイルよりもはるかに価値があります。上記の例はすべて、簡単に交換可能なシステムファイルが保護されていることを除いて、ユーザーとしてログインした場合でも問題になります。
kbeta

5
@kbetaでは、データとシステムファイルのみが貴重なコンピューターで実行していると想定しています。実際には、多くのユーザーが同時にシステムを使用しているシステムでは、Linuxがよく使用されます。この場合、システム(およびシステムファイル)の安定性ははるかに重要であり、他のユーザーファイルも重要です。
エリックポーリー

2
@kbetaまあまあですが、システム構成が破損しているとデータにリスクが生じる可能性があります...もちろん、システムが現在危険にさらされているかどうかは、バックアップがあることをお勧めします。災害復旧計画で現在のバックアップを実行することはさらに良いでしょう。
プリフタン

47

次の理由により、ルートとして実行するのは悪いです。

  1. 愚かさ:愚かなことをすることを妨げるものは何もありません。とにかく有害な可能性があるシステムを変更しようとする場合は、sudoを実行する必要があります。これにより、大きな/費用のかかる変更をしようとしていることに気付くために、パスワードを入力している間一時停止します。
  2. セキュリティ: この質問ではすでに何度も言及されていますが、基本的には同じことであり、管理者ユーザーのログインアカウントがわからない場合は、ハッキングが難しくなります。rootは、管理者資格情報の作業セットの半分が既にあることを意味します。
  3. 本当に必要ありません:いくつかのコマンドをrootとして実行する必要があり、sudoの有効期限が切れたときに何度もパスワードを入力する必要があることに悩まされる場合、必要なのはsudo -irootだけです。パイプを使用していくつかのコマンドを実行したいですか?次にを使用しますsudo sh -c "comand1 | command2"
  4. 回復コンソールでいつでも使用 できます回復コンソールを使用すると、愚かなことをしたり、アプリ(まだsudoとして実行する必要がありました)に起因する問題を修正してから回復を試みることができます。Ubuntuにはパスワードがありませんこの場合、rootアカウントを探しますが、変更をオンラインで検索できます。これにより、ボックスに物理的にアクセスできる人が危害を加えることが難しくなります。

なぜ悪いかについての情報を見つけることができなかった理由は、インターネットにはデータが多すぎるためです:)、そして長い間Linuxを使用している多くの人々があなたのように考えているからです。ルートアカウントについてのこの考え方はかなり新しく(10年くらいでしょうか?)、多くの人がsudoを使用しなければならないことにいらいらします。特に、サーバーで作業している場合は、システムの変更を意図して行ったということです。おそらく以前の悪い経験とほとんどのシステム管理者が知っているセキュリティ標準からもたらされたものですが、それでも彼らは気に入らないでしょう:)


「たぶん10年?」これを書いたときからも、それよりもずっと長い。sudoがなくても、例えばwheelグループ(例えば)は言うまでもありません。特権の分離は常に重要であり、常に重要であり、常に重要です。Otohは、何年も前にUnixベースのOSを使用していた人ほど多くはなく、常に管理者であることに慣れている人も少なくありません。
プリフタン

36

これはいい質問です。サーバーとデスクトップインストールのどちらについて話しているかによって、答えはわずかに異なると思います。

デスクトップでは、rootアカウントを使用することはまれです。実際、Ubuntuはルートアクセスを無効にして出荷されます。スーパーユーザー特権を必要とするすべての変更はsudo、そのグラフィカルな認識gksudoとを介して行われますkdesudorootしかし、パスワードを設定するのは簡単だとしたら、なぜ人々はそれをしないのですか?

理由の1つは、追加のセキュリティ層が提供されることです。プログラムを実行しroot、セキュリティ上の欠陥が悪用された場合、攻撃者はすべてのデータにアクセスでき、ハードウェアを直接制御できます。たとえば、トロイの木馬またはキーロガーをカーネルにインストールする場合があります。ただし、実際には、攻撃はスーパーユーザー権限がなくても大きな損害を与える可能性があります。結局のところ、ドキュメントや保存されたパスワードを含むすべてのユーザーデータには、ルートアクセスなしでアクセスできます。

シングルユーザーシステムでのより有効なポイントは、ユーザーが誤ってシステムを使用不能にすることを防ぐことです。ユーザーが意図せずにすべてのファイルを削除するコマンドを発行した場合、データが失われた場合でもシステムを起動できます。

さらに、今日のほとんどのユーザー向け(X11)アプリケーションは、通常のユーザーアカウントとして管理者権限なしで実行されることを前提に構築されています。したがって、一部のプログラムは、として実行しrootたときに誤動作する場合があります。

非グラフィカルシェルアクセスのみのマルチユーザーシステムでは、これらの理由の多くは当てはまりません。ただし、Ubuntuは依然としてアクセスできないrootアカウントにデフォルトで設定されています。まずsudo、セキュリティホールを介して(権限を持つ)ユーザーアカウントへのアクセスを取得することとにアクセスすることとの間に実際の違いrootがありsudoます。追加のセキュリティステップ。別の方法として、ユーザーアカウントから多くの管理タスクを実行しsudo、スーパーユーザー権限が絶対に必要な場合にのみ呼び出すことが便利です。したがって、ソースからプログラムをインストールするときは、ソースをビルドすることをお勧めします-実行中configureおよびmake-ユーザーのディレクトリ内sudo make installで、最終ステップでのみ使用します。繰り返しますが、これは自分自身(およびマルチユーザーシステムの他のユーザー)を足で撃つことをより困難にし、システムで大混乱を引き起こすビルドスクリプトの可能性を減らします。したがって、サーバー上であってもUbuntuのsudoベースの管理に固執することをお勧めします。


2
he will still be able to boot the system, even if the data will be lost.-これのポイントは何ですか?データが失われた場合、データは失われ、それだけです。Linuxシステムソフトウェアが削除された場合、再インストールできますが、このようなディレクトリでのデータ損失に注意する必要があるのはなぜですか?一方、データの損失~は悪いです。そしてsudo、それから私を保護しません。
phil294

2
もう1つの良い方法は、重要なデータをバックアップすることです。ホームディレクトリを消去しても、ブートしてバックアップからファイルをコピーするだけで済みます。または、旅行用の小さなラップトップを持っているとしましょう。いくつかの写真、旅行メモ、列車のスケジュールがあるかもしれませんが、あまり重要ではありません。ユーザーファイルをワイプしても、システムを起動してフライトをチェックインするか、どのバスに乗るかを確認できます。
-Richlv

@Blauhirnバックアップ。そして、それが暗いように見えても、回復の可能性があります。
プリフタン

34

(今のところ)他の回答で特定されていないルートとして実行しない理由の1つは、トレーサビリティです。主にシングルユーザーマシン(デスクトップまたはラップトップ)であるマシンではおそらく重要ではありませんが、サーバーマシンでは、誰かがとしてログインしているroot場合、実行されたアクションの責任を誰に負わせているのかわかりません。したがって、root特権を必要とする複数のシステムと複数の管理者を持つほとんどの専門組織は、ユーザーが自分のユーザーID(およびパスワード)を使用してログインし、必要なときに特権sudoを使用して操作するためのプログラムを使用rootする必要があります

それ以外の場合、ルートとして実行されない主な理由は次のとおりです。

  • 事故による損傷のリスクを最小限に抑えます。rm -fr / home/me/my-subdirルートとして実行する場合、(最初の)スラッシュの後のスペースのために、マシンから重要なものすべてを劇的に削除しました-最初に行くものは最初に追加されたものです-カーネルのような小さなもの、/binそして/etcディレクトリ。これらを失うと、Unixは動揺します。

  • 悪意のある外部サイトからの損傷のリスクを最小限に抑えます。としてブラウジングするとroot、悪意のある素材のドライブバイダウンロードに対してより脆弱になります。

私はUbuntuよりもMacOS Xを使用していますが、そこではrootがデフォルトで無効になっており、それはまだ私のマシン上にあります。sudo(舞台裏で)を使用して、カーネルと他の同様の操作を定期的にアップグレードします。同様の手法は、一般的にLinuxに適用されます。

基本的に、rootミスのリスクを回避するために、短縮された作業期間のみのすべての強力な権限を使用する必要があります。


1
それは誰かを非難することではなく誰かが変更を加えた理由を理解できることです。
ジッピー

2
@jippie:VCSが誰が何をしたかを追跡するのと同じように「非難」を意味するので、正しい人は変更の責任、善悪を問わず、その追跡を行うコマンドの名前の1つとみなされます「非難」です。それはあなたに何かが起こった理由を見つけるために話す人を与えます。それは常に「失敗」ではありません(憂鬱なほど頻繁に、知る必要がある理由は、何かが期待どおりに機能しておらず、なぜそうでないかを知る必要があるためです)。だから、それは彼らがしたことに対して必ずしも人に過失をもたらすのではなく、説明責任と追跡可能性についてです。
ジョナサンレフラー

Ubuntuでは、このようなミスを防ぐために特別に扱われるため、などのコマンドrm -fr / home/me/my-subdirは実際に再帰的に削除しようとしません。詳細については、およびオプションのドキュメントを参照してください。しかし、原則は堅実です。単一文字のタイプミス存在するため、すべてが削除されます。たとえば、を実行して現在のディレクトリのすべてを削除するつもりで、誤ってbefore を追加した場合、それは悪いことです。//--preserve-root--no-preserve-rootman rmrmrm -r */*
エリアケイガン

@EliahKaganしかし、もしあなたがそうするなら... chown -R nobody:nobody ../と言う/ etcからあなたを守るだろうか?/ etcでこれを行うと、怪我の世界が発生します。同様に.*、コマンドを再帰的に実行します。
プリフタン

21

TL; DR:必要なときにだけルートとして物事を行います。sudoこれは非常に簡単です。ルートログインを有効にしても、このルールに従うことができますが、注意する必要があります。ルートログインを有効にすることは、正しく行われても実際には安全ではありませんが、を持っているのでルートログインを有効にする必要はありませんsudo

ここには2つの関連する質問があります。

  • 日常のコンピューター使用(Webブラウジング、電子メール、ワードプロセッシング、ゲームなど)のためにrootとしてログインするのはなぜ悪いのですか?
  • Ubuntuがデフォルトでrootログインを完全に無効にしsudopolkitを使用して管理者がrootとして特定のコマンドを実行できるようにするのはなぜですか?

すべてを常にルートとして実行しないのはなぜですか?

他の答えのほとんどはこれをカバーしています。結果は次のとおりです。

  1. ルートパワーを必要としないタスクにルートパワーを使用し、意図しないことを実行してしまうと、システムを変更したり、望ましくない方法で危害を加えたりする可能性があります。
  2. rootとしてプログラムを実行する場合、あなたがする必要はありませんでした、とするとき、それは何かをしてしまい、それが何をするためにあなたが意味するものではありませんでした-セキュリティの脆弱性やその他のバグが原因たとえば、のために-それは、変更したり、危害ができあなたが望んでいない方法であなたのシステム。

ルートとして物事を行わなくても、あなたが害を及ぼす可能性があるのは事実です。たとえば、ルートとして実行せずに、通常はすべてのドキュメントが含まれる独自のホームディレクトリ内のすべてのファイルを削除できます。(うまくいけば、バックアップがあります。)

もちろん、ルートとして、これらの同じデータを誤って破壊する追加の方法があります。たとえばof=ddコマンドに間違った引数を指定して、ファイルに生データを書き込むことができます(これにより、ファイルを単に削除する場合よりも回復しにくくなります)。

あなたがあなたのコンピューターを使用している唯一の人である場合、rootとしてのみ行うことができる害は、通常のユーザー特権で行うことができる害よりも実際には大きくないかもしれません。しかし、それでも、Ubuntuシステムを台無しにする追加の方法を含めるようにリスクを拡大する理由にはなりません。

非rootユーザーアカウントで実行すると、自分のコンピューターを制御できない場合、これはもちろん悪いトレードオフになります。しかし、そうではありません。実際にrootとしてアクションを実行したいときはいつでもsudo、他のメソッドで実行できます

rootとしてログインできるようにしませんか?

ルートとしてログインする機能は本質的に安全ではないという考えは神話です。一部のシステムでは、デフォルトでルートアカウントが有効になっています。他のシステムはsudoデフォルトで使用され、一部は両方で構成されます。

  • たとえば、世界で最も安全で汎用的なOSであると広く合理的に考えられているOpenBSDは、ローカルのパスワードベースのログインに対応したルートアカウントで出荷されています。
  • これを行う他の尊敬されるOSには、RHELCentOS、およびFedoraが含まれます。
  • DebianUbuntuの派生元)は、システムのインストール中に、どのアプローチを設定するかをユーザーに決定させます。

rootアカウントが有効になっているシステムを持つことは、客観的に間違っていません。ただし、

  1. あなたはまだだけで、あなたが本当にする必要がある場合、それを使用、および
  2. アクセスを適切に制限します。

多くの場合、初心者はUbuntuでルートアカウントを有効にする方法を尋ねます。この情報を彼らから隠すべきではありませんが、通常、人々がこれを尋ねるとき、彼らは彼らがルートアカウントを有効にする必要があるという誤った印象の下にあるためです。実際、これはほとんど必要ないので、そのような質問に答えるとき、それを説明することが重要です。また、ルートアカウントを有効にすると、安心してルート権限を必要としないアクションをルートとして簡単に実行できるようになります。しかし、これは、rootアカウントを有効にすること自体が安全でないことを意味するものではありません。

sudoユーザーが必要な場合にのみrootとしてコマンドを実行することを奨励および支援します。コマンドをルートとして実行するにsudoは、スペースを入力してからコマンドを入力します。これは非常に便利で、すべてのスキルレベルの多くのユーザーがこのアプローチを好みます。

要するに、あなたが持っているので、ルートログインを有効にする必要はありませんsudo。ただし、それを必要とする管理タスクにのみ使用する限り、次の方法でのみ有効であり、rootとしてログオンすることもほぼ同じくらい安全です

ただし、次の方法でrootとしてログオンすると、追加のセキュリティリスクが大幅に発生します。

  • グラフィカルに。グラフィカルにログインすると、多くのものが実行されてグラフィカルインターフェイスが提供され、そのインターフェイスを何でも使用するルートとしてさらに多くのアプリケーションを実行することになります。これは、root権限を本当に必要とするプログラムをrootとしてのみ実行するという原則に反します。これらのプログラムの一部には、セキュリティバグなどのバグが含まれている場合があります。

    さらに、これを避けるにはセキュリティ上の理由があります。rootとしてグラフィカルにログインすることは十分にサポートされていません-loevborgが述べているように、デスクトップ環境とグラフィカルアプリの開発者は、rootとしてそれらをテストしないことがよくあります。たとえそうであっても、rootとしてグラフィカルデスクトップ環境にログインしても、ユーザーによる現実世界のアルファおよびベータテストは行われません(上記で説明したセキュリティ上の理由により)。

    特定のグラフィカルアプリケーションをルートとして実行する必要がある場合は、またはを使用できますgksudosudo -H。これは、実際にルートアカウントでグラフィカルにログオンした場合よりも、ルートとして実行するプログラムがはるかに少なくなります。

  • リモートで。rootアカウントが有効で何もすることができ、それが実質的にすべてのUnixライクなシステム上で同じ名前を持ちます。sshまたは他のリモートメカニズムを介してrootとしてログインするか、リモートサービスを設定して許可することで、自動化されたスクリプトやボットネットで実行されるマルウェアなどの侵入者がブルートフォース、辞書攻撃(および場合によってはいくつかのセキュリティバグ)。

    間違いなくリスクは、あなただけ許可した場合に非常に高いものではないキーベースではなく、パスワードベースの rootのログイン。

Ubuntuのデフォルトでは、rootとしてのログインを有効にしても、グラフィカルルートログインもSSH経由のリモートログインも有効になっていません。つまり、rootログインを有効にしても、合理的に安全な方法でのみ有効になります。

  • Ubuntuでsshサーバーを実行していて、変更していない/etc/sshd/ssh_config場合は、次の行が含まれますPermitRootLogin without-password。これにより、パスワードベースのルートログインは無効になりますが、キーベースのログインは許可されます。ただし、デフォルトではキーは設定されていないため、設定していない限り機能しません。さらに、キーベースのリモートルートログインは、パスワードベースのリモートルートログインよりもはるかに悪くありません。これは、ブルートフォース攻撃や辞書攻撃のリスクを引き起こさないためです。
  • デフォルト保護されるはずですが、ルートアカウントを有効にする場合は、sshの設定を確認することをお勧めします。また、ftpなどのリモートログインを提供する他のサービスを実行している場合は、それらも確認する必要があります。

結論として:

  • 必要な場合にのみ、ルートとして作業を行ってください。sudo必要なときにいつでもルートのフルパワーを提供しながら、それを行うのに役立ちます。
  • rootがどのように機能し、それを使いすぎる危険性を理解していれば、rootアカウントを有効にすることは、セキュリティの観点からは本当に問題ありません。
  • しかし、それを理解すれば、ルートアカウントを有効にする必要はほとんどないこともわかります

ルートとの詳細についてsudosudo、ここで説明しなかった追加の利点を含め、UbuntuヘルプwikiのRootSudoを強くお勧めします。


「あなたがあなたのコンピューターを使用しているのがあなただけなら、rootとしてしかできない害は、通常のユーザー特権でできる害よりも実際には大きくないかもしれません。しかし、それはあなたのリスクを拡大する理由ではありません」それはあなたにそれを習慣にすることは言うまでもありません...それからあなたは別のシステムに行き、何が起こりますか?rm -iシェルエイリアスを使用して人々を慣れさせるという馬鹿げたアイデアと同じです。あなたはそれを持っていないシステムに行き、そして何をしますか?このような間違いからユーザーを座らせる赤ちゃんは、人間が習慣の非常に多くの生き物であると考えるとき、決して良い考えではありません。
プリフタン

13

ルートアカウントはデフォルトで無効になっています-これは存在しますが、使用できないことを意味します(リカバリモードを除く)。これは、攻撃者があなたのルートアカウントを知っているが、彼/彼女がルートパスワードを持っていてもそれを使用できなかったことを意味します。したがって、攻撃者は管理者権限を持つユーザー名とそのユーザーのパスワード(ルートパスワードを計算するよりもはるかに難しい)の両方を推測する必要があります。XPでは、回復コンソールがインストールされている場合、あなたのボックスに物理的にアクセスできます(RC)-パスワードは必要ありません。Ubuntuのリカバリモードと同じです。

Ubuntuでは、ルートが無効になっていると彼らが言うとき、本当に意味するのはアカウントがロックされているということです。パスワードは、暗号化可能な値と一致しない値に変更することにより、アカウントがロックされます。これにより、だれもがルートとしてログインできなくなります。パスワードを入力する方法はないためです。ルートアクセスが必要な場合がまだあるため、Ubuntuカーネルはシングルユーザーモードでのみルートローカルログインを許可するように変更されました。

こちらのページもご覧ください


あの 違反はありませんが、質問のタイトルを読んでから詳細をもう一度読んでください。
Mussnoon

3
これは非常に役立ちます-そしてそれ質問に関連してます。rootとして実行するための前提条件である、アカウントを有効にすることのセキュリティへの影響に関係しています。
ステファノパラッツォ

1
@Stefano Palazzo:提供された情報は役立つかもしれませんが、私が知る必要があるものへの答えがどこにあるのか、私は心から見ることができません。何度も読みました。
ムスヌーン

rootにログインできるようになることを妨げません。
チャド

12

AK47で小さな子供を武装させ、ペイントボール銃で楽しそうに遊ぶことができます。;)

あなたとあなたのアプリケーションは彼らが必要とするよりも多くの特権を持っているので、私はそれが間違っていることを意味します、そしてそれは物事ができ時には間違って行くときです:(


5
もっと賢いアナロジー。(^_^)
kit.yang

2
これはまったく不適切な類推です。AK47を持つ子供は、自分や他の人を殺すことができます。ルートアクセス権を持つUNIXユーザーは、せいぜいシステムを一時的に動作不能にすることができます。(OSをいつでも再インストールして操作を回復できます)。
kbeta

@kbetaその通り、私のアナロジーは少し偏っていて誇張されています。続けてください。
-omeid

@kbetaの類推が適切です。リスクはシステムの動作不能ではなく、データとプライバシーの損失です。rootユーザーはデータを削除できます。ファンタシーを使用して、殺害とデータ損失を関連付けてください。
n611x007

11

とてもいい質問です...実用的な観点から答えさせてください:

10年以上前のLinuxを使い始めたとき、主要なディストリビューションは今日ほど非ルートアカウントを使用して広告を出しませんでした。私はWindowsに慣れていたので、制約のあるユーザーアカウントを使用することにも意味がありませんでした。特に、「su」を頻繁に入力する必要があったため、当時はsudoはそれほど人気が​​ありませんでした。;-)システムを適切に設定するために多くのメンテナンスが必要だったため、私は常にルートとしてログインしました。しかし、インストールしたばかりのシステムはすぐに非常に不安定になりました。

たとえば、具体的な問題が1つあります。Linux用に確保したハードディスク容量があまりないので、パーティションに0バイトが残っていることが何度かありました。正確なメカニズムがわからないため、完全に正確ではないかもしれませんが、ルート以外のアカウントでディスクをいっぱいにすると、常に数キロバイトが残っています。しかし、本当に0バイトが残っていると、システムは奇妙なエラーを起こし、バックグラウンドで実行されているシステムソフトウェアがたくさんあるため、システムの損傷を修復するのが難しいかもしれません...

もう1つは、ルートと非ルートの分割により、システムが適切に組織化されます。rootユーザーとして、新しいアプリケーションをきれいにインストールしないように誘惑されるかもしれません。それは、汚れた、ハードで保守可能なシステムを残します。

しかし、良いこと:現代のディストリビューションはほとんどの管理タスクをあなたのために行うので、ルートアカウントでLinuxシステムの本質をいじる必要はめったにありません。時々パスワードを入力するだけで十分であり、残りはディストリビューターのスクリプトによって行われます。

しかし、95または98を使用している場合、Windowsシステムで問題が発生していないことを疑います。(少なくとも、私は問題がありました...) 「Windowsアプリは、ユーザーに気づかなくても、スパイウェアのインストールなど何でもできると想定しています。Microsoftは、Vistaのリリース時にその問題に取り組んでいます。(効果的にsudoメカニズムを実装します。)それで、人々は「あなたはそれをすることはできません」と言って非常に迷惑な対話を得ました。一部の非Vista準拠ソフトウェアの場合、管理者としても、インストールするためにいくつかの汚いハックが必要でした...


「正確なメカニズムがわからないため、完全に正確ではないかもしれませんが、ルート以外のアカウントでディスクをいっぱいにすると、常に数キロバイトが残っています。」おそらく、lost + foundディレクトリを参照していますか?その場合、管理者として予約する量を指定できます。典型的なデフォルトは5%ですが、間違っている可能性があり、変更できます。めったに必要ではないにしても、非常に便利です。どうやら(私は使用の私の年からそれを覚えている)、ここでそれについての詳細がある:unix.stackexchange.com/questions/18154/...
Pryftan

:ApprentlyそれがEXTファイルシステムに制限されていないunix.stackexchange.com/questions/7950/...
フィリップ

うん。私はそれを知っていました:)しかし、それを追加してくれてありがとう。
プリフタン

10

このアプローチの背後には多くの側面があります。それらのいくつかは次のとおりです。

  • ルートはすべて強力です。
  • UnixおよびUnixライクなシステムでは、システム管理特権はすべてか、まったくありません。ユーザーにはルートアクセス権があるかどうかがあり、ルートアクセス権はマシンの完全な制御を意味します。問題のマシンが複数のユーザーによって使用されている場合、またはrootが他のシステムまたはユーザーファイルにアクセスできる場合、一部のユーザーに部分的なroot権限を与える方がより適切です。

  • rootユーザーは、すべてのアクションを非表示にすることができます。
  • sudoは、sudoを介して実行されるすべてのコマンドをログに記録します。sudoで行われていることの記録は、個々のシステム/プロセスの問題や一般的な構成の問題を診断するのに役立ち、必要な改善を特定するのにも役立ちます。

  • rootパスワードを使用すると、システム上の任意のコマンドにアクセスできます。
  • sudoは、その設定ファイルを介して、特定のコマンドセットに対するrootアクセスをユーザーに与えることができます。これにより、「オールオアナッシング」効果も回避され、個々のユーザーがマシンをより細かく制御できるようになり、一般的な問題を回避できます。

    ここに良い記事があります:http : //cf.stanford.edu/policy/root


    ただし、完全なsudoがある場合は、sudo suを実行してアクションを非表示にすることができます。
    ウィルヘルムエラスムス

    8
    rm /*
    

    行政区域を一掃しているとしましょう。あなたはので、パスワードの疲れsudo su。あなたはほんの一瞬気を散らし、あなたがcdするのを忘れます/。それからあなたrm *。やった すべてを取り戻すことができますが、それはPITAです。ああ、それ/mediaも下に落ちています!


    10
    私たちは常にPCの速度が遅すぎると文句を言いますが、それはあたかもそのようなrmをできるだけ速く実行するように最適化されているかのようです。
    ジッピー

    1
    @jippie RMはファイルへのinodeリンクを破棄するだけです。リンクを削除し、スペースを「空き」としてマークするのに時間がかかりません。
    カズウルフ14

    @ jippie、10秒のカウントダウンでビルドする必要があります
    うまくいけば

    7

    なぜrootログインしませんか?

    あなたがいる間ことができますが、rootでログインできるようにするスーパーユーザアカウントのパスワードを作成し、これは物事の「Ubuntuの」方法ではないことを言及する価値があります。Ubuntuは、理由によりデフォルトでrootログインとパスワードを与えないことを特に選択しました。代わりに、デフォルトのUbuntuインストールではを使用しますsudo

    sudoは、スーパーユーザーの職務を遂行するために、ルートパスワードをユーザーに提供する代替手段です。デフォルトのUbuntuインストールでは、OSをインストールしたユーザーにはデフォルトで「sudo」権限が付与されます。

    「sudo」権限を持つ人はだれでもsudo、コマンドの前に保留することで「スーパーユーザーとして」何かを実行できます。たとえばapt-get dist-upgrade、スーパーユーザーとして実行するには、次を使用できます。

    sudo apt-get dist-upgrade
    

    sudoアプローチの利点

    • sudoでは、sudoアクセスを許可するユーザーを事前に選択します。彼らは自分のパスワードを使用するため、ルートパスワードを覚えておく必要はありません。

    • 複数のユーザーがいる場合、rootパスワードを変更して新しいパスワードを全員に通知する必要なく、sudo権限を削除するだけでスーパーユーザーのアクセスを取り消すことができます。

    • ユーザーがsudoを使用して実行できるコマンドと、そのユーザーに対して禁止されているコマンドを選択することもできます。

    • 最後に、セキュリティ違反がある場合、場合によっては、どのユーザーアカウントが侵害されたかを示すより良い監査証跡を残すことができます。

    Sudoを使用すると、スーパーユーザー特権で単一のコマンドを簡単に実行できます。ルートログインでは、スーパーユーザーシェルに永久にとどまり、exitまたはを使用して終了する必要がありますlogout。これは、ログアウトしてから後で再度ログインするよりも便利だからといって、必要以上に長くスーパーユーザーシェルにとどまる人を招く可能性があります。

    sudoでは、次のコマンドで永続的な(インタラクティブな)スーパーユーザーシェルを開くオプションがあります。

    sudo su
    

    ...これは、rootパスワードなしでも実行できます。これはsudosuコマンドにスーパーユーザー特権が付与されるためです。

    同様に、su -ログインシェルの代わりにsudo su -またはを使用することもできますsudo -i

    ただし、その場合は、すべてのコマンドのスーパーユーザーとして行動していることに注意する必要があります。誤ってシステムに何らかの損傷を引き起こす可能性を減らすために、必要以上に長くスーパーユーザーとして留まらないようにすることは良いセキュリティ原則です(これがないと、ユーザーが所有するファイルのみに損傷を与えることができます)。

    ただ、明確にするために、あなたがすることができ、あなたが選択した場合は、特にその代わりのものをこの方法で行いたい場合は、rootユーザーにrootでログインを許可するパスワードを与えます。sudo代わりに好むというUbuntuの慣習についてお知らせし、Ubuntu がデフォルトとしてこのアプローチを好む理由をいくつか説明してみました。

    SSH経由のルートログインを許可しないのはなぜですか?

    rootユーザー root としてログインできるパスワードを持っている場合でも、SSHなどの外部からの直接のrootログインを無効にすることは、依然として優れたセキュリティ対策です。ユーザーが最初のログイン以降にログインするsu -必要があるのは合理的ですsudo

    これに対する潜在的な利点は、主にセキュリティ関連です。

    • ルートパスワードをリモートでブルートフォースする可能性を排除することにより、攻撃ベクトルを削減します。通常、インターネット上のサーバーは、SSHを介してルートパスワードをブルートフォースしようとする試みによって常に妨害されます。

    • より良い監査証跡が作成されるため、攻撃者後でスーパーユーザー権限を取得する侵害が発生した場合でも、アクセスに使用されたユーザーアカウントを確認できます。


    6

    ルートとしてログインすると、アプリケーション、スクリプト、またはコマンドラインコマンドが、システムを損傷する可能性のあるソフトウェアの機密部分にアクセスできるようになります。これは、ユーザーまたはプログラマー側の経験不足、または悪意のある隠しコードが原因である可能性があります。



    5

    WindowsのAdministratorとUnixのrootには違いがあることを付け加えることができます。管理者は、まだ根が持っていないシステムでのいくつかの制限が持っている任意の制限を。Windowsのルートの正しい類似物はシステムユーザーです。

    ルート/システムの下でPCを使用することの悪い点は、OSからの警告なしに何かを誤って破棄できることです。


    3

    ルートを使用しない理由:

    • システムファイルを誤って破壊する可能性があります
    • 感染する可能性があります
    • アクションをログに記録しません

    ルートを使用する理由:

    • すべてにアクセスでき、パスワードは入力しません
    • GUI、システムファイル/ディレクトリの管理に端末を使用しない

    root以外のアカウントは、rootを使用することに対するこれらの理由の犠牲になる可能性があるように思えますが、最も追加されるのは、アクションの確認です。自分が何をしているのかを知っている限り、rootを使用しても完全に安全だと思います。そこに、私はそれを言った。


    技術的には、すべてのコマンドを含むアクションを記録する方法があります。これはすべてのユーザーに当てはまります。プロセスアカウンティングを参照してください。例:linuxjournal.com/article/6144そして、rootになる必要がある場合にのみ本当に安全です。それ以外の場合、コマンドが安全であっても、完全に安全ではありません(エクスプロイトなど)。
    プリフタン

    3

    アプリケーションがルートとして実行される場合、それらのどれも実行されないという保証はありません

    rm -rf /
    

    (これは、実行すべきではないコマンドの例です。)


    @StefanoPalazzoこの投稿はコマンドを削除しても意味がないので、編集をロールバックしました。投稿を削除した可能性もあります。広く誤解されていることに反して、このコマンドは、書かれているように、Ubuntuシステムで実行されたときに実際はファイルを削除しませんが、実行するコマンドに似ています。そのため、誰かが思いがけずにコマンドをコピーしてシステムを破壊する可能性があることを懸念している場合は、そうではありません。詳細については--preserve-rootとの--no-preserve-rootオプションのドキュメントを参照しman rmてください。
    エリアケイガン

    Solarisが広いPOSIXの解釈(とブライアン・キャントリル)によると、未定義の動作としては、このコマンドを扱い、エラーをスローします
    ジェレミーHajek

    3

    知識が豊富で注意深いユーザーを考えると、正しい答えが存在するかどうかはわかりません。私はこの答えを見ていませんでしたので、私はチャイムに入ると思った。

    気に入らないのは、後で必要になるマルチユーザーシステムのアクセス許可の意図しない変更ですchmod。事後のchmodを介した修正は、sudoを必要とするよりもはるかにいらいらしますが、それは私が計画したものに依存します。


    3

    慎重に使用すれば、rootとしてログインする危険はありません。

    ルートを無効にすることは望ましい解決策だと思いますが、攻撃者はそれをブルートフォースすることはできません。

    解決策の1つは、sudoグループにユーザーを作成し、sudo gamerを使用して管理タスクを実行することです。

    したがって、攻撃者はその管理ユーザーのパスワードだけでなく、ログイン名も推測する必要があります。sudoを使用しているユーザーのログイン名がのようなものであるkittyか、gamerまたは類似したものである場合、これは明らかではありません。


    2

    ソフトウェアは、共有ライブラリ、依存関係、構成ファイルなどに基づいています。
    ほとんどの場合、アプリケーションを1回クリックするだけで、複数の変更の「連鎖反応」が呼び出されます。
    これらの変更がシステムに不可欠な設定に影響を与えようとしている場合、ユーザーとして-あなたが知ることは良いことです。
    そのため、ルートアクセスが優れたセキュリティモデルです
    。システムに重大な事態が発生する場合は、特権の昇格を求められることで通知されます。


    1

    これは、2つ以上の答えがある両面の問題です。

    いくつかの現実については、これに対する常に同じですが、とてもひどい答えを確認してください:

    desktop installations

    • 必要に応じて独自のユーザーとsudoを使用します。それ以外の場合は、攻撃ベクトルを使用します
    • 大企業では、存在するスズ箔の量によっては、管理者であっても、自分のワークステーションでroot権限さえ持たない可能性があります。

    server installations

    • rootとして合法的な短い作業セッションを行うこと(パスワードなしのログイン、すべてのサーバーに対する適切なsshキー管理、およびとにかくすべてのパスワードログインに対してfail2banが設定されている場合)とすべてのデーモン/サービスを使用することには大きな違いがあります自分のユーザーで実行する(必須)-ほとんどの人は違いを認識していないようです
    • 楽しみのため:バージョン管理された構成管理ツール(ansible / puppet / salt / gitサーバーからのファイルを使用)をルートアクセスなしでのみ使用してみてください。(これらの特別なシステム、および監視システムとバックアップシステム用に、何らかの形のAAAがありますよね?)
    • また、デフォルトrm -rf /はほとんどの主流のディストリビューションIIRCでは動作しません
    • 深刻な職場には、サーバーフリートにアクセスするためのジャンプホスト/要塞ホストがあります。
    • sudoがあり、ジャンプホストがない場合、ホストログを修正して、リアルタイムでミラーリングされていない場合でも、とにかくそれらを望むようにすることができます。
    • sshログも「クリーン」されている場合、ネットワーク監視システムが設置されていなければ、ホスト上にあったことを証明することさえできません。

    適切な監視/バックアップ/自動化/ログ記録の手段を欠いているこれらの両極端の間にあるあらゆる規模の企業(おそらく静的IPを備えたSOHO)については、サーバー上でsudoの使用を強制すると便利です。(sudo su -接続後にASAPを実行するユーザーによって回避されます。複数のrootユーザーがログインするとすぐに、悪意のある意図がなくても、発生したログを記録するすべての意図が無駄になります。ルールに従わないための措置。人生は常に道を見つけます。)

    ただし、パスワードログインをセキュリティで保護するために少なくともfail2banがない場合(特にインターネットに接続されているシステムに存在する場合)、さらに適切なパスワード処理(パスワード管理ツール、保持ポリシー、マスターパスワードなし、従業員へのこれらの処理)に注意してください変動...)およびサーバーフリートの適切な更新管理の何らかの形があるため、すべてのサーバーに定期的にパッチが適用され、いずれにせよ、いずれにせよハッキングされる可能性があります。

    そして、常にsudo宗教的に使用し、すべての人々の間でその使用を強制しても、その場合に所有される可能性は大きく変わりません。


    最後に、通常の「これをやるな」というマントラではなく、本物の差別化された答えがあります。+1、これに感謝します。
    アンドレアスH.

    0

    最終的には、rootとして実行しても害はありません。OSを再インストールすることは不可能だと考えるのは、偏執的な人々の集まりです。「誰かがプログラムを危険にさらす可能性があります。」という議論、それで何?彼らがそうするなら、彼らはすでにあなたのパスワードにキーログを記録するか、単にとにかくルートパスワードリクエストを表示して、あなたに彼らにパスワードを与えてもらうことができます。/ですべてを選択して削除するため、システムを吹き飛ばしますか?まあ、インストーラを取り出して再インストールしてください。20分もかからず、コーヒーを飲んで冷やします。ルートは問題ありません。覚えていて、それが何をしているのか知っている限り、ルートを実行しています。パッケージのインストールが頭痛の種になりません。通常のように5分ごとにrootパスワードを入力する必要はありません。システム構成ファイルを保存/編集しようとしても問題は発生しません ルート権限のみを再設定します。rootとして実行する方がはるかに簡単で優れています。

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