このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:ファイルの所有者とグループ

ファイルの所有者とグループ

 Linuxは、複数のユーザーが同時に1台のマシンにログインして操作することを前提に設計されています。このような環境では、他のユーザーに秘密のファイルを見られたり、誤って他のユーザーのファイルを上書きしてしまうといった問題を防ぐ仕組みが必要です。ここでは、ファイルの所有者とグループについて詳しく解説します。

ファイルの所有者(オーナー)

 Linuxで扱われるすべてのファイルには、所有者(オーナー)が設定されています。これは、自分で作成したメモのテキストファイルから、システムが提供するライブラリや実行コマンドまで、すべてのファイルに適用されます。ファイルのオーナーは、そのファイルへのアクセス権限を自由に設定できるため、他のユーザーからの不正なアクセスを防ぐことができます。

ファイルのオーナーを確認する

 lsコマンドに-lオプションを付けて詳細表示を行うことで、ファイルのオーナーを確認できます。例として、lsコマンドの実体ファイルである/bin/lsのオーナーを見てみましょう。

user01@ubuntu:~$ ls -l /bin/ls
-rwxr-xr-x 1 root root 142312  4月  5  2024 /bin/ls
パーミッションリンク数所有者グループサイズ更新日時ファイル名
-rwxr-xr-x1rootroot1423124月 5 2024/bin/ls
ファイルのオーナー
  • 3列目所有者(オーナー)を表示します(root
  • 4列目:ファイルが所属するグループを表示します(root

 つまり、この/bin/lsファイルは、「rootユーザーがオーナーで、rootグループに所属」しています。

新しくファイルを作成してオーナーを確認

新しくファイルを作成すると、そのファイルの所有者は作成したユーザーになります。

user01@ubuntu:~$ touch file  # ユーザーuser01がファイルを作成
user01@ubuntu:~$ ls -l file  # ファイルのオーナーを確認
-rw-rw-r-- 1 user01 user01 0 10月 15 23:40 file

user01@ubuntu:~$ rm file # ファイルを削除しておきます

 上記の例では、ユーザーuser01がファイルを作成したため、所有者がuser01、グループもuser01になっています。

グループ

 グループとは、ユーザーをまとめた集まりのことです。ユーザーは同時にいくつものグループに所属できます。また、どのユーザーも最低1つのグループに所属していなければなりません。ユーザーを新規作成する際に特に指定しないと、ユーザー名と同一のグループに所属します。

自分が所属しているグループの確認

 自分が現在どのグループに所属しているかは、idコマンドとgroupsコマンドで確認できます。

user01@ubuntu:~$ id
uid=1000(user01) gid=1000(user01) groups=1000(user01),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),114(lpadmin)

user01@ubuntu:~$ groups
user01 adm cdrom sudo dip plugdev users lpadmin

 上の例では、ユーザーuser01は、「user01、adm、cdrom、sudo、dip、plugdev、users、lpadmin」という8つのグループに所属しています。

idコマンドの概要

 idコマンドは、現在のユーザーのユーザーID(UID)グループID(GID)、および所属グループの情報を表示します。

【書式】
id [オプション] [ユーザー名]

主なオプション

オプション説明
-uユーザーID(UID)を表示
-gグループID(GID)を表示
-G所属グループのIDを表示
-n数値IDを名前で表示
idコマンドの主なオプション

使用例

ユーザーuser01UID1000であることを示しています。

user01@ubuntu:~$ id -u
1000

ユーザーuser01が所属するグループ名を表示しています。

user01@ubuntu:~$ id -Gn
user01 adm cdrom sudo dip plugdev users lpadmin

groupsコマンドの概要

groupsコマンドは、指定したユーザーが所属しているグループ名を表示します。

【書式】
groups [ユーザー名]

使用例

現在のユーザーuser01が所属しているグループ名が一覧表示されます。

user01@ubuntu:~$ groups
user01 adm cdrom sudo dip plugdev users lpadmin

ユーザーuser01が所属しているグループを表示します。

user01@ubuntu:~$ groups user01
user01 : user01 adm cdrom sudo dip plugdev users lpadmin

sudoグループ

 sudoグループに所属しているユーザーは、sudoコマンドを使用して一時的に管理者権限を取得することができます。これにより、通常のユーザーでも必要に応じてシステムの設定変更やソフトウェアのインストールなど、管理者権限が必要な操作を行うことができます。

sudoコマンドの使用例

user01@ubuntu:~$ sudo apt update
[sudo] user01 のパスワード: 
  • sudoコマンドを使用してapt updateを実行し、システムのパッケージ情報を更新しています。
  • sudoグループに所属しているため、パスワードを入力することで管理者権限でコマンドを実行できます。

まとめ

  • ファイルの所有者(オーナー):ファイルには必ず所有者が設定されており、ファイルのアクセス権限を自由に設定できます。
  • グループ:ユーザーをまとめた集まりで、ユーザーは複数のグループに所属できます。
  • idコマンド:ユーザーのIDや所属グループなどの詳細情報を表示します。
  • groupsコマンド:ユーザーが所属しているグループ名を表示します。
  • sudoグループ:このグループに所属するユーザーは、sudoコマンドで一時的に管理者権限を取得できます。

 これらの仕組みを正しく理解し、適切に活用することで、Linuxシステムのセキュリティと安定性を維持することができます。