このページで解説している内容は、以下の 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-x | 1 | root | root | 142312 | 4月 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を名前で表示 |
使用例
ユーザーuser01
のUIDが1000
であることを示しています。
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システムのセキュリティと安定性を維持することができます。