ほぼすべてにsudoを使用する必要があるのはなぜですか?


64

Linuxの哲学を正しく理解している場合は、sudo控えめに使用し、ほとんどの操作は特権のないユーザーとして実行する必要があります。しかし、sudoパッケージの管理、構成ファイルの編集、ソースからのプログラムのインストール、またはあなたが何を持っているかにかかわらず、私は常に入力する必要があるため、それは意味をなさないようです。これらは技術的なものでもなく、通常のユーザーが行うことです。

これは、WindowsのUACを非常に思い出させます。これは、ユーザーが無効にするか、パスワードを必要としないように構成する(クリックするだけ)ものです。さらに、多くの人々のWindowsユーザーは管理者アカウントでもあります。

また、を使用sudoせずに特権を必要とするコマンドを表示する人もいますsudosudo必要のない方法でシステムが構成されていますか?


25
sudoシステムを変更することを行うために使用する必要があります。自分のファイル/デスクトップを操作しているだけで、他の人に影響を与えないのであれば、昇格した権限は必要ありません。あなたはsudoをせずに特権コマンドを実行している場合、あなたはおそらくすでにスーパーユーザー(つまり、ルート)だと、それは通常、特定のシステム全体のタスクのためにsudoを使用するよりも少ないことをお勧めだ
エリックRenouf

75
「ソースからプログラムをインストールする。。。。通常のユーザーが行うこと」---通常のユーザーの技術的スキルを過大評価していると思います。
ジョナサンキャスト

7
使用sudoすべきでないときに使用していますか?通常のUnixユーザーのコマンドはcd、ほとんどの場合ls、アクセスできるファイル、、、移動、コピー、削除、および編集で構成されます。通常のコマンドがこれで構成されていない場合、通常のUnixユーザーではない可能性があります。
user530873

20
小さなヒント:sudoを必要とするがコマンドにsudoを入れるのを忘れた場合はsudo !!、sudoを前に入力した最後のコマンドを再実行するために使用できます。
asfallows

6
インストールしたソフトウェアを使用してほとんどの時間を費やしていませんか?それはsudoを含むべきではありません。そうでない場合、なぜそれをインストールするのですか?
ハーミングモニカを停止

回答:


75

これらのシステム管理機能について言及しました

パッケージの管理、設定ファイルの編集、ソースからのプログラムのインストール

こととして

通常のユーザーが行うこと

典型的なマルチユーザーシステムでは、これらは通常のユーザーアクションではありません。システム管理者はこれについて心配するでしょう。通常のユーザー(「特権なし」ではない)は、その維持を心配することなくシステムを使用できます。

はい、ホームシステムでは、システムの管理と使用が必要になります。

使用するのは本当に難しいsudoですか?システムだけの場合は、rootシェル(--rootシェルを取得するさまざまな手段の概要についてはこの投稿sudo -s参照)やパスワードの入力を求めないように構成できない理由はないことに注意してください。sudo


47
パスワードを要求しないようにsudoを構成できない理由はありません[...]。悪意のあるスクリプトを起動した場合、システムでrootとして動作できるようになることはお勧めしません。
AL

5
sudoパスワードを入力するのが非常に面倒で、基本的にパスワード入力を自動操縦する場合は、それも役に立ちません。健全性とセキュリティのバランスを取る必要があります。私はsudoでOSの主要なチャンクを少なくとも一度は自動削除しました。
ネルソン

33
個人的に私は大好きですsudo-それは健全性チェックのようなものです。
マックスウィリアムズ

6
@MaxWilliams、ええ、まさに、大きな赤いボタンの上にある小さな透明なプラスチック製のフリップカバーです。
KlaymenDK

15
@AL:未知のスクリプトを実行しようとする場合、悪意のないスクリプトを使用するか、sudoを実行するかどうかに夢中になります。私の個人用デスクトップでは、重要なのは自分自身の(非ルート)データであり、マシン自体の(ルート)構成ではありません。
jrw32982

31

Sudo / Rootは、標準ユーザーがシステムの管理者が通常は許可しない方法でシステム構成を損傷/変更するリスクのために行うべきではないことを行う場合に使用されます。

パッケージの管理、設定ファイルの編集、ソースからのプログラムのインストール、またはあなたが何を持っているか。

これらはすべて技術的には管理機能であり、何か間違ったことが行われるとシステムに大きなダメージを与える可能性があります。企業環境では、システム管理者として、彼らは私の明確な知識なしにユーザーにさせないものです。したがって、sudoです。

