web-dev-qa-db-ja.com

ユーザーと、このユーザーが所有するすべてのファイルを削除します

パラメーター--remove-all-filesなしでdeluserを使用しました:

$ deluser 'user'

rm -r /home/user以外に、ユーザーが所有しているすべてのファイルを削除する方法はありますか(既にdeluserを実行しているため)。

12
pl1nk

ファイルを手動で検索する必要があります。これはおそらくdeluserが行うことでした。

--remove-all-filesnotrm -r /home/userと同じではないことに注意してください。後者はhomedir(通常ではありませんが、そのユーザーが所有していないファイルを含む場合があります)のみを削除し、前者はそのユーザーが所有するallファイルをシステムから削除します。少なくとも マンページを信頼する の場合。

GNU findには-userテストがあるため、find / -user xxxを実行して、ユーザーxxxが所有するすべてのファイルを検索できます。 xxxはユーザー名であり、(この場合、(=-/-)はユーザーが存在しなくなるのでになります)ユーザーの数値IDになります。 findには-deleteオプションもあるため、

find / -user xxx -delete

それを行う必要がありますが、コマンドをすべてのオプションで同時にテストしたことはありません。

EDIT:数値ID:数値IDを使用する必要があると言った理由は、すでにユーザーを削除したため、/etc/passwdが削除されました(他のものと一緒に、ユーザーIDとユーザー名がありました)。

したがって、homedirを削除しなかった場合、最も簡単な方法の1つは、そのhomedirの所有者のIDを照会することです。

stat -c %u /home/user/

statはファイルシステムのデータを読み取るツールです。-c %ustatにその出力の書き込み方法を伝えます。ここでは、単にユーザーIDを出力するように求めています)

ワンライナーが好きなら、両方のコマンドを連鎖させることもできます:

find / -user $(stat -c %u /home/user/) -delete

(もちろん、最初に-deleteなしで実行して、保持したいものがないことを確認し、残りのコマンドを書いた間違いをキャッチすることをお勧めします。 /は気弱な人向けではありません。)

19
njsg

別のオプションは、古いUIDを指定してadduserでユーザーを再度追加し、今度は--remove-all-filesフラグを指定してdeluserを再度実行することです。

たとえば、ユーザーがユーザー名aliceおよびUID 1001を持っているとします:

Sudo adduser --uid 1001alice
Sudo deluser --remove-all-files alice
5
Eliah Kagan

gnu findにはオプション-nouserと-nogroupがあり、man findで検索します。これらのオプションを使用すると、/ etc/passwdに対応するユーザーがいないファイルシステム内のすべてのファイルを見つけることができます。削除されたユーザーの古いuidで新しいユーザーを作成していない場合、これらの孤立したファイルが見つかる可能性があります。

ただし、削除したファイルに属していたファイルだけでなく、さらにファイルが見つかる場合があります。

3
ohno