Linuxの哲学を正しく理解していれば、Sudo
の使用は控えめにし、ほとんどの操作は特権の少ないユーザーとして実行する必要があります。しかし、パッケージの管理、構成ファイルの編集、ソースからのプログラムのインストールなど、常にSudo
を入力する必要があるため、これは意味をなさないようです。これらは技術的なものすらなく、通常のユーザーが行うことは何でもします。
それは私がWindowsのUACの大部分を思い出させてくれます。人々はそれを無効にするか、パスワードを要求しないように(クリックするだけで)設定します。さらに、多くの人のWindowsユーザーも管理者アカウントです。
また、Sudo
なしでSudo
特権を必要とするコマンドを表示する人もいます。 Sudo
が不要になるようにシステムが構成されていますか?
これらのシステム管理機能について言及しました
パッケージの管理、設定ファイルの編集、ソースからのプログラムのインストール
ということとして
通常のユーザーが行うこと
典型的なマルチユーザーシステムでは、これらは通常のユーザーアクションではありません。システム管理者はこれについて心配するでしょう。通常のユーザー(「特権なし」ではない)は、システムの維持について心配することなくシステムを使用できます。
ホームシステムでは、はい、システムを使用するだけでなく管理する必要があります。
Sudo
を使用するのは本当にそんなに大変ですか?それがあなたのシステムだけの場合は、root
シェル(Sudo -s
- this post のさまざまな手段の概要を参照してください)にポップインできない理由がないことに注意してくださいルートシェルを取得する)および/またはパスワードを要求しないようにSudo
を構成します。
Sudo/Rootは、システム管理者が通常は許可しない方法でシステム構成を損傷または変更するリスクを負う可能性がある標準ユーザーが行うべきではないことを行う場合に常に使用されます。
パッケージの管理、構成ファイルの編集、ソースからのプログラムのインストール、または何をしているのか。
これらはすべて技術的に管理機能であり、何か間違ったことが行われた場合、システムに大幅な損傷を与える可能性があります。企業環境では、システム管理者として、それらは私の明確な知識がなければユーザーに許可しないものであり、したがってSudoです。
たとえば、昇格された特権なしでパッケージ/構成ファイルを変更できる場合、外部のソースがシステムを破壊/侵害する可能性のあるリモートコードを実行することは非常に簡単です。これらのアクションを強制的にrootアクセスを要求することにより、ユーザーとして、それらのアクションを実行するかどうかの決定を強制します。
これは、WindowsでのUAC
と非常によく似ています。実際に、WindowsがUAC
のアイデアを得た場所です。
Sudoを初めて使用するときに受け取る見積もりは非常に適切で、非常に重要です。
地元のシステム管理者から通常の講義を受けたと信じています。通常、次の3つに要約されます。
#1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility.
特に#2、タイプする前に考えてください。これがSudoが存在する重要な理由です。コマンドを入力して「このアクションを実行するにはrootでなければならない」とリベートすると、停止して実際に何をしているのかを考えるように強制されます。
また、
Sudo
なしでSudo
特権を必要とするコマンドを表示する人もいます。Sudo
が不要になるようにシステムが構成されていますか?
これらのコマンドはスーパーユーザーとして実行する必要がありますが、Sudo
を使用して実行する必要はありません。たとえば、代わりにsu
またはdoas
(Sudo
のOpenBSDの代替)を使用するか、単にrootとしてログインすることもできます。
したがって、Sudo
なしでコマンドをここに表示する場合、リーダーはスーパーユーザーとしてこれらのコマンドを実行するための好みの方法を使用すると想定します。
これらのコマンドを通常のユーザーとして実行できるという意味ではありません。
Sudo
が提供するセキュリティ機能の1つは、 root
パスワードのないシステム を使用できるため、root
ユーザーが直接ログインできないことです。これは、弱いパスワードを選択するユーザーに追加の保護を提供します-(SSHなどを介して)パスワードをブルートフォースで攻撃しようとする攻撃者は、最初に有効なユーザー名を突き止める必要があります。
もう1つの側面は、よりきめの細かい特権管理です。 rootとしてmake; Sudo make install
を実行することとmake; make install
を実行することを検討してください。 make
の実行中には、多くの問題が発生する可能性があります。正しく構成されていないツールは、重要なシステムファイルを上書きしようとし、現在のディレクトリの代わりに/lib
を "クリーン"にし、使用可能なすべてのRAMを消費し、システムをハングさせるなどします。make install
は、致命的なエラーが発生する可能性がはるかに少ない小さな単純なアクションです。
ポイントは、歴史的に、システムは実際にログオンし、いくつかのことを行ってからログオフするだけの複数のユーザーによって共有されることを意図しているということです。したがって、管理者と通常のユーザーの区別。そのようなシステムはまだ大学の研究室に存在しており、そのようなコンピュータを使用すると、その違いをはっきりと感じることができます。あなたが唯一のユーザーであり、管理者として行動する必要があるホームPCは、実際にはかなり後の開発です。
コンピュータは道具です。別のツールで例を挙げてみましょう。フライパンを例にとってみましょう。時には、フライパンの世話をする必要があります。たとえば、食器用洗剤で洗う必要があります。食器用洗剤は、フライパンを使用するレシピの必須成分だと思いますか?料理の本の材料として「食器用石けん」が表示されることはありません。それは必要ですが、ツールの準備は別の問題なので、料理の本にはそれが記載されていません。フライパンはきれいにする必要がありますが、それはそれがのために作られているものではありません。
それはあなたのコンピューターでも同じです。それは構成されて処理される必要がありますが、それはそれのために作られているものではありません。あなたはそれを大事にし、あなたがそれを構成するので、それは適切に動作することができます。これが完了すると、システム管理者としてではなく、ユーザーとして使用できます。それはそれのために作られました。ユーザーであれば、Sudoはもう必要ありません。事前に用意したツールを使うだけ。もちろん、ときどき、フライパンを調理に使用するのと同じくらい頻繁に掃除する必要があるのと同じように、root権限を使用する必要があります。
したがって、過度に誇張しなくても、コンピュータを使用するにはneverSudo(またはrootパスワード)が必要であると言えます。コンピュータを準備するだけです。
システム管理タスク以外のすべてにGUIソフトウェアを使用しているためか、Linuxサーバーについて話しているためでしょう。この場合、ほとんどのアクセスは当然システム管理です。したがって、シェルで何かを行うにはSudo
が必要なように感じるかもしれません。
日常のタスクにシェルを使用することもできます。 ~
での個人ファイルの管理、ファイルの編集、IRCでのチャット、コードのコンパイル、Webの閲覧など、すべてシェルで実行できます。私は頼りになる計算機としてbc
さえ使用しています。 GUIを介して実行する方が簡単なものも、シェルを介して実行する方が簡単なものもあります。GUIを使用したい場合でも、シェルはバッチ操作と自動化でExcelを実行することがよくあります(シェルスクリプトと考えてください)。個人的には、手元の作業に最適な方を使用します。
場合によっては、デフォルトでrootを必要とするが問題を引き起こす可能性が低い操作では、毎回Sudo
を使用する必要がないようにシステムを設定することをお勧めします。 1つの例は、シリアルポートを使用するハードウェアで作業していることです。また、rootでなくても通常のユーザーとしてデバイスにアクセスできるようにudevルールを設定しています。
パスワードを要求しないようにSudo
を設定することは良い考えではないと思います。 1つのタイプミスしたコマンドや悪意のあるスクリプトでシステム全体を台無しにしてしまうのは簡単すぎます。
常にルートが絶対に必要なタスクを実行する必要がある場合は、永続的なSudo -s
ルートシェルをターミナルウィンドウで実行したままにしないでください。そうすれば、パスワードを入力しなくても使用できるようになり、誤って使用するのは簡単ではありません。ルートシェルにいるときは、シェルプロンプトを真っ赤に表示するように設定しました。
[...]しかし、パッケージの管理、構成ファイルの編集、ソースからのプログラムのインストールなど、常にSudoを入力する必要があるため、それは意味をなさないようです。 [...]
これらすべてに関連する暗黙の形容詞は、それらがsystem-wideまたはglobalの変更であることです。 Unixの起源をマルチユーザーシステムとして考える必要があります。1 複数のユーザーが同じインストールをリモートで使用する場合。 1人の素人ユーザーがすべてのユーザーのグローバル設定を変更できるようにしても意味がありません。それは、システム管理者、ルート、特権、および責任でした。
マルチユーザー設定では、それぞれ/usr
と/etc
の下にプリインストールされたソフトウェアとそのシステム全体の設定があります。これらの場所に触れるには、root権限が必要です。ただし、Unixソフトウェアはマルチユーザー向けに作成されているため、$HOME
ディレクトリの下にソフトウェアをコンパイルしてインストールできます。2、そしてあなたの家の下にあなた自身の設定ファイルを持っていて、そこでスーパーユーザーでなくても自由にファイルを編集することができます。
ほとんどのシステム全体のソフトウェアは、独自のソフトウェアを自宅にインストールするだけでなく、$HOME
から最初に構成を読み取った直後に、/etc
からユーザー固有の構成を読み取ります。これにより、root
に行かなくても、ほとんどすべてをカスタマイズできます。
自宅のPCでは、単一のメインユーザー設定でSudo
を使用して、好きなものにルートを設定できます。しかし、それは慣例しないようにする/etc
のタッチアプリケーション構成ですが、代わりに常にユーザー固有の構成をホームに提供します。これにより、パッケージマネージャーがアップグレード時にシステム全体の構成をリセットできるようになります。システム全体に新しいソフトウェアをインストールすることは、シングルユーザー設定ではかなり問題ありません。ディストリビューションパッケージは代替案を想定していないため、簡単に解決できます。
私はパッケージマネージャーにグローバルにものをインストールさせますが、ソースからコンパイルされたものや自作のものは$HOME
の下に残します。そして、私はそのために須藤をする必要はありません。
データファイルがある場合は、$HOME
の外部に保存します。chown
またはchgrp
ディレクトリに自分の名前を付けて、Sudo
なしでファイルにアクセスできるようにします。
[1] (UnixがMulticsオペレーティングシステムの「シングルユーザー」バージョンであることを意図していたため、少し皮肉なことです)
[2] (システムがホームパーティションをnoexecとしてマウントしないことでこれを許可している場合)
NIX(およびディセントによってLinux)が設計された種類のマルチユーザーシステムでは、これらは普通ではありませんuserアクション =。システム管理者がそれらを実行する可能性がありますが、一般的なユーザーは実行しないため、システムは、sysadminが実際にこれを実行することを望んでいるかどうかを確認するように求めます。
ただし、シングルユーザーのホームシステムでも、これらは通常のユーザーアクションではありません。通常、システムの初期設定時にこれらを実行する必要があるかもしれませんが、それが完了したら、一般的なユーザーは頻繁に実行する必要はありませんです。ほとんどの一般的なユーザーは、すでにインストールされているプログラム/パッケージを使用して、ホームディレクトリ(またはそのサブディレクトリ)内のファイルを操作するだけで、Sudo
は必要ありません。または、その目的のために確保されているシステム上の別の場所にある特別なディレクトリで作業する可能性があり、それを設定するにはSudo
が必要ですが、通常は一度だけ実行する必要があります。
なぜそれが重要なのですか? 「single-user」は誤称であるため:あなたはあなたのマシンの唯一のユーザーではありませんが、あなただけがhumanかもしれませんユーザー。典型的なホームLinuxインストールであっても、多くのプログラムは独自のさまざまな方法でマシンを使用するように設定されており、バックアップ、更新、マルウェアスキャン、およびお気に入り。ほとんどの場合、これらの使用法は完全に害のないものですが、一部の使用者でも、ユーザーが本当にこれを実行したいかどうかを確認することは依然として賢明です。そして、それらのケースが発生した場合、それがSudo
の目的です。 コンピュータがチェックインしているだけで、誰か(多分あなた、多分プログラム)が言ったことを実行したいのが本当にあなたかどうかを確認しています。そして、それはマルウェアの可能性さえも含まれていません。マルウェアになりすましてはなりません。
これはおそらく表されるほど一般的ではありませんが、通常、何かが原因で、その結果を達成するために内部ではるかに一般的な特権システムコールが必要な場合に発生します。
umount
を使用すると、多くのものをマウント解除できるため、深刻なコマンドです。ifup
など)はスーパーユーザー専用です。システムは一般に、そのようなケースの数を減らすために進化します。 USBスティックはユーザーがマウントでき、ネットワークはユーザーが接続できます。しかし、それはいつもこのようではありませんでした。
最初の質問を書いた人を弁護するために、私は何年も前に同じ質問をしましたが、私は異なるアプローチをとりました。
ここでの答えのほとんどは、ループで再生することができます。なぜなら、それらはすべて、Sudoとrootについて同じ点を強調し続けるからです。このトピックに別の視点を追加しましょう:
UnixとLinuxを完全に理解する方法は、私のコンピュータの1つを「モルモット」として使用することでした。私はSCO Linuxをインストールし、最終的にはSolarisをインストールしてからLinuxをインストールしますが、それでもずっとrootとして実験的に楽しんでいるため、ディレクトリ階層とすべてのファイルを自由にアクセスして読み取ることができます。私が唯一のユーザーであったとしても、自分で作ったマルチユーザーボックスに「通常のユーザー」のアカウントを作成しました。そして、そのようにしてよかったです。「Unixの哲学」とUnixのあり方について多くを学びました私の実験で使用するためのものです。
私はセキュリティについて爆発的に学び、端末でrootとしてrm -rf/*と入力して危険なコマンドを実行しました。 (これを行わないでください。システムで問題が発生します!!)リアルタイムで何が発生するかを確認するために、このようなコマンドや他の多くのコマンドを実行しました。私は事前に結果を知ってこの種のことをしましたが、それでも多くのことを学びました。私はSCO Webが存在する前からUnix LONGを使用していました(そうです、私は古いです!))、この方法を試すことは私の学習にとって非常に貴重でした。
だから私が言っているのは、何かがうまくいかなくても再インストールすることを気にしないのであれば、suを使用するかrootとしてログインして、必要に応じて設定/ハックしてください!そうすることで多くのことを学ぶでしょう。
ここで何度も繰り返されてきたアドバイスが正当な理由で繰り返されたことを思い出してください:compsecが進化するにつれて数十年にわたってベストプラクティスプロトコルが進化し、システムのホームユーザーまたはシングルユーザーであっても、それらに注意を払う必要があります。そうすることで、優れたシステム管理者の衛生/習慣があなたにとって第二の性質になります。
SuとSudoのトピックについて考えるためのいくつかの食べ物。ハッキングハッピー!
前提:これはシステムとデータです。
誤ってデータを消去したり、OSを壊したりするリスクと、Sudo
を毎回入力せずに簡単に実行できるリスクを重み付けする必要があるだけです。
日常的にログインし、ホームサーバーでrootとして作業しています。 できます それは容易です。
あなたが聖人聖人Sudo
を通らなければ核兵器を発射するかもしれないと言われますが、実際には今日人々はたくさんのデバイス(あなたの)にroot
力(*)を持っているということですTV、あなたの電話、あなたのトースター、あなたのウィンドウズ(あなたが言及したように))。 Linuxはここでも違いはありません。
ところでUAC
はSudo
をモデルにしていません。これは、マルウェアがあなたに代わって何かを実行したいときに確実に見えるようにするために、その人の役割が(あなたの人生を悲惨にさせる以外に)あるからです。
(*)root
powersは、重要なデータをnukeする容量として定義されます。 「大きな力には大きな問題が伴う」(または何であれ)格言が当てはまる。
私の仮定が間違っている場合次に、上記のリスクに重みを付ける必要がありますが、さらに多くの変数があります(あなたの仕事、配偶者が撮影し、同じラップトップに保存されている写真など)。