04. Ubuntu Server でのユーザーと権限の管理:包括的ガイド

ユーザー、グループ、権限の管理は、Ubuntu Server 管理者にとって基本的なタスクの 1 つです。マルチユーザー環境をセットアップする場合でも、サーバーを安全に保つ場合でも、ユーザーアカウント、グループ、権限の作成、変更、管理の方法を理解することが不可欠です。このガイドでは、実際の例、コマンド出力、ベストプラクティスとともに、ユーザーと権限の管理について詳しく説明します。


前の記事:

01. Ubuntu Server 入門 – SysOSX: AI & Cloud

02. 初めての Ubuntu Server のセットアップ方法:初心者ガイド – SysOSX: AI & Cloud

03. Ubuntu Server のための Linux コマンドラインをマスターする




はじめに

Ubuntu Server は、アプリケーションのホスト、サービスの管理、マルチユーザー環境の実現のための強力なプラットフォームです。ユーザーと権限の管理をマスターすることで、サーバーを安全に保ち、アクセスを効果的に制御し、不正な操作を防ぐことができます。このガイドでは、基本的なユーザーアカウントの作成から高度な権限設定まで、詳細な例とともにすべて説明します。


ユーザーアカウントの作成と管理

ユーザーの作成

adduserコマンドを使って、Ubuntu Server にユーザーアカウントを作成します。このコマンドは対話式で、ユーザーに関する追加情報を求めるプロンプトが表示されます。

コマンド例:

sudo adduser john

出力例:

Adding user `john' ...
Adding new group `john' (1001) ...
Adding new user `john' (1001) with group `john' ...
Creating home directory `/home/john' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for john
Enter the new value, or press ENTER for the default
        Full Name []: John Doe
        Room Number []: 101
        Work Phone []: 555-1234
        Home Phone []: 555-5678
        Other []:
Is the information correct? [Y/n] Y

johnという名前のユーザーを作成し、ホームディレクトリを/home/johnに設定して、一意のユーザー ID(UID)を割り当てます。


ユーザーの変更

usermodコマンドを使うと、ユーザーアカウントを変更できます。たとえば、ユーザーのホームディレクトリ、シェル、グループメンバーシップを変更できます。

ホームディレクトリの変更:

sudo usermod -d /home/new_john john
sudo mv /home/john /home/new_john

ユーザーアカウントのロックまたはロック解除:

  • アカウントをロックします:sudo passwd -l john
  • アカウントのロックを解除します:sudo passwd -u john

出力例(アカウントのロック):

passwd: password expiry information changed.


ユーザーの削除

deluserコマンドを使ってユーザーを削除します。ホームディレクトリと関連ファイルも削除できます。

コマンド例:

sudo deluser --remove-home john

出力例:

Looking for files to backup/remove ...
Removing files ...
Removing user `john' ...
Warning: group `john' has no more members.
Done.


グループの管理

グループは、ユーザーを整理し、集合的な権限を割り当てるための方法です。各ユーザーは複数のグループに所属できます。

グループの作成と管理

新しいグループを作成するには、addgroupコマンドを使用します。

コマンド例:

sudo addgroup developers

出力例:

Adding group `developers' (GID 1002) ...
Done.

グループを削除するには:

sudo delgroup developers

グループへのユーザーの追加

usermodコマンドの-aGオプションを使って、ユーザーをグループに追加します。

コマンド例:

sudo usermod -aG developers john

グループメンバーシップの確認:

groups john

出力例:

john : john developers

johnは、次のグループに属していることが分かります:johnとdevelopers.


ファイルとディレクトリの権限を理解する

Linux のファイル権限は、ファイルやディレクトリへのアクセスを制御するために非常に重要です。権限は次の 3 つのカテゴリに対して定義されます:所有者, グループ、およびその他.

権限の種類

各カテゴリには 3 種類の権限があります:

  • 読み取り (r):ファイルの内容を表示したり、ディレクトリの内容を一覧表示したりできます。
  • 書き込み (w):ファイルの内容を変更したり、ディレクトリ内でファイルを作成/削除したりできます。
  • 実行 (x):実行可能ファイルを実行したり、ディレクトリにアクセスしたりできます。

例:

ls -lでファイルの権限を表示します:

ls -l /home/john

出力例:

-rw-r--r-- 1 john john 4096 Mar 21 14:00 file.txt

  • rw-:所有者(john)には読み取りと書き込みの権限があります。
  • r--:グループ(john)には読み取り専用の権限があります。
  • r--:その他には読み取り専用の権限があります。

権限の変更

chmodコマンドで権限を変更します。

コマンド例:

  • 所有者に実行権限を付与します: chmod u+x file.txt
  • その他のユーザーに対する書き込み権限を削除します:chmod o-w file.txt

数値の使用:

権限は数値を使って設定することもできます:

chmod 755 file.txt:所有者にはすべての権限、グループとその他には読み取り/実行権限。


数値権限を理解する(755、777、744)

Linux の権限は数値で表すことができ、各桁が特定の権限レベルに対応します:

数値権限の構造:

各数値権限は 3 桁で構成されます:

  • 1 桁目:所有者の権限。
  • 2 桁目:グループの権限。
  • 3 桁目:その他の権限。

