Comprender los Conceptos de Usuarios y Grupos
En este paso, aprenderás sobre los conceptos fundamentales de usuarios y grupos en Red Hat Enterprise Linux (RHEL) y cómo usar varios comandos para inspeccionar la información de usuarios y grupos. Comprender estos conceptos es crucial para gestionar los permisos y el control de acceso en un sistema Linux.
Cada archivo y proceso en un sistema Linux está asociado con un usuario y un grupo. Esta asociación determina quién puede leer, escribir o ejecutar archivos, y quién puede gestionar procesos.
Primero, exploremos cómo identificar al usuario actual y a otros usuarios en el sistema usando el comando id.
-
Usa el comando id para mostrar información sobre el usuario actualmente conectado. Este comando muestra el ID de usuario (UID), el ID de grupo principal (GID) y todos los grupos a los que pertenece el usuario.
id
Deberías ver una salida similar a esta, indicando la información de tu usuario labex:
uid=1000(labex) gid=1000(labex) groups=1000(labex),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
-
Para ver información básica sobre otro usuario, como el usuario root, pasa el nombre de usuario al comando id como argumento.
id root
La salida mostrará el UID (0), GID (0) y grupos del usuario root:
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
A continuación, aprenderás a identificar el propietario de archivos y directorios usando el comando ls.
-
Usa el comando ls -l para ver el propietario de un archivo. Primero, crea un archivo ficticio en tu directorio ~/project.
touch ~/project/mytextfile.txt
ls -l ~/project/mytextfile.txt
La salida mostrará labex como el usuario y el propietario del grupo de mytextfile.txt:
-rw-r--r-- 1 labex labex 0 Feb 5 11:10 /home/labex/project/mytextfile.txt
-
Usa el comando ls -ld para ver el propietario de un directorio, en lugar del contenido de ese directorio. En la siguiente salida, la tercera columna muestra el nombre de usuario y la cuarta columna muestra el nombre del grupo.
ls -ld ~/project
Verás labex como el propietario de tu directorio ~/project:
drwxr-xr-x 2 labex labex 6 Feb 5 11:10 /home/labex/project
Ahora, examinemos cómo ver la información del proceso y el usuario asociado con cada proceso usando el comando ps.
-
Usa el comando ps -au para ver los procesos. La opción a muestra todos los procesos con un terminal, y la opción u muestra el usuario que está asociado con un proceso. En la siguiente salida, la primera columna muestra el nombre de usuario.
ps -au
Verás varios procesos, con labex y root como usuarios comunes:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 10608 3808 ? Ss 00:00 0:00 /sbin/init
root 42 0.0 0.0 10608 3808 ? Ss 00:00 0:00 /sbin/init
labex 123 0.0 0.1 224152 5756 pts/0 Ss 00:00 0:00 -bash
labex 150 0.0 0.0 225556 3652 pts/0 R+ 00:00 0:00 ps -au
Finalmente, explorarás los archivos /etc/passwd y /etc/group, que almacenan información de usuarios y grupos, respectivamente. Estos archivos son críticos para comprender cómo se definen las cuentas de usuario y grupo en un sistema Linux.
-
Cada línea en el archivo /etc/passwd contiene información sobre un usuario. El archivo se divide en siete campos separados por dos puntos. Usa cat para ver su contenido.
cat /etc/passwd
Localiza la entrada para labex y root. Para labex, debería verse similar a esto:
labex:x:1000:1000:LabEx User:/home/labex:/bin/bash
Desglosemos cada campo:
labex: El nombre de usuario para este usuario.
x: La contraseña encriptada del usuario se almacenaba históricamente aquí; esto ahora es un marcador de posición, ya que las contraseñas se almacenan en /etc/shadow por seguridad.
1000: El número UID para esta cuenta de usuario.
1000: El número GID para el grupo principal de esta cuenta de usuario.
LabEx User: Un breve comentario, descripción o el nombre real de este usuario.
/home/labex: El directorio de inicio del usuario y el directorio de trabajo inicial cuando se inicia el shell de inicio de sesión.
/bin/bash: El programa de shell predeterminado para este usuario que se ejecuta al iniciar sesión.
-
Cada línea en el archivo /etc/group contiene información sobre un grupo. Cada entrada de grupo se divide en cuatro campos separados por dos puntos. Usa cat para ver su contenido.
cat /etc/group
Verás entradas para varios grupos del sistema y grupos privados de usuarios. Por ejemplo, la entrada del grupo labex podría verse así:
labex:x:1000:
Desglosemos cada campo:
labex: Nombre de este grupo.
x: Campo de contraseña de grupo obsoleto; esto ahora es un marcador de posición.
1000: El número GID para este grupo.
- (vacío): Una lista de usuarios que son miembros de este grupo como un grupo secundario. Si este campo está vacío, significa que no hay usuarios adicionales listados explícitamente como miembros secundarios de este grupo (aunque el usuario principal
labex es implícitamente un miembro).
Grupos Primarios y Grupos Secundarios:
Cada usuario tiene exactamente un grupo principal. Para los usuarios locales, este grupo se enumera por GID en el archivo /etc/passwd. El grupo principal es propietario de los archivos que crea el usuario. Al crear un usuario normal, a menudo se crea un grupo con el mismo nombre que el usuario, para ser el grupo principal del usuario. El usuario es típicamente el único miembro de este Grupo Privado de Usuario. Este diseño simplifica la gestión de permisos de archivos.
Los usuarios también pueden tener grupos secundarios. La pertenencia a grupos secundarios se almacena en el archivo /etc/group. A los usuarios se les concede acceso a los archivos en función de si alguno de sus grupos tiene acceso, independientemente de si los grupos son primarios o secundarios. Por ejemplo, si el usuario labex tiene un grupo principal labex y wheel como grupo secundario, entonces ese usuario puede leer archivos que cualquiera de esos dos grupos pueda leer.
El comando id puede mostrar todas las membresías de grupo para un usuario. Recuerda la salida de id para labex:
uid=1000(labex) gid=1000(labex) groups=1000(labex),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Aquí, gid=1000(labex) indica que labex es el grupo principal. groups=1000(labex),10(wheel) enumera todas las membresías de grupo, mostrando labex como el grupo principal y wheel como un grupo secundario.