たとえば、昇格した権限なしでパッケージ/構成ファイルを変更できる場合、外部ソースがシステムを破壊/妥協する可能性のあるリモートコードを実行するだけで非常に簡単になります。これらのアクションを強制的にルートアクセスを要求することにより、ユーザーとして、それらのアクションが発生するかどうかを決定するように強制します。

これはUACウィンドウの場合と非常に似ており、実際にはウィンドウがのアイデアを得た場所ですUAC

sudoを初めて使用するときに受け取る引用は非常に適切であり、非常に重要です。

ローカルのシステム管理者から通常の講義を受けたことを確信しています。通常、これらは次の3つに要約されます。

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

特に#2、入力する前に考えてください。これはsudoが存在する重要な理由です。コマンドを入力し、「このアクションを実行するにはルートである必要があります」とキックバックすると、強制的に停止し、実際に実行していることを考えます。


19

また、を使用sudoせずに特権を必要とするコマンドを表示する人もいますsudosudo必要のない方法でシステムが構成されていますか?

これらのコマンドはスーパーユーザーとして実行する必要がありますが、を使用して実行する必要はありませんsudo。たとえば、代わりにsuor doas(OpenBSDs replacement for sudo)を使用するか、単にrootとしてログインできます。

そのsudoため、読者がここでコマンドを表示しない場合、読者はこれらのコマンドをスーパーユーザーとして実行する自分の好みの方法を使用すると想定します。
確かに、これらのコマンドを通常のユーザーとして実行できるという意味ではありません。


4
あなたはまた、使用することができますsudo -iまたは類似ルートシェルを得るために、その後でそれらのそれぞれを前置きすることなく、あなたのルートコマンドの実行を開始sudo
CAS

2
通常ルートがルートプロンプトなどで示されているように実行するために、その必要のあるステップ# vi /etc/hostsの代わりに、非特権プロンプトは$ vi /etc/hosts(あなたが使用している場合バッシュは規則に従います\$PS1
ゲルトファンデンベルグ

16

が提供するセキュリティ機能の1つsudorootパスワードなしでシステムroot使用できるため、ユーザーが直接ログインできないことです。これにより、弱いパスワードを選択するユーザーに追加の保護が提供されます。パスワードを総当たり攻撃(SSHなど)しようとする攻撃者は、最初に有効なユーザー名を把握する必要があります。

もう1つの側面は、よりきめ細かい特権管理です。ルートとしてmake; sudo make install実行することmake; make installと考えてください。物事の多くは中に間違って行くことができますmake。正しく構成されていないツールは、重要なシステムファイルを上書きし/lib、現在のディレクトリの代わりに「クリーン」を試み、使用可能なすべてのRAMを消費してシステムをハングさせるなどmake install、致命的なエラーの可能性がはるかに低い小さな単純なアクションです。


1
また、rootパスワードが設定されている場合でも、rootパスワードを与えずにroot権限を必要とするコマンドへのアクセスをユーザーに与えることができます。つまり、会社のサーバーであり、それらが解雇された場合、ユーザーを無効にするだけです。 、ルートパスワードを変更する必要はありません。
ゲルトヴァンデンバーグ

13

ポイントは、歴史的には、システムは実際にログオンし、いくつかの作業を行ってからログオフする複数のユーザーによって共有されることを意図しているということです。したがって、管理者と通常のユーザーの区別。そのようなシステムはまだ大学の研究室に存在しており、そのようなコンピューターを使用すると、その違いをはっきりと感じることができます。あなたが唯一のユーザーであり、管理者として行動しなければならないホームPCは、実際にはずっと後の開発です。


6
「まだ大学の研究室に存在します」...はい、そして地球上のすべてのテクノロジー中心の企業、そして非技術的なもののほとんども。それでも、OPが明らかに欠落していること、および他のほとんどの回答者が強調しなかったことを正確に区別するための+1。
ワイルドカード

@Wildcard確かに。すぐに飛び出した例を頭に置いてください。
xji

10

コンピューターはツールです。他のツールとの類似点を試してみましょう。フライパンとしましょう。時には、フライパンの世話をする必要があります。たとえば、食器用洗剤できれいにする必要があります。食器用石鹸は、フライパンを使用するレシピの必須成分だと思いますか?料理の本の材料として「食器用石鹸」がリストされることはありません。必要ですが、ツールの準備は別の問題であるため、料理の本では言及していません。フライパンは掃除する必要がありますが、それは何のために作られたものではありません。

