Użyłem deluser
bez parametru --remove-all-files
:
$ deluser 'user'
Czy istnieje sposób inny niż rm -r /home/user
usunięcie wszystkich plików posiadanych teraz przez użytkownika (skoro już uruchomiłem deluser)?
źródło
Użyłem deluser
bez parametru --remove-all-files
:
$ deluser 'user'
Czy istnieje sposób inny niż rm -r /home/user
usunięcie wszystkich plików posiadanych teraz przez użytkownika (skoro już uruchomiłem deluser)?
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.)
-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.rm
użyciaxargs
(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. Czystat -c %u /home/user/
powinien dać numeryczny identyfikator użytkownika, użyj go jakxxx
wyżej.Inną opcją byłoby ponowne dodanie użytkownika
adduser
, określenie starego UID, a następniedeluser
ponowne uruchomienie , tym razem z--remove-all-files
flagą.Załóżmy na przykład, że użytkownik miał nazwę użytkownika
alice
i identyfikator UID1001
:źródło
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.
źródło