Linux – ユーザーとグループについて

目次

概要

UNIX や Linux システムでは、ユーザーとグループはシステム上でのアクセス制御と権限管理の基本的な要素です。本記事では、ユーザーとグループに関する基本的な概念とコマンドについて解説します。

ユーザー

ユーザーはシステムにログインして操作を行う個人やプロセスを指します。各ユーザーには一意のユーザー ID (UID) が割り当てられます。

グループ

グループはユーザーをまとめて管理するための単位です。各グループには一意のグループ ID (GID) が割り当てられます。ユーザーは複数のグループに所属することができます。 UNIX や Linux システムでは、ユーザーはプライマリグループとセカンダリグループに所属することができます。

プライマリグループ

プライマリグループは、ユーザーに必ず割り当てられる基本のグループで、ユーザーのデフォルトの所属グループです。 ユーザーがファイルを新規作成する際、そのファイルの所有グループとして自動的に割り当てられます。

プライマリグループの確認方法:

id -gn <username>
  • プライマリグループは常に 1 つのみ設定できます。
  • 一般的に、ユーザー専用のグループ(プライベートグループ)が割り当てられます。

セカンダリグループ

セカンダリグループは、ユーザーが追加で所属するグループです。セカンダリグループは、ユーザーに特定のリソースへの追加アクセス権限を付与するために使用されます。

セカンダリグループの確認方法:

id -Gn <username>
  • ユーザーは複数のセカンダリグループに所属することができます。

プライベートグループ

各ユーザー専用に自動的に作成されるグループです。ユーザー名と同じ名前を持つグループで、通常そのユーザーだけが所属します。

  • 他のユーザーとグループを共有する必要がない場合に、ユーザーのプライマリグループとして使用されます。

ユーザーの管理

以下の表に、各コマンドの概要と使用例を整理しました。

コマンド 概要
useradd ユーザーをシステムに追加するためのコマンド。
userdel システムからユーザーを削除するためのコマンド。
adduser 対話式でユーザーをシステムに追加するためのコマンド。
deluser 対話式でシステムからユーザーを削除するためのコマンド。
usermod 既存のユーザーアカウントを変更するためのコマンド。
chfn ユーザーの GECOS 情報を変更するためのコマンド。
chsh ユーザーのログインシェルを変更するためのコマンド。
chage ユーザーアカウントの有効期限を設定するコマンド。
getent ユーザーの情報をデータベースから取得するコマンド。
passwd ユーザーのパスワードを設定するコマンド。

ユーザーの追加 (useradd)

ユーザーの追加は useradd コマンドで行います。

オプション 説明
-c ユーザーのコメントを指定します (例:フルネーム)。
-d ユーザーのホームディレクトリを指定します。
-e アカウントの有効期限を指定します (YYYY-MM-DD 形式)。
-f パスワードの有効期限が切れた後、アカウントが無効になるまでの日数を指定します。
-g プライマリグループを指定します。
-G セカンダリグループを指定します (カンマ区切りで複数指定可)。
-m ホームディレクトリを作成します。
-M ホームディレクトリを作成しません。
-N ユーザーのプライベートグループを作成しません。
-p 暗号化されたパスワードを指定します。
-r システムアカウントを作成します。
-s ユーザーのログインシェルを指定します。
-u ユーザー ID を指定します。
-k スケルトンディレクトリを指定します (ホームディレクトリの初期内容)。

以下は、useradd コマンド使用例です:

sudo useradd -m -s /bin/bash -G video,audio,sudo username

GECOS フィールド

GECOS フィールドは、もともと「General Comprehensive Operating System」の略で、UNIX や Linux のシステムにおいてユーザーアカウントに関する追加情報を保存するためのフィールドです。 /etc/passwd ファイルの各エントリに含まれるフィールドの 1 つで、通常はユーザーのフルネームや連絡先情報などを含むために使用されます。

