
le pregunté apregunta anterior sobre la recuperación de una partición RAID 1 donde todos los UUID de las particiones miembro se habían puesto a cero. Al no recibir respuesta en ese hilo, ahora me veo obligado a reinstalar CentOS en la partición del sistema operativo y reconstruir el sistema.
Una de las grandes tareas de la reconstrucción será intentar recuperar la base de datos del usuario, para la cual no existe una copia de seguridad reciente. Mi objetivo es simplemente recrear la base de datos de usuarios mediante el uso de un script en una lista de UID y nombres de usuario para crear la cuenta de todos con la misma contraseña que luego pueden cambiar al iniciar sesión.
/home estaba en una matriz raid diferente y aún existente, por lo que en esa partición tengo una lista exhaustiva de usuarios y, al leer el UID del directorio de cada usuario, también tengo el UID antiguo de cada usuario. Lo que me cuesta es un par de guiones. El primero iterará /home y creará un archivo con pares coincidentes de UID y nombre de usuario, y luego el segundo usará ese archivo de salida para crear todas esas cuentas en la nueva instalación, por lo que los UID de los directorios de inicio se traducirán a un usuario actual. Es un servidor de archivos samba, por lo que durante el segundo script también crearé el nombre de usuario de samba correspondiente.
¿Alguien conoce alguna herramienta o script ya escrito para realizar esta tarea, de modo que pueda evitar recrear la rueda?
¡Gracias!
Respuesta1
Podrías crear un archivo csv desde tus directorios de inicio que contenga "user:home:uid:gid" como este:
find /home -mindepth 1 -maxdepth 1 -type d -not -name "lost+found*" \
-printf "%f:%p:%U:%G\n" >/tmp/user.txt
Luego vuelva a crear los usuarios así.
cat /tmp/user.txt | while IFS=: read -r user home uid gid; do \
echo useradd -d "$home" -u "$uid" -g "$gid" "$user"
done
Elimine echo
si la salida parece correcta. Debería poder adoptar este useradd
comando según sus necesidades y también agregar el comando de samba correcto al bucle.