GNU/Linux >> Tutoriels Linux >  >> Linux

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

Il y a en fait deux parties à votre question.

Le compte superutilisateur a-t-il toujours uid/gid 0/0 sous Linux ?

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

Est-ce que le nom du compte utilisateur avec uid 0 est toujours root ?

Non. root est juste un nom, répertorié dans /etc/passwd ou 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'aimer car elles s'attendent à ce qu'il existe un compte privilégié nommé root . Appel du compte uid 0 sur un *nix root est une convention très forte, mais elle n'est pas requise par le système (bien qu'elle puisse être requise par certains logiciels utilisateur, y compris éventuellement des utilitaires d'administration système).

Il est également intéressant de noter que, comme l'a souligné Simon Richter, sur les BSD, il existe souvent une seconde compte uid 0, par convention nommé toor (qui est "racine" épelé à l'envers, et vient aussi lexicalement après root dans une liste triée par ordre alphabétique). Par exemple, FreeBSD l'utilise pour fournir à un 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 root du système (utile à des fins de récupération).


1) l'administrateur est toujours uid ==0. Ceci est codé dans le noyau. Il faudrait un peu de codage dans le noyau pour changer cela. Il n'y a pas grand intérêt à cela, donc ce n'est pas fait. Par exemple, ce serait incohérent pour d'autres unix partageant le même NFS par exemple.

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

Un autre exemple plus personnel; un travail que j'avais où ils avaient un compte root equiv (c'est-à-dire 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 machines. J'ai crié à ce sujet pour des raisons évidentes (les mots de passe NIS, par définition, ne peuvent pas cacher leur caractère vierge). Je n'étais pas satisfait de ce compte.

Et ce n'est vraiment pas le système qui donne à uid 0 la racine, c'est vous. Vous modifiez cela en utilisant des fichiers passwd ou d'autres répertoires de nommage (NIS, ldap) mais il n'est pas compilé. Bien que vous devriez avoir au moins un compte uid 0 dans /etc/passwd, car vous n'avez peut-être pas de réseau quand vous en avez vraiment besoin .

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


Eh bien, pour les systèmes qui utilisent le serveur nonStop, 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 UNIX communs par défaut, sauf s'ils sont explicitement créés par un administrateur de site. Cependant, des noms d'utilisateur et des ID 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) 65535 (le super ID), qui est 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

Linux
  1. 4 façons de désactiver le compte racine sous Linux

  2. Que signifie l'attribut "s" dans les autorisations de fichiers ? ?

  3. La fonction de la racine du groupe d'utilisateurs ? ?

  4. Comment (correctement) changer l'UID et le GID d'un utilisateur/groupe sous Linux

  5. Comment un noyau monte-t-il la partition racine ?

Méthodes pour désactiver le compte root sous Linux

Comment désactiver la connexion SSH pour l'utilisateur root sous Linux ?

Toujours lancer le terminal en tant qu'utilisateur root (sudo) dans Ubuntu

Comment changer le mot de passe du compte racine du VPS Linux

L'utilisateur unique d'un système *nix doit-il avoir deux comptes ?

Déconnecter un utilisateur et supprimer le compte