Bienvenidos a esta Guía Rápida de Linux para Hackers #13 Gestión de Usuarios y Grupos. Comparte este articulo y síguenos para recibir más capítulos y cursos gratis.

Esta guía es parte de un curso mucho más grande en donde te enseñamos a convertirte en hacker de 0 a 100. Desde los conocimientos más básicos hasta conseguir empleo.

En esta guía veremos desde cero un tema tan amplio como es Linux y lo haremos desde el punto de vista del hacking y la ciberseguridad.

Para saber más comente a continuación, respondemos todos y cada uno de los comentarios.

Índice

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Lista de aprendizajes del artículo sobre usuarios en Linux

  1. Conceptos básicos de usuarios en Linux:
    • Comprender qué son los usuarios y grupos en Linux y cómo están asociados con identificadores numéricos (UID y GID).
    • Conocer el propósito del usuario root y su UID especial (0).
  2. Gestión de usuarios:
    • Crear, eliminar y modificar cuentas de usuario utilizando comandos como useradd, userdel, y usermod.
    • Establecer contraseñas para los usuarios y asignarlos a grupos.
  3. Comandos útiles relacionados con usuarios:
    • Identificar usuarios conectados (who, w).
    • Ver UID, GID y grupos asociados a un usuario con id.
    • Cambiar de usuario temporalmente con su.
  4. Acceso administrativo con sudo:
    • Ejecutar comandos con permisos de superusuario sin iniciar sesión como root.
    • Configurar el archivo /etc/sudoers para definir permisos específicos.
  5. Directorio /etc/passwd y gestión de cuentas:
    • Estructura y función del archivo /etc/passwd.
    • Uso del directorio /etc/skel para establecer configuraciones predeterminadas de usuarios.
  6. Importancia de la gestión adecuada de usuarios:
    • Prevención de accesos no autorizados.
    • Monitoreo y auditoría de actividades de usuarios y administradores.
  7. Buenas prácticas para la seguridad:
    • Monitorear cambios en cuentas de usuario.
    • Implementar autenticación de dos factores y contraseñas fuertes.
    • Limitar el acceso a comandos administrativos.

Introducción a usuarios en Linux

Este tutorial le dirá cómo identificar la cuenta de usuario de un sistema con comandos como who, who am i, etc. Si más de una persona utiliza un mismo sistema, cada uno puede tener su propia cuenta de usuario. En este caso, será útil conocer los detalles de la cuenta de usuario. También explica cómo crear una segunda cuenta de usuario y ejecutar un programa en ella con la ayuda de los comandos su y sudo.

Los comandos su (substitute user) y sudo (superuser do) son herramientas esenciales en Linux que permiten a los usuarios ejecutar comandos con permisos elevados, usualmente los del usuario “root” o superusuario.

Para cualquier administrador de sistemas, y especialmente para hackers o expertos en ciberseguridad, entender estos comandos es crucial, ya que proporcionan acceso a funciones críticas del sistema y permiten la ejecución de tareas que requieren privilegios elevados.

Este artículo profundizará en la funcionalidad de ambos comandos, su importancia en el hacking ético y cómo pueden ser usados tanto para administrar sistemas de manera eficiente como para comprometer la seguridad de una máquina.

Linux es un sistema operativo multiusuario. Cuando un usuario va a usar un SO Tipo Unix lo primero que necesita hacer es identificarse para ser autorizado a abrir una sesión de trabajo. También es multitarea y por ello en el mismo instante varios procesos pueden estar funcionando y cada uno puede pertenecer a usuarios distintos.

User en Linux

La información que se guarda en el disco duro también puede pertenecer a distintos usuarios y para evitar que todo ello provoque conflictos existen unos atributos de usuario que se asocian a los ficheros a los directorios, a los procesos, etc. En función de esto hay cosas que estarán permitidas a ciertos usuarios y a otros no.

Los usuarios pueden estar organizados en diferentes grupos a fin de poder manejar permisos a nivel de grupo. Esto se hace para simplificar la administración del sistema. Los usuarios y los grupos dentro del sistema se manejan como un número llamado UID y GID respectivamente. Los números en un ordenador se manejan con mucha más facilidad que un literal.

Por eso el nombre de usuario y el nombre de grupo se guardarán solo en un fichero junto al número UID y GID asociado, pero para el sistema un usuario, un grupo, un proceso, un fichero, y muchas otras cosas se identifican por una clave numérica.

Para un ordenador resulta más sencillo consultar si el proceso 456 perteneciente al usuario 105 tiene permiso de escritura en el fichero 48964 que consultar si el usuario ‘pepito’ perteneciente al grupo ‘alumnos’ tiene permiso de escritura en el fichero ‘/home/carlos/laprovittera.txt’. Cuando el ordenador tiene que mostrar información en formato inteligible buscará la descripción correspondiente a cada clave numérica.

Cada clave recibe un nombre como por ejemplo los UID, GID que ya hemos comentado otra sería por ejemplo el PID, para procesos y existen otras muchas más que iremos aprendiendo y que forman parte de la jerga de este SO.

whoami

Le informa sobre el nombre de usuario del sistema. Existe un usuario especial que goza absolutamente de todos los privilegios y que se llama root. Su número de usuario es decir su UID es 0. El comando ‘whoami’ se utiliza para imprimir el ID de usuario efectivo , mientras que el comando who imprime información sobre los usuarios que están conectados actualmente. El comando “w” también se puede utilizar para ver quién está conectado y qué está haciendo.

Sintaxis:

whoami

Mira la instantánea de arriba, ‘carlos’ es el nombre de usuario de nuestro sistema.

Este comando practicante no tiene opciones

 

Who

El comando who proporciona información sobre los usuarios conectados al sistema.

Sintaxis:

who

Who tiene muchas opciones que puedes explorar

who --help

 También  te recomendamos consultar las páginas man:

man who

W

Este comando informa sobre los usuarios que han iniciado sesión y qué están haciendo.

Sintaxis:

 w 

W también  tiene muchas opciones que puedes explorar

También  te recomendamos consultar las páginas man:

 man w

Id

Este comando le informa sobre su ID de usuario, ID de grupo principal y una lista de grupos que le pertenecen.

El comando ‘ id’ en Linux es una herramienta poderosa que se utiliza para mostrar los nombres de usuarios y grupos junto con sus identificadores numéricos (ID de usuario – UID o ID de grupo – GID) del usuario actual o de cualquier usuario especificado en el sistema. Este comando es particularmente útil para administradores de sistemas y usuarios que necesitan verificar las identidades de los usuarios y los permisos asociados.

¿Qué hace el comando ‘id’?

Este comando es útil para encontrar la siguiente información que se enumera a continuación:

  • Nombre de usuario e identificación de usuario real.
  • Descubra el UID de usuario específico.
  • Mostrar el UID y todos los grupos asociados con un usuario.
  • Enumere todos los grupos a los que pertenece un usuario.
  • Mostrar el contexto de seguridad del usuario actual.

Sintaxis:

id [OPCIÓN]… [USUARIO]

Opciones:

  • -a: Se utiliza para ignorar la compatibilidad con otras versiones.
  • ‘-g’: imprime sólo el ID de grupo efectivo del usuario.
  • ‘-G’: imprime todos los ID de grupo asociados con el usuario.
  • ‘-n’: muestra nombres en lugar de identificadores numéricos.
  • ‘-r’: muestra el ID real en lugar del efectivo.
  • ‘-u’: imprime sólo el ID de usuario efectivo.
  • ‘–help’: muestra mensajes de ayuda para el comando id y sale.
  • ‘-version’ : muestra la información de la versión y sale.
  • -z, –zero: Se utiliza para delimitar entradas con caracteres NULL, excepto los espacios en blanco;
  • -Z, –context: Se utiliza para imprimir sólo el contexto de seguridad del proceso.

Nota: Sin ninguna OPCIÓN, imprime cada conjunto de información identificada, es decir, identificaciones numéricas.

Ejemplos del comando ‘id’ en Linux

Veamos algunos ejemplos del comando ‘id’ en Linux para comprender mejor el concepto.

Para mostrar sus propios ID de usuario y grupo, simplemente ejecute:

 id

La salida muestra el ID del usuario actual (UID y GID).

 Para encontrar el ‘id’ de un usuario específico

Ahora supongamos que tenemos un usuario llamado alvaro, para encontrar su UID usaremos el comando:

 id -u alvaro

Para encontrar el GID de un usuario específico

Suponiendo nuevamente que queremos encontrar el GID del alvaro, utilizaremos el comando:

 id -g alvaro

Para conocer el UID y todos los grupos asociados a un nombre de usuario

En este caso utilizaremos el usuario “alvaro” para encontrar el UID y todos los grupos asociados a él, use el comando:

 id alvaro

Para conocer todos los grupos a los que pertenece un usuario

Visualización del UID y de todos los grupos a los que pertenece un usuario “alvaro”:

Para mostrar un nombre en lugar de números

De forma predeterminada, el comando ‘ id’ nos muestra el UDI y el GID en números que el usuario puede no entender, con el uso de la opción ‘-n’ con ‘-u’, ‘-g’ y ‘-G’. Utilice los comandos:

Para mostrar la identificación real en lugar de la identificación efectiva

Para mostrar la identificación real con el uso de la opción ‘-r’ con ‘-g’, ‘-u’ y ‘-G, use el(los) comando(s):

id -r -g alvaro

Obtener ayuda

Si te quedas atascado mientras usas el comando id, puedes pedir ayuda desde tu terminal. Puedes leer la página del manual y la documentación de ayuda. Para pedir ayuda, ejecuta el siguiente comando:

 id --help

El comando anterior mostrará la documentación de ayuda de la siguiente manera:

También  te recomendamos consultar las páginas man:

 man id

Acceso administrativo

Hay muchos comandos de Linux que tratan con información confidencial como contraseñas, hardware del sistema, u otros que operan bajo circunstancias excepcionales. Evitar que usuarios ordinarios ejecuten estos comandos ayuda a proteger el sistema. Iniciar una sesión como usuario root proporciona acceso administrativo, y permite la ejecución de algunos de los comandos privilegiados.

