回答:
に基づいてgid
、システムユーザーとサービスユーザーは次のように分離できます。
/etc/passwd
すべてのユーザーのリストとその他の情報が含まれています。サービスユーザーまたは実際のユーザーの数はgid
1000以上です。したがって、実際のユーザーのリストは次のように取得できます。
awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
また、システムユーザー(gid
<1000)のリストは、次のように抽出できます。
awk -F: '($3<1000){print $1}' /etc/passwd
使い方
の内容は/etc/passwd
、
root:x:0:0:root:/root:/bin/bash
...
souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash
awk
とともに使用する-F:
と、行の内容がいくつかのフィールドに分割され:
、フィールドセパレータとして扱われます。最初のフィールドにはユーザー名が含まれ、3番目のフィールドにはが含まれますgid
。
したがって、実際のユーザーを抽出するにawk
は、3番目のフィールドの値が1000以上であることを確認し、誰もいないユーザーではなく、最初のフィールド、つまりユーザー名を出力します。
すべてのシステムユーザーを一覧表示するには、チェックgid
が1000未満であり、ユーザー名を出力します。
編集する
root
実際のユーザーリストにリスト(gid = 0)を追加したい場合。実際のユーザーを
awk -F: '($3==0)||($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
システムユーザーを取得します。
awk -F: '($3<1000)&&($1!="root"){print $1}' /etc/passwd
注私は常にnobody
ユーザーを無視しています。
ログイン可能で、homedirとGIDが1000未満のローカル(システムユーザー)を一覧表示するには
cat /etc/passwd | cut -d: -f 1,3,6 | grep "[1-9][0-9][0-9][0-9]" | grep "/home" | cut -d: -f1
他のすべてのユーザーをリストするには:(主にシステムユーザーで、GIDが1000未満):
cat /etc/passwd | cut -d: -f 1,3,6 | grep -v "[1-9][0-9][0-9][0-9]" | cut -d: -f1