Proceso para crear un usuario en GNU/Linux de forma manual (sin adduser / useradd)

Proceso para crear un usuario en sistemas GNU/Linux de forma manual, editando los mismos ficheros que los comandos adduser / useradd.

Se creará el usuario pepe con los siguientes parámetros.

# El ID / GID deben estar disponibles, en la mayoría de distribuciones empiezan con un ID 500 para la creación de usuarios.
echo "pepe:x:502:502:Jose:/home/pepe:/bin/bash" >> /etc/passwd
 
# Creación del grupo pepe.
echo "pepe:x:502:" >> /etc/group
 
# Creación del "home" del usuario pepe.
mkdir /home/pepe
cp /etc/skel/.[^.]* /home/pepe/
chown pepe:pepe /home/pepe
 
# Contraseña (cacadevaca) en /etc/shadow. (https://docs.python.org/3/library/crypt.html#module-crypt)
contrasena=`python3 -c 'import crypt; print(crypt.crypt("cacadevaca", crypt.mksalt(crypt.METHOD_SHA512)))'`
chmod 600 /etc/shadow
echo "pepe:${contrasena}:::" >> /etc/shadow
chmod 000 /etc/shadow

Modificar la password de un usuario pasandola como parámetro (scripts)

Estos métodos hay que cogerlos con pinzas en lo que refiere a seguridad por motivos obvios. Son útiles para cambiar passwords en sistemas Unix sin usar le uso interactivo, normalmente para scripts.

echo "XXX" | passwd --stdin usuario  
echo -e "XXX\nXXX" | passwd usuario
 
# Cambiar el password del usuario en uso.
echo -e "password_actual\npassword_nuevo\npassword_nuevo" | passwd