Odpowiedzi:
Będziesz musiał ręcznie znaleźć pliki, co prawdopodobnie było tym deluser
, co by zrobiło.
Uwaga: --remove-all-files
to nie to samo co rm -r /home/user
. Ten ostatni usuwa tylko katalog główny (który może obejmować pliki, które nie są własnością tego użytkownika, choć nie jest to zwykły), drugi usuwa wszystkie pliki należące do tego użytkownika z systemu. Przynajmniej jeśli strona ma być godna zaufania .
GNU find
ma -user
test, więc możesz find / -user xxx
znaleźć wszystkie pliki należące do użytkownika xxx
. xxx
będzie nazwą użytkownika i może (iw tym przypadku będzie musiała, ponieważ użytkownik już nie istnieje) być identyfikatorem numerycznym użytkownika. find
ma również -delete
opcję, więc
find / -user xxx -delete
Powinien to zrobić, chociaż nie przetestowałem polecenia ze wszystkimi opcjami jednocześnie.
EDYCJA: Identyfikator numeryczny: Powodem, dla którego powiedziałem, że musisz użyć identyfikatora numerycznego, jest to, że skoro już usunąłeś użytkownika, jego wpis /etc/passwd
został usunięty (zawierał, wraz z innymi rzeczami, identyfikator użytkownika wraz z jego nazwą użytkownika) .
Tak więc, jeśli nie usunąłeś jego homediru, jednym z najprostszych sposobów jest po prostu zapytanie o identyfikator właściciela tego homediru:
stat -c %u /home/user/
( stat
jest narzędziem do odczytu danych systemu plików. -c %u
mówi, stat
jak zapisać dane wyjściowe, tutaj proszę o podanie identyfikatora użytkownika)
Jeśli lubisz jednowierszowe, możesz nawet połączyć oba polecenia:
find / -user $(stat -c %u /home/user/) -delete
(Oczywiście wolisz uruchomić go najpierw z opcją no, -delete
aby upewnić się, że nie ma nic, co chcesz zachować, i aby złapać każdy błąd, który popełniłeś podczas pisania reszty polecenia. Błędy podczas wykonywania operacji usuwania rekurencyjnego /
nie są dla słabych z serca.)
rm
użycia xargs
(ale to prawdopodobnie przekroczy granice argumentów, jeśli wyników jest zbyt wiele), ale spójrz na -depth
, cytując instrukcję informacyjną: „Jeśli polecenie` find 'usuwa katalogi, możesz to znaleźć pojawia się fałszywy komunikat o błędzie, gdy polecenie „find” próbuje wrócić do katalogu, który został teraz usunięty. Użycie opcji -depth zwykle rozwiąże ten problem. (a później w tej samej sekcji, „(„ -delete ”oznacza i tak„ -depth ”)”)
find: 'user' is not the name of a known use
/etc/passwd
które zawiera listę użytkownika i jego identyfikatora. Musisz znaleźć identyfikator numeryczny. Czy stat -c %u /home/user/
powinien dać numeryczny identyfikator użytkownika, użyj go jak xxx
wyżej.
Inną opcją byłoby ponowne dodanie użytkownika adduser
, określenie starego UID, a następnie deluser
ponowne uruchomienie , tym razem z --remove-all-files
flagą.
Załóżmy na przykład, że użytkownik miał nazwę użytkownika alice
i identyfikator UID 1001
:
sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice
gnu find ma opcje -nouser i -nogroup, sprawdź w man find
. Dzięki tym opcjom możesz znaleźć wszystkie pliki w systemie plików, które nie mają odpowiedniego użytkownika w / etc / passwd. Jeśli nie utworzyłeś nowego użytkownika ze starymi identyfikatorami użytkowników usuniętych, istnieje możliwość znalezienia tych osieroconych plików.
Możesz jednak znaleźć więcej plików - nie tylko tych, które należały do usuniętego.
-exec
opcji find, aby uruchomić niestandardowe polecenie rm, jeśli chcesz nieco więcej kontrolować swoje usuwanie, ale nigdy tego nie próbowałem, więc YMMV.