Bir kullanıcıyı ve bu kullanıcının sahip olduğu tüm dosyaları silme


12

deluserParametre olmadan kullandım --remove-all-files:

$ deluser 'user'

rm -r /home/userŞimdi bir kullanıcının sahip olduğu tüm dosyaları kaldırmak dışında bir yolu var mı (zaten çalıştırıcı yürüttüğümden beri)?

Yanıtlar:


19

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.)


Ayrıca -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.
agc93

Doğru, ya da çıktıyı 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) ")
njsg

@njsg Pekala:find: 'user' is not the name of a known use
pl1nk

1
@ pl1nk: Dediğim gibi, kullanıcının sayısal kimliğini kullanmanız gerekecek - kullanıcıyı zaten sildiğiniz gibi /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 .
njsg

@njsg Haklısın Sorunun son bölümünü okumadım.
pl1nk

5

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

3

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.


En iyi cevaba sahip olduğuna inanıyorum! ... "$ find / \ (-nouser -o -nogroup \) -print0 | xargs -0 rm -rf" Komut, kullanıcısı veya grubu olmayan tüm dosyaları bulur ve otomatik olarak kaldırır.
DanglingPointer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.