それはあなたのコンピューターでも同じです。構成して世話をする必要がありますが、それは何のために作られたものではありません。あなたはそれを世話し、あなたがそれを設定するので、それは適切に動作することができます。これが完了したら、システム管理者としてではなく、ユーザーとして使用できます。それが目的です。ユーザーの場合、sudoは不要ですもうません。事前に準備したツールを使用してください。もちろん、時々フライパンを調理するのと同じくらい頻繁にフライパンを掃除しなければならないのと同様に、ルート権限を使用する必要があります。

そのため、誇張しすぎることなく、コンピューターを使用するためにsudo(またはルートパスワード)を必要としないと言えます。コンピューターの準備のみ。


2
非常によく似ていますが、スクランブルエッグを揚げる前に鍋からいやな焦げた焦げ跡を取り出すために石鹸が必要な場合があります。所有しているコンピューターを使用して、ほぼすぐに「洗う」/「揚げる」ことがsudoできますsu
アームフット

より危険なので、料理にはルートアクセスが必要なようです。
deltaray

6

システム管理タスク以外のすべてにGUIソフトウェアを使用するか、Linuxサーバーについて話しているため、ほとんどのアクセスは当然システム管理になります。したがって、シェルで何でもする必要があるように感じるかもしれませんsudo

日常のタスクにシェルを使用することもできます。での個人ファイルの管理、ファイルの~編集、IRCでのチャット、コードのコンパイル、Webの閲覧などはすべてシェルで実行できます。私も使用しますbc頼りになる電卓としてしています。GUIを使用した方が簡単なこともあれば、シェルを使用した方が簡単なこともあります。GUIを使用したい場合でも、シェルはバッチ操作と自動化に優れていることがよくあります(シェルスクリプトを考えてください)。個人的には、当面のタスクに最適な方を使用します。

場合によっては、使用する必要がないようにシステムをセットアップすることをお勧めします sudoによっては、デフォルトでrootを必要とするが問題を引き起こす可能性が低い操作に毎回ます。1つの例は、シリアルポートの使用を伴うハードウェアで作業し、udevルールを設定して、rootでなくても通常のユーザーとしてデバイスにアクセスできるようにすることです。

sudoパスワードを要求しないように設定するのは良い考えだとは思いません。1つのミスタイプされたコマンドまたは悪意のあるスクリプトでシステム全体を簡単に台無しにしてしまうのです。

常に絶対にrootを必要とするタスクを実行する必要がある場合sudo -s、ターミナルウィンドウで永続的なrootシェルを実行したままにしておきませんか?そうすれば、パスワードを入力しなくても使用できるようになり、誤って使用するのは簡単ではありません。ルートシェルでシェルプロンプトを真っ赤に設定しました。


5

[...]しかし、パッケージの管理、設定ファイルの編集、ソースからのプログラムのインストールなど、sudoを常に入力する必要があるため、それは意味をなさないようです。[...]

これらすべてに関連する暗黙の形容詞は、システム全体または グローバルな変更であることです。Unixの起源は、複数のユーザーが同じインストールをリモートで使用するマルチユーザーシステム1と見なす必要があります。1人の素人ユーザーがすべてのユーザーのグローバル設定を変更できるとは意味がありません。それは、システム管理者、ルート、特権、および責任でした。

マルチユーザー設定では、プリインストールされたソフトウェアとそのシステム全体の設定がそれぞれ下に/usrあり/etcます。これらの場所に触れるには、ルート権限が必要です。しかし、Unixソフトウェアはマルチユーザーを念頭に置いて作成されているため、$HOME ディレクトリ2でソフトウェアをコンパイルおよびインストールし、自宅に独自の構成ファイルを置くことができます。

自宅に独自のソフトウェアをインストールすることに加えて、ほとんどのシステム規模のソフトウェアは$HOME、最初に構成を読み取った直後にユーザー固有の構成を読み取ります/etc。これにより、ほとんど何でもカスタマイズできますroot

