Pourquoi la racine dans la roue et l'opérateur? Le fait d'être root dans un groupe peut-il faire une différence?

18

Je viens de remarquer sur ma machine FreeBSD que root est dans la roue et l'opérateur. J'essaie de penser à une situation où l'UID 0 faisant partie d'un groupe aurait un effet sur ... eh bien ... n'importe quoi, et je suis vide. D'ailleurs, root a-t-il même besoin d'un groupe de connexion principal dans / etc / passwd? Ou est-ce que login (3) s'étouffe et meurt si l'utilisateur a un champ de groupe principal vide?

(Pour clarifier: je comprends le but de l'existence du groupe "racine", car les fichiers ont besoin d'un propriétaire de groupe. Je ne comprends pas à quel point il est important que l'utilisateur root / toor / que ce soit ait cette appartenance au groupe.)

Est-ce juste vicié il y a des décennies, ou y a-t-il une vraie raison à cela?

Bandrami
la source

Réponses:

5

En bref: non. La racine wheelet le operatorgroupe ne changent rien.

Mais vous vous interrogez également sur 2 autres choses:

  • L' ID du groupe racine est (par défaut) défini sur 0, ce qui est le plus proche d'une valeur vide que vous pouvez obtenir.

    $ head -4 /etc/passwd
    # $FreeBSD: releng/9.2/etc/master.passwd 243947 2012-12-06 11:52:31Z rwatson $
    #
    root:*:0:0:Charlie &:/root:/bin/csh
    toor:*:0:0:Bourne-again Superuser:/root:
    

    Comme indiqué, chaque utilisateur doit avoir un groupe, vous ne pouvez donc pas définir l' ID du groupe racine (ni aucun gid utilisateur) sur une valeur vide ou vide. Si vous essayez de définir un gid utilisateur sur vide, vous serez averti par pwd_mkdb:

    pwd_mkdb: no gid for user root
    pwd_mkdb: at line #3
    pwd_mkdb: /etc/pw.Rlb2U3: Inappropriate file type or format
    re-edit the password file?
    

    Ainsi, le fait que root soit défini est davantage lié au fait qu'il soit correctement nommé au lieu d'un simple numéro stupide. Vous pouvez changer le gid racine en n'importe quel nombre sans signification (gid pas dedans /etc/group). Votre utilisateur root pourrait toujours se connecter, suou quoi que root puisse faire d'autre. Vous finirez par avoir quelque chose comme ça:

    $ id
    uid=0(root) gid=10000 groups=10000,5(operator)
    
  • sur la raison pour laquelle certains utilisateurs sont dans le groupe de roues , ce qui est une histoire totalement différente, car FreeBSD , comme OpenBSD ou NetBSD , les utilisateurs doivent faire partie du wheelafin de su rooter .

    De la documentation FreeBSD ( chapitre 9.4 ):

    Pour accéder à root (ou à tout autre compte avec des privilèges de superutilisateur), vous devez être dans le groupe wheel . Si cette fonctionnalité n'était pas là, toute personne possédant un compte sur un système qui aurait également découvert le mot de passe de root serait en mesure d'accéder au niveau superutilisateur du système. Avec cette fonctionnalité, ce n'est pas strictement vrai; su (1) les empêchera même d'essayer d'entrer le mot de passe s'ils ne sont pas dans la roue .

    Mais vous avez raison, retirer l' utilisateur root de la roue ne changerait rien. Ceci est purement formel, dans la mesure où l' utilisateur toor ne fait pas partie de wheel ou root fait partie du groupe d' opérateurs .

  • Le groupe d'opérateurs est cependant purement formel, sans signification particulière en soi.

Voici également ce que Richard Stallman pense du groupe de roues (extrait de gnu su manual ):

Pourquoi GNU "su" ne prend pas en charge le groupe `wheel '====================================== ==========

(Cette section est de Richard Stallman.)

Parfois, quelques-uns des utilisateurs essaient de détenir le pouvoir total sur tout le reste. Par exemple, en 1984, quelques utilisateurs du laboratoire d'IA du MIT ont décidé de prendre le pouvoir en modifiant le mot de passe de l'opérateur sur le système Twenex et en le gardant secret pour tout le monde. (J'ai pu déjouer ce coup et redonner du pouvoir aux utilisateurs en corrigeant le noyau, mais je ne saurais pas comment faire cela sous Unix.)

Cependant, de temps en temps, les dirigeants le disent à quelqu'un. Dans le cadre du mécanisme habituel "su", une fois que quelqu'un a appris le mot de passe root et sympathise avec les utilisateurs ordinaires, il peut dire le reste. La fonction "groupe de roues" rendrait cela impossible et cimenterait ainsi la puissance des règles.

Je suis du côté des masses, pas de celui des dirigeants. Si vous avez l'habitude de soutenir les patrons et les administrateurs système dans tout ce qu'ils font, vous pourriez trouver cette idée étrange au début.

Ouki
la source
1

login (3) et d'autres attendent le groupe principal. Ils en ont besoin pour pouvoir définir des champs valides dans les fichiers utmp / wtmp. Et même s'ils ne l'ont pas (format de fichier modifié), vous rencontrerez un problème plus fondamental lorsque login (1) ou sshd (8) ou d'autres programmes tentent de configurer la session utilisateur - quel que soit utmp / wtmp dont ils ont besoin pour remplir les deux Propriétés de processus du noyau UID et GID (comme les fichiers créés par l'utilisateur connecté doivent avoir l'UID et le GID remplis, comme vous le remarquez).

Quant à la question de savoir pourquoi tout-puissant-root a besoin de plus que le groupe principal, il ne le fait pas pour les vérifications d'autorisation (car ils sont ignorés pour l'UID 0), mais il le fait pour d'autres utilisations.

le groupe "wheel" en particulier est utilisé pour plusieurs vérifications d'authentification supplémentaires comme par exemple pam_wheel

D'autres groupes comme "opérateur" peuvent être utilisés pour les fonctions de sécurité (par exemple, certains processus exécutés par root peuvent définir un utilisateur (2) non privilégié (comme "personne"), tout en conservant ses appartenances GROUP (comme "opérateur"). Cela permettrait à un tel processus de continuer à accéder aux fichiers appartenant à ce groupe, tout en réduisant considérablement les problèmes de sécurité liés à l'exécution avec un accès UID 0 complet.

Je ne sais pas s'il existe des programmes utilisant cette fonctionnalité dans votre système (ou si FreeBSD CURRENT par défaut)

Matija Nalis
la source
0

Cela peut faire une différence - dès qu'un programme vérifie l'appartenance à un groupe et se comporte différemment selon le résultat. Bien sûr, il n'y a aucune différence dans les privilèges que l'utilisateur root peut forcer .

rackandboneman
la source
0

N'est-ce pas que si personne n'est membre du groupe wheel, alors wheel est simplement ignoré et tous les utilisateurs peuvent exécuter su ... et potentiellement deviner le mot de passe. En ayant au moins un ID utilisateur membre de la roue de groupe (c'est-à-dire la racine de l'ID utilisateur), les commandes de la roue sont vérifiées et seuls les autres membres de la roue de groupe peuvent tenter d'exécuter su.

Rufwoof
la source