回答:
ファイルを手動で検索する必要があります。 deluser
。
と同じで--remove-all-files
はないことに注意してくださいrm -r /home/user
。後者はhomedir(通常ではありませんが、そのユーザーが所有していないファイルを含む場合があります)のみを削除し、前者はそのユーザーが所有するすべてのファイルをシステムから削除します。少なくともマンページを信頼する場合。
GNU find
には-user
テストがあるため、find / -user xxx
userが所有するすべてのファイルを見つけることができますxxx
。xxx
はユーザー名になり、ユーザーの数値IDになる可能性があります(この場合、ユーザーは存在しないため、必要になります)。オプションfind
もある-delete
ので、
find / -user xxx -delete
それを行う必要がありますが、コマンドをすべてのオプションで同時にテストしたことはありません。
編集:数値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
必ず保存しておきたいものは何もありません作るために、そしてあなたは、コマンドの残りの部分を書いて作った間違いをキャッチする。間違いを再帰的な削除操作を実行するときに/
かすかなためではありません心の。)
rm
使用して出力を渡しますxargs
(ただし、結果が多すぎる場合は引数の制限に達する可能性があります)が-depth
、情報マニュアルを引用してを参照してください。 「find」が現在削除されているディレクトリに再帰しようとすると、誤ったエラーメッセージが表示されます。「-depth」オプションを使用すると、通常この問題が解決します。」(そして、同じセクションの「( `-delete 'はとにかく` -depth'を意味する)」)
find: 'user' is not the name of a known use
/etc/passwd
、ユーザーとそのIDをリストするマッピングはありません。数値IDを見つける必要があります。行うstat -c %u /home/user/
、それはあなたに数値のユーザーIDを与える必要があり、xxx
上記のようにそれを使用します。
gnu findにはオプション-nouserと-nogroupがあり、で調べてくださいman find
。これらのオプションを使用すると、/ etc / passwdに対応するユーザーがいないファイルシステム内のすべてのファイルを見つけることができます。削除されたユーザーの古いuidで新しいユーザーを作成していない場合、これらの孤立したファイルが見つかる可能性があります。
ただし、削除したファイルに属していたファイルだけでなく、さらにファイルが見つかる場合があります。
-exec
削除をもう少し制御したい場合は、findオプションを使用してカスタムrmコマンドを実行することもできますが、YMMVを試したことはありません。