¿Cómo permite usermod omitir sudo?

¿Cómo permite usermod omitir sudo?

Mi equipo tuvo un show-n-tell recientemente y presenté mis hallazgos sobreEstibador. Te expliqué cómo puedes instalar Docker con:

curl -sSL https://get.docker.com/ | sh

Luego le expliqué que, con esta instalación, debe anteponer a todos los comandos de Docker sudo(por ejemplo sudo docker info), a menos que ejecute:

sudo usermod -aG docker myUser

Una vez que hagas esto, puedes simplemente ejecutar, digamos, docker info.

Otro ingeniero junior me preguntó cómo usermodfuncionaba este comando y se lo expliqué tal como entiendo a los usuarios/grupos de Linux:

  • Todos los binarios de Docker están instalados en el sistema y pertenecen a un grupo llamadodocker
  • Dado que myUserno es miembro de forma predeterminada docker, no tiene permisos rwx para hacer nada con los archivos binarios de Docker.
  • Entonces, la solución es usar lo sudoque le otorga permiso de root para el comando dado o otorgar myUsermembresía al dockergrupo .

Cuando lo expliqué de esta manera, un ingeniero superior me dijo muy bruscamente que estaba equivocado y que "es un poco más complicado que eso."

Entonces pregunto: ¿estoy entendiendo mal el modelo de seguridad de Linux? ¿Tiene razón el ingeniero senior? Si es así, ¿qué me estoy perdiendo (y qué diablos es "tan complicado")? ¿O estoy en lo cierto, en cuyo caso, alguien puede indicarme alguna documentación sólida para probarlo?

Respuesta1

Todos los binarios de Docker están instalados en el sistema y pertenecen a un grupo llamado Docker.

Incorrecto. El dockerbinario es propiedad de root:root:

$ stat `which docker`
  File: ‘/usr/bin/docker’
  Size: 16296881    Blocks: 31832      IO Block: 4096   regular file
Device: fc00h/64512d    Inode: 143202      Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Dado que myUser no es miembro predeterminado de Docker, no tiene permisos rwx para hacer nada con los archivos binarios de Docker.

Los binarios son legibles y ejecutables por todos.

Entonces, la solución es usar sudo, que le otorga permiso de root para el comando dado, o otorgarle membresía a myUser en el grupo acoplable.

El servicio Docker utiliza un socket para escuchar comandos. El enchufe suele ser:

  • situado en/var/run/docker.sock
  • propiedad deroot:docker
  • y escribible en grupo, pero no legible ni escrito por otros:

Por ejemplo:

$ stat /var/run/docker.sock
  File: ‘/var/run/docker.sock’
  Size: 0           Blocks: 0          IO Block: 4096   socket
Device: 10h/16d Inode: 13619       Links: 1
Access: (0660/srw-rw----)  Uid: (    0/    root)   Gid: (  997/  docker)

EsoEs por eso que ser miembro del dockergrupo te permite ejecutar dockercomandos.

Tenga en cuenta que puede especificar qué grupo se debe utilizar como parámetro del dockerservicio. De man docker:

   -G, --group=""
 Group  to assign the unix socket specified by -H when running in dae‐
   mon mode.
 use '' (the empty string) to disable setting of a group.  Default  is
   docker.

Entonces, notenerser docker, pero lo es dockerpor defecto.

Respuesta2

Si estás hablando de qué tan seguro es Linux y la vulnerabilidad que puede tener, sí. Si entiendo lo que estás preguntando con suficiente claridad, la respuesta es sí y mi explicación es que Linux, independientemente de la distribución que yo sepa, puede contraer virus como cualquier otro sistema operativo dependiendo de lo que instales o no. Tome Flash Player como ejemplo, incluso en Windows, presenta muchas fallas de seguridad en el sistema operativo, lo que lo hace más vulnerable que antes, cuando recién estaba listo para usar.

Si ejecutara Linux sin escritorio y todos esos otros privilegios sofisticados, si no me equivoco, sería más seguro que con todas nuestras aplicaciones favoritas y demás. No sé si mi respuesta ayudó, pero espero que así sea.

información relacionada