ある意味、これはLinuxのユースケースに密接に関連する歴史的な質問です。話題と関係がない場合は閉じます。
sudo
技術的に必要でない場合でも、パッケージマネージャを使用してインストールするときは常にデフォルト値を使用するのはなぜですか?
つまり、vim
マルチユーザーサーバーにインストールしたいと思ってsudoアクセスを取得するのは官僚的な痛みです。アプリケーションイメージ(または同様のイメージ)以前は、デフォルトの場所からコンパイルしてインストールすることが唯一のオプションでした。
これに歴史的な理由はありますか?それとも、背後にある技術的な理由を見逃しているのでしょうか?
答え1
sudo
この回答は、パッケージ管理が必要な理由についてより具体的であることから始まります。
システムレベルの操作を完了するには、システムレベルの権限を要求するのが合理的です。歴史的に、LinuxはUnixのような伝統に従い、マルチユーザー設定を念頭に置いて設計されています。ユーザーが互いに干渉するのを防ぎ、システム制御をよりよく管理するために、システム管理者には、rootまたはシステムレベルのアクティビティへのユーザーアクセスを制御および制限する権限があります。
sudo
の簡単な紹介は次のとおりです。sudo公式ホームページ(強調):
須藤(」S代替あなたセレする「)を使用すると、システム管理者は特定のユーザー(またはユーザーグループ)に特定の(またはすべての)コマンドを実行する権限を付与できます。根また、すべてのコマンドとパラメータを記録します。 Sudoはコマンドに従って実行され、シェルを置き換えません。機能は次のとおりです。
ユーザーが各ホストで実行できるコマンドを制限する機能。
Sudoは、すべてのコマンドの広範なロギングを維持し、誰が何をしたのかについて明確な監査証跡を提供します。
syslogd
syslogデーモンと一緒に使用すると、sudo
すべてのコマンドを中央ホスト(およびローカルホスト)に書き込むことができます。 CUでは、すべての管理者がsudo
ルートシェルを使用してこのロギングを利用します。Sudoはタイムスタンプファイルを使用して「チケット」システムを実装します。ユーザーが電話をかけて
sudo
パスワードを入力すると、5分のチケットが付与されます(このタイムアウトはコンパイル時に設定可能です)。各後続のsudo
コマンドは、5分間チケットを更新します。これにより、他の人がキーボードに物理的にアクセスできるようにルートシェルを離れる問題を防ぎます。ユーザーがチケットファイルを簡単に削除する方法もあります。これはファイルを保存するのに役立ちます.logout
。Sudoの設定ファイル(sudoersファイル)は、同じsudoersファイルを複数のコンピュータで使用できるように設定されています。これにより、ホストごとにユーザー権限を定義する柔軟性を維持しながら、一元管理が可能になります。
それでは、sudoが必要なパッケージ管理の問題を解決してみましょう。しかし、必ずしもそうではありません。関連するAskUbuntuの投稿は次のとおりです。このトピックを扱います。 Braiamユーザーが指摘したように、apt-get
パッケージをインストールするときにシステムディレクトリをインストールして書き込むためにシステムレベルのアクセスが必要な場合が多いため、sudoが必要です。
ただし、彼が指摘したように、これを使用すると、apt-get
権限のないユーザーがアクセスできる場所にソフトウェアパッケージをダウンロードしてインストールできます。例には、パッケージを現在のディレクトリにダウンロードしてから、パッケージのインストールに使用または使用するapt-get download
ことが含まれます。wget
dpkg
問題は経営の観点からみると、面倒なことだという点だ。ユーザーは各ソフトウェアとその依存関係のコピーによって不要なディスク容量を使用し、一部のソフトウェアは時々悪意のある、または脆弱性またはその他の問題を引き起こすように動作する可能性があります。レビューしてソフトウェアを更新できるという意味ではありません。システムから。パッケージマネージャを使用すると、集中管理とパッケージソースを監査し信頼する機能が可能になります。
また、Ulrich Schwarzユーザーが指摘したように、ホームディレクトリは次のフラグを意味するパーティションにマウントできますnoexec
。
...コンパイラにアクセスできる場合でも、共有システムのホームディレクトリでバイナリを実行する(潜在的にCPU集約的)ことは困難です。
私もリンクしますこのU&Lスタック交換ポスト「ほとんどすべてのタスクになぜsudoを使用するのですか?」と尋ねます。私はこれらの答えがこの記事のポイントを裏付けるのに十分だと思います。またsudo
、歴史についても詳しく知ることができます。ウィキペディア。
結論として
sudo
1980年代初頭に開発されたこのプログラムを使用すると、ユーザーは他のユーザー(デフォルトはスーパーユーザー(root))のセキュリティ権限でプログラムを実行できます。また、システム管理者用の監査証跡および役割ベースのアクセス制御システムを作成します。 * nixシリーズシステムにソフトウェアをインストールすることは通常パッケージマネージャを介して行われますが、必ずしも必要ではありません。パッケージ管理は、管理者が管理および監査できるようにするシステムレベルの操作であるため、これらの要件を満たすために制限されることがよくあります。