ホームPCを使用するsudoと、単一のメインユーザー設定で、好きなものを使用してルートを設定できます。しかし、それは通例だしないようにしてアプリケーション構成を触れる/etcが、代わりに、常に家庭内のユーザ固有の設定を提供します。そうすることで、パッケージマネージャーがアップグレード時にシステム全体の構成をリセットできるようになります。システム全体に新しいソフトウェアをインストールすることは、シングルユーザー設定ではかなり問題ありません。ディストリビューションパッケージは代替を想定していないため、簡単に解決できます。

パッケージマネージャーにグローバルなものをインストールさせますが、ソースからコンパイルされたものや自分で作成したものはすべて残し$HOMEます。そして、そのためにsudoする必要はありません。

データファイルがある場合は、の外部のストレージ$HOMEchownまたは chgrpディレクトリを自由に使用して、を使用せずにファイルにアクセスできます sudo

[1](UnixはMulticsオペレーティングシステムの「シングルユーザー」バージョンであることを意図していたため、少し皮肉です)

[2](システムがnoexecとしてホームパーティションをマウントしないことでこれを許可している場合)


2

UNIX(および、下降によってLinux)が設計された種類のマルチユーザーシステムでは、これらは通常のユーザーアクションではありません。システム管理者はそれらを実行できますが、一般的なユーザーは実行しないため、システムは、システム管理者が実際にこれを実行することを確認するように要求します。

しかし、シングルユーザーのホームシステムでも、これらは通常のユーザーアクションではありません。通常、システムを最初にセットアップするときにこれらの操作を行う必要がありますが、いったん終了すると、一般的なユーザーはそれほど頻繁に操作する必要はありません。ほとんどの一般的なユーザーは、既にインストールされているプログラム/パッケージを使用して、ホームディレクトリ(またはそのサブディレクトリ)内のファイルを操作するだけなのでsudo、その必要はありません。または、その目的のために確保されたシステム上の別の場所にある特別なディレクトリで動作する場合があり、それsudoを設定する必要がありますが、通常は一度だけ必要です。

なぜそれが重要なのですか?「シングルユーザが」誤った名称であるので:あなたはその唯一のかもしれないにもかかわらず、あなたのマシンのユーザーだけではありません人のユーザー。典型的な家庭用Linuxインストールでも、多くのプログラムが独自にさまざまな方法でマシンを使用するようにセットアップされており、多くの場合、時間、余裕があればバックアップ、アップデート、マルウェアスキャン、好む。ほとんどの場合、これらの使用は完全に無害ですが、それらの一部であっても、ユーザーが本当にこれを実行したいことを確認するのが賢明です。そして、これらのケースが発生した場合、それsudoが目的です。コンピューターは、誰か(おそらく、プログラムかもしれない)が言ったことを本当にやりたいと思っているのを確認するためにチェックインしています。そして、それはマルウェアの可能性にさえ入らないので、あなたになりすましてはいけません。


1

これはおそらく表現されているほど一般的ではありませんが、通常、結果を達成するために内部でカジュアルな何かがはるかに汎用的な特権システムコールを必要とする場合に発生します。

  • USBスティックをアンマウントして持ち運びます。umountあなたはそれで多くのものをアンマウントできるので、深刻なコマンドです。
  • ローカルワイヤレスネットワークに接続します。特別なものはありませんが、ネットワーク構成(ifupなど)はスーパーユーザー専用です。
  • 更新されていない場合は実行を拒否する自己更新アプリ。更新=インストール。これにより、不要なものを含む多くのものがインストールされる可能性があります。

システムは一般に、そのようなケースの数を減らすために進化します。USBスティックは現在ユーザーがマウントでき、ネットワークはユーザーが接続できます。しかし、それは常にこのようではありませんでした。


0

仮定:これはシステムとデータです。

誤ってデータを消去したりOSをブロックしたりするリスクと、sudo毎回入力せずに行うことの容易さを比較するだけです。

私は定期的にログインし、ホームサーバーでルートとして作業しています。 私は出来ます それは容易です。

あなたは、聖なる聖人を通り抜けなければ核兵器を発射するかもしれないと言われますsudoが、現実は今日、人々はroot多くのデバイス(あなたのテレビ、あなたの電話、トースター、あなたの窓(あなたが言及した))。Linuxは、多くの人が別の方法で考えることを好むにもかかわらず、ここで違いはありません。

BTW UACsudo、マルウェアがあなたに代わって何かをしたいときを確実に見ることができるように、その男の役割が(あなたの人生を惨めにする以外に)モデル化されていません。