各桁は次の値に基づいて計算されます:

  • 4:読み取り(r)
  • 2:書き込み(w)
  • 1:実行(x)

これらの値の合計によって、各カテゴリの権限レベルが決まります。

一般的な数値権限:

  1. 777:全員にすべての権限(読み取り、書き込み、実行)。
    • 所有者:rwx
    • グループ:rwx
    • その他:rwx
    • 使用例:セキュリティ上の理由からめったに使用されませんが、次の一時ディレクトリには適用できます:/tmp.
  2. 755:所有者にはすべての権限、グループとその他には読み取りと実行の権限。
    • 所有者:rwx
    • グループ:r-x
    • その他:r-x
    • 使用例:実行可能ファイルやディレクトリによく使われます。
  3. 744:所有者にはすべての権限、グループとその他には読み取り専用。
    • 所有者:rwx
    • グループ:r--
    • その他:r--
    • 使用例:プライベートファイルによく使われます。

例:

スクリプトの権限を755に設定するには:

chmod 755 script.sh

出力例:

-rwxr-xr-x 1 john john 4096 Mar 21 14:00 script.sh

所有権の管理

所有権を変更するには、chownコマンドを使用します。

コマンド例:

sudo chown john:developers file.txt

これにより、所有者はjohn、グループはdevelopers.

出力例:

-rw-r--r-- 1 john developers 4096 Mar 21 14:00 file.txt


権限昇格のための Sudo の使用

sudoコマンドを使うと、ユーザーは昇格した権限でコマンドを実行できます。ユーザーにsudoへのアクセス権を付与するには、sudoグループに追加します。

コマンド例:

sudo usermod -aG sudo john

Sudo アクセスの確認:

sudo -l -U john

出力例:

User john may run the following commands on this host:
    (ALL : ALL) ALL

ユーザーアカウントを保護するためのベストプラクティス

  • 強固なパスワードポリシーを適用する:
    passwdでパスワードの有効期限を設定します: sudo passwd -e john
  • Sudo アクセスを制限する:
    sudoの権限は、信頼できるユーザーにのみ付与します。
  • root ログインを無効にする:
    SSH 設定ファイルを編集します:
sudo nano /etc/ssh/sshd_config 

設定:

PermitRootLogin no
  • 認証に SSH キーを使用する:
    パスワードベースのログインを SSH キーに置き換えます。
  • ユーザーアクティビティを監視する:
    lastまたはwhoでログインアクティビティを追跡します:
last

出力の説明

uadmin   pts/1   192.168.255.48   Fri Mar 21 13:55   still logged in
uadmin   pts/0   192.168.255.48   Fri Mar 21 13:54   still logged in
uadmin   pts/1   192.168.255.48   Fri Mar 21 01:49 - 08:19  (06:29)
uadmin   pts/0   192.168.255.48   Fri Mar 21 00:53 - 08:19  (07:26)
reboot   system boot   6.8.0-1021-azure   Fri Mar 21 00:22   still running


行ごとの分析

ユーザーログイン:uadmin pts/1 192.168.255.48 Fri Mar 21 13:55 still logged in

  • uadmin:ログインしたユーザーのユーザー名。
  • pts/1:ログインに使用された疑似端末セッション。疑似端末(pts)は仮想端末であり、通常、ユーザーが SSH 経由でログインすると作成されます。
  • 192.168.255.48:ユーザーが接続したリモートマシンの IP アドレス。
  • Fri Mar 21 13:55:ユーザーがログインした日時。
  • still logged in:ユーザーが現在ログイン中でアクティブであることを示します。
列意味
ユーザー名ユーザー名またはイベント名(uadmin, reboot).
端末疑似端末セッション(pts/X)またはシステムイベント(system boot).
リモートホスト/IP接続を開始したリモートマシンの IP アドレスまたはホスト名。
ログイン日時ログインまたはイベントが開始した日時。
ログアウト時刻セッションが終了した日時(該当する場合)。
継続時間セッションが続いた合計時間(該当する場合)。
セッションの状態セッションの現在の状態(still logged in, still running).

洞察のための追加コマンド

  • 現在ログインしているユーザーを表示する: who
  • 出力例:
uadmin pts/1 2023-03-21 13:55 (192.168.255.48) 
uadmin pts/0 2023-03-21 13:54 (192.168.255.48)
  • システムの稼働時間を確認する: uptime
  • 出力例:
14:15:32 up 13:53, 2 users, load average: 0.10, 0.12, 0.15

まとめ

ユーザー、グループ、権限の管理は、Ubuntu Server 管理者にとって基本的なスキルです。これらのタスクをマスターすることで、サーバーを安全に保ち、不正アクセスを防ぎ、運用効率を向上させることができます。


次のチュートリアル:Ubuntu Server のネットワークの基礎

次のチュートリアルでは、 Ubuntu Server のネットワークの基礎について説明します。これには、ネットワークインターフェイスの設定、静的 IP のセットアップ、ネットワーク接続のトラブルシューティング、Ubuntu のnetplanを使ったネットワークタスクが含まれます。サーバーのネットワーク設定を最適化するための実践的な知見にご期待ください。

7 thoughts on “04. Managing Users and Permissions on Ubuntu Server: A Comprehensive Guide”

コメントを残す