回答:
あなたの質問には、実際には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はこれを使用して、カスタマイズされたシェル設定をルートユーザーに提供し、システムのルートパーティションに存在することが保証されているデフォルトのシェルをルートユーザーに残します(リカバリ目的に役立ちます)。
root
とtoor
UID 0の両方、
root
ため、認証ストアライブラリが同じUIDを持つ2人のユーザーで混乱しない限り、問題はありません(この場合、BSDはそれを行いませんまたは、ライブラリが修正されます)。
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であるとは限りません。
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