「root」というアカウントを作成するとどうなりますか?


30

Ubuntuというユーザーアカウントを作成した場合root、自動的にルート権限が付与されますか?システムを破壊しますか?マトリックスにグリッチが発生しますか?どうなるの?


25
すでにrootというアカウントがあります。
mikewhatever

回答:


46

ユーザー名は一意である必要があるため、Owen Hinesの回答で述べたように、このユーザーを作成することはできません。ただし、ここで重要な点は、スーパーユーザーの権限(すべての可能なアクセス許可)がユーザー名rootではなく、UIDによって付与されることです。

UID 0のユーザーはスーパーユーザーです。

したがって、UID 0のユーザーが別の名前を持っていて、という名前のユーザーを作成した場合root、それらのユーザーには特別なステータスはありません。

タグwiki を紹介します!


既存のアカウントルートの名前を変更してから、通常のユーザールートを作成できますか?
エモリー

副次的な注意事項として、uid 0のユーザー名を別の名前に変更することは可能ですが(試していませんが)、スーパーユーザーは呼び出されませんroot。素晴らしいアイデアではありませんが、可能です。そのため、たとえば、goduid 0で呼び出されるスーパーユーザーアカウントを作成rootし、uid 1000または他の番号で呼び出される通常のユーザーを作成できます。
イアンD.スコット

15

既にrootユーザーがいるため、許可されません。

しかし、Florian Dieschがコメントで述べたように:

一部のツールは文句を言いますが、いつでも編集/etc/passwdしてetc/shadow手動でという名前の別のユーザーを作成できますroot


2
そして、これを行うと、どうなりますchown root fileか?
fkraiem

1
@fkraiem、うーん。良い質問です。その答えはわかりません。
TheOdd

3
以前は、ファイル内の最初のものが勝ちました。今は知りません。
ジョシュア

5

最初に、他の人が述べているように、UID 0のユーザーを別のユーザーに変更します。次に、ルートの名前と1000を超えるUIDを持つ通常のユーザーを作成できます。これは「正常に」機能します。すべての権限とコアシステム機能は、ユーザー名ではなくUIDを使用します。実際、これはLinuxシステムを強化するための良い第一歩です。(rootを無効にする方がずっと良いですが、sudoの前はこれを使用していました)。

今、何が起こるかについて。

ほとんどの場合、何もありません。許可または認証に関係するすべてのシステムコールは、UID(私が知っている)を使用します。そして、それはしばらくの間そうでした。システムは通常どおり稼働し続けます。システムツールは新しいユーザー名を反映しますが、正常に機能し続けます。言い換えれば、慣例では「ルート」であり、石ではありません。

そうは言っても、不完全に書かれたツールやプログラムがいくつかあると確信しています。$ USER環境変数をチェックするプログラムは、正しく動作しない場合があります。通常、これらはスクリプトと小さなプロジェクトですが、6年前に頭痛の種になっているfdiskで、その1つの悪いコミットを追跡するのに時間をかけることができました。

これは私がいつもやっていたことです。これは簡単なステップであり、「予測不可能なユーザー名」のルールに該当します。しかし、今日と同じ目標を達成するためのはるかに優れた方法があります。


私が思うにUIDを意味する
-Zanna

1

他の人が説明したように、UID = 0はユーザーに「root」というユーザー名ではなく「superpowers」を与えます。したがって、何らかの方法で「ルート」と呼ばれる別のユーザーを作成できた場合(元のユーザーの名前を変更/削除した後)-ユーザーのスーパーステータスは、付与したUIDに依存します。

これはまた別の興味深いアイデアにつながります:複数のユーザーに同じUIDを持たせることは完全に可能です(これにより、ファイルシステムのアクセス許可の観点からは本質的に同じユーザーになりますが、シェルとホームディレクトリなどは異なることができます)。実際、一部のUNIXライクシステムには、toor(root逆方向)と呼ばれる別のスーパーユーザーアカウントがあり、異なる設定の2つのスーパーユーザーアカウントを持つことができます。


1

2番目の「ルート」を作成する方法:

はい、理論的には、同じユーザー名または同じIDを持つ2人のユーザーが存在してはなりません。また、標準ユーティリティは万全であり、そのようなユーザーを作成することはありません。ただし、/ etc / passwdはいつでも手動で編集できます。

たとえば、私はやった:

$ sudo adduser root2 # created ordinary user
$ sudo vim /etc/passwd # edit last line, change 'root2' to 'root'. 
$ sudo -u '#1002' id # 1002 is UID of new user, it's in last line of /etc/passwd
uid=1002(root) gid=1002(root2) группы=1002(root2)

ご覧のとおり、私たちは今、ルートです!はい、それは実際のルート(uid = 0ではない)ではありませんが、同じ4文字です。印象的で役に立たない。

より良い2番目の「ルート」を作成する方法:

また、他の変更を行うこともできます。ユーザー名はそのまま(yournameまたはroot2)のままにしますが、uidは変更します。

$ tail -n 1 /etc/passwd
root2:x:0:0:,,,:/home/root2:/bin/bash

(参照、UIDおよびGIDフィールドはゼロです)これで、通常の(非ルート)ユーザー、ほとんど疑わないユーザー名(またはより良い効果を得るためにユーザー名 'johndoe'を作成)がありますが、実際、このユーザーには超能力があります!

$ fdisk /dev/sda
fdisk: unable to open /dev/sda: Permission denied
$ sudo -u root2 fdisk /dev/sda

Command (m for help):

ご覧のとおり、一般ユーザーは/ dev / sdaでfdiskを使用できませんが、root2は何でもできます!

この簡単なトリックは、バックドアを提供するためにシステムがハッキングされた後に使用されることがあります。実際のルートがキー/パスワードを変更しても、ハッカーはuid = 0を持つ他のユーザーを介してシステムを完全に制御できます。

マトリックスの仕組み

実際、ユーザー名「root」もuid = 0もそれ自体は魔法ではありません。これは単なる慣習です。そして、それは常に真実でさえありません。(この質問を参照してください: ルートアカウントには常にUID / GID 0がありますか?)カーネルコードは魔法です。実際、ユーザー空間のコード自体は-root ができることは何もできません。ルートとして実行されても!ルートパワーはカーネル内にあります。たとえば、 "cat / etc / shadow"(通常はrootのみがこれを行うことができます)を行う場合、/ bin / catプログラムは、まだユーザー空間コードであるlibc open()関数を呼び出し、このopen()関数はカーネルへのシステム呼び出しを実行します。次に、カーネル自体が何をするかを決定します。たとえば、有効なユーザーがid == 0の場合、カーネルは何らかの操作を許可する場合があります。

理論的には、カーネル内の一部のコードを変更し、「www-data」ユーザーを異なる方法で処理する場合、一部の操作は「www-data」ユーザーのみに許可される場合があります(rootにも許可されない)。


0

ほとんどの「ユーザーフレンドリー」ツールはこれをチェックし、すでに使用されているユーザー名でアカウントを作成することはできません。

これをバイパスし、2つ目のルートアカウントを/ etc / passwdと/ etc / shadowに手動で追加してから、どちらを使用するかは、元のアカウントの前に置くか後に置くかによって異なります。UNIXシステム上のすべてのユーザーアカウントと同様に、名前に関係なく、UIDがゼロの場合にのみスーパーユーザーアクセスも許可されます。

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