Yanıtlar:
Dosyaları el ile bulmanız gerekecek, ki bu muhtemelen ne deluserolurdu.
Lütfen not --remove-all-filesile aynı değildirrm -r /home/user . İkincisi sadece homedir'i kaldırır (normalde olmasa da o kullanıcının sahibi olmayan dosyaları içerebilir), birincisi o kullanıcının sahip olduğu tüm dosyaları sistemden kaldırır . En azından manpage güvenilir olacaksa .
GNU'nun findbir -usertesti vardır, böylece find / -user xxxkullanıcının sahip olduğu tüm dosyaları bulmak için yapabilirsiniz xxx. xxxkullanıcı adı olurdu ve (ve bu durumda olabilir edecek kullanıcının sayısal kimliği kullanıcı artık yok gibi gerekir) olmak. findayrıca bir -deleteseçeneği var, yani
find / -user xxx -delete
Komutu aynı anda tüm seçeneklerle test etmeme rağmen yapmalıyım.
DÜZENLEME: Sayısal Kimlik: Sayısal kimlik kullanmanız gerektiğini söylememin nedeni, kullanıcıyı zaten sildiğinizde, girişinin /etc/passwdsilinmiş olmasıdır (diğer şeylerle birlikte, kullanıcı adıyla birlikte kullanıcı kimliğine sahipti) .
Yani, onun homedirini kaldırmadıysanız, en kolay yollardan biri sadece o homedir sahibinin kimliğini sorgulamaktır:
stat -c %u /home/user/
( statdosya sistemi verilerini okumak için bir araçtır. çıktısını nasıl yazacağınızı -c %usöyler stat, burada basitçe kullanıcı kimliğini çıkarmasını istiyorum)
Tek gömleklerden hoşlanıyorsanız, her iki komutu da zincirleyebilirsiniz:
find / -user $(stat -c %u /home/user/) -delete
(Tabii ki -deletesaklamak istediğiniz hiçbir şey olmadığından emin olmak ve komutun geri kalanını yazdığınız herhangi bir hatayı yakalamak için önce hayır ile çalıştırmayı tercih edebilirsiniz . Özyinelemeli silme işlemleri yaparken yapılan hatalar /zayıf değildir kalp.)
rmkullanarak geçirme xargs(ancak çok fazla sonuç varsa bu muhtemelen argüman sınırlarına ulaşacaktır), ancak -depthbilgi kılavuzuna bakarak şuraya bakın : "Bul 'komutunuz dizinleri kaldırırsa, "find" kaldırılmış bir dizine geri çekilmeye çalıştığında sahte bir hata iletisi alıyorsunuz. -depth seçeneğini kullanmak normalde bu sorunu çözecektir. " (ve daha sonra aynı bölümde "(" -delete 'zaten -depth' anlamına gelir) ")
find: 'user' is not the name of a known use
/etc/passwd, kullanıcıyı ve kimliğini listeleyen hiçbir eşleme yok . Sayısal kimliği bulmanız gerekecek. Yapın stat -c %u /home/user/, size sayısal kullanıcı kimliği vermeli, xxxyukarıdaki gibi kullanın .
Başka bir seçenek adduserde eski UID'yi belirterek kullanıcıyı yeniden eklemek ve daha sonra deluserbu kez --remove-all-filesbayrakla yeniden çalıştırmak olacaktır .
Örneğin, kullanıcının kullanıcı adı aliceve UID'si olduğunu varsayalım 1001:
sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice
gnu find -nouser ve -nogroup seçeneklerine sahiptir, bakın man find. Bu seçeneklerle, dosya sistemlerinizde / etc / passwd içinde karşılık gelen kullanıcısı olmayan tüm dosyaları bulabilirsiniz. Silinen kullanıcılarınızın eski kullanıcı adlarıyla yeni bir kullanıcı oluşturmadıysanız, bu yetim dosyaları bulma olasılığı vardır.
Ancak, yalnızca silinmiş dosyaya ait olanları değil, daha fazla dosya bulabilirsiniz.
-exec, silme işlemleriniz üzerinde biraz daha fazla kontrol istiyorsanız özel bir rm komutu çalıştırmak için bulma seçeneğini kullanabilirsiniz , ancak bunu hiç YMMV denemedim.