sudoユーザーとrootユーザーの違い[非公開]


21

/etc/sudoersユーザーが何を行うことができますファイルリストsudoコマンド

rootユーザーが/etc/sudoersファイルを作成および変更します。

この概念を理解するのは難しいです。

sudo特権を持つすべてのユーザーがsudoersグループに属している場合、sudo suコマンドを与えることですべてのユーザーがrootになることができます。

次に、実際のrootユーザーは誰で、sudoersグループのユーザーの権限をどのように制御しますか?

説明してください。


4
理解しにくい部分を拡大する必要があると思います。
garethTheRed

rootユーザーは誰ですか?この質問を理解するのは難しいです。humn人のみsudoersのグループにbelngすることができますので
ランチョ

@rancho質問を更新してください
ペテルフ


根底にある質問に対する単純な回答(回答に対するコメントに基づく):実行を許可した場合、rootアクセスとsudo権利の違いが無関係になることは事実ですsudo su。ただし、それを許可する必要はありません。特定のコマンドセットsudoのみを許可できます。たとえば、特定のバックアップコマンドに対してのみ、下位のsysadmin アクセスを許可します。
ワイルドカード

回答:


29

エグゼクティブサマリー:「ルート」は、管理者アカウントの実際の名前です。「sudo」は、一般ユーザーが管理タスクを実行できるようにするコマンドです。「須藤」はユーザーではありません。


長い答え:

「ルート」(別名「スーパーユーザー」)は、システム管理者アカウントの名前です。名前の由来は少し古風ですが、それは問題ではありません。

rootユーザーのユーザーIDは0で、名目上は無制限の特権があります。ルートは、任意のファイルにアクセスし、プログラムを実行し、システムコールを実行し、設定を変更できます。(ただし、以下を参照¹)。

「sudo」コマンドが発明される前は、管理タスクを実行するには、何らかの方法でログインプロンプトを取得するか、suコマンド(「su」は代替ユーザーの略)を使用して、rootとしてログインする必要がありました。

これは少し面倒ですが、ユーザーに部分的な管理権限を与えることもできません。そのため、「sudo」コマンド(「substitute user do」の略)が発明されました。

「sudo」コマンドを使用すると、ユーザーIDがsudoersファイル内にある限り、スーパーユーザー特権でコマンドを実行でき、必要な許可が与えられます。

したがって、たとえばsudo vi /etc/hosts、rootとして実行しているようにhostsファイルを編集できます。あなたはルートパスワードさえ必要ではなく、あなた自身のログインパスワードさえ必要です。

そしてもちろん、sudo su単純にルートになることができます。結果は、surootパスワードを知っている必要はないが、sudoersファイルにいる必要があることを除いて、rootとしてログインしたか、コマンドを実行した場合と同じです。

sudoersファイルは、sudoコマンドを使用できるユーザーと、それを使用して実行できる操作を決定します。

sudoersファイルは、複数の管理者を提供します⁴。事実上、管理者はrootであり、sudoersファイルにリストされている全員です。sudoersファイルがない場合、唯一の管理者はrootです。

実際、他の誰かがあなたのためにあなたのコンピューターを管理している組織では、あなたのコンピューターのrootパスワードを知らないことは非常に一般的です-あなたがsudoersファイルにいる限り、それは問題ではありません。

私が働いていたある会社では、巨大なサーバーファームで、ごく少数の人しかルートパスワードを知っていませんでした。代わりに、誰がどのサーバーで作業することを許可されているかのデータベースがありました。自動化されたプロセスにより、アクセスが許可されたサーバーのsudoersファイルに追加され、許可の期限が切れると削除されます。


¹もう1つ:現代のUnixバージョンでは、rootユーザーができることさえ制限できるようになりました。

下でのSELinux(Securityは、Linuxの強化)、アクセス制御リストは効果がありますプログラムは何をすべきか、とさえ根できるかを決定し、それらの制約を乗り越えることができません。

Appleのシステム完全性保護(SIP)(別名「ルートレス」)システムでは、特定のファイルとディレクトリがロックダウンされるため、適切なホワイトリスト上のアプリケーションのみがアクセスできます。

これらのシステムは、悪意のあるユーザーがルートアクセスを取得した場合からシステムを保護するために存在します。(または、場合によっては、ユーザーが埋め込みデバイスをジェイルブレイクするのを防ぐために。)明らかな理由から、これらの制限をバイパスすることは、rootアクセスであっても非常に困難です。

² "login:"プロンプトは、ウィンドウシステムではなく、シリアル回線でascii端末を使用したときから遡る、Unixの歴史の別の古風な部分です。loginターミナルウィンドウに入力するか、他の場所からコンピューターへのssh(またはtelnetまたはrsh)接続を開くと、「login:」プロンプトを表示できます。必要に応じて、そこから別のユーザーとしてログインできます。(コンピューターにシリアルポートがある場合でも、それらにログインできるように構成できます。)

³個々のプログラムにルートアクセス権を付与することもできます。これらのプログラムは、通常のユーザーが実行した場合でも、rootアクセスを持つユーザーができることをすべて実行できます。これらは通常、特定のタスクに限定されています。たとえば、crontabプログラムにはcronテーブルを編集できるようにルート権限があります。明らかに、 "sudo"にはroot権限があるため、実行できることはできません。

previously以前に説明したポイントをもう1つ説明します。「管理者」と「ルート」を同じ意味で使用していますが、他の種類の管理者もいます。これらはしばしば「ロールアカウント」と呼ばれます。つまり、これらのアカウントは実際の人間のものではなく、システム上で特定のロールを実行するために存在します。/etc/passwdシステム上のファイルを見ると、そのようなアカウントが何十と何十もあります。

たとえば、システムにmysqlがインストールされている場合、「mysql」ユーザーが存在し、すべてのデータベースファイル、構成ファイルなどはすべてそのユーザーが所有します。そのユーザーのみが、ファイルにアクセスしてmysqlサーバーを実行するために必要な権限を持ちます。ある意味では、そのユーザーは管理者アカウントになりますが、mysqlのみです。

データベース管理タスクを実行する必要がある場合は、su mysqlコマンドを使用して「mysql」になるかsudo、sudoersファイルがそれらの特定のコマンドのmysql権限を付与する場所を使用します。


1
sudoersファイルは、複数の管理者を提供します。事実上、管理者はrootであり、sudoersファイルにリストされている全員です。sudoersファイルがない場合、唯一の管理者はrootです。
エドワードフォーク

1
「SELinux(Security Enhanced Linux)には、だれが何をできるかを決定するアクセス制御リストがあり、rootでさえこれらの制限を越えることはできません。」-rootでさえこれらの制限に合格できない場合、誰がそもそもこれらの制限を作成しますか?
ランチョ

1
これを明確にするために:「事実上、管理者はrootであり、sudoersファイルにリストされている全員です。」sudoersエントリは、完全なルートまたはルートレベルのアクセスを意味する必要はありません。Svenに、moniserとして実行される監視エージェントを再起動する機能を付与する場合があります。
ジェフシャラー

1
The "sudo" command lets you execute commands with superuser privileges as long as your user id is in the sudoers file [..]。私のマシン(Solus OS 3)では、これは間違っています。ユーザー名がsudoersファイルにありません。そして私はまだできるsudo
マーティンアンダーソン

2
古い答えであり、これは教訓ですがsu、「代替ユーザー」の略語です。sudoしたがって、「substitute user do」です。を使用suして、だけでなく別のユーザーとしてログインできますroot。またsudo、別のユーザーとしてコマンドを実行するために使用できます。
josaphatv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.