システムユーザーとサービスユーザーを分離する


8

システムユーザーとサービスユーザーがいることは誰もが知っています。それらをシステムユーザーとサービスユーザーリストとして分離する方法を探しています。

何か方法はありますか?

回答:


7

に基づいてgid、システムユーザーとサービスユーザーは次のように分離できます。

/etc/passwdすべてのユーザーのリストとその他の情報が含まれています。サービスユーザーまたは実際のユーザーの数はgid1000以上です。したがって、実際のユーザーのリストは次のように取得できます。

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ユーザーを無視しています。


rootユーザーをどのように処理できますか?
rɑːdʒɑ

あなたのポイントを理解しませんでしたか?システムユーザーとしてrootを取得します。実際のユーザーリストにrootを含めますか?
souravc 14

はい、彼もユーザーです。
rɑːdʒɑ

@rajagenupula大丈夫ですか?
souravc 2014

私は、実際のユーザーのリスト@Sでrootユーザーがしたい
rɑːdʒɑ

2

ログイン可能で、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

1
rootユーザーのグループIDとユーザーIDは、答えのためにあなたをright.thank 1000未満である
rɑːdʒɑ

@rajagenupulaはい、確かに。ルートのみが例外です。そしてubuntuでは一般的に、rootはデフォルトではログインできません。
カミル2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.