En un sistema Linux, el usuario root es el único con privilegios absolutos para crear y administrar usuarios, grupos y los archivos de configuración asociados. Trabajar directamente como root no es recomendable: cualquier error puede causar fallos graves en el sistema. Por eso, durante las siguientes prácticas usaremos un usuario normal y elevaremos privilegios puntualmente con sudo.
Como administradores de sistemas, saber como crear y gestionar las cuentas de los usuarios de nuestro sistema es algo que necesitamos conocer y dominar, ya que los usuarios son las personas o entidades que van a interactuar con el servidor y van a requerir acceso a recursos y servicios específicos. Crear una cuenta de usuario no es algo difícil en Linux, involucra también crear contraseña y asignarlo a un grupo y permisos. Aquí les dejamos un ejemplo de como crear y gestionar una cuenta de usuario, para ello abriremos la máquina virtual de nuestro servidor y seguiremos los siguientes pasos:
sudo adduser <usuario>, que de forma interactiva crea el directorio /home/<usuario>, pide la contraseña y algunos datos. Si usas useradd directamente (disponible en todas las distros), recuerda pasar -m para crear el home y establecer la contraseña después con passwd <usuario>: useradd por sí solo no pide contraseña.
passwd seguido del usuario de la contraseña que queremos cambiar
groupadd <grupo> y añadir a un usuario a un grupo secundario con usermod -aG <grupo> <usuario>. La combinación -aG es importante: -G indica la lista de grupos suplementarios y -a (append) evita sobrescribir los grupos a los que ya pertenece el usuario. Para ver los grupos a los que pertenece un usuario usamos groups <usuario>.




Es recomendable gestionar y crear los usuarios usando los privilegios de usuario sudo y no desde el usuario root ya que a la hora de un error desde el usuario root puede ser fatal para el sistema.
⚠️ Recuerda que la creación y gestión de cuentas de usuario en servidores Linux debe realizarse de manera segura y siguiendo las mejores prácticas de seguridad. Esto incluye el uso de contraseñas fuertes, la asignación adecuada de permisos y la implementación de políticas de seguridad.
Como administradores de sistema, es importante saber y conocer cómo gestionar y asignar permisos y privilegios a cada usuario del sistema, ya que los permisos pueden determinar qué acciones pueden realizar los usuarios y los privilegios definen el nivel de acceso y control sobre el sistema.
Cuando manejamos un servidor una de las mejores prácticas para proteger la información es poniendo en práctica el principio del menor privilegio, el cual consiste en asignarle los permisos de accesos mínimos necesarios para que pueda desempeñar actividades en el sistema, para ello es necesario conocer sobre los permisos y cómo gestionarlos.
En Linux existen tres tipos de permisos: lectura (r), escritura (w) y ejecución (x). Estos permisos se asignan a tres conjuntos de usuarios: el propietario del archivo, el grupo al que pertenece el archivo y el resto de usuarios del sistema. Podemos ver los permisos de archivos y directorios con el comando ls -l.

En la siguiente imagen podemos ver como tenemos un archivo llamado text.txt el cual cuenta con sus permisos agrupado en tres grupos:
💡 Es normal que a todos los usuarios del sistema los separamos por grupos para que así puedan acceder únicamente a los archivos que necesitan leer, escribir o ejecutar de acuerdo al nivel de privilegios que tenga tal usuario, y así proteger información confidencial de otros departamentos de la organización, una vez que creamos un usuario, es necesario darle permisos de acuerdo a las labores que vaya a realizar en la organización.
Con el comando chmod podemos cambiar y otorgar permisos a los usuarios sobre un archivo.

💡 Podemos generar permisos esenciales con los bits de ejecución setuid (suid), el bit de ejecución setgid (sgid) y el bit de ejecución sticky. El bit suid permite que un archivo se ejecute con los privilegios del propietario, mientras que el bit sgid permite que un archivo se ejecute con los privilegios del grupo. El bit sticky se utiliza principalmente en directorios para evitar que los usuarios eliminen archivos de otros usuarios

En este caso, generamos permisos de suid de privilegio de usuario y grupo al archivo text.txt
Otra manera de gestionar los permisos es asignarlos con la cantidad de bits de los permisos. Tomando en cuenta que cada permiso tiene una cantidad de bits podemos sacarlos como:
1Lectura r (4) 2Escritura w (2) 3Ejecución x (1)
1Lectura (r), Escritura (w), Ejecución (x) rwx = 7 2Lectura (r), Escritura (w) rw- = 6 3Lectura (r), Ejecución (x) r-x = 5 4Lectura (r) r-- = 4 5Escritura (w), Ejecución (x) -wx = 3 6Escritura (w) -w- = 2 7Ejecución (x) --x = 1

💡 La asignación de permisos y privilegios en linux es esencial para así garantizar al seguridad y el control adecuado sobre los recursos del sistema
Saber cómo configurar y asignar un usuario a un grupo en específico es ideal cuando queremos ganar tiempo y tenemos un sistema con muchos usuarios, ya que una manera rápida de hacerlo es ir asignando a los usuarios a un grupo con los permisos de usuarios mínimos de acuerdo a su labor. Por ejemplo podemos tener un grupo de departamentoIT que pueda tener acceso ejecutar a los scripts de automatización de tareas del sistema y asi, que los usuarios de departamento de marketing no puedan tener acceso a dichos scripts.
Para ello tenemos comandos que nos pueden ayudar tales como groupadd para crear un grupo.
Para este ejercicio hemos creado un grupo llamado departamentomarketing. Una vez creado, podemos añadir al usuario al grupo con sudo adduser <usuario> <grupo>, seguido del nombre de usuario y del grupo al que queremos que pertenezca.
📝
adduserydeluserson comandos específicos de Debian/Ubuntu (son wrappers de alto nivel sobreuseraddyuserdel). En RHEL, CentOS Stream, Rocky y AlmaLinux no están disponibles con esta sintaxis; allí la alternativa portable para añadir a un grupo essudo usermod -aG <grupo> <usuario>, y para eliminarlo,sudo gpasswd -d <usuario> <grupo>.


En este comando hicimos que el usuario1 pasará a ser del grupo de departamentomarketing.
Si queremos remover a un usuario del grupo lo podemos lograr con el comando deluser seguido del nombre del usuario y el grupo del cual queremos removerlo.

Una forma de ver los grupos en el sistema es accediendo a la ruta /etc/group usando el comando cat. Ahí podemos ver todos los grupos que tenemos seguido de un número o identificador de grupo (gid). Por lo general, al momento de crear grupos, el sistema le asigna un gid de 1000 en adelante. Los gid menores a 100 son reservados para uso del sistema y sus grupos especiales.

Si queremos modificar el gid o el nombre del grupo podemos hacerlo a través del comando groupmod seguido del nuevo gid o el nombre y el gid o nombre anterior.