Para poder utilizar el sistema operativo Linux es necesario disponer de una cuenta de usuario que se compone de nombre de usuario (login) y de contraseña (password). Las cuentas de usuario son creadas por el administrador que en Unix es un usuario especial llamado root (ver más abajo). Los usuarios deberán pertenecer al menos a un grupo de usuarios ya que obligatoriamente deben tener asignado un grupo principal o grupo primario.

Cuando un usuario entra en un sistema Linux, debe identificarse indicando su nombre de usuario  y su contraseña. Si se equivoca al introducir su nombre o su contraseña, el sistema le denegará el acceso y no podrá entrar.

Cuando ingresamos a un sistema sin entorno grafico necesitaremos usar el comando login para poder iniciar sección seguido del nombre de usuario y su contraseña

 login

Como podemos ver en este caso el usuario romina no tiene acceso de administrador, tampoco puede usar el comando sudo dado que no está en el archivo sudoers.

Inicio de sesión en Linux

Una vez se haya identificado de forma satisfactoria, el usuario podrá utilizar el sistema y ejecutar todas las aplicaciones que le sean permitidas, así como leer, modificar o borrar aquellos archivos sobre los cuales tenga permiso.

Las cuentas de usuario no solo ofrecen al usuario un nombre y una contraseña, también le proporciona una ruta para almacenar sus documentos y su perfil generalmente dentro de la carpeta /home/nombre-usuario y comúnmente denominada carpeta home del usuario y un intérprete de comandos (shell) que le permitirá ejecutar aplicaciones.

Cuando el usuario ejecuta una aplicación, el sistema carga la aplicación en memoria y la ejecuta. En el argot informático a las aplicaciones que se están ejecutando en un momento determinado se les denomina procesos. Los procesos en ejecución pertenecen a algún usuario. El sistema asigna a los procesos el usuario que los ejecuta.

Ejemplo, si el usuario “carlos” ejecuta la aplicación “konqueror”, en la lista de procesos del sistema aparecerá un nuevo proceso llamado “konqueror” cuyo propietario es “carlos”. Obligatoriamente, todos los procesos del sistema pertenecen a algún usuario. Ejecutando el comando ‘ps aux’ podemos ver todos los procesos en ejecución. Si ejecutamos el comando ‘top’ lo veremos a tiempo real.

El comando login

Opciones:

  • login [ nombre ]
  • login -p
  • login -h nombre de host
  • login -f nombre

Se utiliza al iniciar sesión en un sistema. Si no se proporciona un argumento, login solicita el nombre de usuario. Si el usuario no es root y existe /etc/nologin , el contenido de este archivo se imprime en la pantalla y se finaliza el inicio de sesión. Esto se utiliza normalmente para evitar inicios de sesión cuando se desactiva el sistema.

Si se especifican restricciones de acceso especiales para el usuario en /etc/usertty , estas deben cumplirse o se denegará el intento de inicio de sesión y se generará un mensaje de syslog . Si el usuario es root, el inicio de sesión debe realizarse en un tty incluido en /etc/securetty . Los errores se registrarán con la función syslog .

Una vez que se hayan verificado estas condiciones, se solicitará y comprobará la contraseña (si se requiere una contraseña para este nombre de usuario). Se permiten diez intentos antes de que se interrumpa el inicio de sesión , pero después de los primeros tres, la respuesta comienza a volverse muy lenta. Los errores de inicio de sesión se informan a través de la función syslog . Esta función también se utiliza para informar sobre los inicios de sesión exitosos de root.

hushlogin

Si existe el archivo ~/.hushlogin o /etc/hushlogins , se realiza un inicio de sesión “silencioso” (esto desactiva la verificación del correo y la impresión de la última hora de inicio de sesión y el mensaje del día). De lo contrario, si existe /var/log/lastlog , se imprime la última hora de inicio de sesión (y se registra el inicio de sesión actual).

Tenga en cuenta que si existe el archivo /etc/hushlogins , el último mensaje de inicio de sesión podría ser generado por PAM, por ejemplo:

Se requiere sesión pam_lastlog.so noupdate showfailed

Configuración en el archivo /etc/pam.d/login . La biblioteca PAM proporciona información más detallada sobre los intentos de inicio de sesión fallidos.

Se realizan tareas administrativas aleatorias, como configurar el UID y el GID del tty. La variable de entorno TERM se conserva, si existe (se conservan otras variables de entorno si se utiliza la opción -p ). A continuación, se configuran las variables de entorno HOME, PATH, SHELL, TERM, MAIL y LOGNAME. El valor predeterminado de PATH es /usr/local/bin:/bin:/usr/bin para usuarios normales y /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin para root.

Por último, si no se trata de un inicio de sesión “silencioso”, se imprime el mensaje del día y se comprueba el archivo con el nombre del usuario en /var/spool/mail , y se imprime un mensaje si tiene una longitud distinta de cero.

A continuación, se inicia el shell del usuario. Si no se especifica ningún shell para el usuario en /etc/passwd , se utiliza /bin/sh . Si no se especifica ningún directorio en /etc/passwd , se utiliza / (se comprueba el directorio de inicio en busca del archivo .hushlogin descrito anteriormente).

Opciones

-pag

Utilizado por getty (8) para indicarle login que no destruya el entorno

-F

Se utiliza para omitir una segunda autenticación de inicio de sesión. Esto no funciona específicamente para root y no parece funcionar bien en Linux.

-h

Utilizado por otros servidores (por ejemplo, telnetd (8)) para pasar el nombre del host remoto al que se debe iniciar sesión para que pueda colocarse en utmp y wtmp. Solo el superusuario puede usar esta opción.

Tenga en cuenta que la opción -h tiene un impacto en el nombre del servicio PAM . El nombre del servicio estándar es “login”, con la opción -h el nombre es “remote”. Es necesario crear archivos de configuración PAM adecuados (por ejemplo, /etc/pam.d/login y /etc/pam.d/remote ).

También  te recomendamos consultar las páginas man para este comando:

 man login

Comandos su de Linux

su OPCIONES NOMBRE-DE-USUARIO

El comando su significa “substitute user” (sustituir usuario). Permite al usuario cambiar de cuenta en el sistema sin cerrar sesión. De manera predeterminada, su cambia la cuenta activa al usuario “root” (superusuario), otorgando privilegios administrativos, aunque también puede usarse para cambiar a otros usuarios.

Cambie el ID de usuario y el ID de grupo efectivos por los de USUARIO.

-, -l , –login

Convierte el shell en un shell de inicio de sesión

-c , –command = COMANDO

Pasar un único COMANDO al shell con -c

–session-command = COMANDO

Pasar un único COMANDO al shell con -c y no crear una nueva sesión

-f , –rápido

Pasar -f al shell (para csh o tcsh)

-m , –preserve-environment

No restablecer las variables de entorno

-pag

Lo mismo que -m

-s , –shell = SHELL

Ejecutar SHELL si /etc/shells lo permite

–ayuda

Mostrar esta ayuda y salir

–versión

Información de la versión de salida y salida

Ejemplo de uso de SU

Un simple – implica -l . Si no se especifica USER, se asume que es root.

El comando su le permite actuar temporalmente como un usuario diferente. Lo hace creando un nuevo shell. El shell es simplemente una consola de entrada de texto que le permite escribir comandos. De forma predeterminada, si no se especifica una cuenta de usuario, el comando su abrirá un nuevo shell como usuario root, proporcionando privilegios administrativos.

Se recomienda utilizar la opción shell para iniciar la sesión, ya que el shell de inicio de sesión configura completamente el nuevo shell con la configuración del nuevo usuario. Esta opción se puede especificar de tres maneras:

su
su -l
su --login

Después de ejecutar el comando su, se requiere una contraseña. Como medida de seguridad, la contraseña no será visible mientras la escribe.

Ejemplo:

 su alvaro  

Mire la instantánea de arriba, la cuenta de usuario cambió de carlos a alvaro. Este comando cambia el contexto actual al del usuario especificado, siempre que el ejecutor del comando conozca la contraseña de ese usuario.

su a root

Puedes cambiar el usuario a root cuando conoces la contraseña de root.

Sintaxis:

 su root

su como root

El usuario root puede convertirse en cualquier usuario existente sin conocer la contraseña de ese usuario. De lo contrario, se necesita la contraseña.

Ejemplo:

 su carlos 

Mire la instantánea de arriba, solicita una contraseña al cambiar del usuario jtp a sssit.

Ahora veamos el siguiente ejemplo.

Ejemplo:

 su alvaro  

Observa la captura de pantalla anterior. Estamos en el usuario root. Al cambiar de root a carlos, no nos pidió contraseña y llegamos al usuario carlos.

su

Si no se menciona ningún nombre de usuario, de forma predeterminada se asumirá que root es el usuario de destino. Tenga en cuenta que el símbolo del sistema ha cambiado para reflejar que ahora ha iniciado sesión como usuario root. Para cerrar la sesión y volver a la cuenta sysadmin, use el comando exit. Note como el símbolo vuelve a cambiar

Ejemplo:

 su

Mire la instantánea de arriba, el comando “su -“ ha asumido que la raíz es el objetivo. Este comando solicita la contraseña del usuario “root” y, una vez proporcionada, cambia el contexto del shell al del superusuario. Esto otorga al usuario actual todos los permisos administrativos, como leer, modificar o eliminar cualquier archivo en el sistema.

El comando exit devuelve al usuario a su cuenta original, cerrando la sesión de superusuario o del usuario al que se había cambiado.

El comando Sudo

A diferencia de su, que otorga acceso completo al entorno de otro usuario (usualmente “root”), el comando sudo (superuser do) permite a un usuario ejecutar comandos con privilegios elevados, pero solo aquellos para los que ha sido autorizado. Sudo permite ejecutar un solo comando con privilegios de superusuario sin necesidad de cambiar completamente de cuenta.

Una vez completado el comando, observe que el símbolo del sistema no ha cambiado, usted continua bajo la cuenta de inicio. El comando sudo sólo proporciona acceso administrativo para la ejecución del comando especificado. Esto es una ventaja ya que reduce el riesgo de que un usuario ejecute accidentalmente un comando como usuario root. La intención de ejecutar un comando es clara; el comando se ejecuta como root si se prefija con el comando sudo. De lo contrario, el comando se ejecuta como usuario ordinario.

