¿Por qué está la raíz en la rueda y el operador? ¿Puede la raíz estar en un grupo hacer alguna diferencia?

18

Acabo de notar en mi máquina FreeBSD que la raíz está en la rueda y el operador. Estoy tratando de pensar en una situación en la que UID 0 estar en un grupo tendría algún efecto en ... bueno ... cualquier cosa, y estoy en blanco. Para el caso, ¿la raíz incluso necesita un grupo de inicio de sesión primario en / etc / passwd? ¿O se bloquea y muere login (3) si el usuario tiene un campo de grupo primario en blanco?

(Para aclarar: entiendo el propósito de la existencia del grupo "raíz", ya que los archivos necesitan un propietario del grupo. No entiendo cómo importa que el usuario root / toor / lo que sea que tenga esa pertenencia al grupo).

¿Es esto simplemente ruft de hace décadas, o hay una razón real para ello?

Bandrami
fuente

Respuestas:

5

En resumen: no. Tener root wheely operatorgroup no cambia nada.

Pero también estás cuestionando otras 2 cosas:

  • La identificación del grupo raíz está (por defecto) establecida en 0, que es lo más parecido a un valor vacío que puede obtener.

    $ 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:
    

    Como se dijo, cada usuario debe tener un grupo, por lo que no puede establecer la identificación del grupo raíz (ni ningún gid de usuario) en un valor vacío o en blanco. Si intenta establecer un gid de usuario en blanco, se lo advertirá 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?
    

    Entonces, el hecho de que la raíz esté definida se trata más de tener un nombre apropiado en lugar de solo un número tonto. Puede cambiar el gid raíz a cualquier número sin sentido (gid no dentro /etc/group). Su usuario root aún podría iniciar sesión, suo cualquier otra cosa que root pueda hacer. Acabarás teniendo algo así:

    $ id
    uid=0(root) gid=10000 groups=10000,5(operator)
    
  • sobre por qué algunos usuarios están en el grupo de la rueda que es una historia totalmente diferente, ya que FreeBSD , como OpenBSD o NetBSD , los usuarios tienen que ser parte del wheelpara poder su rootear .

    De la documentación de FreeBSD ( capítulo 9.4 ):

    Para Do a la raíz (o cualquier otra cuenta con privilegios de superusuario), usted debe estar en la rueda de grupo. Si esta función no estuviera allí, cualquier persona con una cuenta en un sistema que también descubriera la contraseña de root podría obtener acceso de nivel de superusuario al sistema. Con esta característica, esto no es estrictamente cierto; su (1) evitará que incluso intenten ingresar la contraseña si no están en la rueda .

    Pero tiene razón, eliminar al usuario root de la rueda no cambiaría las cosas. Esto es puramente formal, tanto como el usuario toor no es parte de la rueda o la raíz es parte del grupo de operadores .

  • Sin embargo, el grupo de operadores es puramente formal, sin ningún significado especial en sí mismo.

Esto también es lo que Richard Stallman piensa sobre el grupo de ruedas (del manual de gnu su ):

Por qué GNU "su" no es compatible con el grupo `wheel '===================================== ==========

(Esta sección es de Richard Stallman).

A veces, algunos de los usuarios intentan mantener el poder total sobre el resto. Por ejemplo, en 1984, algunos usuarios en el laboratorio MIT AI decidieron tomar el poder cambiando la contraseña del operador en el sistema Twenex y manteniéndola en secreto de todos los demás. (Pude frustrar este golpe y devolver el poder a los usuarios parcheando el núcleo, pero no sabría cómo hacerlo en Unix).

Sin embargo, ocasionalmente los gobernantes le dicen a alguien. Bajo el mecanismo habitual "su", una vez que alguien aprende la contraseña de root que simpatiza con los usuarios comunes, puede decirle al resto. La característica de "grupo de ruedas" haría esto imposible, y así consolidaría el poder de los gobernantes.

Estoy del lado de las masas, no de los gobernantes. Si estás acostumbrado a apoyar a los jefes y administradores de sistemas en lo que sea que hagan, es posible que esta idea te resulte extraña al principio.

Ouki
fuente
1

login (3) y otros esperan grupo primario. Lo necesitan para poder establecer campos válidos en los archivos utmp / wtmp. E incluso si no lo hicieran (cambio de formato de archivo), se encontraría con un problema más fundamental cuando login (1) o sshd (8) u otros programas intenten configurar la sesión del usuario, independientemente de utmp / wtmp, necesitan completar ambos Propiedades de proceso de kernel UID y GID (como los archivos creados por el usuario conectado deben tener UID y GID rellenados, como notará).

En cuanto al problema de por qué la raíz todopoderosa necesita más que el grupo primario, no es necesario para verificaciones de permisos (ya que se omiten para UID 0), pero sí para otros usos.

El grupo "rueda" se utiliza especialmente para varias comprobaciones de autenticación adicionales como, por ejemplo, pam_wheel

Otros grupos, como "operador", pueden usarse para funciones de seguridad (por ejemplo, algunos procesos cuando se ejecutan desde la raíz pueden establecer setuid (2) como USUARIO sin privilegios (como "nadie"), mientras conservan sus membresías de GRUPO (como "operador"). Permitiría que dicho proceso continúe accediendo a los archivos propiedad de ese grupo, al tiempo que reduce significativamente los problemas de seguridad de ejecutar con acceso UID 0 completo.

No estoy seguro de si hay programas que hacen uso de esta función en su sistema (o si el valor predeterminado es FreeBSD CURRENT)

Matija Nalis
fuente
0

Puede marcar la diferencia, tan pronto como cualquier programa verifique la membresía del grupo y se comporte de manera diferente según el resultado. Por supuesto, no hay diferencia en los privilegios que el usuario root puede forzar .

rackandboneman
fuente
0

¿No es que si nadie es miembro de la rueda de grupo, simplemente se ignora la rueda y todos los usuarios pueden ejecutar su ... y potencialmente adivinar la contraseña? Al tener al menos un ID de usuario como miembro de la rueda de grupo (es decir, la raíz del ID de usuario), se controlan los controles de rueda y solo otros miembros de la rueda de grupo pueden intentar ejecutar su.

Rufwoof
fuente