Linuxユーザ管理の基本|useradd・passwd・usermod・userdelを初心者向けに解説

  • URLをコピーしました!

Linux初級では、ファイルやディレクトリを操作するコマンドや、 パーミッションの基本について学習しました。

特にパーミッションでは、 「誰がファイルを操作できるのか」 という考え方が重要でした。

では、この「誰が」にあたる Linuxのユーザは、 どのように管理されているのでしょうか。

Linuxにログインしている「自分」とは何者なのか?
useraddでユーザを作ると、Linux内部では何が起きるのか?
rootは一般ユーザと何が違うのか?

Linuxサーバを管理するうえで、 ユーザ管理は必須となる基本操作です。

🐧 LINUX INTERMEDIATE

この記事はLinux中級講座の一部です。 Linux初級で学んだ基本操作から一歩進み、 Linuxサーバの管理に必要な知識を学習します。

Linux中級講座を見る →
LESSON GOAL この記事のゴール

Linuxのユーザ・UID・root・/etc/passwdの関係を理解し、 useraddpasswdusermoduserdelを使った基本的なユーザ管理ができる状態を目指します。

目次

Linuxのユーザとは?

Linuxでは、 「誰がLinuxを操作しているのか」 をユーザによって識別しています。

たとえば、1台のLinuxサーバを 田中さんと佐藤さんが利用するとします。

USER tanaka 田中さん
LINUX Server ユーザを識別
USER sato 佐藤さん

Linuxは、 「田中さん」「佐藤さん」という人間の名前ではなく、 tanaka・satoなどのユーザアカウント として利用者を識別します。

Linuxでは「誰が操作したか」が重要

ファイルへのアクセス、コマンドの実行、プロセスの起動など、 Linux上のさまざまな操作には 「どのユーザが実行したのか」 という情報が関係します。

なぜユーザを分ける必要がある?

全員が同じユーザを利用してしまうと、 誰が何をしたのか分からなくなり、 アクセス制御も難しくなります。

01 アクセス制御

ユーザごとにアクセスできるファイルや ディレクトリを制御できます。

02 操作主体の識別

どのユーザとして処理が実行されているかを 区別できます。

03 権限の分離

一般ユーザと管理者を分け、 必要以上の権限を持たせないようにできます。

現在のユーザを確認してみよう

現在ログインしているユーザは、 whoami で確認できます。

whoami
Linux Terminal
$ whoami
infrauser

この場合、 現在のユーザは infrauser です。

より詳しいユーザ情報を確認したい場合は、 id を利用します。

id
$ id
uid=1000(infrauser) gid=1000(infrauser) groups=1000(infrauser)

ここで登場する uidgidは、 Linuxのユーザ管理を理解するうえで重要です。

Linuxはユーザ名ではなくUIDでユーザを識別する

私たちが普段見るのは infrauser のようなユーザ名ですが、 Linux内部では UID(User ID) という数値によってユーザを識別しています。

USERNAME infrauser 人間が分かりやすい名前
UID 1000 Linux内部での識別番号

つまり、

人間 infrauserとして認識 Linux UID 1000として識別

というイメージです。

ユーザ名=表示名、UID=Linux内部の識別番号

Linuxの権限管理では、 実際にはUIDなどの数値情報を利用して ユーザを識別しています。

rootユーザとは?

Linuxには、 root と呼ばれる特別な管理者ユーザがあります。

SUPERUSER root
UID = 0

Linuxシステム全体に対して 非常に強い権限を持つ管理者ユーザ

rootのUIDは、 0 です。

# id root
uid=0(root) gid=0(root) groups=0(root)

rootはシステム設定の変更やユーザ管理など、 一般ユーザでは実行できない多くの管理操作を実行できます。

IMPORTANT 普段からrootで操作し続けるのは避ける

rootは非常に強い権限を持つため、 操作ミスの影響も大きくなります。 通常は一般ユーザを利用し、 必要な管理操作だけsudoなどで実行する運用が基本です。

Linuxにはどのようなユーザが存在する?

Linuxのユーザは、 大きなイメージとして次のように考えると分かりやすいです。

ADMIN root

システム管理を行う 特別な管理者ユーザ。

LOGIN USER 一般ユーザ

人がLinuxへログインして 操作するためのユーザ。

SERVICE システムユーザ

