Antworten:
Sie müssen die Dateien manuell suchen, was wahrscheinlich der Fall war deluser
.
Bitte beachten Sie, --remove-all-files
ist nicht das gleiche wie rm -r /home/user
. Letzteres entfernt nur das Homedir (das möglicherweise Dateien enthält, die nicht dem betreffenden Benutzer gehören, obwohl dies nicht üblich ist). Ersteres entfernt alle Dateien Dateien, die dem Benutzer gehören, vom System. Zumindest, wenn der Manpage vertraut werden soll .
GNU find
hat einen -user
Test, mit dem Sie find / -user xxx
alle Dateien finden können, die dem Benutzer gehören xxx
. xxx
wäre der Benutzername und kann (und in diesem Fall wird müssen, da der Benutzer nicht mehr existiert) der numerische ID des Benutzers. find
hat auch eine -delete
option, so
find / -user xxx -delete
Sollte es tun, obwohl ich den Befehl nicht mit allen Optionen gleichzeitig getestet habe.
EDIT: Numerische ID: Der Grund, warum ich sagte, dass Sie eine numerische ID verwenden müssen, ist, dass, da Sie den Benutzer bereits gelöscht haben, sein Eintrag in /etc/passwd
gelöscht wurde (er hatte zusammen mit anderen Dingen die Benutzer-ID zusammen mit seinem Benutzernamen). .
Wenn Sie also seinen Homedir nicht entfernt haben, ist eine der einfachsten Möglichkeiten, einfach die ID des Besitzers dieses Homedir abzufragen:
stat -c %u /home/user/
( stat
ist ein Tool zum Lesen von Dateisystemdaten.-c %u
Gibt an, stat
wie die Ausgabe geschrieben werden soll. Ich bitte hier, einfach die Benutzer-ID auszugeben.)
Wenn Sie Einzeiler mögen, können Sie sogar beide Befehle verketten:
find / -user $(stat -c %u /home/user/) -delete
(Natürlich können Sie es vorziehen, es zuerst ohne auszuführen -delete
, um sicherzustellen, dass Sie nichts behalten möchten, und um Fehler zu erkennen, die Sie beim Schreiben des restlichen Befehls gemacht haben. Fehler beim Ausführen von rekursiven Löschvorgängen /
sind nichts für schwache Nerven von Herzen.)
rm
using xargs
(aber dies wird wahrscheinlich die Argumentgrenzen überschreiten, wenn es zu viele Ergebnisse gibt), aber schauen Sie in -depth
Anführungszeichen des Info-Handbuchs nach: "Wenn Ihr Befehl` find 'Verzeichnisse entfernt, finden Sie das möglicherweise Sie erhalten eine falsche Fehlermeldung, wenn "find" versucht, in ein Verzeichnis zurückzukehren, das jetzt entfernt wurde. Die Verwendung der Option "-depth" löst normalerweise dieses Problem. " (und später im selben Abschnitt, "(-delete impliziert -depth sowieso)")
find: 'user' is not the name of a known use
/etc/passwd
der Liste des Benutzers und seiner ID. Sie müssen die numerische ID finden. Tun stat -c %u /home/user/
, es sollte Ihnen die numerische Benutzer-ID geben, verwenden Sie das wie xxx
oben.
Eine andere Möglichkeit wäre, den Benutzer mit erneut hinzuzufügen adduser
, die alte UID anzugeben und dann deluser
erneut auszuführen , diesmal mit dem --remove-all-files
Flag.
Angenommen, der Benutzer hat einen Benutzernamen alice
und eine UID 1001
:
sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice
gnu find hat die Optionen -nouser und -nogroup man find
. Mit diesen Optionen können Sie alle Dateien in Ihrem Dateisystem finden, die keinen entsprechenden Benutzer in / etc / passwd haben. Wenn Sie keinen neuen Benutzer mit den alten Benutzer-IDs Ihrer gelöschten Benutzer erstellt haben, können Sie diese verwaisten Dateien auffinden.
Möglicherweise finden Sie jedoch mehr Dateien - nicht nur diejenigen, die zu Ihren gelöschten gehörten.
-exec
Option find verwenden, um einen benutzerdefinierten Befehl rm auszuführen, wenn Sie etwas mehr Kontrolle über Ihre Löschvorgänge haben möchten, aber ich habe das noch nie versucht, YMMV.