Tutoriel Linux

Userdel en Linux: eliminar una cuenta sin eliminar el directorio de inicio incorrecto

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Necesitas eliminar una cuenta de técnico antigua o limpiar una cuenta de usuario local que ya no sea necesaria. El comando Parece sencillo, pero su opción -r

Recomiendo separar la eliminación de la cuenta de la eliminación de archivos. Comience anotando el UID, el directorio principal, los grupos, las sesiones y los procesos. Luego, decida si los datos deben archivarse, transferirse o eliminarse. Este método toma solo unos minutos y evita la pérdida irreversible de datos.

Tux comprueba la cuenta y la carpeta personal que se va a eliminar usando userdel en Linux.
Antes de usar userdel, compruebe qué cuenta y carpeta personal se eliminarán.

Confirme la cuenta local y el archivo personal.

En los siguientes ejemplos, reemplace Alicia Utilizando el nombre de usuario correcto. Primero, verifique la cuenta con varias fuentes:

obtener contraseña alice
grep '^alice:' /etc/passwd
identificación de alicia

getent puede devolver una cuenta de LDAP, SSSD u otro directorio. Si el usuario aparece con getent pero no en usuariodel A ciegas: procese la cuenta en el directorio que la administra. La guía para listar usuarios de Linux Detalla esta diferencia entre las cuentas locales y las cuentas proporcionadas por NSS.

uid=$(id -u alice)
home=$(getent passwd alice | cut -d: -f6)
echo "UID=$uid HOME=$home"
id -nG alice
sudo ls -ld "$home"

Revise el resultado antes de continuar. Una cuenta de servicio puede tener un directorio principal. /var/lib, /hogarComprueba también que no estés eliminando tu propia cuenta SSH ni una cuenta utilizada por una aplicación.

Es posible que una cuenta que no aparece en la pantalla de inicio de sesión siga ejecutando un servicio, una copia de seguridad o una tarea programada (cron job). Revise las sesiones y los procesos antes de detenerlos.

OMS
w
loginctl listar sesiones

ps -u alice -o pid,ppid,lstart,cmd

Si encuentra un proceso de negocio, identifique su servicio y transfiera su configuración a una cuenta técnica antes de eliminarlo. matar -9 Este no es un procedimiento para la salida de un empleado. El artículo sobre matar en linux

Compruebe también las unidades de crontab y systemd que hacen referencia a este inicio de sesión:

sudo crontab -u alice -l
[:space:]sudo grep -R --line-number '^[]*User=alice[]*$' /etc/systemd/system /usr/lib/systemd/system 2>/dev/null[:space:]

la configuración COMANDO_DE_USUARIO En /etc/login.defs Puede ejecutar un script para limpiar tareas programadas (cron, at o print), pero no es igual en todas las distribuciones. Documentación de login.defs confirma que el resultado de este script no se tiene en cuenta por Por lo tanto, guarde o elimine las tareas explícitamente antes de la cuenta.

Para congelar temporalmente la autenticación de contraseña durante sus comprobaciones:

sudo passwd -l alice

Este bloqueo no cierra las sesiones activas y no necesariamente bloquea las claves SSH. Compruebe estos puntos de acceso por separado. La guía sobre passwd en Linux detalla este límite.

Busque en los archivos de la cuenta antes de acceder a la página principal.

La carpeta personal del usuario no es el único lugar donde puede almacenar archivos. Busque su UID en las ubicaciones utilizadas por el servidor:

sudo find /home /srv /var/www -xdev -uid "$uid" -print

Ajusta los puntos de inicio a tus volúmenes. La opción -xdev impide que cada búsqueda se desplace a otro sistema de archivos; por lo tanto, repita el comando en los puntos de montaje de datos afectados. Evite un encontrar / improvisado en un servidor de producción o en un sistema de almacenamiento de red muy grande.

Si es necesario conservar los datos, compruebe el espacio disponible y, a continuación, cree un archivo del directorio principal:

df -h /root "$home"
sudo du -sh "$home"
sudo tar --one-file-system -C "$(dirname "$home")" -czf "/root/alice-home-$(date +%F).tar.gz" "$(basename "$home")"
sudo tar -tzf "/root/alice-home-$(date +%F).tar.gz" | head

Elige entre conservar el directorio personal o eliminarlo.

el orden sin -r Elimina la cuenta de los archivos del sistema, pero conserva su carpeta personal:

sudo userdel alice

Esta es mi opción predeterminada cuando los datos aún no han sido validados por su propietario ni transferidos a otra cuenta. Puede eliminar el directorio posteriormente, tras su revisión.

Si realmente necesita eliminar el correo postal de su casa y su buzón local, utilice:

sudo userdel -r alice

Según el página de manual de usuario, -r Elimina las carpetas de inicio y de cola de correo, pero no los archivos propiedad del usuario en otros sistemas de archivos. Por lo tanto, este comando no reemplaza el inventario realizado con el UID.

no usar usuariodel -f para omitir un mensaje que indica procesos activos. Esta opción ignora las comprobaciones de seguridad y puede dejar el sistema en un estado inconsistente. Volver a pgrepIdentifique el servicio en cuestión, desactívelo correctamente y, a continuación, reinicie el proceso de eliminación.

Compruebe qué queda después de userdel

Mantén la misma sesión de shell para conservar las variables. $fluido Y $casaLuego, compruebe el resultado:

getent passwd alice || echo "Cuenta no disponible"
identificación de alicia
pgrep -a -u "$uid"
test -e "$home" && sudo ls -ld "$home" || echo "Falta la carpeta personal"
sudo find /home /srv /var/www -xdev -uid "$uid" -ls

identificación de alicia Esto debería indicar que el inicio de sesión ya no existe. Si quedan archivos con el UID antiguo, decida carpeta por carpeta si deben archivarse, reasignarse o eliminarse. No aplique una chown-R global sin conocer el papel de los datos.

sudo apt update && sudo apt upgrade