Jawaban:
Anda harus menemukan file secara manual, yang mungkin adalah apa yang deluser
akan dilakukan.
Harap dicatat --remove-all-files
adalah tidak sama dengan rm -r /home/user
. Yang terakhir hanya menghapus homedir (yang mungkin termasuk file yang tidak dimiliki oleh pengguna itu, meskipun tidak biasa), yang pertama menghapus semua file yang dimiliki oleh pengguna itu dari sistem. Setidaknya jika manual tersebut bisa dipercaya .
GNU find
memiliki -user
tes, sehingga Anda dapat melakukannya find / -user xxx
untuk menemukan semua file yang dimiliki oleh pengguna xxx
. xxx
akan menjadi nama pengguna, dan dapat (dan dalam hal ini akan harus, sebagai pengguna tidak ada lagi) menjadi ID numerik pengguna. find
juga memiliki -delete
opsi, jadi
find / -user xxx -delete
Harus melakukannya, walaupun saya belum menguji perintah dengan semua opsi pada saat yang sama.
EDIT: Numeric ID: Alasan mengapa saya mengatakan Anda harus menggunakan ID numerik adalah karena, karena Anda sudah menghapus pengguna, entrinya /etc/passwd
telah dihapus (itu, bersama dengan hal-hal lain, ID pengguna, bersama dengan nama penggunanya) .
Jadi, jika Anda tidak menghapus homedirnya, salah satu cara termudah adalah dengan hanya menanyakan ID pemilik homedir itu:
stat -c %u /home/user/
( stat
adalah alat untuk membaca data sistem file. -c %u
Memberitahu stat
cara menulis outputnya, di sini saya meminta untuk hanya menampilkan ID pengguna)
Jika Anda suka one-liners, Anda bahkan dapat mem-chain kedua perintah:
find / -user $(stat -c %u /home/user/) -delete
(Tentu saja Anda dapat memilih untuk menjalankannya terlebih dahulu tanpa -delete
untuk memastikan tidak ada yang ingin Anda pertahankan, dan untuk menangkap kesalahan yang Anda buat saat menulis sisa perintah. Kesalahan ketika melakukan operasi penghapusan rekursif /
bukan untuk menjadi samar-samar. dari hati.)
rm
menggunakan xargs
(tetapi ini mungkin akan mencapai batas argumen jika ada terlalu banyak hasil), tetapi lihat -depth
, mengutip manual info: "Jika perintah` find 'Anda menghapus direktori, Anda mungkin menemukan bahwa Anda mendapatkan pesan kesalahan palsu ketika `find 'mencoba untuk kembali ke direktori yang sekarang telah dihapus. Menggunakan opsi` -depth' biasanya akan menyelesaikan masalah ini. " (dan kemudian pada bagian yang sama, "((toh, 'hapus' menyiratkan` -tinggal ') ")
find: 'user' is not the name of a known use
/etc/passwd
daftar pengguna dan ID-nya. Anda harus menemukan id numerik. Apakah stat -c %u /home/user/
, itu akan memberi Anda id pengguna numerik, gunakan itu seperti di xxx
atas.
Opsi lain adalah menambahkan kembali pengguna dengan adduser
, menentukan UID lama, dan kemudian jalankan deluser
lagi, kali ini dengan --remove-all-files
flag.
Misalkan, misalnya, bahwa pengguna memiliki nama pengguna alice
dan UID 1001
:
sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice
gnu menemukan memiliki pilihan -nouser dan -nogroup, mencarinya di man find
. Dengan opsi ini, Anda dapat menemukan semua file di sistem file Anda yang tidak memiliki pengguna yang sesuai di / etc / passwd. Jika Anda belum membuat pengguna baru dengan uids lama dari pengguna yang dihapus, ini adalah kemungkinan untuk menemukan file-file yatim ini.
Namun, Anda mungkin menemukan lebih banyak file - tidak hanya file milik Anda yang dihapus.
-exec
opsi find untuk menjalankan perintah custom rm jika Anda ingin sedikit lebih banyak kontrol atas penghapusan Anda, tetapi saya belum pernah mencobanya juga YMMV.