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.
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
Lista de aprendizajes del artículo sobre usuarios en Linux
- 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).
- Gestión de usuarios:
- Crear, eliminar y modificar cuentas de usuario utilizando comandos como
useradd
,userdel
, yusermod
. - Establecer contraseñas para los usuarios y asignarlos a grupos.
- Crear, eliminar y modificar cuentas de usuario utilizando comandos como
- 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
.
- Identificar usuarios conectados (
- 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.
- Ejecutar comandos con permisos de superusuario sin iniciar sesión como
- 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.
- Estructura y función del archivo
- Importancia de la gestión adecuada de usuarios:
- Prevención de accesos no autorizados.
- Monitoreo y auditoría de actividades de usuarios y administradores.
- 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ón | Sintaxis |
-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. | sudo -V |
-l | La opción -l (lista) imprimirá los comandos permitidos (y prohibidos) para el usuario en el host actual. | sudo -l |
-h o –help | La opción -h (ayuda) hace que sudo imprima un mensaje de uso y salga. | sudo -h |
-v | Si 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 |
-k | La 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 |
-K | De 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 |
-b | La 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) |
-p | El 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 a | sudo -p “Ingresa tu contraseña” [comando] (reemplace “comando” con el comando que desea ejecutar en segundo plano) |
-n | La 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) |
-u | La 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) |
-s | La 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) |
-H | La 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) |
-S | La 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) |
-a | La 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
Etiqueta | Descripció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 :
Dominio | Descripción |
sudo adduser nombre de usuario | Agrega 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 NOMBREUSUARIO | Agregar usuario a un grupo de usuarios |
sudo deluser NOMBRE DEL GRUPO DE USUARIOS | Eliminar usuario de un grupo de usuarios |
dedo | Proporciona información sobre todos los usuarios conectados. |
nombre de usuario de dedo | Proporciona 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:
- Monitoreo de cuentas: Es fundamental monitorear el sistema en busca de la creación o modificación de cuentas de usuario no autorizadas.
- 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.
- 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.
- 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.
- 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ón | Descripción |
-d, –delete | Elimina la contraseña del usuario, haciendo que la cuenta no tenga contraseña. |
-e, –expire | Caduca inmediatamente la contraseña de la cuenta, solicitando al usuario que la cambie en el próximo inicio de sesión. |
-h, –help | Muestra ayuda relacionada con el comando `.passwd` |
-i, –inactive | Establece 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-tokens | Cambia la contraseña solo si ha expirado, conservando los tokens de autenticación si no ha expirado. |
-l, –look | Bloquea 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, –mindays | Cambia 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, –quiet | Habilita el modo silencioso, suprimiendo el mensaje habitual “Cambiando contraseña para $usuario” durante el cambio de contraseña. |
-r, –repository | Cambia la contraseña de un repositorio específico. |
-R, –root | Aplica 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, –estatus | Muestra 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, –all | Muestra el estado de la contraseña de todos los usuarios. Requiere el uso de -S la opción. |
-u, –unblock | Desbloquea la contraseña de una cuenta, permitiendo iniciar sesión con la contraseña. |
-w, –warndays | Cambia el número de días antes de que caduque la contraseña para mostrar una advertencia. |
-x, –maxdays | Establece 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:
- 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.
- 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.
- 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.
- 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 gruposudo
).
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 consudo
.- Usar
visudo
para editar el archivo sin errores. Ejemplo:alvaro ALL=(ALL) NOPASSWD: ALL
Esto otorga aalvaro
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:
- ¿Qué comando permite ver el nombre de usuario actual del sistema?
- ¿Cuál es la diferencia entre los comandos
who
ywhoami
? - ¿Qué significa el UID en Linux y cómo se relaciona con los usuarios?
- ¿Cómo puedes crear un usuario nuevo en Linux utilizando la terminal?
- ¿Qué comando se utiliza para eliminar un usuario y su directorio de inicio asociado?
- ¿Cómo se puede bloquear temporalmente el acceso a una cuenta de usuario en Linux?
- ¿Qué diferencia hay entre los comandos
su
ysudo
? - ¿Por qué es recomendable usar el comando
visudo
para editar el archivo/etc/sudoers
? - ¿Cómo puedes agregar un usuario al grupo
sudo
para otorgarle permisos administrativos? - Explica por qué el archivo
/etc/passwd
es crítico en Linux y qué información contiene.
Ejercicios sobre el contenido:
- Usa el comando
who
para listar los usuarios conectados en el sistema y compara con el resultado dew
. - Crea un usuario llamado
prueba
, establece una contraseña y verifica su UID. - Bloquea la cuenta del usuario
prueba
y verifica el estado del bloqueo. - Añade al usuario
prueba
al gruposudo
y verifica su pertenencia conid
. - Cambia la descripción del usuario
prueba
conusermod
. - Elimina al usuario
prueba
junto con su directorio de inicio. - Usa
sudo
para instalar un paquete (por ejemplo,htop
) en el sistema y explica el proceso. - Lista los usuarios y sus respectivas UIDs y GIDs del archivo
/etc/passwd
. - Modifica el shell predeterminado del usuario
prueba
a/bin/bash
y verifica el cambio. - Configura una cuenta para que no pueda iniciar sesión cambiando su shell a
/sbin/nologin
.
Respuestas a las preguntas:
- El comando para ver el nombre de usuario actual es
whoami
.
Ejemplo:whoami
- Diferencias entre
who
ywhoami
:who
: Lista los usuarios conectados al sistema en ese momento.whoami
: Muestra el nombre del usuario actual que ejecuta el comando.
- UID en Linux: Es un identificador único numérico asignado a cada usuario. Por ejemplo, el UID 0 corresponde al usuario
root
. - Para crear un usuario nuevo:
sudo useradd -m nombre_usuario sudo passwd nombre_usuario
- Comando para eliminar un usuario y su directorio de inicio:
sudo userdel -r nombre_usuario
- Bloquear temporalmente el acceso a una cuenta:
sudo usermod -L nombre_usuario
- Diferencia entre
su
ysudo
:su
: Cambia a otro usuario, creando un shell para él.sudo
: Ejecuta un único comando con permisos de superusuario, sin cambiar completamente de usuario.
- 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. - Agregar un usuario al grupo
sudo
:sudo usermod -aG sudo nombre_usuario
- 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:
- Usar
who
yw
:who w
Compara la salida:who
muestra los usuarios conectados, mientras quew
también detalla lo que están haciendo. - Crear un usuario
prueba
y establecer una contraseña:sudo useradd -m prueba sudo passwd prueba id prueba
- Bloquear la cuenta
prueba
y verificar el estado:sudo usermod -L prueba passwd -S prueba
- Añadir
prueba
al gruposudo
y verificar:sudo usermod -aG sudo prueba id prueba
- Cambiar la descripción del usuario
prueba
:sudo usermod -c "Usuario de prueba" prueba finger prueba
- Eliminar al usuario
prueba
y su directorio de inicio:sudo userdel -r prueba ls /home
- 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. - Listar usuarios del archivo
/etc/passwd
:cat /etc/passwd
- Cambiar el shell del usuario
prueba
a/bin/bash
:sudo usermod -s /bin/bash prueba grep prueba /etc/passwd
- 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…
- Cómo conseguir trabajo de hacker en 2024
- Trabaja remoto e internacionalmente como Hacker en 2024
- Se necesitan más Hackers – Hechos y estadísticas de 2024
- Se Necesitan más Hackers – La escasez de habilidades en ciberseguridad está empeorando
- El salario de un hacker – Cuanto se gana como Pentesters/ Infosec
- Las empresas te estan buscando para hacerle frente a los ciberataques
- Cómo convertirse en analista de ciberseguridad
- Inicia en hacking y ciberseguridad como analista SOC
- DevOps vs DevSecOps para Hackers
- DevOps vs DevSecOps para Empresas
¿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
- Cómo Iniciarse en Hacking y Ciberseguridad en 2024
- Hacker de 0 a 100 desde las bases hasta conseguir empleo
- Curso de Redes para Hackers
- Curso Gratis de Programación
- Curso Gratis Linux – Capitulo 1 – Introducción a Linux
- Curso Gratis de Redes – Capitulo 1 – Tipos de redes y servicios
- Guía de Hacking y Pentesting capitulo 1: Introducción al Pentesting
- Como iniciarse en TRY HACK ME – Complete Beginner #1
- OSINT #1 Más de 200 Search Tools
- Curso Gratis de Java para Hackers
- Hardware para Hackers – Los mejores 40 Dispositivos de Hacking
- Guía de Flipper Zero – Qué es y para qué sirve
- SIGUE APRENDIENDO GRATIS EN NUESTRO BLOG
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!!!