GECOS フィールドは通常、カンマ(,)で区切られた情報を含みます。典型的な内容は次の通りです:

  1. フルネーム
  2. オフィスの部屋番号(オプション)
  3. オフィスの電話番号(オプション)
  4. 自宅の電話番号(オプション)
  5. その他の情報(オプション)

以下は、/etc/passwd ファイルのエントリの例です:

ubuntu:x:1000:1000:John Doe,123,555-1234,555-6789,Additional Info:/home/ubuntu:/bin/bash

この例では、GECOS フィールドに以下の情報が含まれています:

  • フルネーム: John Doe
  • オフィスの部屋番号: 123
  • オフィスの電話番号: 555-1234
  • 自宅の電話番号: 555-6789
  • その他の情報: Additional Info

ユーザーを追加する際に、useradd コマンドの -c オプションを使用して GECOS フィールドを設定できます。

sudo useradd -c "John Doe,123,555-1234,555-6789,Additional Info" <username>

また、chfn コマンドであとから設定できます。

sudo chfn [option] <username>
オプション 説明 使用例
-f フルネーム(Full Name)を設定する sudo chfn -f "username" <username>
-r オフィス番号(Room Number)を設定する sudo chfn -r "123" <username>
-w 仕事用電話番号(Work Phone)を設定する sudo chfn -w "555-1234" <username>
-h 自宅電話番号(Home Phone)を設定する sudo chfn -h "555-5678" <username>
-o その他の情報(Other)を設定する sudo chfn -o "Additional Info" <username>
-u 指定されたユーザーの GECOS フィールドを空にする sudo chfn -u <username>

スケルトンディレクトリ

Linux で新しいユーザーを作成するとき、スケルトンディレクトリ (/etc/skel) にある内容が新しいユーザーのホームディレクトリにコピーされます。これにより、すべての新しいユーザーが同じ基本的なディレクトリ構造や設定ファイルを持つことができます。

/etc/skel ディレクトリの内容には、例えば以下のようなファイルやディレクトリが含まれます:

/etc/skel/
├── .bash_logout
├── .bashrc
├── .profile

これらのファイルは新しいユーザーが作成されると、そのユーザーのホームディレクトリにコピーされます。例えば、新しいユーザー username を作成した場合、そのホームディレクトリには次のような内容が含まれます:

/home/username/
├── .bash_logout
├── .bashrc
├── .profile

/etc/skel ディレクトリをカスタマイズすることで、新しいユーザーのデフォルト設定を変更することができます。例えば、すべての新しいユーザーに特定のエイリアスや環境変数を設定したい場合は、/etc/skel/.bashrc ファイルを編集します。

ホームディレクトリ

ホームディレクトリ(Home Directory)とは、各ユーザーに割り当てられた個別のディレクトリで、そのユーザーの個人ファイルや設定ファイルを保存する場所です。

  • username ユーザーのホームディレクトリは通常 /home/username です。
  • システム管理者(root)のホームディレクトリは通常 /root です。

現在のユーザーのホームディレクトリを確認するには、以下のコマンドを使用します:

echo $HOME

または、

cd ~
pwd

ユーザーのデフォルトシェル

Linux システムでは、ユーザーごとにデフォルトシェルを設定できます。 デフォルトシェルとは、ユーザーがログインしたときに自動的に起動されるコマンドラインインターフェイスのことです。 デフォルトシェルとは、以下のコマンドで確認できます。

grep ^<username> /etc/passwd

ユーザーのシェルは、chsh コマンドを使って変更することができます。

chsh -s /bin/bash <username>

ユーザーの削除 (userdel)

ユーザーの追加は userdel コマンドで行います。

オプション 説明
-f 強制的にユーザーアカウントを削除します。このオプションは、ユーザーがログイン中でもアカウントを削除します。
-r ユーザーのホームディレクトリとメールスプールを削除します。

