質問を展開することを願ってhereさんに、空のパスワードを持つユーザーを探すことについて尋ねました。私が欲しいのは、システムが、私はそれを実行したときに空のパスワードで「実ユーザ」のアカウントを検索するにはどうすればよいですか?
sudo getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1
ラインがプリントアウトすることを占めるフィルタリングです。
私の問題は、私のシステムのスクリプトや端末を使って追加された空のパスワードを持つユーザーアカウント、つまり「本当の」人物だけでなく、私が所有しているアカウントだけを表示できるようにしたいということです自分自身を作った。深さで
:何が起こる
今:
が希望は何~$ sudo useradd bob
~$ sudo getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1
Sudo password for user: [pw]
daemon
bin
sys
[...]
rtkit
saned
usbmux
bob
~$
:私はパスワードなしでボブを追加したとき、つまり
~$ sudo useradd bob
~$ sudo [getent command for the problem]
Sudo password for user: [pw]
bob
~$
を私は彼だけを見ることができるようにしたい。
これはおそらくではありません。であるため、詳しい説明が必要です。
これは、上記のプロパティを持つすべてのユーザーを検索して削除することです。したがって、私はシステム作成のアカウントを削除したくありません。
アップデート1:修正し誤植。
アップデート2:私はgetent
で受信された3番目のフィールドで自分のIDですべてのユーザーを除外することができることを見出しました。
したがって、このように、パイプラインかかわら2のgrepを実行している:
sudo getent shadow | grep '^[^:]*:.\?:' | grep (regex) | cut -d: -f1
は仕事を取得します。
正規表現では、'.:.:[^(17212)]:.:.:.:.:.:.'
を使用する必要があることを理解していますが、一致するものは返されません。
誰かに代替案を提案できますか?
私はUbuntu 16.04を使用しています。
ありがとうございました。
私はすべてのフィールドを見るためにcutコマンドを実行しました - システムには17212のIDがありますが、 "Bob"には17247があります。 "1000"の制限は正しいですか?私の場合は17212以下に制限するだけですか? –
ユーザアカウントとシステムアカウントに割り当てられる数値ユーザIDのセットは、システムによって異なる場合があります。 –
@KeithThompsonこれは慣行であることを認識していますが、保管されていないケースは思い出すことができません。どうやら、それはここのケースです。 – MirMasej