| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia |
| linux:users:start [06/09/2018 08:14] – [grupos] mate | linux:users:start [26/06/2023 03:15] (actual) – [cambio de contraseña] admin |
|---|
| ~~NOTOC~~ | ~~NOTOC~~ |
| == información usuario | == información usuario |
| * ''$ id <user>'' -> para saber datos y grupos del usuario | * ''id <user>'' -> para saber datos y grupos del usuario |
| * ''$ whoami'' -> nombre del usuario | * ''whoami'' -> nombre del usuario |
| | |
| | == usuarios en línea |
| | * ''who'' -> usuarios conectados - terminal |
| | * ''ps -U <USER>'' -> procesos asociados a un usuario |
| | * ''sudo pkill [-9] -u <USER>'' -> eliminar procesos asociados a un usuario. |
| | /via: [[https://www.simplified.guide/linux/user-force-logout]] |
| |
| == cambio de contraseña | == cambio de contraseña |
| * ''passwd [<usuario>]'' -> cambiar contraseña propia o si tienes privilegios, la contraseña de otro usuario. | * ''passwd [<USER>]'' -> cambiar contraseña propia o si tienes privilegios, la contraseña de otro usuario. |
| * ''echo 1234 | passwd --stdin jordi'' (no funciona en Debian) | * ''echo 1234 | passwd --stdin jordi'' (no funciona en Debian) |
| * ''echo "jordi:1234" | chpasswd'' (se puede añadir ''-m'' para que guarde la contraseña en formato MD5 en lugar de DES | * ''echo "jordi:1234" | chpasswd'' (se puede añadir ''-m'' para que guarde la contraseña en formato MD5 en lugar de DES |
| * ''chage -d 0 luser'' : forzar cambio de contraseña, modificación datos, expiraciones, inactividad ( CHange AGE ) | |
| * ''/etc/security/pwquality.conf'' : establece complejidad de las contraseñas a usar en el sistema | * ''/etc/security/pwquality.conf'' : establece complejidad de las contraseñas a usar en el sistema |
| | === chage (CHange AGE) |
| | * modificación datos, expiraciones, inactividad |
| | * ''chage -l <USER>'':_ comprobar "estatus" cuenta. |
| | * ''chage -d 0 <USER>'' : forzar cambio de contraseña |
| | * ''passwd -e <USER>'' |
| |
| == grupos | == grupos |
| * ''$ groupadd <nombre_grupo>'' : crear un grupo | * ''groupadd <nombre_grupo>'' : crear un grupo |
| * ''$ useradd -G <grupo> <usuario>'' : añadir nuevo usuario a otros grupos | * ''useradd -G <grupo> <usuario>'' : añadir nuevo usuario a otros grupos |
| * ''$ useradd -g <grupo> <usuario>'' : añadir/cambiar el grupo principal de un usuario | * ''usermod -g <grupo> <usuario>'' : añadir/cambiar el grupo principal de un usuario |
| * ''$ usermod -a -G <grupo> <usuario>'' : añadir un usuario existente a un grupo existente | * ''usermod -a -G <grupo> <usuario>'' : añadir un usuario existente a un grupo existente |
| * ''$ usermod -g <grupo> <usuario>'' : añadir/cambiar el grupo principal de un usuario existente | * ''newgrp <grupo>'': establece como principal el <grupo> de manera temporal, útil para no reinicar sesión y aplicar la pertenencia (según comando anterior) |
| | * ''usermod -g <grupo> <usuario>'' : añadir/cambiar el grupo principal de un usuario existente |
| | * ''deluser <usuario> <grupo>'' : elimina al usuario del grupo, no elimina ni al usuario ni al grupo |
| |
| == añadir usuario | == usuarios |
| * ''useradd'' [-c comentario] [-d home_dir] [-e yyyy-mm-dd] [-p password] usuario | === adduser/useradd |
| <code> | <code bash>useradd --comment "comentario" --home-dir /home/user --create-home --expiredate 2020-20-20 --uid 6666 --user-group --shell /bin/bash <USER></code> |
| -c comentario | |
| -d home_dir | |
| -e expire_date (yyy-mm-dd) -> caducidad de la cuenta | |
| -p password | |
| -G grupo -> añade a otro grupo o grupos al usuario (separados por comas) | |
| -m -> crea el home del usuario | |
| </code> | |
| * <code bash> | |
| sudo useradd newuser | |
| sudo passwd newuser | |
| sudo mkdir /home/newuser | |
| sudo chown newuser /home/newuser | |
| sudo chgrp newuser /home/newuser | |
| sudo adduser vogella admin # permite al usuario ejecutar comandos sudo | |
| </code> | |
| |
| == modificar usuario | === deluser |
| * ''$ usermod <opcion> <usuario>'': cambia varios atributos de usuarios | <code bash>userdel -r <USER></code> |
| | |
| | === modificar |
| | * cambia varios atributos de usuarios: <code>$ usermod <opcion> <usuario></code> |
| * -s <shell> : cambia shell usuario | * -s <shell> : cambia shell usuario |
| * -d -m <nueva ubicación> : cambia el directorio HOME y mueve el contenido | * -d -m <nueva ubicación> : cambia el directorio HOME y mueve el contenido |
| * -a -G <grupo>: añade un grupo a un usuario | * -a -G <grupo>: añade un grupo a un usuario |
| |
| == añadir grupo | == grupos |
| * ''$ groupadd <nombre_grupo>'' : crear un grupo nuevo | === crear |
| | * grupo nuevo:<code bash>$ groupadd <nombre_grupo></code> |
| |
| == modificar grupo | === modificar |
| * ''$ groupmod <opción> <grupo>'' | * <code bash>$ groupmod <opción> <grupo></code> |
| * -n <nombre> : cambia el nombre del grupo | * -n <nombre> : cambia el nombre del grupo |
| * -g <GID> : cambia el GID del grupo | * -g <GID> : cambia el GID del grupo |
| |
| == notas | == /bin/nologin VS /bin/false |
| * modificaciones en ''/etc/passwd'' para evitar login | <callout type="warning" title="nologin y false" icon="true">2019-11-14: haciendo un chroot el comportamiento ha sido al revés del explicado aquí abajo. /sbin/nologin no me deja SFTP ni SSH, /bin/false si me deja SFTP, no SSH</callout> |
| * ''/sbin/nologin'' -> evitar que un usuario haga login por consola (le quedaría SFTP). Además muestra el mensaje ''/etc/nologin.txt'' cuando se intenta el acceso vía telnet/ssh | * modificaciones en **/etc/passwd** para evitar login |
| * ''/bin/false'' -> evitar el login total en el sistema (telnet/ssh/ftp). No da mensajes de error, símplemente cierra la conexión. | * **/sbin/nologin**, **/usr/sbin/nologin** |
| | * evitar que un usuario haga login por consola (le quedaría SFTP). |
| | * Además muestra el mensaje **/etc/nologin.txt** cuando se intenta el acceso vía telnet/ssh |
| | * Se considera una shell válida (aunque no lo es). Hay programas que exigen tener una shell válida (de FTP, p.e.) |
| | * **/etc/shells/** <- shells válidas del sistema, no debe aparecer **nologin** para que funcione correctamente |
| | * **/bin/false** |
| | * evitar el login total en el sistema (telnet/ssh/ftp). |
| | * No da mensajes de error, símplemente cierra la conexión. |
| | * otras alternativas para evitar login: |
| | * modificar el campo de la contraseña **/etc/passwd**, poniendo una admiración en su lugar (por convención) |
| | * modificar el campo de la contraseña **/etc/shadow**, poniendo una admiración en su lugar (por convención) |
| | * usar ''passwd -l <user>'' para bloquear (añade ! al hash en **/etc/shadow**) |
| | * ''passwd -S <user>'': status (**L** locked) |
| | * usar ''usermod --expiredate 1'' |
| | |
| | /via: https://www.enmimaquinafunciona.com/pregunta/312/-cual-es-la-diferencia-entre-el-sbinnologin-y-el-binfalso- |
| | |
| | |
| | /via: [[https://unix.stackexchange.com/questions/10852/whats-the-difference-between-sbin-nologin-and-bin-false]] |
| | <callout type="info" title="alernative" icon="true">https://github.com/mysecureshell/mysecureshell</callout> |