私はよくフォーラムや他のウェブサイトに投稿に出くわします。そこでは、rootで実行/ログインすることについて、ひどいもので全員それについて。しかし、検索で明らかになることはあまりありません。
Linuxの専門家には広く知られているかもしれませんが、その理由はよくわかりません。何年も前にLinuxを初めて試したとき(RedhatとMandrake)、常にrootで実行していたことを覚えています。そのため、問題が発生したことは覚えていません。
実際には、ルートユーザー(SuSe?)の壁紙として、明るい赤色の背景に警告サインのあるディストリビューションがいくつかあります。私は今でもWindowsインストールで通常使用するために「管理者」アカウントを使用していますが、そこでも問題に遭遇したことはありません。
これは、長年にわたって導入されてきたセキュリティモデルを無効にします。アプリケーションは非管理セキュリティで(または単なる人間として)実行されることを意図しているため、基礎となるシステムを変更するには、特権を昇格する必要があります。たとえば、バグのために、Rhythmboxの最近のクラッシュで/usr
ディレクトリ全体が消去されることは望ましくありません。または、攻撃者がROOT Shellを取得できるようにするために、ProFTPDに投稿されたばかりの脆弱性。
アプリケーションをユーザーレベルで実行し、管理タスクをルートユーザーに任せ、必要に応じてのみ実行することは、どのオペレーティングシステムでも有効な方法です。
ただ一つの言葉:セキュリティ。
次の理由により、ルートとして実行するのは悪いです。
Sudo -i
そして、あなたは今rootです。パイプを使用していくつかのコマンドを実行したいですか?次に、Sudo sh -c "comand1 | command2"
を使用します。なぜ悪いかについての情報を見つけることができなかった理由は、インターネットにデータが多すぎるためです:)、そして長い間Linuxを使用している多くの人々があなたのように考えているからです。ルートアカウントについてのこの考え方はかなり新しく(10年くらいでしょうか?)、Sudoを使用しなければならないことに多くの人がいらいらします。特に、サーバーで作業している場合は、システムの変更を意図して行ったということです。おそらく以前の悪い経験とほとんどのシステム管理者が知っているセキュリティ標準からもたらされたものですが、それでも彼らは気に入らないでしょう:)。
これはいい質問です。サーバーとデスクトップインストールのどちらについて話しているかによって、答えはわずかに異なると思います。
デスクトップでは、root
アカウントを使用することはまれです。実際、Ubuntuはルートアクセスを無効にして出荷されます。スーパーユーザー特権を必要とするすべての変更は、Sudo
およびそのグラフィカルな認識gksudo
およびkdesudo
を介して行われます。 root
パスワードを設定するのは簡単ですが、なぜ人々はそうしないのですか?
理由の1つは、追加のセキュリティ層が提供されることです。プログラムをroot
として実行し、セキュリティ上の欠陥が悪用された場合、攻撃者はすべてのデータにアクセスでき、ハードウェアを直接制御できます。たとえば、トロイの木馬またはキーロガーをカーネルにインストールする場合があります。ただし、実際には、攻撃はスーパーユーザー権限がなくても大きな損害を与える可能性があります。結局のところ、ドキュメントや保存されたパスワードを含むすべてのユーザーデータには、ルートアクセスなしでアクセスできます。
シングルユーザーシステムでのより有効なポイントは、ユーザーが誤ってシステムを使用不能にすることを防ぐことです。ユーザーがすべてのファイルを削除するコマンドを意図せずに発行した場合、データが失われた場合でもシステムを起動できます。
さらに、今日のほとんどのユーザー向け(X11)アプリケーションは、通常のユーザーアカウントとして管理者権限なしで実行されることを前提に構築されています。そのため、一部のプログラムはroot
として実行されると誤動作する可能性があります。
非グラフィカルシェルアクセスのみのマルチユーザーシステムでは、これらの理由の多くは当てはまりません。ただし、Ubuntuは依然として、アクセスできないroot
アカウントにデフォルト設定されています。 1つには、セキュリティホールを介して(Sudo
権限を持つ)ユーザーアカウントへのアクセスを取得することと、root
へのアクセスを取得することの間に実際の違いがあります。 Sudo
は追加のセキュリティステップとしてアカウントパスワードの入力を求めます。別の方法として、ユーザーアカウントから多くの管理タスクを実行し、スーパーユーザー権限が絶対に必要な場合にのみSudo
を呼び出すと便利です。したがって、ソースからプログラムをインストールする場合、ユーザーのディレクトリ内でconfigure
およびmake
を実行し、最終ステップでSudo make install
のみを使用してソースをビルドすることをお勧めします。繰り返しますが、これは自分自身(およびマルチユーザーシステムの他のユーザー)を足で撃つことをより難しくし、システムで大混乱を引き起こすビルドスクリプトの可能性を減らします。したがって、サーバー上でもUbuntuの Sudoベースの管理 に固執することをお勧めします。
(今のところ)他の回答で特定されていないルートとして実行しない理由の1つは、トレーサビリティです。主にシングルユーザーマシン(デスクトップまたはラップトップ)であるマシンではそれほど重要ではありませんが、サーバーマシンでは、誰かがroot
としてログインしている場合、実行されたアクションを誰が責任を負うべきかわかりません。したがって、root
特権を必要とする複数のシステムと複数の管理者を持つほとんどの専門組織は、ユーザーが自分のユーザーID(およびパスワード)を使用してログインし、Sudo
または同様のプログラムを使用してroot
必要な特権。
それ以外の場合、ルートとして実行されない主な理由は次のとおりです。
事故による損傷のリスクを最小限に抑えます。 rm -fr / home/me/my-subdir
をルートとして実行すると、(最初の)スラッシュの後のスペースのために、マシンから重要なものがすべて劇的に削除されます-最初に行くものは最初に追加されたものです-少しカーネル、/bin
、/etc
ディレクトリなど。これらを失うと、Unixは動揺します。
悪意のある外部サイトからの損傷のリスクを最小限に抑えます。 root
としてブラウジングすると、悪意のある素材のドライブバイダウンロードに対してより脆弱になります。
私はUbuntuよりもMacOS Xを使用していますが、そこではデフォルトでrootが無効にされており、まだマシン上にあります。 Sudo
(舞台裏)を使用して、カーネルと他の同様の操作を定期的にアップグレードします。同様の手法は、一般的にLinuxに適用されます。
基本的に、root
のすべての強力な特権を使用するのは、ミスのリスクを回避するために、短縮された作業期間のみです。
ルートアカウントはデフォルトで無効になっています。つまり、存在しますが使用できません(リカバリモードを除く)。これは、攻撃者がルートアカウントを認識しているが、ルートパスワードを持っていても使用できないことを意味します。したがって、攻撃者は、管理者権限を持つユーザー名と、そのユーザーのパスワード(ルートパスワードを試すよりもはるかに難しい)の両方を推測する必要があります。XPで、回復コンソールインストールすると、ボックスに物理的にアクセスできる人なら誰でも起動できます(RC)-パスワードは不要です。 Ubuntuのリカバリモードと同じです。
Ubuntuでは、ルートが無効になっていると言われると、アカウントがロックされているというのが本当の意味です。パスワードは、暗号化可能な値と一致しない値に変更することにより、アカウントがロックされます。これにより、パスワードを入力する方法がなくなるため、だれもがルートとしてログインできなくなります。ルートアクセスが必要な場合がまだあるので、シングルユーザーモードでのみルートローカルログインを許可するようにUbuntuカーネルが修正されました。
こちらもご覧くださいpage
AK47で小さな子供を武装させ、ペイントボール銃で楽しそうに遊ぶことができます。 ;)
あなたとあなたのアプリケーションは彼らが必要とするよりも多くの特権を持っているので、私はそれが間違っていることを意味します-それは物事canと時々意志が間違って行くときです:(
非常に素晴らしい質問です。実用的な観点から答えさせてください。
10年以上前にLinuxを使い始めたとき、主要なディストリビューションは今日ほど非ルートアカウントを使用して広告を出しませんでした。私はWindowsに慣れていたので、制約のあるユーザーアカウントを使用することにも意味がありませんでした。特に、「su」を頻繁に入力する必要があったため、当時は須藤はそれほど人気がありませんでした。 ;-)システムを適切に設定するために多くのメンテナンスが必要だったため、私は常にrootとしてログインしました。しかし、インストールしたばかりのシステムはすぐに非常に不安定になりました。
たとえば、具体的な問題が1つあります。Linux用のハードディスク容量があまりないため、パーティションに0バイトが残っていることが何度かありました。正確なメカニズムがわからないため完全に正確ではないかもしれませんが、ルート以外のアカウントでディスクをいっぱいにすると、常に数キロバイトが残っています。しかし、本当に0バイトが残っている場合、システムは奇妙なエラーを起こし、バックグラウンドで実行されているシステムソフトウェアがたくさんあるため、システムの損傷を修復するのが難しいかもしれません...
もう1つは、ルートと非ルートの分割により、システムが適切に組織化されます。 rootユーザーとして、新しいアプリケーションをきれいにインストールしないように誘惑されるかもしれません。それは、汚れた、ハードで保守可能なシステムを残します。
しかし、良いこと:現代のディストリビューションはほとんどの管理タスクをあなたのために行うので、ルートアカウントでLinuxシステムの根性をいじる必要はめったにありません。時々パスワードを入力するだけで十分であり、残りはディストリビューターのスクリプトによって行われます。
ただし、95または98を使用している場合、Windowsシステムで問題が発生していないことは疑わしいです(少なくとも問題がありました...)。管理者と通常のユーザーの「伝統的な」の明確な分離がないため"Windowsアプリは、たとえば何でもできると想定している彼らがあなたにそれを感じたなら、あなたに言わなくてもスパイウェアをインストールしてください。 Microsoftは、Vistaのリリース時にその問題に取り組んでいます。 (Sudoメカニズムを効果的に実装します。)それで、人々は「あなたはそれをすることはできません」と言って非常に迷惑な対話を得ました。一部の非Vista準拠のソフトウェアの場合、管理者としても、インストールするために汚いハックが必要でした...
このアプローチには多くの側面があります。それらのいくつかは次のとおりです。
ここに良い記事があります: http://cf.stanford.edu/policy/root
rm /*
行政区域を一掃しているとしましょう。パスワードにうんざりしているので、Sudo su
。気が散ってしまい、/
に移動したことを忘れます。次に、rm *
。やったそれをすべて取り戻すことができますが、それはPITAです。 ああ、それは/media
にも下っています!
スーパーユーザーアカウントのパスワードを作成してcanrootとしてログインできるようにする一方で、これは「Ubuntu」の方法ではないことに言及する価値があります。物事をしています。 Ubuntuは、理由によりデフォルトでルートログインとパスワードを与えるためにnotを選択しました。代わりに、デフォルトのUbuntuインストールはSudo
を使用します。
Sudoは、スーパーユーザーの職務を遂行するために、ルートパスワードをユーザーに提供する代替手段です。デフォルトのUbuntuインストールでは、OSをインストールした人にはデフォルトで「Sudo」権限が付与されます。
「Sudo」権限を持つユーザーは、コマンドの前にSudo
を追加することにより、「スーパーユーザーとして」何かを実行できます。たとえば、apt-get dist-upgrade
をスーパーユーザーとして実行するには、次を使用できます。
Sudo apt-get dist-upgrade
Sudoアプローチの利点
Sudoを使用する場合、Sudoアクセスを許可するユーザーを事前に選択します。彼らは自分のパスワードを使用するため、ルートパスワードを覚えておく必要はありません。
複数のユーザーがいる場合、rootパスワードを変更したり、全員に新しいパスワードを通知したりすることなく、Sudo権限を削除するだけでスーパーユーザーのアクセスを取り消すことができます。
ユーザーがSudoを使用して実行できるコマンドと、そのユーザーに対して禁止されているコマンドを選択することもできます。
最後に、セキュリティ違反がある場合、場合によっては、どのユーザーアカウントが侵害されたかを示すより良い監査証跡を残すことができます。
Sudoを使用すると、スーパーユーザー特権で単一のコマンドを簡単に実行できます。 rootログインでは、exit
またはlogout
を使用して終了する必要があるスーパーユーザーシェルに永続的に残ります。これは、ログアウトしてから再びログインするよりも便利だからといって、必要以上に長くスーパーユーザーシェルにとどまる人につながる可能性があります。
Sudoでは、次のコマンドで永続的な(インタラクティブな)スーパーユーザーシェルを開くことができます。
Sudo su
... Sudo
はsu
コマンドにスーパーユーザー特権を与えるため、これはルートパスワードなしでも実行できます。
そして同様に、ログインシェルのsu -
の代わりにSudo su -
またはSudo -i
を使用することもできます。
ただし、その場合は、すべてのコマンドのスーパーユーザーとして行動していることに注意する必要があります。誤ってシステムに何らかの損傷を引き起こす可能性を減らすために、スーパーユーザーとして必要以上に長く留まらないようにすることは良いセキュリティ原則です(これがないと、ユーザーが所有するファイルにのみ損傷を与えることができます)。
明確にするために、あなたはcan、あなたが選択した場合、rootユーザーにログインを許可するパスワードを与える。代わりにSudo
を優先するUbuntuの慣習についてお知らせし、Ubuntuがデフォルトとしてこのアプローチを好む理由をいくつか説明してみました。
SSH経由のルートログインを許可しない理由
Rootユーザーがにrootとしてログインできるパスワードを持っている場合でも、外部からの直接のrootログインを無効にすることは依然としてセキュリティ上の良い習慣です。 SSHなど。ユーザーは、最初のログイン後にsu -
またはSudo
にする必要があります。
これに対する潜在的な利点は、主にセキュリティ関連です。
ルートパスワードをリモートでブルートフォースする可能性を排除することにより、攻撃ベクトルを削減します。通常、インターネット上のサーバーは、SSHを介してルートパスワードをブルートフォースしようとする試みによって常に妨害されています。
攻撃者がdoesが後でスーパーユーザー権限を取得する違反が発生した場合でも、誰のユーザーアカウントが使用されたかを確認できるように、より良い監査証跡を作成しますアクセスする。
ルートとしてログインすると、アプリケーション、スクリプト、またはコマンドラインコマンドが、システムを損傷する可能性のあるソフトウェアの機密部分にアクセスできるようになります。これは、ユーザーまたはプログラマー側の経験不足、または悪意のある隠しコードが原因である可能性があります。
Rootとして操作するのは簡単すぎます。 1つのコマンドのようにシステム全体を上書きできます...
WindowsのAdministratorとUnixのrootには違いがあると付け加えることができます。管理者には、rootにany制限がないシステムの制限がまだあります。 Windowsのルートの正しい類似物は、Systemユーザーです。
ルート/システムの下でPCを使用することの悪い点は、OSからの警告なしに何かを誤って破棄できることです。
ルートを使用しない理由:
ルートを使用する理由:
Root以外のアカウントでも、rootを使用することに対するこれらの理由の犠牲になる可能性があるように思えますが、最も追加されるのは、アクションの確認です。自分が何をしているのかを知っている限り、rootを使用しても完全に安全だと思います。そこで、私はそれを言った。
アプリケーションがルートとして実行される場合、それらのどれも実行されないという保証はありません
rm -rf /
(これはnotを実行する必要があるコマンドの例です。)
知識と注意深いユーザーを考えると、right答えが存在するかどうかはわかりません。私はこの答えを見ていませんでしたので、私はチャイムに入ると思った。
気に入らないのは、マルチユーザーシステムのアクセス許可の意図しない変更です。後でchmod
にする必要があります。事後のchmodを介した修正は、Sudoを必要とするよりもはるかにいらいらしますが、それは私が計画したものに依存します。
慎重に使用すれば、rootとしてログインする危険はありません。
ルートを無効にすることは、攻撃者がそれをブルートフォースすることができなかったため、好ましい解決策だと思いますが。
1つの解決策は、gamer
などのわかりにくい名前でSudoグループにユーザーを作成し、Sudoを使用して管理タスクを実行することです。
したがって、攻撃者はその管理ユーザーのパスワードだけでなく、ログイン名も推測する必要があります。 Sudoを使用するユーザーがkitty
やgamer
などのログイン名を持っている場合、これは明らかではありません。
ソフトウェアは、共有ライブラリ、依存関係、構成ファイルなどに基づいています。
ほとんどの場合、アプリケーションのシングルクリックは、おそらくあなたがそう思うと思われる場所だけでなく、複数の変更の「連鎖反応」を引き起こします。
これらの変更がシステムに不可欠な設定に影響を与えようとしている場合、ユーザーとして-知っておくとよいでしょう。
だからこそ、ルートアクセスは優れたセキュリティモデルです。
システムに重大な事態が発生する場合、特権の昇格を求められることで通知されます。
これは、2つ以上の答えがある両面の問題です。
いくつかの現実については、これに対する常に同じですが、とてもひどい答えをチェックしてください:
desktop installations
:
server installations
:
rm -rf /
は、ほとんどの主流のディストリビューションIIRCでは機能しません。適切な監視/バックアップ/自動化/ログ記録の手段を欠いているこれらの両極端の間にある企業規模(おそらく静的IPを備えたSOHO)については、サーバーでSudoの使用を強制することが有用かもしれません。 (接続後すぐにSudo su -
を実行するユーザーによって回避されます。複数のrootユーザーがログインするとすぐに、悪意のある意図がなくても、発生したログを記録するすべての意図が無駄になります。ルールに従わないための厳しい手段で人々を治療する。人生は常に道を見つける。)
ただし、パスワードログインをセキュリティで保護するために少なくともfail2banがない場合(特にインターネットに接続されているシステムに存在する場合)、さらに適切なパスワード処理(パスワード管理ツール、保持ポリシー、マスターパスワードなし、従業員へのこれらの処理)に注意してください変動...)そして、サーバーフリートの適切な更新管理の何らかの形を持っているので、allサーバーは定期的にパッチが適用されます。外側。
そして、常にSudo
を宗教的に使用し、すべての人々の間でその使用を強制したからといって、その場合に所有される確率は変わらないでしょう。
最終的には、rootとして実行しても害はありません。 OSの再インストールは不可能だと考えるのは、偏執狂的な人々の集まりです。 「誰かがプログラムを危険にさらす可能性があります。」引数、それで何?彼らがそれをするなら、彼らはすでにあなたのパスワードをキー記録するか、とにかくルートパスワードリクエストを表示して、彼らにパスワードを与えてもらうことができます。 /ですべてを選択して削除するため、システムを吹き飛ばしますか?まあ、インストーラを取り出して再インストールしてください。 20分もかからず、コーヒーを飲んで冷やします。ルートは問題ありません。覚えている限り、ルートを実行してきました。パッケージのインストールが頭痛の種になりません。通常のように5分ごとにrootパスワードを入力する必要はありません。システム設定ファイルはルート権限のみであるため、システム設定ファイルを保存/編集しようとしても問題は発生しません。 rootとして実行する方がはるかに簡単で優れています。