UIDが1000を超えるユーザーを削除する

UIDが1000を超えるユーザーを削除する

LinuxシステムでUIDが1000を超えるすべてのローカルユーザーアカウントを削除するシェルスクリプトを作成する方法は?

これが私が今まで持っているものです:

#!/bin/bash

for userid in `/etc/passwd`
do
if ((“userid” >= 1000)); then
userdel -r $user
done

UIDが1000を超えるすべてのアカウントを削除する条件を設定する方法は?私が見つけられない部分ですね。これまで私がしたことが正しいかどうかはわかりませんが、同様の問題がありますが、少し違う投稿でこれについて読んでいます。

ベストアンサー1

次のawkコマンドは、UIDが1000以上のすべてのローカルユーザーのユーザー名を印刷し、名前付きユーザーnobody(最も可能性の高いユーザー)をスキップします。いいえ削除したい):

awk -F : '$3 >= 1000 && $1 != "nobody" { print $1 }' /etc/passwd

ファイルを区切られたフィールドを含む行ベースのレコード/etc/passwdセットに解析します。:3番目のフィールドの値が1000以上であることをテストし、最初のフィールドではないことを確認してから、最初のフィールドを印刷しますnobody。 UIDが高い特別なアカウントにアクセスし$1 != "nobody"ないように、2番目のテストを変更できます。$3 < 10000

その後、ループを使用して名前を読み取り、一度に1つずつ削除できます(参照スティーブンの答え以下を使用してこれを行う方法を学びますxargs

awk -F : '$3 >= 1000 && $1 != "nobody" { print $1 }' /etc/passwd |
while IFS= read -r name; do
    userdel -r "$name"
done

おすすめ記事