(*)rootパワーは、重要なデータを破棄する能力として定義されます。「大きな力には大きな問題が伴う」(またはそれが何であれ)という格言が当てはまります。

私の仮定が間違っている場合は、上記のリスクに重み付けする必要がありますが、さらに変数があります(仕事、配偶者が撮影し、同じラップトップに保存した写真、...)


1
ルートパワーは重要なデータを破棄する能力ではありません。rm -rf ~/特別な許可なしでいつでもできます。一方、携帯電話やテレビを根こそぎにせずにレンガにすることはできません。
ドミトリーグリゴリエフ

デバイスは、保存するデータや提供するサービスと同じくらい便利です。以下にあるハードウェアとOSは単なる商品です。そのため、サービスやデータに影響を与えることができるのはパワーです。テレビでは、すべての設定を消去できます-テレビは使用できません(データを復元する前)。携帯電話ですべてのデータを消去することができます。携帯電話は使用せずにハードウェアの一部になります。これは私が「根力」によって意味したものである
WoJ

1
実際、これを「ルートパワー」と呼ぶのは誤用です。「ルート」という言葉は、少なくとも3つの異なるもの(ルートユーザー、/ディレクトリ、および/ rootディレクトリ)を意味するために既にオーバーロードされており、別の追加は役に立ちません。シングルユーザーマシンでは、特権のないユーザーは既に自分のファイルを削除できますが、sudoを使用せずに特定の管理タスクを実行できないため、さまざまな悪事から保護されます。
モンティハーダー

1
あなたのテレビのアナロジーは良いものではありません。テレビの設定を消去することは、Linuxのユーザー設定ファイルを消去するようなものです。これは通常、そのユーザーのデフォルト設定に従ってシステムを動作させるだけで、通常はシステムに害を及ぼすことはありません。ルートを使用すると、システム自体を変更できます。テレビでは、これはファームウェアを変更するようなものです。この場合、実際に動作する能力を破ることができます。
JBentley

1
これがリスク評価がある理由です。何かをすることのリスク(長所と短所)を評価し、受け入れ、軽減、または保証します。リカバリは単純(ドッカー、VMスナップショット)または困難(インストールフォームスクラッチ)の場合があります-計画し、再度評価する必要があります。しかし、あなたが述べたように、私はルートアクセスが何を意味するのか理解していないので、それはそうです。
WoJ

0

最初の質問を書いた人を弁護するために、私は過去何年もこの同じ質問をしましたが、私は異なるアプローチを取りました。

ここでの回答のほとんどは、ループで再生することができます。なぜなら、それらはすべて、sudoとrootについて同じ点を強調し続けるからです。このトピックに別の視点を追加してみましょう。

UnixとLinuxを徹底的に学んだのは、私のコンピューターの1つを「モルモット」として使うことでした。SCO Linuxをインストールし、最終的にSolarisをインストールし、その後Linuxをインストールします。その間、rootとして楽しく実験して、ディレクトリ階層とすべてのファイルを無制限にアクセスし、自宅に「通常のユーザー」アカウントを作成します-私が唯一のユーザーであったとしても、マルチユーザーボックスを成長させました。そして、そのようにしてくれてうれしいです。「Unix Philosophy」と、実験でUnixを使用する方法について多くのことを学びました。

セキュリティについて学び、また、ターミナルでrootとしてrm -rf / *と入力して危険なコマンドを実行しました。(これをしないでください!システムに負荷がかかります!!)リアルタイムで何が起こるかを確認するために、私はこのコマンドや他の多くのコマンドを実行しました。事前に結果を知ってこのようなことをしましたが、それでもまだ多くのことを学びました。私はWebが存在する前にSCO Unix LONGを使用していました(はい、私はそのようです!)、この方法を試すことは私の学習にとって非常に貴重です。

だから私が言っているのは、何かがうまくいかないときに再インストールを行うことを気にしない場合、suを使用するか、rootとして必要なすべてをログインし、設定/ハックすることです!そうすることで、あなたは多くの地獄を学ぶでしょう。

ここで何度も繰り返されてきたアドバイスが正当な理由で繰り返されたことを思い出してください:compsecが進化するにつれて、ベストプラクティスプロトコルは数十年にわたって進化してきました。 。そうすることで、優れたシステム管理者の衛生/習慣があなたにとって第二の性質になります。

suとsudoのトピックに関する思考のほんの一部の食べ物。ハッピーハッキング!

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