だから私はsu
とSudo
の使用の違いを読んできましたが、Sudo
アプローチはルートアカウント自体へのアクセスを許可するよりも安全であることに誰もが同意しているようです。彼らは、rootアカウントを使えば、たった1つのコマンドでシステム全体を破壊できると言っています。これはわかりました。ただし、システムで作成された最初のユーザーは、Sudoを使用してすべてのコマンドにアクセスできます。これは、su -l
を実行することで確認できます。その場合は、Sudo <game-ending command>
を実行するだけでシステムを台無しにすることができます。それでは、スーパーユーザーアカウントに直接アクセスできるようにした後、このアプローチはどのように改善または安全になりますか?同じコマンドをすべて実行できます...
コマンドラインでSudo
を使用しているのは、自分が何をしているのかわかっているとコンピューターに明示的に伝えているからですか?彼らは明示的にそう言わない限り、人々がスーパーユーザーアカウントの下にいることを忘れると思いますか?
人々はまた、システムが外部の誰かによって侵害され、侵入された場合、ルートアカウントの下にいると、私のシステムにひどいことをすることができると述べています。しかし、彼らがすでに私のアカウントにアクセスし、私のパスワードを知っている場合、スーパーユーザーのパスワードを知る必要さえないので、彼らはSudoを使用して私のパスワードを入力することでこれらと同じ恐ろしいことを行うことができます。ここにいないのは何ですか?
個人的には、必ずしも安全だとは限りません。(Sudoの)利点のほとんどはマルチユーザーシステムにあります。シングルユーザーシステムでは、おそらくウォッシュです。
利点は次のとおりです(順不同)。
Sudo -i
は、おそらくルートの環境変数をユーザーから分離するための最良の方法です。これは時々起こりますが、やや難解です。 https://help.ubuntu.com/community/RootSudo#Special_notes_on_Sudo_and_shells を参照してくださいおそらくより多くの利点がありますが、それらは主要なもの、私見です。
参照- https://help.ubuntu.com/community/RootSudo
他の考えに答えようとするには:
そのため、Sudoの問題や欠陥を確認しましたが、suにはまったく同じ脆弱性があり、suはこれらの点でSudoよりも優れていません。
何か複雑なことをするのに20分あると想像してください。あなたは少し二日酔いで、ラッシュする必要があります。 「suを使いましょう」と言います。 「時間を節約できます」があなたの理由です。
誤って入力する
rm -rf /*
の代わりに
rm -rf ./*
これで、システムがブロックされ、締め切りまでに10分かかります。
Rootが必要なときに明示的に選択した場合、これが発生する可能性を最小限に抑えることができます。 rm -r ./*
にはルートは必要ないかもしれませんが、なぜそれを使用するのですか?なぜリスクを取るのですか?
ここが「安全」の意味です。ユーザー(初心者だけでなくすべてのユーザー)が致命的なミスを犯すリスクを最小限に抑えます。
もちろん、これは極端な例であり、実稼働環境で発生することは許されません(prod環境で発生したことを保証します)。
セキュリティに関しては、Sudoの方が優れているものもあります。 @ Pantherによる -ロギング、制限、ルートパスワードはSPOFなど)
他の答えに少し歴史的な視点を加えたいと思います。残念ながら、Usenetの議論や雑誌記事の記憶を除いて、情報源は用意されていません。
少し前の1990年代に、ディストリビューションはコンピューターの知識が少なくてもLinuxを自分のハードウェアにインストールしやすくしていました。¹したがって、Linuxはシステム管理者としてこれまで訓練されていなかった人をますます引き付けるようになりました。いくつかのUN * X方言。代わりに、多くがWindows 95/98などのシステム(シングルユーザー)に使用されていました。そして、彼らは、ほとんどのLinuxシステム管理タスクが、その奇妙な「ルート」アカウントで作業する必要があることを学びました。
したがって、一部のユーザーはrootとしてログインし、そのアカウントをすべての日常業務に使用しました。なぜ彼らはsu
とrootパスワードを何度も入力するか、いくつかの管理コマンドのために新しいttyにログインしなければならないのはなぜですか?ただし、rootをすべてに使用することは、良いアイデアではありません。 。これにより、一部のディストリビューション(SuSEでしたか?)がrootユーザーのデスクトップ背景を変更して、そのアカウントのみを使用する必要があるという大きな警告を表示するようになりました。管理タスク用。
そのため、Sudo
を使用するUbuntuの方法には、いくつかの利点があります(すでに Pantherがリストしています )。
Sudo
は資格情報をキャッシュするため、複数の管理コマンドを連続して実行する場合は、パスワードを1回入力するだけで済みます(su
とは対照的)。これにより、root特権でシェルまたは新しいターミナルを開くだけの衝動が軽減されます。¹そして、大胆に自分でやろうとしない人のために、インストールパーティがありました。
²しかし、あなたはSudo -i
やSudo su - root
などのコマンドを使用して、ログイン後にルートシェルを取得できます。通常のユーザーとして。
³しかし、もちろんあなたは インターネットからコマンドを単純にコピーして貼り付けないでください であると知っていますか?
何十年もの間、sshを介してrootログインを無効にすることが可能でした。ルートアカウントを無効にし、すべてのユーザーをSudoにするUbuntuの方法は、単なる仕掛けにすぎません。 「Sudo -s」だけで、ルートシェルがあります。 sshを介したrootログインを無効にして、そのままにしておきます。
構成によっては、Sudo <game ending command>
は必ずしも機能しません。もちろん、sudoers
構成に「user ALL =(ALL)ALL」と表示されている場合、Sudo
は追加の保護を提供しません。ただし、新しいパッケージのインストールなど、頻繁に実行する必要がある特権コマンドのリストを指定し、rm
などの危険なコマンドを除外できます。
この方法では、root
としてログインした場合にすべてのコマンドを実行できますが、これはときどき必要なだけなので、<game ending command>
を実行するリスクは大幅に減少します。
Sudoを使用すると、特定のコマンドのみを許可できることが、suに対するSudoの唯一の利点ではありません。
ほとんどの店で、それは最も重要な利点でさえありません。
Sudoを使用すると、特定のコマンドを実行したユーザーがわかります。
今、これはあなたにとって重要ではないかもしれません。たとえば、コンピューターの唯一のユーザーである場合があります。その場合、Sudoはsuよりも優れていない可能性があります。
しかし、多くのホストには複数の管理者がいます。
誰かが間違ったことをすると、Sudoは誰がそれをしたのかを知らせてくれるので、Sudoは非常に便利になります。
これにより、エラーが発生した理由を理解し、エラーが再発しないように人々を教育したり、必要に応じて誰かからツールを削除したりできます。
おまけとして、人々が自分の行動が記録されていることを知っているとき、彼らはしばしばそれより少し慎重です。
須藤は完璧ではありません。
2人が同時に「Sudo sh」を実行する場合、コマンドをどちらかに割り当てることは困難です。
また、悪意のある管理者はいつでもログを削除または編集できます。ただし、特に集中ログを使用している場合、きれいに実行することは必ずしも人々が考えるほど簡単ではありません。
元の質問で特定されたすべての理由により、sudoは必ずしも愚かなまたは悪意のあるアクションを停止するわけではありません。
しかし、それはあなたに再発を防ぐはるかに良いチャンスを与えます。