サービスやプロセスを 動作させるために利用されるユーザ。

Linuxでは、 人間がログインするためだけにユーザが存在するわけではありません。

Webサーバなどのサービスを 専用ユーザの権限で動作させる こともあります。

ユーザ情報は/etc/passwdで確認できる

Linuxの基本的なユーザ情報は、 /etc/passwd に記録されています。

cat /etc/passwd
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
infrauser:x:1000:1000:Infra User:/home/infrauser:/bin/bash
webuser:x:1001:1001:Web User:/home/webuser:/bin/bash

一見すると分かりにくいですが、 1行が1ユーザを表しています。

/etc/passwdの1行を読み解いてみよう

次の行を例に見てみましょう。

infrauser:x:1000:1000:Infra User:/home/infrauser:/bin/bash
01 infrauser ユーザ名
02 x パスワード情報
03 1000 UID
04 1000 GID
05 Infra User コメント欄
06 /home/infrauser ホームディレクトリ
07 /bin/bash ログインシェル

パスワードそのものは/etc/passwdに保存されていない

先ほどの /etc/passwd を見ると、 パスワード部分には x と表示されていました。

infrauser:x:1000:1000:Infra User:/home/infrauser:/bin/bash

現在の一般的なLinuxでは、 パスワードのハッシュ情報は /etc/shadow に保存されます。

/etc/passwd 基本ユーザ情報

ユーザ名・UID・GID・ Home Directory・Shellなど

/etc/shadow 認証関連情報

Password Hashや Password有効期限など

SECURITY /etc/shadowは一般ユーザから自由に読めない

パスワード関連情報を保護するため、 /etc/shadowには厳しいアクセス権が設定されています。

ホームディレクトリとは?

一般ユーザには通常、 そのユーザが利用する ホームディレクトリ が用意されます。

USER infrauser
HOME /home/infrauser

ユーザがログインすると、 基本的には自分のホームディレクトリを中心に作業します。

$ cd ~
$ pwd
/home/infrauser

useradd:Linuxユーザを作成する

新しいユーザを作成するときに利用する代表的なコマンドが、 useradd です。

sudo useradd tanaka

基本形は、

useradd [オプション] ユーザ名

です。

$ sudo useradd tanaka

$ id tanaka
uid=1001(tanaka) gid=1001(tanaka) groups=1001(tanaka)

これで tanaka というユーザがLinuxへ登録されました。

useraddだけではホームディレクトリが作られない場合がある

ここは初心者が混乱しやすいポイントです。

useradd の動作はLinuxディストリビューションや設定によって違いがあります。

環境によっては、

sudo useradd -m tanaka

のように -mオプション を指定してホームディレクトリを作成します。

-m
ホームディレクトリを作成

ユーザ作成時に、 /home/ユーザ名 のホームディレクトリを作成します。

「useraddしたら必ず同じ状態になる」と考えない

Linuxではディストリビューションや /etc/login.defsなどの設定によって、 ユーザ作成時の既定動作が異なることがあります。

ログインシェルも指定できる

ユーザ作成時に ログインシェル を指定することもできます。

sudo useradd -m -s /bin/bash tanaka
-s
ログインシェルを指定

ユーザが利用するShellを指定します。

作成後、 /etc/passwd を確認すると、

$ grep '^tanaka:' /etc/passwd
tanaka:x:1001:1001::/home/tanaka:/bin/bash

ホームディレクトリとログインシェルが確認できます。

passwd:ユーザのパスワードを設定する

ユーザを作成したら、 必要に応じて passwd でパスワードを設定します。

sudo passwd tanaka
$ sudo passwd tanaka
New password:
Retype new password:
passwd: password updated successfully
useraddとpasswdは役割が違う

useraddはユーザを作成し、 passwdはパスワードを設定・変更するためのコマンドです。

usermod:既存ユーザの設定を変更する

すでに存在するユーザの情報を変更するときは、 usermod を利用します。

usermod [オプション] ユーザ名

たとえば、 tanakaというユーザ名を tanaka01へ変更する場合、

sudo usermod -l tanaka01 tanaka

とします。

$ sudo usermod -l tanaka01 tanaka

$ id tanaka01
uid=1001(tanaka01) gid=1001(tanaka) groups=1001(tanaka)
CHECK ユーザ名を変更しても関連情報がすべて自動で同じ名前になるとは限らない

