web-dev-qa-db-ja.com

rootアカウントは常にUID / GID 0を持っていますか?

私が管理しているすべてのLinuxシステムでは、rootアカウントのGIDとUIDは0です。これは保証されているのでしょうか、それともシステムがrootに別のIDを与えるのでしょうか?

45
Tanaki

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

Linuxでは、スーパーユーザーアカウントは常にuid/gid 0/0を持っていますか?

はい。Rich Homolka で指摘されているように、 a comment 、rootユーザーをチェックする必要があるときに明示的にuid 0をチェックするカーネル内のコードがあります。これはrootが少なくとも uid 0を持つことを意味します。

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

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

Simon Richter で指摘されているように、BSDにはtoorという命名法で second uid 0アカウントが存在することもしばしばあります。 (これは後方に綴られた「ルート」であり、アルファベット順にソートされたリストでは字句的に の後 rootになります)。例えば、 FreeBSDはrootユーザにデフォルトのShell を残してカスタマイズされたShell設定をrootユーザに提供するためにそれを使います。システムのルートパーティション(リカバリ目的に便利).

74
a CVn

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

2)uid 0は必ずしもrootに対応しません。最も良い例はFreeBSDです。それは2つのuid == 0アカウントを持ち、違いはシェルです。 rootにはShell/bin/shがあります。これは単純なシェルで、ディスクが不良でfsck/usrが必要な場合に役立ちます。 toorはtcshを使いますが、これは歴史のようなものを持っているので、緊急ではない状況ではもっと便利です。

もう一つのもっと個人的な例。私が持っていた仕事の1つでは、NISを介してルート等価(つまりuid = 0)アカウントを持っていました。パスワード、空白!新しいsysadminはマシンのrootパスワードを思い出せないからです。私は明白な理由でこれについて叫んだ(定義上NISパスワードはそれらの空白を隠すことができない)。私はこのアカウントに満足していませんでした。

そしてそれは実際にはuid 0を与えるシステムがrootではない、それはあなたです。あなたはこれをpasswdファイルや他のネーミングディレクトリ(NIS、ldap)を使って変更しますが、コンパイルされていません。/ etc/passwdに少なくとも1つのuid 0アカウントがあるはずです。

そのため、rootは常にuid 0ですが、uid 0は必ずしもrootである必要はありません。

15
Rich Homolka

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

OSSユーザーとグループOSS環境では、サイト管理者が明示的に作成しない限り、一般的なUNIXのデフォルトのユーザー名とユーザーIDは提供されません。ただし、同等のOSSユーザー名とユーザーIDが存在します。たとえば、UNIXのユーザー名rootおよびユーザー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
1
Nuxwin