パラメーター--remove-all-files
なしでdeluser
を使用しました:
$ deluser 'user'
rm -r /home/user
以外に、ユーザーが所有しているすべてのファイルを削除する方法はありますか(既にdeluserを実行しているため)。
ファイルを手動で検索する必要があります。これはおそらくdeluser
が行うことでした。
--remove-all-files
はnotrm -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 %u
はstat
にその出力の書き込み方法を伝えます。ここでは、単にユーザーIDを出力するように求めています)
ワンライナーが好きなら、両方のコマンドを連鎖させることもできます:
find / -user $(stat -c %u /home/user/) -delete
(もちろん、最初に-delete
なしで実行して、保持したいものがないことを確認し、残りのコマンドを書いた間違いをキャッチすることをお勧めします。 /
は気弱な人向けではありません。)
別のオプションは、古いUIDを指定してadduser
でユーザーを再度追加し、今度は--remove-all-files
フラグを指定してdeluser
を再度実行することです。
たとえば、ユーザーがユーザー名alice
およびUID 1001
を持っているとします:
Sudo adduser --uid 1001alice
Sudo deluser --remove-all-files alice
gnu findにはオプション-nouserと-nogroupがあり、man find
で検索します。これらのオプションを使用すると、/ etc/passwdに対応するユーザーがいないファイルシステム内のすべてのファイルを見つけることができます。削除されたユーザーの古いuidで新しいユーザーを作成していない場合、これらの孤立したファイルが見つかる可能性があります。
ただし、削除したファイルに属していたファイルだけでなく、さらにファイルが見つかる場合があります。