ホームディレクトリやグループなど、 関連する設定は別途確認する必要があります。 「名前だけ変更すれば全部変わる」と考えないことが重要です。

userdel:Linuxユーザを削除する

不要になったユーザを削除するときは、 userdel を利用します。

sudo userdel tanaka

ただし、 これだけではホームディレクトリなどが残る場合があります。

ホームディレクトリなども削除する場合は、

sudo userdel -r tanaka

とします。

-r
ホームディレクトリなども削除

ユーザ削除と同時に、 Home DirectoryやMail Spoolなども削除します。

CAUTION userdel -rは実データを削除するため注意

ホームディレクトリに必要なデータが残っていないか、 所有ファイルがほかに存在しないかなどを確認してから削除します。

Linuxユーザ管理の流れを整理しよう

STEP 01 useradd ユーザ作成
STEP 02 passwd パスワード設定
STEP 03 usermod 設定変更
STEP 04 userdel ユーザ削除

ここで実際に試してみよう:Linuxユーザ管理シミュレーター

ここまで学習したコマンドを、 疑似Linux環境で実際に操作してみましょう。

このシミュレーターでは、 ユーザを作成 → 確認 → パスワード設定 → 削除 という一連の流れを体験できます。

INTERACTIVE LAB

Linux User Management

USER ADMIN
USER tanaka
STATUS NOT CREATED
UID
PASSWORD NOT SET
infrauser@linux
Linux user management practice
sudo useradd -m tanaka を実行してユーザを作成してみましょう。
infrauser@linux:~$
START

まずユーザを作成してみましょう

useradd → id → passwd → userdelの順に操作すると、 ユーザ管理の流れを理解しやすくなります。

理解度チェック:/etc/passwdを読んでみよう

次のユーザ情報を確認してください。

webuser:x:1005:1005:Web User:/home/webuser:/bin/bash

このユーザの UID はどれでしょうか?

回答を選択してください

/etc/passwdは「:」で項目を区切って読みます。

ユーザだけではLinuxの権限管理は完結しない

ここまでで、 Linuxがユーザをどのように識別し、 管理しているのかが分かりました。

しかし、実際のLinuxサーバでは、 ユーザ1人ずつに権限を設定するだけでは管理が大変 です。

たとえば、次の3人がWebサーバを管理するとします。

USER tanaka
USER sato
USER suzuki
GROUP webadmin

このように複数ユーザをまとめて管理する仕組みが、 Linuxのグループ です。

初級で学習した owner / group / others の「group」が、ここにつながります。

確認問題:Linuxユーザ管理を理解できたか確認しよう

QUESTION 01

Linux内部でユーザを識別する番号はどれですか?

正解:B

Linux内部ではUID(User ID)によって ユーザを識別します。

QUESTION 02

Linuxで新しいユーザを作成する代表的なコマンドはどれですか?

正解:A

useraddは新しいLinuxユーザを作成するための 代表的なコマンドです。

QUESTION 03

rootユーザのUIDはどれですか?

正解:C

rootのUIDは0です。 rootはLinuxで非常に強い権限を持つ特別なユーザです。

YOUR SCORE 0 / 3

3問に挑戦してみましょう。

まとめ

01

Linuxでは ユーザによって「誰が操作しているか」を識別 する

02

Linux内部ではユーザを UID によって識別する

03

/etc/passwd にはユーザ名・UID・GID・Home Directory・Shellなどが記録される

04

useraddpasswdusermoduserdel で基本的なユーザ管理ができる

05

rootはUID 0を持つ特別な管理者ユーザであり、 必要以上にroot権限を利用しない ことが重要

NEXT LESSON

次は「Linuxグループ管理」を学びましょう

Linuxでは複数ユーザをグループとしてまとめることで、 ファイルやディレクトリへのアクセス権を効率的に管理できます。

次の記事では、 GID・プライマリグループ・補助グループの仕組みから、 groupadd・usermodなどを使ったグループ管理まで学習します。

Linuxグループ管理を理解する
LINUX INTERMEDIATE

Linux中級講座の一覧へ戻る

Linux中級の学習順を確認したい場合は、 講座一覧へ戻りましょう。

← Linux中級講座へ戻る
目次