ルートアカウントには常にUID / GID 0がありますか?


50

私が管理しているすべてのLinuxシステムで、ルートアカウントのGIDとUIDは0です。これは保証されていますか、またはシステムがルートに別のIDを与える可能性はありますか?


3
ID 0にはすべての権利があります。実際の名前(または名前-multiple-)は異なる場合があります。たとえば、私のサーバーには2人のuid 0ユーザーがいます。1つは「ルート」と呼ばれ、もう1つは「トゥール」と呼ばれます。
ヘネス

回答:


80

あなたの質問には、実際には2つの部分があります。

Linuxでは、スーパーユーザーアカウントには常にuid / gid 0/0がありますか?

はい。指摘されたようリッチHomolkaコメント、UID 0のため、明示的にチェックし、ルートは常に、少なくとも持っていることを意味し、rootユーザーのためにチェックする必要がカーネル内のコードがありますUID 0で。

uid 0のユーザーアカウントの名前は常にrootですか?

いいえ。 root単なる名前で、/ etc / passwdまたは他の認証ストアにリストされています。アカウントを呼び出すこともできますがadmin、OS自体は気にしませんが、一部のアプリケーションは、という名前の特権アカウントが存在することを期待しているため、気に入らない場合がありますroot。* nixでuid 0アカウントを呼び出すことrootは非常に強力な慣習ですが、システムでは必要ありません(ただし、システム管理ユーティリティを含む特定のユーザーランドソフトウェアで必要になる場合があります)。

Simon Richterが指摘したように、BSDには、慣例により、2番目の uid 0アカウントがしばしば存在することにも注意する必要がありますtoor(これは「root」と逆スペルで、アルファベット順にソートされたリストで字句的に続き rootます)。たとえば、FreeBSDはこれを使用して、カスタマイズされたシェル設定をルートユーザーに提供し、システムのルートパーティションに存在することが保証されているデフォルトのシェルルートユーザーに残します(リカバリ目的に役立ちます)。


15
カーネルには、root、uid == 0をチェックするコードがあります。はい、ハードコードされており、永続的です。
リッチホモルカ

1
BSDは、典型的に有しているroottoorUID 0の両方、
サイモン・リヒター

@SimonRichterその場合、名前のスーパーユーザーアカウントが存在するrootため、認証ストアライブラリが同じUIDを持つ2人のユーザーで混乱しない限り、問題はありません(この場合、BSDはそれを行いませんまたは、ライブラリが修正されます)。
からCVn

カーネルにはUID = 0をルートの代表として使用し、「root_uid」という名前の変数に格納するコードがありますが、実際には「root」という名前のユーザーに依存するものは見つかりませんでした(6年後)。ただし、UIDが/ etc / passwdにあるかどうかにかかわらず、最終的にはUID = 0で起動されるプロセスがあります。:)
ダニーザウアー

15

1)管理者は常にuid == 0です。これはカーネルでコーディングされています。これを変更するには、カーネルでコーディングする必要があります。これにはあまり意味がないので、まだ完了していません。たとえば、同じNFSを共有する他のUNIXでは一貫性がありません。

2)uid 0は必ずしもルートにマップされるとは限りません。最良の例はFreeBSDです。2つのuid == 0アカウントがありますが、違いはシェルです。ルートにはshell / bin / shがあります。これは単純なシェルで、ディスクが不良でfsck / usrが必要な場合に便利です。toorはtcshを使用します。tcshは、歴史などのようなものがあるため、非常事態では非常に便利です。

別の、より個人的な例; NISのルート等価(つまり、uid = 0)アカウントを持っていた仕事が1つありました。パスワード、空白!新しいシステム管理者がマシンのルートパスワードを思い出せなかったためです。私はこれについて明白な理由で怒鳴りました(定義によりNISパスワードは空白を隠すことはできません)。このアカウントには満足できませんでした。

そして、それは本当に、uid 0を与えるシステムがルートではない、それはあなたです。これはpasswdファイル、または他のネーミングディレクトリ(NIS、ldap)を使用して変更しますが、コンパイルされません。 。

そのため、rootは常にuid 0ですが、uid 0は常にrootであるとは限りません。


1
一つだけ受け入れ答えを選ぶのOOF、痛み...
Tanaki

5
@Tanaki一般的に、あなたの質問に最もよく答えてくれる答えを「受け入れ」、有用だと思うすべての答えに賛成します。最も投票数の多い、または最初に書かれた回答を受け入れる必要があるということは何もありません。
CVn

1

nonStopサーバーを使用するシステムの場合、ROOT_UIDは0ではなく65535です。

OSSユーザーとグループ OSS環境は、サイト管理者によって明示的に作成されない限り、一般的なUNIXのデフォルトのユーザー名とユーザーIDを提供しません。ただし、同等のOSSユーザー名とユーザーIDは存在します。たとえば、UNIXユーザー名のルートとユーザーID 0に通常関連付けられている特権は、ユーザーSUPER.SUPERとそのエイリアスである65535(スーパーID)のOSSユーザーID(UID)に存在します。

https://h20195.www2.hpe.com/V2/GetPDF.aspx/4AA4-6316ENW.pdfを参照してください

coreutilsでは、root-uid.hヘッダーファイルを見つけることができます。

/* The user ID that always has appropriate privileges in the POSIX sense.

   Copyright 2012-2016 Free Software Foundation, Inc.

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.

   Written by Paul Eggert.  */

#ifndef ROOT_UID_H_
#define ROOT_UID_H_

/* The user ID that always has appropriate privileges in the POSIX sense.  */
#ifdef __TANDEM
# define ROOT_UID 65535
#else
# define ROOT_UID 0
#endif

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