Todo lo importante que necesita saber sobre UID en Linux

¿Cómo estais? me llamo Fran. Os traigo un nuevo post sobre el sistema operativo mas molón. Encantado linuxeros.

¿Qué es UID en Linux?

UID significa ID de usuario. El UID es un número asignado a cada usuario de Linux. Esta es la presentación del usuario en Kernel de Linux. El UID se utiliza para identificar al usuario en el sistema y para determinar a qué recursos del sistema tiene acceso el usuario. Por lo tanto, la identificación de usuario debe ser única.

Puede encontrar el UID almacenado en el archivo / etc / passwd. Este es el mismo archivo que se puede usar para listar todos los usuarios en un sistema Linux.

Utilice el comando de Linux para ver un archivo de texto y verá diversa información sobre los usuarios presentes en su sistema.

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
johndoe:x:1000:1000:John Doe,,,:/home/helder:/bin/bash
davmail:x:127:65534::/var/lib/davmail:/usr/sbin/nologin
statd:x:128:65534::/var/lib/nfs:/usr/sbin/nologin

El tercer campo aquí representa el ID de usuario o UID.

UID y GID en el archivo / etc / passwd en Linux

Tenga en cuenta que en la mayoría de las distribuciones de Linux, los UID 1-500 suelen estar reservados para los usuarios del sistema. El UID de Ubuntu y Fedora para nuevos usuarios comienza en 1000.

Por ejemplo, si usa el comando adduser o useradd para crear un nuevo usuario, recibirá el siguiente número disponible después de 1000 como su UID.

En Linux, UID 0 y GID 0 están reservados para el usuario root.

¿Cómo encuentro un UID de usuario en Linux?

Siempre puede confiar en el archivo / etc / passwd para obtener un UID de usuario. Esta no es la única forma de obtener información de UID en Linux.

El comando id de Linux mostrará el UID, GID y los grupos a los que pertenece su usuario actual:

id
uid=1000(abhishek) gid=1000(abhishek) groups=1000(abhishek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),127(kvm)

También puede especificar nombres de usuario con el comando id para obtener el UID de cada usuario de Linux:

id standard
uid=1001(standard) gid=1001(standard) groups=1001(standard)

¿Cómo cambio el UID de un usuario en Linux?

Suponga que tiene varios usuarios en su sistema Linux. Tuviste que eliminar un usuario porque abandonó la organización. Ahora desea que otro usuario que ya está en el sistema tome su UID.

Puede cambiar el UID cambiando el usuario usando el comando usermod de la siguiente manera:

usermod -u 1004 user_2

Debe tener privilegios de superusuario para ejecutar el comando anterior.

¿Recuerda el concepto de permiso y propiedad de archivos en Linux? La propiedad del archivo está determinada por el UID del propietario del usuario.

Cuando actualiza el UID de un usuario, ¿qué sucede con los archivos propiedad de ese usuario? Si bien todos los archivos en el directorio de inicio de user_2 cambiarán el UID asociado, deberá actualizar manualmente el UID asociado a otros archivos fuera del directorio de inicio.

Lo que puede hacer es actualizar manualmente la propiedad de los archivos asociados con el antiguo UID user_2.

find / -user old_uid_of_user_2 -exec chown -h user_2  ;

¿Cómo se conecta el UID a los diferentes recursos del sistema? [for advanced users]

Los UID son únicos entre sí y, por lo tanto, también se pueden usar para identificar la propiedad de varios recursos del sistema, como archivos y procesos.

UID y archivos

Espero que esté familiarizado con el concepto de resolución de archivos en Linux. Cuando crea un archivo, es el propietario de ese archivo. Ahora puede decidir quién hace qué con este archivo. Esto es parte del mecanismo DAC de Linux, donde cada archivo se deja a discreción del propietario.

Puede leer la propiedad del archivo usando el comando ls o stat. Hagámoslo con el popular comando ls y verifiquemos la propiedad del binario sleep o passwd.

Como puede ver, el archivo / usr / bin / sleep pertenece a root:

ls -l $(which sleep)
-rwxr-xr-x 1 root root 39048 Mar  6  2020 /usr/bin/sleep

Forcémoslo a mapear la propiedad con un UID en lugar de un nombre de usuario:

ls -lhn $(which sleep)
-rwxr-xr-x 1 0 0 39K Mar  6  2020 /usr/bin/sleep

Aquí tienes información divertida. Su sistema operativo no comprende los «nombres de usuario». Cuando un programa necesita trabajar con o imprimir nombres de usuario, se refiere a /etc/passwd archivo para extraer la información.

No tienes que creer en mi palabra. Compruébelo usted mismo con el programa strace, que imprime todas las llamadas al sistema realizadas por un programa.

strace ls -lhn $(which sleep) 2>&1 | grep passwd

Lo que intentas ver es si ls comando tratando de leer /etc/passwd archivo o no.

strace ls -lh $(which sleep) 2>&1 | grep passwd
openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 6

Hasta aquí todo bien.

UID y procesos

Los procesos tienen propietarios como los archivos. Solo el propietario (o usuario principal) de un proceso puede enviar alertas de proceso. Aquí es donde entra en juego el UID.

Si un usuario normal intenta matar un proceso propiedad de otro usuario, esto resultará en un error:

kill 3708
bash: kill: (3708) - Operation not permitted

Esto solo puede hacerlo el propietario del proceso o la raíz.

El proceso debe estar regulado. Regulado según sea necesario, debe tener una forma de limitar o saber cuánto se permite un proceso. Esto está determinado por su (s) UID (s).

Hay tres tipos de UID asociados con un proceso.

UID real: El UID real es el UID que el proceso acepta de su padre. En palabras más simples, quién inicia un proceso, el UID de ese usuario es el UID real del proceso. Esto es útil para identificar a quién pertenece realmente el proceso. Esto es esencial, especialmente cuando el UID efectivo no es el mismo que el UID real del que hablaré más adelante.

UID efectivo: Esto es lo que determina principalmente qué permisos tiene realmente un proceso en particular. Si bien el usuario puede iniciar el proceso, puede trabajar con diferentes permisos de usuario. El equipo passwd es un ejemplo de esto. Este programa edita el archivo /etc/shadow, cual es root poseído. Por lo tanto, un usuario normal no debería poder ejecutar este comando o cambiar su contraseña. Afortunadamente, el binario se ejecuta con un UID efectivo de 0 (es decir, root), lo que le permite tener suficientes privilegios para editar el /etc/shadow expediente. Los UID reales y efectivos son en su mayoría los mismos, excepto por los bits con el bit SUID activado.

UID guardado: UID que está disponible para el proceso. Esto no se suele utilizar, pero sigue estando ahí en caso de que el proceso sepa que no realizará ningún trabajo privilegiado, por lo que puede cambiar su UID efectivo a algo que no sea privilegiado. Esto reduce la superficie de comportamiento involuntario.

Eso es todo. Espero que ahora tenga una mejor idea del UID en Linux. No dude en hacer sus preguntas, si las hay.

Como usuario profesional de Linux, si cree que me he perdido algún concepto importante de UID, hágamelo saber en la sección de comentarios.

Este Blog lo escribimos para ayudar y servir de referencia a la comunidad Linux. Esperamos que os guste.

Leave a Reply