1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linux ユーザ管理

Last updated at Posted at 2025-02-27

ユーザの種類

  • root ユーザ
  • システムユーザ
  • 一般ユーザ

root ユーザ

  • システム管理者専用
  • UID:0
  • すべてのコマンドを実行できる

システムユーザ

  • サービス、デーモンの実行専用
  • UID:1 ~ 999(ディストリビューションによって異なる場合あり)
  • nobodydaemonwww-datamysql など

一般ユーザ

  • UID:1000 以上
  • それぞれのホームディレクトリ内のファイルや設定を管理できる
  • $ sudo コマンドによって一部の管理権限を取得可能(sudo グループに所属する場合)

/etc/passwd

/etc/passwd の書式を間違えるとシステムが正常に動作しなくなるため、編集には $ vipw$ usermod$ passwd を利用する

ユーザアカウント情報は /etc/passwd ファイルに保存される。

/etc/passwd は 1 ユーザあたりの情報が 1 行のテキストファイルになっていて、各項目は : で区切られている。

パーミッション は通常、 -rw-r--r-- となっている。

/etc/passwd
ユーザ名:パスワード:UID:GID:コメント:ホームディレクトリ:ログインシェル
フィールド 説明
ユーザ名 最大 32 文字
パスワード ユーザのパスワード。通常は x と表示される。
実際のパスワードは シャドウパスワード として /etc/shadow に保存される。
* もしくは !:ログイン不可
コメント ユーザの説明(フルネームなど)
UID ユーザID
GID ユーザが所属する プライマリグループ の GID
ホームディレクトリ /root/home/ユーザ名 など(※ /home/
ログインシェル ログイン時に自動で起動するシェル
/bin/bash/usr/sbin/nologin など
root ユーザの例
root:x:0:0:root:/root:/bin/bash
システムユーザの例
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
一般ユーザの例
user1:x:1000:1000:User One:/home/user1:/bin/bash

/etc/shadow

ユーザパスワード情報を安全に格納するためのファイル。暗号化されたパスワードなどが格納される。

パーミッション-rw------ で設定される。

/etc/shadow
ユーザ名:パスワード:最終変更日:最小日数:最大日数:警告日数:無効日数:有効期限:予約

root ユーザしか読み取りができないようにされた各ユーザのパスワードが格納されたファイル。

昔は /etc/passwdx ではなく直接パスワードが格納されていた。暗号化されて保存されていた場合も解読される恐れがあるため、今では /etc/shadow が使用される。

フィールド 説明
ユーザ名 /etc/passwd に対応するユーザ名
パスワード 暗号化されたパスワード
* もしくは !:ログイン不可
!!:パスワード未設定
最終変更日 UNIX時代(1970/1/1)からの日数として格納されている。
$ chage -l ユーザ名 で確認可能。
最小日数 パスワード変更を強制するための最低間隔(日数)
0:制限なし
最大日数 パスワードの有効期間(日数)
99999:無期限
警告日数 有効期限前に警告を表示する日数
7:7日前から警告
無効日数 期限切れ後、アカウントを無効にするまでの日数
14:14日後に無効
有効期限 アカウントの有効期限
予約 予約フィールド

/etc/nologin

/etc/nologin ファイルを作成することで、一時的に root ユーザ以外のすべてのユーザのログインを拒否することができる。

/etc/nologin ファイルを作成する
$ touch /etc/nologin

/ets/nologin は、ファイルの存在有無によって動作を制御するフラグファイル と呼ばれるテキストファイルであるため、ファイルの中身は特に必要ない。

システムメンテナンスなどで一時的に通常ユーザのログインを禁止する場合に利用される。

/sbin/nologin / /usr/sbin/nologin

システムユーザや特定のユーザのシステムへのログインを制限するための 実行可能ファイル。実体は何もしないで即座に 終了ステータス 1 を返すプログラム。

/etc/passwd のログインシェルとして設定される。

ログインシェルとして /sbin/nologin または /usr/sbin/nologin が設定されたユーザがログインを試みた場合、以下のようなメッセージが表示される。

This account is currently not available.

/usr/sbin/nologin の代わりに /bin/false を使用することもできる。

Linux ディストリビューションの種類によって /sbin/nologin または /usr/sbin/nologin のどちらが使用されるかが異なり、どちらが使用されているかは $ which で確認することができる。

ログイン制限用の実行可能ファイルのパスを確認する
$ which nologin

/bin/false

/usr/sbin/nologin と同様の目的で使用される実行可能ファイル。

/usr/sbin/nologin とは異なり、誤ってログインした場合にメッセージが表示されない(無言で失敗する)。

/etc/skel/

skeleton=骨格、骨組み、基盤

新しいユーザを作成する際に、そのホームディレクトリに自動的にコピーされるテンプレートファイルを格納するディレクトリ。

デフォルトで以下のファイルが既に作成されている。

/etc/skel/ の中身を確認する
$ ls -la /etc/skel/
total 20
drwxr-xr-x   2 root root 4096 Aug 27  2024 .
drwxr-xr-x 108 root root 4096 Feb 26 20:45 ..
-rw-r--r--   1 root root  220 Mar 31  2024 .bash_logout
-rw-r--r--   1 root root 3771 Mar 31  2024 .bashrc
-rw-r--r--   1 root root  807 Mar 31  2024 .profile

以下は Bash の 設定ファイル

  • .bash_logout
  • .bashrc
  • .profile

/etc/skel/ 内のファイルを追加、または削除したとしても、既存のユーザのホームディレクトリは影響を受けない。

$ useradd / $ adduser

新しいユーザアカウントを作る
$ useradd ユーザ名
$ useradd オプション ユーザ名

オプションを省略した場合、/etc/default/useradd の設定がデフォルトとして利用される。

オプション 説明
-u ユーザID
--uid ユーザID
UID を指定する
-g グループID
--gid グループI
所属する プライマリグループ を指定する
-G グループ名
--groups
所属する サブグループ を指定する(, で複数指定可)
-d パス
--home パス
ホームディレクトリのパスを指定する
-c "コメント"
--comment "コメント"
コメントを追加する
-m
--create-home
ホームディレクトリを作成する
-s シェルのパス
--shell シェルのパス
ログインシェル を指定する
-p パスワード
--password パスワード
パスワードを設定する
通常は $ passwd コマンドを コマンド置換 によって使用し、暗号化したパスワードを指定する
-r システムユーザ名
--system システムユーザ名
システムユーザ を作成する

ユーザを作成することにより、以下のファイルにエントリが追加される。

$ userdel

ユーザを削除する(ホームディレクトリは残る)
$ sudo userdel ユーザ名
ユーザを削除する(ホームディレクトリも削除される)
$ sudo userdel -r ユーザ名
$ sudo userdel --remove ユーザ名
ユーザを削除する(ユーザが削除していても強制削除する)
$ sudo userdel -f ユーザ名
$ sudo userdel --force ユーザ名

強制削除する場合、ユーザが起動したプロセスを削除しておく。

$ sudo killall -u ユーザ名
$ sudo pkill -KILL -u ユーザ名

$ killall$ pkill

$ usermod

ユーザ情報を変更する。

基本構文
$ usermod [-option] ユーザ名

手動で /etc/passwd ファイルを編集する方法もある。

ユーザ名を変更する(login)
$ usermod -l 新ユーザ名 旧ユーザ名
ホームディレクトリを変更し、中身を移動する(directory、move)
$ usermod -d 新しいパス -m ユーザ名
ログインシェルを変更する(shell)
$ usermod -s シェルのパス ユーザ名
所属するプライマリグループを変更する(group)
$ usermod -g グループ名 ユーザ名
所属するサブグループを変更する(groups)
$ usermod -G グループ名 ユーザ名
所属するサブグループを追加する(append groups)
$ usermod -aG グループ名 ユーザ名
ログインにロックをかける(lock)
$ usermod -L ユーザ名
ロックを解除する(unlock)
$ usermod -U ユーザ名
アカウントの有効期限を設定する(expire)
$ usermod -e YYYY-MM-DD ユーザ名 # 指定した日を過ぎるとログインできない
$ usermod -e "" ユーザ名 # 有効期限を無期限(制限なし)にする
パスワード期限切れ後の猶予日数を設定(inactive)
$ uusermod -f 日数 ユーザ名   # 猶予期間中にパスワードの変更をしないとアカウントがロックされる

$ passwd

パスワードを変更する
$ passwd # 自分のパスワードを変更する
$ sudo passwd 他人のユーザ名

パスワードは ! に変更することで、ログインにロックをかけることができる。

ログイン不可にする(lock)
$ sudo passwd -l ユーザ名 # /etc/shadow のパスワードが ! に変更される
ログイン不可を解除する(unlock)
$ sudo passwd -u ユーザ名

$ passwd コマンドの実体である /usr/bin/passwd には SUID パーミッションが設定されている。SUID が設定された実行可能ファイルは、実行者の権限ではなく、所有者の権限で実行される。

/usr/bin/passwd の所有者は root ユーザであるため、$ passwdroot ユーザの権限で実行される。

そのため一般ユーザは、書き込み権限のない /etc/shadow ファイルの自身のパスワードを変更することができる。

ただし /usr/bin/passwd のプログラムの内部では、一般ユーザが「他のユーザのパスワード」を変更しようとした場合には、エラーを出すように制御されている。

パスワードの有効期間を設定(maxdays)
$ passwd -x 日数 ユーザ名   # 期限を過ぎるとパスワードの変更が要求される
パスワード期限切れ後の猶予日数を設定(inactive)
$ passwd -i 日数 ユーザ名   # 猶予期間中にパスワードの変更をしないとアカウントがロックされる

$ chage

change age

ユーザのパスワードとアカウントの有効期限を管理するためのコマンド。

基本構文
$ chage [-option] ユーザ名
ユーザアカウントの有効期限を確認する(list)
$ chage -l ユーザ名
アカウントの有効期限を設定する(expiredate)
$ chage -E YYYY-MM-DD ユーザ名
$ chage -E -1 ユーザ名   # 有効期限を無期限(制限なし)にする
パスワードの有効期間を設定する(maxdays)
$ chage -M 日数 ユーザ名   # 期限を過ぎるとパスワードの変更が要求される
パスワードを変更できるまでの最小日数を設定する(mindays)
$ chage -m 日数 ユーザ名   # 指定した日数が経過しないと、新しいパスワードに変更できない
パスワード期限切れ後の猶予日数を設定(inactive)
$ chage -I 日数 ユーザ名   # 猶予期間中にパスワードの変更をしないとアカウントがロックされる
パスワードの最終更新日を設定する(lastday)
$ chage -d YYYY-MM-DD ユーザ名

YYYY-MM-DD の代わりに 1970年1月1日 からの日数を指定してもよい。

次回ログイン時にパスワードの変更を強制する
$ chage -d 0 ユーザ名   # パスワードの変更日を期限切れの古いhに強制変更

グループの種類

複数のユーザをまとめて管理するための仕組み。

ファイルやディレクトリのアクセス制御を行う際に、個々のユーザではなくグループ単位で権限を設定できるため、管理がしやすくなる。

各ユーザは最低 1 つのグループに所属する

1 人のユーザは複数のグループに所属することができる。

  • プライマリグループ
  • サブグループ

プライマリグループ

ユーザが所属するメインのグループ。

基本グループ とも呼ばれる。

ユーザがファイルを作成すると、自動的にプライマリグループがファイルの所有グループになる。

サブグループ

プライマリグループ以外に所属できるグループ。

参加グループ とも呼ばれる。

$ groups コマンドで確認できる。

/etc/group

グループ情報は /etc/group ファイルに保存される。

/etc/passwd と同様に 1 グループあたりの情報が 1 行のテキストファイルになっていて、各項目は : で区切られている。

パーミッション は通常、 -rw-r--r-- となっている。

/etc/group
グループ名:パスワード:GID:メンバー
フィールド 説明
グループ名 グループの名前
パスワード グループのパスワード。通常は x と表示される。
実際のパスワードは シャドウパスワード として /etc/gshadow に保存される。
GID グループ ID
メンバー グループに所属するユーザのリスト(カンマ , 区切り)

/etc/gshadow

/etc/shadow 同様に、グループのパスワードが暗号化され、格納されたファイル。

$ groups

自分が所属しているグループを表示する
$ groups
特定のユーザが所属しているグループを確認する
$ groups ユーザ名

$ id

ユーザが所属しているグループを確認する
$ id ユーザ名

$ groupadd

グループを作成する
$ groupadd グループ名
GID を指定して、グループを作成する
$ groupadd -g GID グループ名

$ groupdel

削除しようとするグループを プライマリグループ として所属しているユーザがいる場合、削除することはできない。

グループを削除する
$ groupdel グループ名

$ groupmod

基本構文
$ groupmod [-option] グループ名
グループID(GID)を変更する
$ groupmod g GID グループ名
グループ名を変更する
$ groupmod -n 新グループ名 旧グループ名
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?