私は以前、パスワードジェネレータの出力をユーザー名として100人以上のユーザーを生成するbashスクリプトを作成しました。これまでに見た最も近い解決策は、削除するユーザーのリストを作成し、そのリストを実行するスクリプトを作成することです。
不要なユーザーをすべて手動で一覧表示しなくても、これらのユーザーをすべて削除する方法やクイックオプションがあるかどうか疑問に思います。
ベストアンサー1
コメントに投稿されたものは実際に最も簡単な解決策です。
お気に入りのテキストエディタを使って、、を開き、
/etc/passwd
削除します。/etc/shadow
/etc/group
私が追加すべき唯一のことは、本当に(しなければならない自明ですが、そうではありません)は次のとおりです。そのファイルを編集する前にバックアップしてください。
だからあなたは次のようなものを得るでしょう:
sudo cp /etc/passwd /etc/passwd.bak
sudo cp /etc/shadow /etc/shadow.bak
sudo cp /etc/group /etc/group.bak
sudo -e /etc/passwd /etc/shadow /etc/group
もちろん今、返品これらのユーザーのホームディレクトリを削除する必要がありますが、問題は解決しません。ただし、ユーザー自体を削除するだけです。それがすべてです。
もしあなたならするホームディレクトリを削除する最も簡単な方法は、/etc/passwd
バックアップコピーと変更されたコピーの違いをフィルタリングすることです。
comm -2 -3 /etc/passwd.bak /etc/passwd | cut -d: -f6,6 > /tmp/dirs-to-delete
それから(あなたはいつ非常にリストに必要なファイルのみが含まれていることを確認してください。リストを繰り返して、そのファイルをすべて削除します。
実際には、まず空白やその他の奇妙な条件を確認するために追加の完全性チェックを実行します。
awk 'NF > 1 { printf "Problem with entry <%s> on line %d\n", $0, NR }' /tmp/dirs-to-delete
そして、ディレクトリがすべて実際に存在することを確認してください。
for d in $(cat /tmp/dirs-to-delete); do
[ -d "$d" ] ||
printf 'Supposed directory <%s> is not a directory\n' "$d"
done
そして、どの文字もワイルドカードとして解釈されないようにする必要があります(特殊文字を使用して行の行番号を印刷します)。
sed -n '/[][*?]/=' /tmp/dirs-to-delete
しかし、本当に満足したら、次のようにしてください。
rm -rf $(cat /tmp/dirs-to-delete)
(参考に命令はジョンナは危険です。知らないなら正確にファイルに何が含まれていますか?注意しないと、ハードドライブが消去される可能性があります。 )