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


12

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

$ deluser 'user'

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

回答:


19

ファイルを手動で検索する必要があります。 deluser

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

GNU findには-userテストがあるため、find / -user xxxuserが所有するすべてのファイルを見つけることができますxxxxxxはユーザー名になり、ユーザーの数値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必ず保存しておきたいものは何もありません作るために、そしてあなたは、コマンドの残りの部分を書いて作った間違いをキャッチする。間違いを再帰的な削除操作を実行するときに/かすかなためではありません心の。)


-exec削除をもう少し制御したい場合は、findオプションを使用してカスタムrmコマンドを実行することもできますが、YMMVを試したことはありません。
agc93

True、またはそれをrm使用して出力を渡しますxargs(ただし、結果が多すぎる場合は引数の制限に達する可能性があります)が-depth、情報マニュアルを引用してを参照してください。 「find」が現在削除されているディレクトリに再帰しようとすると、誤ったエラーメッセージが表示されます。「-depth」オプションを使用すると、通常この問題が解決します。」(そして、同じセクションの「( `-delete 'はとにかく` -depth'を意味する)」)
njsg

@njsgええと:find: 'user' is not the name of a known use
-pl1nk

1
@ pl1nk:前述したように、ユーザーの数値IDを使用する必要があります。既にユーザーを削除したため/etc/passwd、ユーザーとそのIDをリストするマッピングはありません。数値IDを見つける必要があります。行うstat -c %u /home/user/、それはあなたに数値のユーザーIDを与える必要があり、xxx上記のようにそれを使用します。
-njsg

@njsgあなたは正しいです。あなたの質問の最後の部分を読んでいません。
pl1nk

5

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

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

sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice

3

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

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


最高の答えがあると思います!... "$ find / \(-nouser -o -nogroup \)-print0 | xargs -0 rm -rf"このコマンドは、ユーザーもグループも持たないすべてのファイルを検索します。それらを自動的に削除します。
DanglingPointer
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.