実際には 2 つの部分があります
<ブロック引用>スーパーユーザー アカウントは、Linux で常に uid/gid 0/0 を持っていますか?
はい Rich Homolka がコメントで指摘しているように、root ユーザーを確認する必要がある場合に明示的に uid 0 を確認するコードがカーネルにあり、これは root が常に少なくとも uid を持っていることを意味します。 0.
<ブロック引用>
uid 0 のユーザー アカウントの名前は常に root
です ?
いいえ root
/etc/passwd またはその他の認証ストアにリストされている単なる名前です。アカウント admin
を呼び出すこともできます 、OS 自体は気にしませんが、root
という名前の特権アカウントが存在することを期待するため、一部のアプリケーションはそれを好まない可能性があります。 . *nix root
で uid 0 アカウントを呼び出す は非常に強力な慣例ですが、システムでは必要ありません (ただし、システム管理ユーティリティを含む特定のユーザーランド ソフトウェアでは必要な場合があります)。
また、Simon Richter が指摘したように、BSD では秒 uid 0 アカウント、慣例により toor
という名前 (これは逆向きに綴られた「ルート」であり、字句的には 後 root
アルファベット順にソートされたリストで)。たとえば、FreeBSD はそれを使用して root ユーザーにカスタマイズされたシェル設定を提供し、root ユーザーにはシステムのルート パーティションに存在することが保証されているデフォルト シェルを残します (回復目的に役立ちます)。
1) 管理者は常に uid ==0 です。これはカーネルでコーディングされています。これを変更するには、カーネルでコーディングが必要です。これにはあまり意味がないので、行われていません。たとえば、同じ NFS を共有する他の UNIX とは一貫性がありません。
2) uid 0 は、必ずしもルートにマップされるとは限りません。最良の例は FreeBSD です。 2 つの uid ==0 アカウントがあり、違いはシェルです。 root にはシェル /bin/sh があります。これは単純なシェルであり、ディスクが不良で fsck /usr が必要な場合に役立ちます。 toor は tcsh を使用します。tcsh には履歴などがあるため、緊急でない状況ではより便利です。
別の、より個人的な例です。私が持っていた仕事の 1 つは、彼らが NIS を介してルートと同等の (つまり、uid=0) アカウントを持っていた場所でした。パスワード、ブランク!新しいシステム管理者がマシンの root パスワードを思い出せなかったからです。私がこれについて大声で叫んだのには、明らかな理由があります (NIS パスワードは定義上、空白を隠すことはできません)。このアカウントには満足できませんでした。
uid 0 を与えるのは実際にはシステムではなく、root です。それはあなたです。 passwd ファイルまたはその他の名前付けディレクトリ (NIS、ldap) を使用してこれを変更しますが、コンパイルされていません。ただし、/etc/passwd には少なくとも 1 つの uid 0 アカウントが必要ですが、本当に必要なときにネットワークがない可能性があるためです。 .
したがって、root は常に uid 0 ですが、uid 0 が常に root であるとは限りません。
nonStop サーバーを使用するシステムの場合、ROOT_UID は 0 ではなく 65535 です。
OSS ユーザーとグループ OSS 環境では、サイト管理者が明示的に作成しない限り、共通の UNIX デフォルト ユーザー名とユーザー ID は提供されません。ただし、同等の OSS ユーザー名とユーザー ID は存在します。たとえば、UNIX ユーザー名 root とユーザー ID 0 に通常関連付けられている特権は、65535 (スーパー ID) の OSS ユーザー ID (UID) (ユーザー SUPER.SUPER とそのエイリアス) に対して存在します。
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