userdel コマンドを使用すると、指定したユーザーアカウントを削除することができます。基本的な構文は次のとおりです。

sudo userdel <username>

このコマンドは、指定したユーザーアカウントをシステムから削除しますが、ユーザーのホームディレクトリやメールスプールは削除しません。

ホームディレクトリとメールスプールも削除する

ユーザーアカウントに加えてホームディレクトリやメールスプールも削除したい場合は、-r オプションを使用します。

sudo userdel -r <username>

ユーザーがログイン中の場合

ユーザーが現在ログイン中の場合、userdel コマンドはエラーを返すことがあります。この場合、先にそのユーザーのログインセッションを終了させる必要があります。pkill コマンドを使用して該当ユーザーのセッションを終了させることができます。

sudo pkill -u <username>
sudo userdel <username>

その後、userdel コマンドを実行してユーザーを削除します。

または、-f オプションで強制的に削除することもできます。

sudo userdel -f <username>

ユーザー情報の変更 (usermod)

ユーザー情報の変更は usermod コマンドで行います。

オプション 説明
`-c ユーザーのコメントを変更します。
-d ユーザーのホームディレクトリを変更します。
-e アカウントの有効期限を設定します。
-G ユーザーを新しいセカンダリグループに追加します。
-aG ユーザーを既存のグループに追加します(-G オプションと併用)。
-l ユーザー名を変更します。
-L ユーザーアカウントをロックします。
-s ユーザーのデフォルトシェルを変更します。
-u ユーザー ID (UID) を変更します。
-U ユーザーアカウントのロックを解除します。
-p パスワードを設定します(暗号化された形式で)。
  • ユーザーのホームディレクトリを変更する

    sudo usermod -d /new/home/directory username
  • ユーザーのデフォルトシェルを変更する

    sudo usermod -s /bin/zsh username
  • ユーザーを新しいグループに追加する

    -aG とした場合、既存のセカンダリグループに加えて、新たに newgroup に所属します。

    sudo usermod -aG newgroup username

    一方、-G とした場合、ユーザーのセカンダリグループに newgroup を設定します。 ユーザーが元々所属していた他の補助グループはすべて上書きされます

    sudo usermod -G newgroup username
  • ユーザーアカウントをロックする

    sudo usermod -L username
  • ユーザーアカウントのロックを解除する

    sudo usermod -U username
  • ユーザー名を変更する

    sudo usermod -l newusername oldusername
  • アカウントの有効期限を設定する

    sudo usermod -e 2025-12-31 username

ユーザーアカウントのロック

ユーザーアカウントのロックとは、特定のユーザーがシステムにログインできないようにすることです。 Linux システムでユーザーアカウントをロックすることで、セキュリティを強化し、特定のユーザーがシステムへのアクセスを一時的または永久に制限することができます。

アカウントのロック方法

Linux では、usermod コマンドまたは passwd コマンドを使用してユーザーアカウントをロックすることができます。

usermod コマンドを使用する方法

usermod コマンドを使用してアカウントをロックするには、以下のように -L オプションを使用します:

sudo usermod -L <username>

passwd コマンドを使用する方法

passwd コマンドを使用してアカウントをロックするには、以下のように -l オプションを使用します:

sudo passwd -l <username>

アカウントのロック解除方法

ロックされたアカウントを解除するには、usermod コマンドまたは passwd コマンドを使用します。

usermod コマンドを使用する方法

usermod コマンドを使用してアカウントのロックを解除するには、以下のように -U オプションを使用します:

sudo usermod -U <username>

passwd コマンドを使用する方法

passwd コマンドを使用してアカウントのロックを解除するには、以下のように -u オプションを使用します:

sudo passwd -u <username>

ユーザーのパスワードを設定・変更する

passwd コマンドを使用してユーザーのパスワードを設定または変更できます。

オプション 説明
-d ユーザーのパスワードを削除し、パスワードなしでログインできるようにします。
-e パスワードを即座に期限切れにし、次回ログイン時にパスワードの変更を強制します。
-l ユーザーアカウントをロックします。
-u ユーザーアカウントのロックを解除します。

自身のパスワードを変更する

自身のパスワードを変更する場合、管理者権限なしに変更できます。

passwd

このコマンドを実行すると、新しいパスワードの入力を求められます:

Enter new UNIX password:
Retype new UNIX password:

他のユーザーのパスワードを変更する

他のユーザーのパスワードを変更する場合は管理者権限が必要となります。

例:

sudo passwd <username>

コマンドまとめ

ユーザーアカウント作成時

項目 コマンド
ユーザー名 useradd <username> useradd username
ユーザー ID useradd -u <UID> <username> useradd -u 1001 username
プライマリグループ useradd -g <group> <username> useradd -g users username
セカンダリグループ useradd -G <group1>,<group2> <username> useradd -G wheel,dialout username
ホームディレクトリ useradd -d <path> <username> useradd -d /home/username username
ログインシェル useradd -s <shell> <username> useradd -s /bin/bash username
アカウントの有効期限 useradd -e <YYYY-MM-DD> <username> useradd -e 2025-12-31 username
パスワードの有効期限 useradd -f <days> <username> useradd -f 30 username
コメント useradd -c <comment> <username> useradd -c "Example User" username

設定を変更する

項目 コマンド
ユーザー名 usermod -l <new_username> <username> usermod -l newname username
ユーザー名 ID usermod -u <UID> <username> usermod -u 1001 username
プライマリグループ usermod -g <group> <username> usermod -g users username
セカンダリグループ (上書き) usermod -G <group1>,<group2> <username> usermod -G wheel,dialout username
セカンダリグループ (追加) usermod -aG <group1>,<group2> <username> usermod -aG wheel,dialout username
ホームディレクトリ usermod -d <path> <username> usermod -d /home/username username
ログインシェル usermod -s <shell> <username> usermod -s /bin/bash username
アカウントの有効期限 usermod -e <YYYY-MM-DD> <username> usermod -e 2025-12-31 username
パスワードの有効期限 usermod -f <days> <username> usermod -f 30 username
コメント usermod -c <comment> <username> usermod -c "Example User" username
GECOS (フルネーム) usermod -c <GECOS> <username> usermod -c "Neko Bean" username
GECOS (オフィスの部屋番号) usermod -c <GECOS> <username> usermod -c "Room 123" username
GECOS (オフィスの電話番号) usermod -c <GECOS> <username> usermod -c "123-456-7890" username
GECOS (自宅の電話番号) usermod -c <GECOS> <username> usermod -c "098-765-4321" username
GECOS (その他情報) usermod -c <GECOS> <username> usermod -c "Additional Info" username
パスワード passwd <username> passwd username

設定を確認

項目 コマンド
ユーザー名 whoami
ユーザー名 ID id -u <username>
プライマリグループ id -gn <username>
セカンダリグループ id -Gn <username>
自身が所属しているグループ groups
ホームディレクトリ getent passwd <username> | cut -d: -f6
ログインシェル getent passwd <username> | cut -d: -f7
アカウントの有効期限 chage -l <username>
パスワードの有効期限 chage -l <username>
コメント getent passwd <username>
GECOS (フルネーム) getent passwd <username> | cut -d: -f5 | cut -d, -f1
GECOS (オフィスの部屋番号) getent passwd <username> | cut -d: -f5 | cut -d, -f2
GECOS (オフィスの電話番号) getent passwd <username> | cut -d: -f5 | cut -d, -f3
GECOS (自宅の電話番号) getent passwd <username> | cut -d: -f5 | cut -d, -f4
GECOS (その他情報) getent passwd <username> | cut -d: -f5 | cut -d, -f5
パスワード情報 sudo passwd -S <username>

コメント

コメントする

目次