Si antepones “sudo” a cualquier comando, se ejecutará ese comando con privilegios elevados o, en otras palabras, permitirá que un usuario con los permisos adecuados ejecute un comando como otro usuario, como el superusuario. Este es el equivalente a la opción “ejecutar como administrador” en Windows. La opción de sudo nos permite tener múltiples administradores. 

Estos usuarios que pueden utilizar el comando sudo necesitan tener una entrada en el archivo sudoers ubicado en “/etc/sudoers” . Recuerde que para editar o visualizar el archivo sudoers debe utilizar el comando sudo. Para editar el archivo sudoers se recomienda utilizar el comando “visudo”. 

De forma predeterminada, sudo requiere que los usuarios se autentiquen con una contraseña que es la contraseña del usuario, no la contraseña root en sí. 

Sintaxis del comando sudo: 

sudo -V | -h | -l | -v | -k | -K | -s | [ -H ] [-P ] [-S ] [ -b ] | 
[ -p prompt ] [ -c class|- ] [ -a auth_type ] [-r role ] [-t type ] 
[ -u username|#uid ] command

Por ejemplo, para actualizar los paquetes del sistema:

Sin sudo no se tiene los permisos y la actualización es denegada. Este comando ejecuta la actualización del sistema con permisos de superusuario, pero el usuario solo necesita proporcionar su propia contraseña, no la del usuario “root”. Esto lo hace más seguro, ya que no expone la contraseña del superusuario.

Opciones disponibles en el comando sudo

Opciones                                                                                                             DescripciónSintaxis
-VLa opción -V (versión) hace que sudo imprima el número de versión y salga. Si el usuario que realiza la invocación ya es root, la opción -V imprimirá una lista de los valores predeterminados con los que se compiló sudo. sudo -V
-lLa opción -l (lista) imprimirá los comandos permitidos (y prohibidos) para el usuario en el host actual. sudo -l
-h o –helpLa opción -h (ayuda) hace que sudo imprima un mensaje de uso y salga.sudo -h
-vSi se le da la opción -v (validar), sudo actualizará la marca de tiempo del usuario y solicitará la contraseña del usuario si es necesario. Esto extiende el tiempo de espera de sudo por otros 5 minutos (o el tiempo indicado en sudoers), pero no ejecuta ningún comando. Esto no genera ninguna salida. sudo -v
-kLa opción -k (kill) de sudo invalida la marca de tiempo del usuario. Por lo tanto, la próxima vez que se ejecute sudo, se solicitará una contraseña. Esta opción no requiere contraseña y se agregó para permitir que un usuario revoque los permisos de sudo desde un archivo de cierre de sesión. sudo -k
-KDe manera similar a la opción -k, la opción -K (eliminación segura) se utiliza para eliminar por completo la marca de tiempo del usuario. Asimismo, esta opción no requiere una contraseña. sudo -K
 -bLa opción -b (en segundo plano) le indica a sudo que ejecute el comando indicado en segundo plano. Tenga en cuenta que si utiliza la opción -b, no podrá utilizar el control de tareas del shell para manipular el proceso. sudo -b [comando] (reemplace “comando” con el comando que desea ejecutar en segundo plano)
-pEl comando sudo -p prompt le permite personalizar el mensaje de solicitud de contraseña que sudo muestra cuando solicita la contraseña del usuario. De manera predeterminada, sudo mostrará un mensaje de solicitud de contraseña genérico que se parece asudo -p “Ingresa tu contraseña” [comando] (reemplace “comando” con el comando que desea ejecutar en segundo plano)
 -nLa opción -n permite que sudo ejecute un comando sin solicitar una contraseña. Esta opción es útil cuando se ejecutan comandos sudo como tareas en segundo plano o en un script de shell. La opción -n significa no interactivo.sudo -n [comando] (reemplace “comando” con el comando que desea ejecutar en segundo plano)
-uLa opción -u hace que sudo ejecute el comando especificado como un usuario distinto de root. Para especificar un UID en lugar de un nombre de usuario, utilice #uid.sudo -u [usuario] [comando] (reemplace “comando” con el comando que desea ejecutar en segundo plano)
-sLa opción -s ejecuta el shell especificado por la variable de entorno SHELL si está configurada o el shell especificado en el archivo passwd.sudo -s [comando] (reemplace “comando” con el comando que desea ejecutar en segundo plano)
-HLa opción -H establece la variable de entorno HOME en el directorio de inicio del usuario de destino (root de manera predeterminada) como se especifica en passwd. De manera predeterminada, sudo no modifica HOME.sudo -H [comando] (reemplace “comando” con el comando que desea ejecutar en segundo plano)
-SLa opción -S hace que sudo lea la contraseña desde la entrada estándar en lugar del dispositivo terminal.sudo -S [comando] (reemplace “comando” con el comando que desea ejecutar en segundo plano)
-aLa opción -a hace que sudo utilice el tipo de autenticación especificado al validar al usuario, tal como lo permite /etc/login.conf. El administrador del sistema puede especificar una lista de métodos de autenticación específicos de sudo agregando una entrada “auth-sudo” en /etc/login.conf.sudo -a [tipo-autenticación] [comando] (reemplace “comando” con el comando que desea ejecutar en segundo plano)
El indicador — indica que sudo debe dejar de procesar argumentos de la línea de comandos. Es más útil junto con el indicador -s.sudo — [comando] (reemplace “comando” con el comando que desea ejecutar en segundo plano)

Ejecutar un programa como otro usuario / comando sudo

sudo [OPCIONES] COMANDO

El comando sudo permite a un usuario ejecutar un comando como otro usuario sin tener que crear un nuevo shell. Para ejecutar un comando con privilegios administrativos utilice el comando como argumento para el comando sudo. Al igual que pasa con el comando su, el comando sudo asume por defecto que la cuenta de usuario root debe usarse para ejecutar comandos.

Para este módulo vamos a comenzar a utilizar más intensivamente la consola de Linux, la idea es que en algún momento puedan trabajar/administrar servidores Linux, lo cual significa usar la consola 100%. Linux se trata de performance, seguridad y eficiencia entre otras cosas, y eso significa tener instalado únicamente el software que necesito para la tarea que estoy llevando a cabo. En los entornos profesionales es muy raro ver un servidor Linux con entorno gráfico, eso está reservado a equipos de escritorio comúnmente. Dirigirse al icono de la consola y luego crear un usuario y asignarle una password.

 sudo su

Este comando da acceso de administrador

El comando sudo permite a un usuario iniciar programas con las credenciales de otro usuario.

Ejemplo:

/usr/sbin/useradd -m Romina  

Mire la instantánea de arriba, el shell muestra el mensaje anterior al crear el usuario ‘Romina’ .

Con sudo podemos…

Con el comando sudo podemos crear nuevos usuarios en el sistema sin convertirnos en root o sin saber la contraseña de root.

Ejemplo:

sudo /usr/sbin/useradd -m Romina  

Mire la instantánea de arriba, el usuario ‘Romina’ se crea con el comando sudo.

La salida de algunos comandos

-V: La opción -V (versión) hace que sudo imprima el número de versión y salga. Si el usuario que realiza la invocación ya es root, la opción -V imprimirá una lista de los valores predeterminados con los que se compiló sudo. 

-l: La opción -l (lista) imprimirá los comandos permitidos (y prohibidos) para el usuario en el host actual. 

Configuración del archivo sudoers

El archivo /etc/sudoers contiene las configuraciones que determinan qué usuarios pueden ejecutar qué comandos con sudo. Modificar este archivo de manera incorrecta puede bloquear el acceso a privilegios elevados, por lo que es recomendable editarlo con el comando: 

 sudo visudo 

 

Este comando abre el archivo /etc/sudoers en un editor protegido que previene errores de sintaxis, garantizando que el sistema no quede bloqueado accidentalmente.

Variables de entorno

Estas variables de entorno son utilizadas por sudo 

EtiquetaDescripción
EDITOR   Editor predeterminado para usar en modo -e (sudoedit) si VISUAL no está configurado 
HOME  En modo -s o -H (o si sudo se configuró con la  opción –enable-shell-sets-home), establezca el directorio de inicio del usuario de destino 
PATH  Establezca un valor adecuado si la opción sudoers secure_path está configurada. 
SHELL  Se utiliza para determinar el shell que se ejecutará con la opción -s 
SUDO_PROMPT  Se utiliza como solicitud de contraseña predeterminada 
SUDO_COMMAND   Establezca el comando ejecutado por sudo 
SUDO_USER  Establezca el inicio de sesión del usuario que invocó sudo
SUDO_UID  Establezca el uid del usuario que invocó sudo 
SUDO_GID  Establezca el gid del usuario que invocó sudo 
SUDO_PS1   Si se configura, PS1 se establecerá en su valor
USER Establecer en el usuario de destino (root a menos que se especifique la opción  -u )
VISUAL   Editor predeterminado para utilizar en modo -e (sudoedit) 

El comando sudo tiene más opciones que puedes explorar

 sudo --help

 

También  te recomendamos consultar las páginas man:

 man sudo

Ventajas de sudo sobre su

  • Seguridad: sudo no requiere que los usuarios conozcan la contraseña del superusuario, lo que limita la exposición de credenciales sensibles.
  • Control granular: Los administradores pueden configurar qué usuarios tienen acceso a qué comandos mediante el archivo /etc/sudoers.
  • Registro de comandos: sudo registra todos los comandos ejecutados, lo que facilita la auditoría y el seguimiento de actividades en el sistema.
  • Permisos temporales: A diferencia de su, que otorga acceso continuo, sudo solicita una contraseña solo por un comando o por una sesión limitada.

Importancia de su y sudo para los hackers

Tanto su como sudo son herramientas críticas que los hackers deben conocer. El control de acceso con privilegios elevados es el objetivo central de muchos ataques, ya que, una vez obtenido el acceso de superusuario, el hacker tiene control total del sistema.

Escalada de privilegios

En muchos escenarios de hacking, los atacantes buscan vulnerabilidades en el sistema que les permitan obtener acceso como un usuario común. Sin embargo, este acceso limitado no les otorga control completo sobre el sistema. Para maximizar su control, los hackers intentan escalar privilegios, lo que significa obtener permisos de superusuario.

Ejemplo de uso de sudo en escalada de privilegios

Si un usuario tiene acceso a sudo pero no a todos los comandos, un hacker podría intentar explotar configuraciones incorrectas en el archivo /etc/sudoers. Por ejemplo, si un administrador ha permitido que un usuario ejecute un comando de manera inadecuada, como el acceso a un shell con permisos de superusuario:

sudo /bin/bash

Este comando abriría un shell con privilegios de superusuario, lo que les permitiría realizar acciones que normalmente no estarían permitidas.

Modificación de configuraciones del sistema

Una vez que un hacker tiene acceso a su o sudo, puede modificar archivos críticos del sistema para obtener acceso persistente o para hacer que el sistema sea vulnerable a futuros ataques. Por ejemplo, pueden modificar el archivo /etc/sudoers para otorgarse a sí mismos acceso total sin tener que proporcionar la contraseña cada vez.

sudo visudo

Al modificar el archivo sudoers, un atacante puede agregar una línea como:

hacker ALL=(ALL) NOPASSWD: ALL

Esto les permitiría ejecutar cualquier comando con sudo sin tener que proporcionar una contraseña.

Ocultar rastros y limpiar logs

Después de realizar una intrusión, los hackers pueden usar su o sudo para ocultar sus rastros y eliminar cualquier evidencia de su actividad. Un ejemplo común es borrar los archivos de logs que registran la actividad del sistema.

sudo rm/var/log/auth.log

Este comando elimina el archivo que contiene los registros de autenticación, lo que dificulta la tarea de los administradores de rastrear la actividad maliciosa.

Buenas prácticas para administradores de sistemas

Debido al poder que ofrecen su y sudo, es fundamental implementar buenas prácticas de seguridad para mitigar posibles riesgos.

Uso limitado de su y sudo

Se debe limitar el uso de su y sudo solo a aquellos usuarios que lo necesiten realmente. No todos los usuarios deben tener acceso a comandos de superusuario, y aquellos que lo tienen deben ser auditados regularmente.

Configuración adecuada del archivo sudoers

Es fundamental revisar el archivo /etc/sudoers y asegurarse de que no existan configuraciones innecesarias o peligrosas. Una buena práctica es otorgar permisos específicos solo para los comandos necesarios en lugar de acceso completo.

Registro y monitoreo de actividades

Dado que sudo registra todas las actividades, es esencial revisar regularmente estos logs para detectar cualquier actividad sospechosa. Los administradores deben monitorear quién usa sudo y con qué fines.

Contraseñas seguras

Es crucial asegurar que las contraseñas del usuario “root” y de aquellos con acceso a sudo sean seguras y no triviales. Además, el uso de contraseñas únicas y robustas, así como la implementación de políticas de cambio regular de contraseñas, puede prevenir muchos ataques.

Preguntas frecuentes sobre el comando sudo en Linux

¿Qué es «sudo» en Linux?

Sudo es un comando de Linux que permite a los usuarios ejecutar comandos con privilegios que solo tiene el usuario root. Ayuda a los usuarios a realizar tareas con poderes administrativos sin iniciar sesión como usuario root, aunque a veces puede ser riesgoso.

¿Qué comandos de Linux necesitan privilegios ‘sudo’?

Hay muchos comandos de Linux que se deben ejecutar con privilegios sudo, como comandos de red, comandos de administración de paquetes y comandos de nivel de sistema. Por ejemplo, los comandos que requieren privilegios sudo para ejecutarse son `yum`, `systemctl`, `mount`, `apt-get`, `fdisk` e `ifconfig`.

¿Qué puedo ejecutar con sudo?

Hay muchos comandos de Linux que requieren privilegios sudo para ejecutarse, pero hay que recordar usarlos con precaución, ya que pueden modificar archivos y configuraciones críticas del sistema. Para evitar consecuencias, debemos comprobarlo dos veces antes de ejecutar comandos. Comandos como:

  • Instalación de un nuevo paquete: `sudo apt-get install package_name`
  • Actualización del sistema: `sudo apt-get update && sudo apt-get upgrade`
  • Modificar configuraciones del sistema: `sudo nano /etc/fstab`
  • Iniciar un servicio del sistema: `sudo systemctl start service_name`
  • Detener un servicio del sistema: `sudo systemctl stop service_name`
  • Creación de una nueva cuenta de usuario: `sudo useradd username`
  • Cambiar permisos de archivos: `sudo chmod 755 file_name`

¿Cuál es la diferencia entre el comando su y sudo en Linux?

En Linux, el comando su (cambiar de usuario) permite a los usuarios iniciar sesión como otro usuario, generalmente el usuario root, y acceder a sus archivos y configuraciones. Por el contrario, el comando sudo permite a los usuarios ejecutar ciertos comandos con privilegios aumentados sin iniciar sesión como usuario root. Sudo es un método más seguro para otorgar privilegios root temporales a los usuarios.

¿Cómo doy y tomo acceso de usuario sudo en Linux?

En Linux podemos dar o quitar acceso a `sudo` agregando o quitando el nombre de usuario del archivo llamado `sudores`. Para agregar el nombre de usuario a los sudoers necesitamos ejecutar el comando `sudo visudo` y editar el archivo y agregar la línea que le dará acceso al usuario. Por ejemplo: “username ALL=(ALL:ALL) ALL” le da al usuario acceso completo al comando sudo.

Podemos deshabilitar el acceso sudo de un usuario utilizando el mismo comando “sudo visudo” que se utilizará para editar el archivo sudoers y eliminar la línea que le otorga acceso sudo. Una vez que se elimine la línea, el usuario ya no podrá utilizar el comando sudo para ejecutar comandos privilegiados.

Crear usuario en Linux

Linux nos permite crear más de un usuario después de la instalación. Linux es un sistema multiusuario, lo que significa que más de un usuario puede trabajar en el mismo sistema al mismo tiempo.

Para poder trabajar con Linux debemos crear una cuenta , ya que no podemos seguir trabajando con la cuenta root. Tenemos una cuenta administrativa, una cuenta de administrador del sistema que se encarga de gestionar las cuentas de usuario y los grupos del sistema. Agregar o eliminar un usuario es una de las tareas más básicas de un nuevo servidor Linux.

Un nuevo servidor Linux nos proporciona únicamente una cuenta de usuario root. Añadir una cuenta de usuario proporciona mucho poder y accesibilidad a un usuario en particular. Es una utilidad útil pero insegura del servidor Linux. Es bueno añadir un usuario sin privilegios para realizar tareas comunes. Sin embargo, podemos acceder al privilegio administrativo a través de la utilidad de línea de comandos sudo.

En Linux, la gestión de usuarios es un aspecto fundamental para la administración del sistema. Los comandos useradd, userdel y usermod son herramientas que permiten crear, eliminar y modificar usuarios. Estos comandos no solo son útiles para los administradores de sistemas, sino que también son esenciales para los hackers, ya que permiten manipular cuentas de usuario, escalar privilegios y comprometer la seguridad de un sistema.

En este artículo, exploraremos en profundidad cómo funcionan estos comandos, su sintaxis, ejemplos de uso, y por qué son herramientas clave tanto para la administración del sistema como para la seguridad informática.

Comandos de gestión de usuarios de Linux/Unix

La gestión de usuarios en Linux se realiza mediante comandos de administración de Linux. A continuación, se incluye una lista de comandos de gestión de usuarios en Linux :

DominioDescripción
sudo adduser nombre de usuarioAgrega un usuario
sudo passwd -l ‘nombre de usuario’Deshabilitar un usuario
sudo userdel -r ‘nombre de usuario’Eliminar un usuario
sudo usermod -a -G NOMBREGRUPO NOMBREUSUARIOAgregar usuario a un grupo de usuarios
sudo deluser NOMBRE DEL GRUPO DE USUARIOSEliminar usuario de un grupo de usuarios
dedoProporciona información sobre todos los usuarios conectados.
nombre de usuario de dedoProporciona información de un usuario en particular.

El comando useradd de Linux

En Linux, el comando useradd es una utilidad de línea de comandos que se utiliza para agregar o eliminar un usuario en un servidor Linux y un sistema operativo basado en Unix.

En un tipo diferente de distribución de Linux, el comando useradd puede ser ligeramente diferente.

El comando useradd realiza las siguientes tareas:

  • Edita los archivos para usuarios recién creados como /etc/passwd , /etc/shadow , /etc/group y /etc/gshadow.
  • Crea y abre un nuevo directorio de inicio.
  • Nos permite establecer propietarios y permisos para el directorio de inicio.

Sintaxis:

useradd [opciones] nombre de usuario  

Para poder utilizar el comando useradd, debemos iniciar sesión con acceso root o sudo.

Antes de usar el comando useradd de Linux, comprendamos algunos términos comunes que se utilizan en la línea de comandos de Linux.

Definiciones

Nombre de usuario : un nombre de usuario es un nombre que se utiliza para iniciar sesión en el sistema Linux. Se muestra cuando encendemos nuestra máquina. La longitud del nombre de usuario debe ser de entre 1 y 32 caracteres.

Contraseña: una contraseña es un código secreto que se utiliza para proteger el sistema de accesos no autorizados. Se almacena en un archivo etc/shadow en formato cifrado.

Identificación de usuario (UID) : Linux proporciona una identificación única a cada usuario; se denomina número de identificación de usuario o ID de usuario o UID . De forma predeterminada, el UID para el usuario raíz está reservado como cero y el resto de los UID de 1 a 99 están reservados para otras cuentas predefinidas. Además, los UID de 100 a 999 están reservados para grupos y cuentas del sistema.

ID de grupo (GID): El GID o ID de grupo es un número de identificación de grupo proporcionado por el sistema Linux. Se almacena en el archivo /etc/group .

Información del usuario: Nos permite definir algunos datos adicionales sobre el usuario, como por ejemplo su nombre completo. Es opcional.

Directorio de inicio: es una ubicación absoluta para un usuario.

Shell: es una ubicación absoluta del shell de un usuario, es decir, /bin/bash.

Crear un nuevo usuario

Para crear un nuevo usuario mediante el comando useradd, ejecute el comando useradd seguido del nombre de usuario de la siguiente manera:

sudo useradd alvaro

El comando anterior solicitará la contraseña de administración del sistema. Introdúzcala. Se creará un usuario llamado alvaro. El usuario utiliza este nombre de usuario para iniciar sesión en el sistema. El nombre de usuario debe ser único. Considere el siguiente resultado:

Para establecer la contraseña para el usuario recién creado, ejecute el siguiente comando:

sudo passwd alvaro

El comando anterior solicitará la nueva contraseña. Introdúzcala y vuelva a escribirla. Actualizará la contraseña del usuario especificado. Considere el siguiente resultado:

Gestión de usuarios de Linux

La gestión de usuarios incluye todo, desde la creación de un usuario hasta su eliminación en el sistema. La gestión de usuarios se puede realizar de tres formas en un sistema Linux. Las herramientas gráficas son fáciles de usar y adecuadas para nuevos usuarios, ya que garantizan que no tendrás ningún problema.

Las herramientas de línea de comandos incluyen comandos como useradd, userdel, passwd, etc. Estos son utilizados principalmente por los administradores del servidor. La tercera y muy rara herramienta es editar los archivos de configuración local directamente usando vi.

/etc/passwd

La base de datos de usuarios local en Linux es el directorio /etc/passwd.

Observa la captura de pantalla anterior. Tiene siete columnas separadas por dos puntos. Las columnas de la izquierda indican el nombre de usuario, una x, el ID del usuario, el ID del grupo principal, una descripción, el nombre del directorio de inicio y un shell de inicio de sesión.

root

El usuario root es el superusuario y tiene todos los poderes para crear y eliminar usuarios, e incluso puede iniciar sesión con la cuenta de otro usuario. El usuario root siempre tiene el ID de usuario 0.

usuarioadd

Con los comandos useradd puedes agregar un usuario.

Sintaxis:

usuarioadd -m -d /inicio/<nombre de usuario> -c "<nombre de usuario><nombre de usuario>  

Ejemplo:

useradd -m -d /inicio/shadow -c "Shadow" shadow -g shadow

Mire la instantánea de arriba, hemos creado un usuario shadow junto con la creación de un directorio de inicio (-m), estableciendo el nombre del directorio de inicio (-d) y una descripción (-c).

‘shadow’ recibió el ID de usuario 1006 y el ID de grupo shadow.

/etc/default/useradd

El archivo /etc/default/useradd contiene algunas opciones predeterminadas del usuario. Se puede utilizar el comando useradd -D para visualizar este archivo.

Sintaxis:

useradd -D  

Userdel

Para eliminar una cuenta de usuario se utiliza el comando userdel.

Sintaxis:

userdel <nombre de usuario>  

Ejemplo:

 userdel -r shadow  

Observa la captura de pantalla anterior. Primero mostramos la cuenta de usuario xyz con el comando ‘tail’. Para eliminarla, se pasa el comando “userdel -r shadow” . Para volver a verificar, se pasa nuevamente el comando ‘tail’ y, como puede ver, no se muestra ninguna cuenta de usuario shadow. Por lo tanto, se elimina.

Eliminar directorios de inicio

Al utilizar la opción userdel -r , puede eliminar el directorio de inicio junto con la cuenta de usuario.

Sintaxis:

usuariodel -r <nombre de usuario>  

Ejemplo:

userdel -r dark~

Observa la instantánea de arriba, tanto el directorio de inicio como la cuenta de usuario John se eliminan.

El comando userdel tiene más opciones que puedes explorar

También  te recomendamos consultar las páginas man para este comando:

 man userdel

Modificador de usuario

El comando usermod se utiliza para modificar las propiedades de un usuario existente.

Sintaxis:

usermod -c <'nuevoNombre'> <nombre antiguo>  

Ejemplo:

usermod -c 'romi' romina  

Observa la instantánea de arriba, el nombre de usuario romina es reemplazado por el nuevo nombre de usuario romi

/etc/skel/

El directorio /etc/skel/ contiene algunos archivos ocultos que contienen configuraciones de perfil y valores predeterminados para las aplicaciones. Por lo tanto, funciona como directorio de inicio y perfil de usuario predeterminados. Al utilizar la opción useradd -m, el directorio /etc/skel/ se copia al directorio recién creado.

Mire la instantánea de arriba, se enumeran los archivos de /etc/skel/.

El comando usermod tiene más opciones que puedes explorar

usermod --help

 man usermod

Importancia de estos comandos para hackers

Para los hackers, conocer y entender los comandos useradd, userdel y usermod es fundamental por varias razones:

1. Creación de cuentas encubiertas

Un hacker que obtiene acceso a un sistema puede usar el comando useradd para crear una cuenta de usuario con privilegios elevados. Esta cuenta puede utilizarse para acceder al sistema en el futuro sin que los administradores lo noten.

Ejemplo de creación de un usuario encubierto:

sudo useradd -m -s /bin/bash -G sudo hacker

Este comando crea una cuenta llamada hacker con privilegios de superusuario, que puede ser usada para obtener acceso completo al sistema sin levantar sospechas.

2. Eliminación de rastros

Una vez que un hacker ha comprometido un sistema y ha utilizado una cuenta temporal, puede eliminar esa cuenta para borrar cualquier evidencia de su actividad. Usar userdel con la opción -r elimina tanto la cuenta como todos los archivos asociados, lo que dificulta la tarea de los administradores de rastrear las actividades maliciosas.

Ejemplo de eliminación de una cuenta maliciosa:

sudo userdel -r hacker

Esto elimina al usuario hacker y borra todos los archivos relacionados, dificultando que los administradores detecten su actividad.

3. Modificación de usuarios existentes

Los hackers también pueden usar el comando usermod para modificar cuentas de usuario existentes. Por ejemplo, pueden agregar su propia cuenta a grupos con privilegios elevados como sudo, o cambiar el shell predeterminado para facilitar la ejecución de comandos maliciosos.

Ejemplo de escalada de privilegios:

sudo usermod -aG sudo hacker

Este comando añade al usuario hacker al grupo sudo, dándole acceso a comandos de administración del sistema.

4. Acceso persistente

Una técnica común utilizada por hackers es crear o modificar cuentas de usuario para obtener acceso persistente al sistema. Al crear una cuenta oculta o modificar una cuenta existente, un hacker puede garantizarse acceso incluso después de que el sistema sea reiniciado o actualizado.

Ejemplo de bloqueo de cuenta para desactivar temporalmente el acceso:

sudo usermod -L hacker

Esto bloquea temporalmente la cuenta hacker, evitando su uso hasta que sea desbloqueada, lo que puede ser útil para operaciones furtivas.

5. Cambios en cuentas críticas

Si un hacker compromete una cuenta administrativa, puede modificarla para garantizar el acceso a largo plazo. Esto incluye cambiar la contraseña, agregar nuevos permisos o modificar configuraciones críticas para evitar que los administradores detecten el ataque.

Ejemplo de cambio de shell para acceso remoto:

sudo usermod -s /bin/bash root

Cambiar el shell del usuario “root” puede permitir el acceso remoto o facilitar la ejecución de comandos sin restricciones.

Buenas prácticas para mitigar riesgos

Los administradores de sistemas deben estar atentos a cómo se gestionan las cuentas de usuario para evitar que estas técnicas sean utilizadas por atacantes. Algunas buenas prácticas incluyen:

  1. Monitoreo de cuentas: Es fundamental monitorear el sistema en busca de la creación o modificación de cuentas de usuario no autorizadas.
  2. Uso de autenticación fuerte: Implementar autenticación de dos factores (2FA) y políticas de contraseñas robustas puede dificultar el acceso no autorizado.
  3. Revisiones periódicas del archivo /etc/passwd: Este archivo contiene información sobre las cuentas de usuario. Revisar regularmente su contenido puede ayudar a detectar cuentas sospechosas.
  4. Auditoría de actividades: Configurar auditorías del sistema que registren el uso de useradd, userdel y usermod permite rastrear actividades sospechosas y detectar posibles intrusiones.
  5. Restricciones de acceso a sudo: Limitar qué usuarios pueden ejecutar comandos con sudo y monitorear el uso de este comando ayuda a prevenir la escalada de privilegios no autorizada.

Recuerde:

  • Puede utilizar tanto la GUI como la Terminal para la administración de usuarios en la gestión de usuarios de Linux
  • Puede crear, deshabilitar y eliminar cuentas de usuario mediante comandos de administración de Linux .
  • Puede agregar o eliminar un usuario a un grupo de usuarios.

Contraseña de usuario de Linux

En este capítulo se explica la contraseña de los usuarios locales. Aprenderá a cambiar la contraseña y a configurarla mediante distintos métodos. El primer método es mediante el comando passwd . El segundo método es con el comando opensssel passwd .

El comando passwd es una de las utilidades más fundamentales en los sistemas basados en Unix y Linux para la gestión de contraseñas de los usuarios. Aunque a simple vista puede parecer una herramienta sencilla, su correcto uso y conocimiento es esencial para cualquier administrador de sistemas y, de manera particular, para los hackers éticos. Este artículo explora en profundidad el funcionamiento del comando passwd, cómo se utiliza en diferentes contextos, y por qué es crucial aprenderlo, tanto para la administración de sistemas como para la ciberseguridad.

Sintaxis:

passwd [opciones] [nombre de usuario]

Donde:

  • usuario: Es el nombre del usuario cuya contraseña se desea cambiar. Si no se especifica un usuario, el comando cambiará la contraseña del usuario que ejecuta el comando.
  • opciones: Varias opciones que se pueden utilizar para cambiar o gestionar contraseñas.

Opciones disponibles en el comando `passwd` en Linux

OpciónDescripción
-d, –deleteElimina la contraseña del usuario, haciendo que la cuenta no tenga contraseña.
-e, –expireCaduca inmediatamente la contraseña de la cuenta, solicitando al usuario que la cambie en el próximo inicio de sesión.
-h, –helpMuestra ayuda relacionada con el comando `.passwd`
-i, –inactiveEstablece el número de días después de la expiración de la contraseña antes de que se desactive la cuenta.
-k, –keep-tokensCambia la contraseña solo si ha expirado, conservando los tokens de autenticación si no ha expirado.
-l, –lookBloquea la contraseña del usuario, impidiendo el inicio de sesión con contraseña. Se pueden seguir utilizando otros métodos de autenticación, como las claves SSH.
-n, –mindaysCambia el número mínimo de días entre cambios de contraseña, evitando que el usuario cambie la contraseña durante un período específico.
-q, –quietHabilita el modo silencioso, suprimiendo el mensaje habitual “Cambiando contraseña para $usuario” durante el cambio de contraseña.
-r, –repositoryCambia la contraseña de un repositorio específico.
-R, –rootAplica los cambios en el directorio especificado y utiliza los archivos de configuración de ese directorio. Esto cambia temporalmente el directorio raíz del  proceso passwd.
-S, –estatusMuestra el estado de la contraseña de un usuario, incluida la fecha del último cambio, la edad mínima, la edad máxima, el período de advertencia y el período de inactividad.
-a, –allMuestra el estado de la contraseña de todos los usuarios. Requiere el uso de  -S la opción.
-u, –unblockDesbloquea la contraseña de una cuenta, permitiendo iniciar sesión con la contraseña.
-w, –warndaysCambia el número de días antes de que caduque la contraseña para mostrar una advertencia.
-x, –maxdaysEstablece el número máximo de días que una contraseña es válida. Después de MAX_DAYS, el usuario se ve obligado a cambiar la contraseña.

Usando el comando passwd

El usuario puede configurar la contraseña con el comando passwd . La contraseña anterior debe escribirse dos veces antes de ingresar la nueva.

El comando passwd permite cambiar la contraseña de un usuario en un sistema Unix o Linux. Su principal función es actualizar y gestionar las credenciales de los usuarios, manteniendo la seguridad del sistema a través de contraseñas fuertes y bien protegidas.

Cuando un usuario o administrador ejecuta el comando passwd, el sistema solicita una nueva contraseña y luego la cifra antes de almacenarla en un archivo especial. Este archivo, llamado /etc/shadow, contiene contraseñas cifradas y es inaccesible para usuarios no privilegiados. El comando passwd no solo cambia la contraseña, sino que también se utiliza para establecer políticas de contraseñas, como la caducidad o la longitud mínima de la misma.

  • Si no es el usuario root, se le pedirá que ingrese su contraseña actual para continuar.
  • Luego se le solicitará que ingrese la nueva contraseña. Escriba la nueva contraseña y presione Enter.
  • Vuelva a escribir la nueva contraseña cuando se le solicite confirmarla.
  • Ahora se ha cambiado la contraseña de la cuenta de usuario especificada.

Observa la captura de pantalla anterior. El shell advierte al usuario que no debe crear una contraseña simple. Finalmente, después de dos o tres intentos, si no se cambia la contraseña, el comando passwd falla y debes pasar el comando nuevamente. Sin embargo, estas reglas no se aplican al usuario root, que tampoco necesita escribir la contraseña anterior. Puede cambiar la contraseña directamente.

Sintaxis:

 passwd <nombre de usuario>  

Ejemplo:

 passwd romina

Mire la instantánea de arriba, la contraseña se cambió exitosamente sin ninguna advertencia.

  • Si no es el usuario root, es posible que se le solicite que ingrese su contraseña actual para continuar.
  • Luego se le solicitará que ingrese la nueva contraseña. Escriba la nueva contraseña y presione Enter. Linux no muestra ningún carácter en la pantalla mientras escribe la contraseña por razones de seguridad.
  • Vuelva a escribir la nueva contraseña cuando se le solicite confirmarla.
  • La contraseña para el usuario “romina” ahora ha cambiado.

Los archivos shadow

Los archivos shadow son las contraseñas de usuario cifradas que se guardan en /etc/shadow . Este archivo es un directorio de solo lectura y solo puede leerlo el usuario root.

Sintaxis:

/etc/shadow

Mire la instantánea de arriba, el archivo /etc/shadow contiene nueve columnas separadas por dos puntos.

De izquierda a derecha, estas nueve columnas contienen el nombre de usuario, la contraseña cifrada, el día en que se modificó la contraseña por última vez, el número de días que debe permanecer sin modificar la contraseña, el día en que vence la contraseña, el número de días de advertencia antes de que expire la contraseña, el número de días después de que vence la contraseña antes de deshabilitar la cuenta y el día en que se deshabilitó la cuenta. La última columna aún no tiene significado.

los usuarios normales pueden usar sudo para invocar privilegios de root y pueden cambiar la contraseña del propio root. Esto es particularmente útil cuando un usuario es miembro del grupo admin (ocupa una posición en la lista de sudoers (/etc/sudoers) y puede usar comandos con sudo) y la contraseña de root no está configurada, lo que sucede con muchas distribuciones comunes de Linux.

 sudo pass root

Cifrado con contraseña

Las contraseñas siempre se almacenan en formato cifrado. El cifrado se realiza con la función crypt. La forma más sencilla de agregar un usuario con una contraseña es agregar el usuario con el comando useradd -m y luego configurar la contraseña del usuario con el comando passwd .

Sintaxis:

useradd  <nombre de usuario>  

Ejemplo:

Useradd chirou

Sintaxis:

passwd <contraseña>  

Ejemplo:

passwd ****  

Mire la instantánea de arriba, el nombre de usuario akki se creó con una contraseña correctamente.

Usando la contraseña de openssl

Cifrado con openssl

Para crear un usuario con contraseña también se utiliza la opción -p , pero requiere una contraseña cifrada.

Esta contraseña cifrada se puede generar con el comando openssl passwd.

El comando openssl passwd puede generar varios hashes distintos para la misma contraseña. Para ello, utiliza salt .

Esta sal se puede elegir y es visible como los dos primeros caracteres del hash como se muestra a continuación.

Observa la instantánea de arriba, los dos primeros caracteres comienzan desde la venta definida ’32’ .

Para crear un usuario con contraseña usando el comando openssl, se utiliza la siguiente sintaxis.

Sintaxis:

useradd -p $(openssl passwd chirou) <nombre de usuario>  

Ejemplo:

useradd -p $(openssl passwd chirou) alvaro24  

Mire la instantánea de arriba, se crea el usuario aaa y su contraseña se guarda en el historial de comandos.

/etc/login.defs

El archivo /etc/login.defs contiene algunas configuraciones predeterminadas, como la antigüedad y la longitud de las contraseñas.

Sintaxis:

grep PASS /etc/login.defs  
change

El comando chage puede ser utilizado por un usuario para conocer la información sobre su contraseña. La opción -l se utiliza para listar la información.

Sintaxis:

change -l <nombre de usuario>  

Ejemplo:

change -l alvaro  

Deshabilitar una contraseña

Las contraseñas en /etc/shadow no se guardan comenzando con un signo de exclamación (!) . Si hay un signo de exclamación al inicio, no se puede usar la contraseña.

Esta función se puede utilizar para desactivar una contraseña y el proceso se denomina bloquear, desactivar y suspender una cuenta de usuario. Se puede realizar en vi o con el comando usermod .

Aquí, deshabilitaremos la contraseña de romina con el comando usermod.

Sintaxis:

usermod -L <nombre de usuario>  

Ejemplo:

usermod -L romina  

Observa la captura de pantalla anterior. El primer comando muestra la contraseña cifrada de romina y el comando “usermod -L romina” desactiva la contraseña de romina. Ahora el usuario romina no puede autenticarse con esta contraseña. Mire la instantánea de arriba, la contraseña codificada está precedida por ! , lo que significa que está deshabilitada.

Tenga en cuenta que el usuario root podrá abrir la cuenta de romina, ya que no se necesita contraseña. Y si el usuario romina no hubiera configurado una contraseña, romina también podrá iniciar sesión.

Desbloquear tu cuenta con usermod -U .

Sintaxis:

usermod  -U <nombre de usuario>  

Ejemplo:

usermod  -U romina

Mire la instantánea de arriba, la contraseña hash de romina ahora está desbloqueada ya que no hay ninguna marca (!) al iniciar.

El comando passwd tiene más opciones que puedes explorar

 passwd --help

Cómo establecer la caducidad de la contraseña

La -xopción le permite establecer el número máximo de días que una contraseña es válida. Ejemplo:

passwd -x 30 romina

Esto establece una antigüedad máxima de contraseña de 30 días para el usuario “romina”

Procesando en el comando passwd:

  • Verificar la contraseña actual del usuario : una vez que el usuario ingresa el comando passwd, se le solicita la contraseña actual del usuario, que se verifica con la contraseña almacenada en el archivo /etc/shadow user. El usuario root puede omitir este paso y cambiar directamente la contraseña, de modo que se puedan recuperar las contraseñas olvidadas.
  • Verificar la información de caducidad de la contraseña: en Linux, se puede configurar la contraseña de un usuario para que caduque después de un período de tiempo determinado. Además, se puede prohibir a un usuario cambiar su contraseña durante un período determinado. Esta información de caducidad de la contraseña (y la contraseña en sí) se almacena en un archivo /etc/shadow.
  • Cambiar la contraseña: después de la autenticación, se le solicita al usuario que ingrese la nueva contraseña y la verifique volviendo a escribirla.
  • Archivo /etc/shadow: El archivo shadow es una lista de valores separados por dos puntos con 9 campos, como se muestra a continuación:

usuario1:$6$x8wAJRpP$EWC97sXW5tqac10Q2TQyXkR.1l1jdK4VLK1pkZKmA2mbA6UnSGyo94Pis074viWBA3sVbkCptSZzuP2K.y.an/:17887:0:99:9:97:9

  • Campo 1: Nombre de usuario.
  • Campo 2: Contraseña cifrada.
  • Campo 3: Número de días desde el 1 de enero de 1970 hasta la última vez que se cambió la contraseña.
  • Campo 4: Número mínimo de días durante los cuales no se puede cambiar la contraseña. (el valor 0 significa que se puede cambiar en cualquier momento).
  • Campo 5: Número de días después de que se debe cambiar la contraseña. (el valor 99999 significa que la contraseña nunca caduca).
  • Campo 6: Número de días para advertir al usuario sobre la expiración de la contraseña.
  • Campo 7: Número de días después de que caduca la contraseña que la cuenta estará deshabilitada.
  • Campo 8: El número de días desde el 1 de enero de 1970 hasta la fecha en que se deshabilitó una cuenta.
  • Campo 9: Este campo está reservado para algún posible uso futuro.

Ayuda de passwd

El comando passwd tiene más opciones que puedes explorar

passwd --help

También  te recomendamos consultar las páginas man para este comando:

 man passwd

El Archivo /etc/shadow

Cuando el comando passwd cambia una contraseña, lo que realmente ocurre es que se actualiza el archivo /etc/shadow. Este archivo contiene las contraseñas encriptadas de todos los usuarios del sistema.

Un ejemplo de una línea dentro de /etc/shadow podría ser:

usuario:$6$asDK31H9$GqXlKV1BrkJmJ1p6DKzX2z..S8N.:18001:0:99999:7:::

Importancia del Comando passwd para la Seguridad

El comando passwd es fundamental para la seguridad del sistema, ya que las contraseñas son la primera línea de defensa contra accesos no autorizados. La correcta gestión de contraseñas evita que usuarios malintencionados exploten vulnerabilidades relacionadas con credenciales débiles o desactualizadas.

  • Fortalece la Seguridad: Mediante el uso de contraseñas fuertes y la imposición de políticas de expiración de contraseñas, passwd garantiza que las contraseñas se actualicen periódicamente y no permanezcan vulnerables durante demasiado tiempo.
  • Control de Accesos: Con el comando passwd, los administradores pueden controlar el acceso a las cuentas de usuario mediante el bloqueo o la eliminación de contraseñas, especialmente en situaciones de sospecha de actividad maliciosa.
  • Prevención de Ataques: Al implementar políticas de cambio de contraseña, los administradores pueden mitigar el riesgo de ataques de fuerza bruta o de diccionario, que se centran en contraseñas débiles o antiguas.

¿Por Qué es Importante para los Hackers Aprender el Comando passwd?

Los hackers, en especial los hackers éticos o pentesters, deben tener un conocimiento profundo del comando passwd por varias razones:

  1. Explotación de Vulnerabilidades en Sistemas Mal Configurados: Un hacker puede identificar sistemas donde las políticas de contraseñas no se han configurado adecuadamente o donde las contraseñas son débiles. Con el conocimiento adecuado del archivo /etc/shadow, un atacante podría intentar obtener contraseñas cifradas y realizar ataques de fuerza bruta o criptoanálisis fuera de línea.
  2. Evasión de Bloqueos: En algunos casos, los hackers malintencionados podrían intentar evadir medidas de seguridad como bloqueos de cuentas mediante manipulaciones en las configuraciones de contraseñas o el desbloqueo de cuentas previamente bloqueadas. El conocimiento de cómo se bloquean y desbloquean cuentas a través de passwd es útil para proteger un sistema de tales intentos.
  3. Cambiar Contraseñas y Mantener Acceso: Un hacker que logra acceso de administrador en un sistema puede utilizar el comando passwd para cambiar las contraseñas de los usuarios, creando cuentas persistentes para facilitar el acceso en el futuro. Sin embargo, en el contexto de hacking ético, este tipo de pruebas pueden ayudar a los administradores a identificar debilidades y aplicar contramedidas.
  4. Hardening y Fortalecimiento de Sistemas: Un hacker ético debe estar familiarizado con el comando passwd para ayudar a implementar medidas de “hardening” en sistemas, como la obligatoriedad de contraseñas fuertes, el forzado de caducidad periódica, y la imposición de restricciones de cambio de contraseña.

¿Cómo cambiar la contraseña de un usuario en Linux?

Para cambiar la contraseña de un usuario en Linux, passwdse suele utilizar el siguiente comando. Si es un usuario habitual que desea cambiar su propia contraseña, simplemente escriba:

passwd

Se le pedirá que ingrese su contraseña actual para verificación, seguida de la nueva contraseña dos veces (la segunda vez para confirmación).

Si es administrador (o tiene privilegios de sudo) y necesita cambiar la contraseña de otro usuario, especifique el nombre de usuario después del comando passwd:

sudo passwd nombre de usuario

Esto le pedirá que ingrese una nueva contraseña para el usuario especificado, sin necesidad de ingresar la contraseña actual.

¿Para qué se utiliza el comando passwd además de para cambiar contraseñas?

Además de cambiar las contraseñas de los usuarios, el comando passwd también permite administrar varios aspectos de las contraseñas de los usuarios, incluidos:

  • Configuración de la información de caducidad de la contraseña : los administradores pueden utilizarla passwdpara cambiar la política de caducidad/antigüedad de la contraseña.
  • Bloquear y desbloquear cuentas de usuario : passwdpuede deshabilitar o habilitar cuentas de usuario bloqueándolas o desbloqueándolas.
  • Cambiar las fechas de vencimiento de la cuenta o contraseña : permite establecer o cambiar la fecha en la que se deshabilitará la cuenta de un usuario o cuando se debe cambiar la contraseña.

¿Cómo obligar a un usuario a cambiar su contraseña en el próximo inicio de sesión?

Para obligar a un usuario a cambiar su contraseña en el próximo inicio de sesión, utilice el comando passwd con la –expireopción:

sudo passwd –expire nombre de usuario

Este comando efectivamente caduca la contraseña inmediatamente, solicitando al usuario que establezca una nueva contraseña la próxima vez que inicie sesión.

¿Cuáles son algunas opciones comunes para el comando passwd?

El comando passwd incluye varias opciones que proporcionan control sobre las contraseñas y cuentas de los usuarios:

  • -d : elimina una contraseña, haciendo que la cuenta no tenga contraseña, sujeta a la política del sistema.
  • -e, –expire : obliga al usuario a cambiar su contraseña en el próximo inicio de sesión.
  • -l, –lock : bloquea la cuenta de usuario.
  • -u, –unlock : desbloquea la cuenta de usuario.
  • -n, –mindays DÍAS : Establece el número mínimo de días entre cambios de contraseña en DÍAS.
  • -x, –maxdays DÍAS : Establece el número máximo de días que la contraseña es válida.
  • -w, –warndays DÍAS : Establece la cantidad de días que se advierte al usuario antes de que su contraseña expire.
  • -i, –inactive INACTIVO : Establece el número de días después de que caduca una contraseña hasta que la cuenta se deshabilita permanentemente.

Grupos de Linux

Los usuarios pueden incluirse en diferentes grupos. Los grupos nos permiten establecer permisos a nivel de grupo en lugar de establecerlos a nivel individual.

Cada distribución de Linux tiene una herramienta gráfica para administrar grupos. Los grupos se pueden administrar mediante herramientas gráficas, herramientas de línea de comandos y mediante vi, según la experiencia del usuario. Solo los usuarios experimentados deberían usar vi para administrar grupos, ya que esto hará los bloqueos o cambios adecuados en el archivo.

Los grupos de Linux son comunidades de usuarios que tienen el derecho de administrar y organizar los usuarios y los permisos de archivos en un sistema Linux. El motivo principal para crear un grupo es definir el conjunto de permisos, como permisos de lectura y escritura, o permitir el uso compartido de recursos de los grupos.

Tipos de grupos de Linux

En el sistema basado en Linux, existen dos tipos de grupos, que son:

  • Grupo primario
  • Grupo secundario o suplementario

Grupo principal: cuando creamos un archivo a través de una cuenta de usuario específica, de manera predeterminada, el grupo de archivos se establece en el grupo principal del usuario. Proporcionará el mismo nombre que el grupo de usuarios del archivo como nombre de la cuenta de usuario. El grupo principal almacena la información del usuario en el archivo /etc/passwd.

Grupo secundario o suplementario: El motivo principal para crear un grupo secundario

es permitir el permiso específico a usuarios limitados. Por ejemplo, si queremos agregar cualquier usuario al grupo sudo, el usuario agregado heredará los derechos de sudo y podrá ejecutar los comandos de sudo. Si agregamos un usuario al grupo docker, heredará las propiedades del grupo docker y podrá ejecutar los comandos docker.

Se puede agregar un usuario a un solo grupo principal. No es necesario agregar un usuario a un grupo secundario, por lo que se puede agregar un usuario a cero o más grupos secundarios.


Nota: Solo el usuario root tiene derecho a agregar un usuario a un grupo.

 groups  

El comando de grupo informa sobre el grupo al que pertenece el usuario actual.

Sintaxis:

 groups  

Sinceramente este comando no tiene “muchas opciones”

También  te recomendamos consultar las páginas man para este comando:

 man groups

Agregar un grupo

Para crear un nuevo grupo de usuarios en un sistema Linux, ejecute el comando groupadd, seguido del nombre del grupo. Necesitará el acceso sudo para obtener los permisos elevados. Ejecute el comando de la siguiente manera:

Sintaxis:

grupoadd <nombre del grupo>  

Ejemplo:

groupadd python
groupadd js
groupadd php  
groupadd java  

El comando anterior solicitará la contraseña administrativa del sistema. Escriba la contraseña. Observe el siguiente resultado:

Mire la instantánea de arriba, los grupos python, js, php y java se crean con el comando groupadd.

Archivo de grupo

El archivo /etc/group define la pertenencia al grupo. Un usuario puede ser miembro de más de un grupo.

Sintaxis:

 tail /etc/group

Observa la captura de pantalla anterior: la primera columna indica el nombre del grupo, la segunda es la contraseña cifrada del grupo, que también puede quedar vacía, la tercera es la identificación del grupo (GID) y la cuarta es la lista de miembros. La cuarta lista está vacía porque estos grupos no tienen miembros.

El comando groupadd tiene más opciones que puedes explorar

 groupadd --help

También te recomendamos consultar las páginas man para este comando:

 man groupsadd

Modificador de usuario

Los miembros del grupo se pueden editar con el comando usermod o useradd . Si un grupo no está en la lista, de forma predeterminada, el comando usermod eliminará al usuario de todos los grupos de los que sea miembro. Aquí, se utiliza la opción -a (agregar) para evitar que esto suceda.

Sintaxis:

usermod -a -G <grupo> <nombre de usuario>  

Ejemplo:

usermod -a -G js carlos  
usermod -a -G js alvaro
usermod -a -G js hacker

Observa la captura de pantalla anterior. Hemos mostrado la lista de /etc/group. Los usuarios carlos, alvaro y hacker se han agregado al grupo js.

El comando usermod tiene más opciones que puedes explorar

 usermod –help

También te recomendamos consultar las páginas man para este comando:

 man usermod

groupdel

El comando groupdel eliminará un grupo de forma permanente del sistema.

Sintaxis:

groupdel <grupo>  

Ejemplo:

groupdel js

Mire la instantánea de arriba, el grupo js se elimina del sistema.

El comando groupdel tiene más opciones que puedes explorar

 groupdel –help

También te recomendamos consultar las páginas man para este comando:

 man groupdel


Nota: Solo el usuario root tiene derecho a agregar un usuario a un grupo.

Puntos clave del artículo con resúmenes

1. Usuarios y grupos en Linux

  • Cada usuario tiene un UID y un GID asociados, lo que simplifica la gestión de permisos.
  • Los nombres de usuario y grupo se almacenan en el archivo /etc/passwd.
  • Los procesos y archivos también tienen un propietario asignado, lo que regula el acceso.

2. Comandos básicos para gestionar usuarios

  • useradd: Crea nuevos usuarios. Ejemplo: sudo useradd alvaro.
  • passwd: Establece una contraseña para el usuario. Ejemplo: sudo passwd alvaro.
  • userdel: Elimina usuarios y, opcionalmente, su directorio de inicio. Ejemplo: sudo userdel -r alvaro.
  • usermod: Modifica propiedades de un usuario existente. Ejemplo: sudo usermod -aG sudo alvaro (añade al grupo sudo).

3. Acceso administrativo con su y sudo

  • su:
    • Permite cambiar de usuario temporalmente.
    • Si no se especifica un usuario, asume el cambio al usuario root. Ejemplo: su -.
  • sudo:
    • Ejecuta un solo comando con permisos elevados.
    • Requiere configuración en el archivo /etc/sudoers. Ejemplo: sudo apt update.

4. Monitoreo y auditoría de usuarios

  • who: Lista usuarios conectados actualmente.
  • id: Muestra UID, GID y grupos asociados a un usuario. Ejemplo: id alvaro.
  • ps aux: Lista procesos en ejecución y sus propietarios.
  • w: Muestra usuarios conectados y su actividad actual.

5. Directorios y archivos relacionados con usuarios

  • /etc/passwd: Contiene información sobre usuarios, como nombre, UID, y shell predeterminado.
  • /etc/shadow: Almacena contraseñas encriptadas.
  • /etc/skel: Plantilla para los directorios de inicio de nuevos usuarios.

6. Configuración del archivo sudoers

  • /etc/sudoers: Define quién puede ejecutar comandos con sudo.
  • Usar visudo para editar el archivo sin errores. Ejemplo: alvaro ALL=(ALL) NOPASSWD: ALL Esto otorga a alvaro acceso sin contraseña a todos los comandos.

7. Seguridad y prácticas recomendadas

  • Limitar el acceso al comando sudo solo a usuarios necesarios.
  • Revisar regularmente los archivos /etc/passwd y /etc/sudoers.
  • Auditar los logs de sudo para detectar actividades sospechosas.

Conclusión

Este artículo proporciona una guía completa para comprender y gestionar usuarios en Linux. Desde la creación y modificación de cuentas hasta el uso de herramientas administrativas como sudo y su, dominar estas habilidades es esencial para administradores de sistemas, hackers éticos, y usuarios avanzados que buscan maximizar la seguridad y eficiencia en su entorno Linux.

Pon en práctica lo aprendido

Ahora pon a prueba lo aprendido con estas preguntas y ejercicios.

Preguntas sobre el artículo:

  1. ¿Qué comando permite ver el nombre de usuario actual del sistema?
  2. ¿Cuál es la diferencia entre los comandos who y whoami?
  3. ¿Qué significa el UID en Linux y cómo se relaciona con los usuarios?
  4. ¿Cómo puedes crear un usuario nuevo en Linux utilizando la terminal?
  5. ¿Qué comando se utiliza para eliminar un usuario y su directorio de inicio asociado?
  6. ¿Cómo se puede bloquear temporalmente el acceso a una cuenta de usuario en Linux?
  7. ¿Qué diferencia hay entre los comandos su y sudo?
  8. ¿Por qué es recomendable usar el comando visudo para editar el archivo /etc/sudoers?
  9. ¿Cómo puedes agregar un usuario al grupo sudo para otorgarle permisos administrativos?
  10. Explica por qué el archivo /etc/passwd es crítico en Linux y qué información contiene.

Ejercicios sobre el contenido:

  1. Usa el comando who para listar los usuarios conectados en el sistema y compara con el resultado de w.
  2. Crea un usuario llamado prueba, establece una contraseña y verifica su UID.
  3. Bloquea la cuenta del usuario prueba y verifica el estado del bloqueo.
  4. Añade al usuario prueba al grupo sudo y verifica su pertenencia con id.
  5. Cambia la descripción del usuario prueba con usermod.
  6. Elimina al usuario prueba junto con su directorio de inicio.
  7. Usa sudo para instalar un paquete (por ejemplo, htop) en el sistema y explica el proceso.
  8. Lista los usuarios y sus respectivas UIDs y GIDs del archivo /etc/passwd.
  9. Modifica el shell predeterminado del usuario prueba a /bin/bash y verifica el cambio.
  10. Configura una cuenta para que no pueda iniciar sesión cambiando su shell a /sbin/nologin.

Respuestas a las preguntas:

  1. El comando para ver el nombre de usuario actual es whoami.
    Ejemplo: whoami
  2. Diferencias entre who y whoami:
    • who: Lista los usuarios conectados al sistema en ese momento.
    • whoami: Muestra el nombre del usuario actual que ejecuta el comando.
  3. UID en Linux: Es un identificador único numérico asignado a cada usuario. Por ejemplo, el UID 0 corresponde al usuario root.
  4. Para crear un usuario nuevo: sudo useradd -m nombre_usuario sudo passwd nombre_usuario
  5. Comando para eliminar un usuario y su directorio de inicio: sudo userdel -r nombre_usuario
  6. Bloquear temporalmente el acceso a una cuenta: sudo usermod -L nombre_usuario
  7. Diferencia entre su y sudo:
    • su: Cambia a otro usuario, creando un shell para él.
    • sudo: Ejecuta un único comando con permisos de superusuario, sin cambiar completamente de usuario.
  8. Usar visudo para editar /etc/sudoers:
    visudo verifica errores de sintaxis antes de guardar los cambios en /etc/sudoers, previniendo configuraciones corruptas que podrían bloquear el acceso administrativo.
  9. Agregar un usuario al grupo sudo: sudo usermod -aG sudo nombre_usuario
  10. Importancia de /etc/passwd:
    Este archivo contiene información básica de los usuarios, como nombre, UID, GID, directorio de inicio y shell. Es esencial para la autenticación y administración del sistema.

Respuestas a los ejercicios:

  1. Usar who y w: who w Compara la salida: who muestra los usuarios conectados, mientras que w también detalla lo que están haciendo.
  2. Crear un usuario prueba y establecer una contraseña: sudo useradd -m prueba sudo passwd prueba id prueba
  3. Bloquear la cuenta prueba y verificar el estado: sudo usermod -L prueba passwd -S prueba
  4. Añadir prueba al grupo sudo y verificar: sudo usermod -aG sudo prueba id prueba
  5. Cambiar la descripción del usuario prueba: sudo usermod -c "Usuario de prueba" prueba finger prueba
  6. Eliminar al usuario prueba y su directorio de inicio: sudo userdel -r prueba ls /home
  7. Instalar un paquete con sudo: sudo apt update sudo apt install htop Explicación: El comando ejecuta la instalación del paquete con privilegios de superusuario, solicitando autenticación.
  8. Listar usuarios del archivo /etc/passwd: cat /etc/passwd
  9. Cambiar el shell del usuario prueba a /bin/bash: sudo usermod -s /bin/bash prueba grep prueba /etc/passwd
  10. Configurar una cuenta para que no pueda iniciar sesión: sudo usermod -s /sbin/nologin prueba Verifica el cambio: grep prueba /etc/passwd

No te detengas, sigue avanzando

Aquí tienes un propósito que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Sobre los autores

Álvaro Chirou

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes seguirme en mis redes:

Laprovittera Carlos

Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:

Hacker de 0 a 100 desde las bases hasta conseguir empleo

¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/hacker-de-0-a-100-desde-las-bases-hasta-conseguir-empleo/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.

Hemos creado una ruta de 0 a 100. Un plan de desarrollo que va desde las bases: cómo aprender hacking, qué aprender, en qué orden; pasando por las areas técnicas necesarias como Linux, Redes, Programación y los conocimientos necesarios en ciber seguridad, hacking, pentesting hasta la práctica y el inicio laboral: Crear tu propio laboratorio, certificaciones, adquirir experiencia e iniciarse laboralmente.

Este es un mega post. Una guía con más de 250 artículos que te llevaran por el camino del hacker. Esta guía es gratuita y esta creada gracias al esfuerzo y al trabajo combinado de Alvaro Chirou y mío (Laprovittera Carlos).

Creamos esta guía (futuro curso) para que puedas iniciarte en este mundo. Puedes arrancar ahora, GRATIS, solo necesitas un PC, conexión a internet y paciencia (Ser hacker NO ES un camino de la noche a la mañana).

El Hacking y la ciberseguridad es una carrera divertida, emocionante y gratificante que te recompensará y desafiará por igual. Sin embargo, para quienes buscan adentrarse en este campo en auge y en constante evolución, puede resultar difícil saber por dónde empezar. ¡Ahí es donde entra en juego nuestra guía en ciberseguridad!

Esta es la hoja de ruta hacia el trabajo de ciberseguridad de tus sueños. Te ayudará a entender qué conocimientos, habilidades y certificados son necesarios para alcanzar tus metas profesionales y tener una carrera próspera. Si quieres ser consultor de ciberseguridad, analista de malware, evaluador de penetración, analista de SOC o cualquier otro puesto de ciberseguridad, esta guía es lo que necesitas.

SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS

Aprende con nuestros más de 100 cursos que tenemos disponibles para vos

Compartimos estos recursos para ayudar a la comunidad de hacking y ciberseguridad. COMPARTE y Siéntete libre de agregar más sugerencias en los comentarios a continuación, respondemos todos y cada uno de los comentarios.

Saludos amigos y happy hacking!!!