web-dev-qa-db-fra.com

Le compte root a-t-il toujours UID/GID 0?

Sur tous les systèmes Linux que j'ai gérés, le compte root a un GID et un UID de 0. Est-ce garanti, ou est-il possible que le système attribue à la racine un ID différent?

45
Tanaki

Il y a en fait deux parties à votre question.

Est-ce que le compte superutilisateur a toujours uid/gid 0/0 sous Linux?

Oui. Comme le souligne Rich Homolka dans un commentaire , il existe dans le noyau un code qui vérifie explicitement l'ID 0 lorsqu'il faut vérifier l'utilisateur root, ce qui signifie que root a toujours au moins uid 0.

Le nom du compte d'utilisateur avec l'ID utilisateur 0 est-il toujours root?

Non. root est simplement un nom, répertorié dans/etc/passwd ou dans un autre magasin d'authentification. Vous pouvez tout aussi bien appeler le compte admin et le système d'exploitation lui-même ne s'en souciera pas, mais certaines applications pourraient ne pas l'apprécier car elles s'attendent à ce qu'il existe un compte privilégié nommé root. L'appel du compte uid 0 sur une * nix root est une convention très stricte, mais elle n'est pas requise par le système (bien que cela puisse être requis par certains logiciels utilisateur, éventuellement avec des utilitaires d'administration système).

Comme il a été souligné par Simon Richter , il est également intéressant de noter que, sur les BSD, il existe souvent un compte second uid 0, par convention nommé toor (qui est "root" orthographié à l'envers, et également lexicalement. vient aprèsroot dans une liste classée par ordre alphabétique). Par exemple, FreeBSD l'utilise pour fournir à l'utilisateur root un paramètre de shell personnalisé, laissant à l'utilisateur root un shell par défaut dont l'existence est garantie sur la partition racine du système (utile pour les besoins de la récupération).

74
a CVn

1) l'administrateur est toujours uid == 0. Ceci est codé dans le noyau. Il faudrait un peu de code dans le noyau pour changer cela. Cela n'a pas beaucoup de sens, donc ce n'est pas fait. Par exemple, il serait incohérent pour d'autres unix partageant le même NFS, par exemple.

2) UID 0 ne mappe pas nécessairement à la racine. Le meilleur exemple est FreeBSD. Il a deux uid == 0 comptes, la différence étant le shell. root a Shell/bin/sh, qui est un simple Shell, utile lorsque vos disques sont défectueux et que vous avez besoin de fsck/usr. toor utilise tcsh, ce qui est beaucoup plus utile dans des situations non urgentes, car il contient des éléments tels que l'historique, etc.

Un autre exemple, plus personnel; un de mes emplois où ils avaient un compte équivalent (c.-à-d. uid = 0) sur NIS. Le mot de passe, vide! Parce que le nouvel administrateur système ne pouvait pas se souvenir du mot de passe root sur les ordinateurs. J'ai crié à ce sujet pour des raisons évidentes (les mots de passe NIS, par définition, ne peuvent pas cacher leur espace). Je n'étais pas content de ce compte.

Et ce n'est pas vraiment le système qui donne l'identifiant 0, c'est la racine, c'est vous. Vous changez cela en utilisant des fichiers passwd ou d'autres répertoires de nommage (NIS, ldap) mais ils ne sont pas compilés. Bien que vous deviez avoir au moins un compte uid 0 dans/etc/passwd, car vous pourriez ne pas avoir de réseau lorsque vous en avez vraiment besoin .

Donc, root est toujours uid 0, mais uid 0 n'est pas nécessairement root.

15
Rich Homolka

Bien pour les systèmes qui utilisent le serveur non-Stop, ROOT_UID n'est pas 0 mais 65535.

Utilisateurs et groupes OSS L'environnement OSS ne fournit pas de noms d'utilisateur et d'ID utilisateur par défaut communs à UNIX, à moins qu'ils ne soient explicitement créés par un administrateur de site. Cependant, des noms d'utilisateur et des identifiants d'utilisateur OSS équivalents existent. Par exemple, les privilèges normalement associés au nom d'utilisateur UNIX root et à l'ID utilisateur 0 existent pour l'ID utilisateur OSS (UID) de 65535 (super ID), qui correspond à l'utilisateur SUPER.SUPER et à ses alias.

Voir https://h20195.www2.hpe.com/V2/GetPDF.aspx/4AA4-6316ENW.pdf

Dans coreutils, vous pouvez trouver ce fichier d'en-tête 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