web-dev-qa-db-fra.com

Supprimer un utilisateur et tous les fichiers appartenant à cet utilisateur

J'ai utilisé deluser sans le paramètre --remove-all-files:

$ deluser 'user'

Existe-t-il un moyen autre que rm -r /home/user de supprimer tous les fichiers appartenant à un utilisateur maintenant (puisque j'ai déjà exécuté deluser)?

12
pl1nk

Vous devrez rechercher manuellement les fichiers, ce qui correspond probablement à ce que deluser ferait.

Veuillez noter que --remove-all-files est pas identique à rm -r /home/user. Ce dernier supprime seulement le répertoire personnel (qui peut inclure des fichiers n'appartenant pas à cet utilisateur, bien que cela ne soit pas habituel), le premier supprime tous les fichiers appartenant à cet utilisateur du système. Du moins si il faut faire confiance à la page de manuel .

GNU find a un test -user. Vous pouvez donc faire find / -user xxx pour trouver tous les fichiers appartenant à l'utilisateur xxx. xxx serait le nom d'utilisateur, et peut (et dans ce cas devra , car l'utilisateur n'existe plus) être l'ID numérique de l'utilisateur. find a également une option -delete, donc

find / -user xxx -delete

Devrait le faire, bien que je n’ai pas testé la commande avec toutes les options en même temps.

EDIT: Identifiant numérique: La raison pour laquelle j’ai dit que vous deviez utiliser un identifiant numérique est parce que, comme vous avez déjà supprimé l’utilisateur, son entrée dans /etc/passwd était supprimé (il contenait, avec d'autres éléments, l'ID utilisateur, ainsi que son nom d'utilisateur).

Donc, si vous ne supprimez pas son homedir, l’un des moyens les plus simples est de simplement demander l’ID du propriétaire de cet homedir:

stat -c %u /home/user/

(stat est un outil pour lire les données du système de fichiers. -c %u indique à stat comment écrire sa sortie, je lui demande ici de simplement sortir l'ID utilisateur)

Si vous aimez les one-liners, vous pouvez même chaîner les deux commandes:

find / -user $(stat -c %u /home/user/) -delete

(Bien sûr, vous préférerez peut-être d'abord l'exécuter sans -delete pour vous assurer de ne rien conserver et de détecter toute erreur que vous avez commise en écrivant le reste de la commande. Les erreurs lors de l'exécution d'opérations de suppression récursives sur / ne sont pas valables. le faible du coeur.)

19
njsg

Une autre option serait de rajouter l'utilisateur avec adduser, en spécifiant l'ancien UID, puis de réexécuter deluser, cette fois avec l'indicateur --remove-all-files.

Supposons, par exemple, que l'utilisateur ait un nom d'utilisateur alice et un UID 1001:

Sudo adduser --uid 1001alice
Sudo deluser --remove-all-files alice
5
Eliah Kagan

gnu find a les options -nouser et -nogroup, cherchez-les dans man find. Avec ces options, vous pouvez trouver tous les fichiers de votre/vos système (s) de fichiers qui n'ont pas d'utilisateur correspondant dans/etc/passwd. Si vous n'avez pas créé de nouvel utilisateur avec les anciens UID de vos utilisateurs supprimés, vous avez la possibilité de rechercher ces fichiers orphelins.

Cependant, vous pourriez trouver plus de fichiers, pas seulement ceux ayant appartenu à votre fichier supprimé.

3
ohno