
「これはどういう意味なのか教えてくれる人はいますかsudo
?」私はLinuxを学んでいます。グーグルしましたが、誰が教えてもらえますか?Windows比較してみると少しでも役に立ちそうです。私はsu
これがユーザー切り替えを意味することを知っています。sudo
他のユーザーですか?ところで、どうして、なぜそうなのでしょうか?なぜ自分のユーザー名で自分に権限を付与できないのですか?
答え1
デフォルトでは、ほとんどのUnicesは「管理者」アカウントのルートのみを慎重に使用できます。一般的なUnixシステムには、2つのレベルの管理者または「スーパーユーザー」権限しかありません。つまり、すべての権限を持っているか、すべて、またはそうではありません。
「完全な制御」には、ほとんどの権限確認をバイパスし、単純な誤入力を介してシステムを完全に壊すことが含まれます。一般ユーザーは自分のファイルのみを削除できます。
以前のsu
ユーティリティはルートパスワードと一緒に使用され、ルートアイデンティティを想定していますが、正しいユーザーグループに属していることがわかっている場合は、他のユーザーのアイデンティティを想定したり、個々のコマンドを実行したりするためにも使用できます。彼らパスワード。
su
よく使われるものは渡すrootユーザー(一部のUnixシステムの場合)は、特定のユーザーのIDで実行する必要があるデーモン(サービスプロセス)を開始し、そのユーザーがアクセスできない領域(通常はWebサーバー、SSHサーバーなど)にアクセスできないようにします。これはシステム起動時に起動スクリプトで実行できます。
su
インタラクティブに(コマンドラインで)ほとんど使用されません。
このsudo
ユーティリティを使用すると、ユーザーは別のユーザーIDを使用してコマンドを実行できるため、追加の構成が必要です。彼らだけパスワード(たとえば、ルートパスワードを共有する必要がないことを意味する)、誰がどのようなことを行うことができるかを詳細に制御できます。たとえば、単一ユーザーまたは全ユーザーグループに特定のディスクをマウントする機能を提供できますが、マウント解除、別のディスクのマウント、または特定のコマンドを使用してソフトウェアをインストールすることはできません。同様に、このユーティリティを使用すると、sudo
他のユーザー(ただルートではない)のアイデンティティを想定して対話型セッションを実行したり、root権限を持つ他の人がこのように構成を設定した場合に個々のコマンドを実行できます。
通常、次のコマンドを使用して単一のコマンドsudo
(したがって「スーパーユーザーの実行」という名前)を実行します。
$ sudo apt-get install vim
または
$ sudo shutdown -ph now
実行したコマンドがログに記録されるため、対話型ルートシェルを使用するよりもこの方法を使用する方がsudo
良いです。sudo -s
後でログファイルのタスクを追跡して、デバッグまたは監査目的でタスクを実行した場所(および誰が)を確認できます。
長い間インタラクティブなルートプロンプトに入力する場合は、現在実行している作業と実際にroot権限が必要かどうかを再確認する必要があります。
たとえば、唯一の時間私対話型ルートプロンプトは、新しくインストールされたコンピュータに一般ユーザーを追加したり、一般ユーザーとしてログインできなくなる重大な問題に直面したときに表示されます。
OpenBSD(バージョン5.8ベース)には、基本的なシステムインストールをdoas
置き換えるユーティリティがあります。 OpenBSDは、OpenBSD開発者が設定した目標を達成するには複雑すぎるというsudo
事実が発見されたときに開発されました。sudo
使い方はsudo
、しかし、設定する方が簡単です。。
答え2
sudo
あなたを許可ルートスーパーユーザーとしてプログラムを実行します。。代わりに使用してくださいsu
。
- ルートパスワードを入力するように求められますので、知る必要はありません。
- どのコマンドがrootとして実行され、どのコマンドがユーザーとして実行されるかを正確に知ることができます。を使用すると、
su
シェルが発生し、一部の(危険な)プログラムが意図せずに実行される可能性があります。 - すべてのジョブは
auth.log
ファイルに書き込まれます。シェルでの作業(例:su
一般的に記録されない。
なぜ自分のユーザー名で自分に権限を付与できないのですか?
セキュリティ上の理由から、ルートアカウントは日常的な目的でほとんど使用されません。。通常、管理者を含むすべてのユーザーは「一般」ユーザーを使用し、必要なときにのみrootとしてコマンドを実行します。これは、(1)他のユーザーのファイルへの不正アクセス、(2)文書化されていないルートタスク、および(3)「危険な」プログラムの実行によって発生する問題を防ぎます。
たとえ話がありますウィキペディア以下を考慮することができます。
- root アカウントの使用は、一般ユーザーが管理者として Clark Kent に似ています。クラーク・ケントは人を救うために必要な時だけスーパーマンになります。その後、彼は「変装」を再開しました。ルートアクセスも同じ方法で使用する必要があります。クラークケントの変装はまだ彼の超能力を使用できるので、彼を制限しません。これはsudoプログラムの使用と似ています。
答え3
以前のバージョンのUnixでは、Windowsシステムなしで端末を介してログインするのが最も一般的な状況でした。 suコマンド(代替ユーザー)は、ログアウトせずに現在の権限を変更する便利な方法です。 Windowsシステムからログオフしないと、実行中のすべてのエントリが停止することを忘れないでください。
suを使用してrootになるには、いくつかの迷惑な問題があります。人々は時々セッションを終了することを忘れ、誤ってrootとしてコマンドを実行します。管理パスワードを変更することは、必要な人に配布する必要があるため複雑です。ほとんどのシステムはすべてのコマンドを記録しないので、誰がrootで何をしたかを知ることは困難です。など。
sudoは、人々がrootとしてコマンドを実行できるようにすることでこれらの問題を解決します。ワンタイムコマンドでより便利でありながら、より良い監査と制御機能を提供します。
答え4
sudoを使用すると、設定可能な定義済みのルールセットに基づいて、他のユーザー(rootを含む)でプログラムを実行できます。
Unix/POSIX/Linux システムでは、ルートは God です。ルートユーザーもシングルユーザーです。
多くの環境には、完全なルートアクセスを必要とする複数の管理者がいる可能性がありますが、通常、ルート用に予約されている特定の機能を実行するためにアクセスが必要な人がいる可能性があります。管理者はネットワークデバイスとルーティングを設定し、セキュリティ管理者は証明書を管理し、ファイアウォールを設定する必要があります。
人が実行できるコマンドを制限することによって、sudoは最小特権の原則を適用します。つまり、ユーザーは不要なアクセス権を取得できません。ただし、これはユーザーが実行できるバイナリを制限するだけではありません。多くの管理タスクはコマンドラインで実行され、そのコマンドに渡される引数はsudoによって制限されることがあります(またはsudoが提供するアクセス権を持つシェルスクリプトにキャプチャされます)。したがって、これらの特殊なデータ/デバイスマネージャは制限される可能性があります。 。
なぜ自分のユーザー名で自分に権限を付与できないのですか?
1)これは良くないでしょう。
私はしばしばシステムのルートアカウントにアクセスできますが、ログイン用に名前付きアカウントを設定し、明示的に超能力を呼び出したい場合は、「su」または「sudo」のみを使用できます。愚かなミスを防ぐことに加えて、私の名前付きアカウントは誤動作するコンポーネントのサンドボックスも提供しています。
5人に特権アクセスが必要な場合は、各人に特権アクセスを付与する必要がありますか? 20代はどうですか? 200はどうですか?
2) 難しいだろう
- これはUnixセキュリティモデルではありません。もちろん、いくつかの実行可能ファイルの権限を変更することもできます(パラメータに関する前の注意を参照)。ただし、セキュリティに興味がある場合は、定期的にパッチを適用できます。これにより、カスタム権限モデルが破損する可能性があります(sudo OTOHはコマンド自体とは無関係に権限を保持します)。