Articles

How to List Users on CentOS

CentOSなどのLinuxベースのOSは、大量のユーザーを同時に扱うように設計されています。 共有LinuxベースのWebホスティングを利用したことがある方は、お気づきかもしれません。 あなたのユーザー名は、xyz_2323のようになっているかもしれません。 これは技術的にはたくさんのユーザーがいて、それぞれのユーザーに番号がついていることを意味します。

この記事では、CentOS 7でユーザーをリストアップする方法を紹介します。

今回は、CentOS 7でユーザーをリストアップする方法を紹介します。 これはプレーンテキストファイルです。

ユーザーの詳細は、CentOS OSの/etc/passwdファイルに保存されています。

$ less /etc/passwd

ご覧のように、すべてのユーザーの一覧が表示されます。 1人のユーザーに関する情報は、1行の/etc/passwdファイルに格納されます。 各行には、その特定のユーザーに関する多くの情報がコロン(:)で区切られて格納されています

/etc/passwdファイルの1行には、以下の情報がコロン(:)で区切られて格納されています

Username : Password : UID : GID : User Details : Home Directory Path : Default Shell

ここで、Username – ユーザーのログイン名。 スペースやその他の特殊文字は使用できません。

Password – CentOSなどのLinuxベースのOSでは、パスワードは/etc/shadowファイルに保存されます。

UID – Linuxベースのオペレーティングシステムでは、各ユーザーは英数字の名前(Username)と、ユーザーIDまたはUIDと呼ばれる数字のIDを持っています。 一般ユーザーの場合、UIDは1000から始まります。

GID – Linuxベースのオペレーティングシステムでは、各グループは、グループ名と、グループIDまたはGIDと呼ばれる数字のIDを持っています。 Linuxでは、すべてのユーザーは少なくとも1つのグループに所属していなければなりません。 そのため、ユーザーが作成されるたびに、そのユーザー名と同じ名前のグループが作成されます。 そして、そのユーザーはグループに追加されます。 このフィールドには、プライマリグループのGIDが追加されます。 プライマリグループとは、そのユーザーのデフォルトグループです。 ユーザーが多くのグループに所属している場合は、ログイン中にnewgrpコマンドで変更することができます。 通常のグループのGIDは1000から始まります。 特に設定されていない場合は、GIDはUIDと同じになる。

ユーザーの詳細 – このフィールドには、ユーザーのフルネームやその他の個人情報がカンマで区切られたリストとして保存されます。 このフィールドの最も一般的な使い方は、ユーザーのフルネームを設定することです。

Home Directory Path – このフィールドには、すべてのユーザーファイルが格納されるディレクトリへのパスが保持されます。 シェル変数 $HOME はこのフィールドから設定されます。

デフォルトのシェル – Linux ベースのオペレーティング システムでは、ユーザーにシェルを設定する必要があります。 デフォルトでは、システムにログインできる一般ユーザーには、sh(/bin/sh)とbash(/bin/bash)のシェルが設定されているはずです。 しかし、他にもzshやcshなどのシェルがあります。 システムユーザーは、/sbin/nologin シェルが設定されているので、システムにログインできません。 あるユーザーのログインを無効にしたい場合は、そのユーザーのこのフィールドに/sbin/nologinを設定してください。

次のコマンドで、/etc/passwd ファイルにあるのと同じ情報を得ることができます。

$ getent passwd

getent passwordの出力です。

/etc/passwdファイルからユーザー名のリストだけを抽出する:

/etc/passwdファイルには、多くの情報が含まれています。 コロン(:)で区切られたリストの中からユーザー名だけを抽出したい場合は、awkやcutコマンドを使うと良いでしょう。

以下のコマンドを実行すると、cutコマンドを使ってログイン名やユーザー名を抽出することができます:

$ cut -d: -f1 /etc/passwd

Or

$ getent passwd | cut -d: -f1

見ての通り、すべてのユーザー名が抽出されています。

以下のようにawkでも同じことができます:

$ awk -F: ‘{print $1}’ /etc/passwd

または、

$ getent passwd | awk -F: ‘{print $1}’

見ての通り、同じ出力が出ます。

システムにログインできるユーザーをリストアップする。

CentOSのOSにログインできるユーザーをすべてリストアップしたい場合は、次のコマンドを実行してください:

$ getent passwd | egrep -v ‘/s?bin/(nologin|shutdown|sync|halt)’ | cut -d: -f1

ご覧のように、私のCentOSマシンの4人のユーザーだけがログインでき、他のユーザーはシステムユーザーです。 彼らはシステムにログインできません。

以上、CentOSでのユーザーリストの作成方法でした。 この記事を読んでいただきありがとうございます

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です