Linux Essentials for Web Developers
第4話:パーミッションとセキュリティ: ファイルアクセス管理の基本
(最終更新日:2023.12.24)
(絵が小さい場合はスマホを横に)
「権限管理は非常に重要」
Linuxのパーミッションとユーザ管理は管理者側のセキュリティの根幹になる。
ユーザーに対して適切な権限を持たせることで、必要以上にファイルの内容を公開させたり、操作させることを防ぐ。
今回は、パーミッションとユーザー管理について重点的に説明する。
1.ファイルとディレクトリのパーミッション
Linuxにおけるファイルとディレクトリのパーミッションは、セキュリティとファイルアクセス管理の重要な側面だ。
これらのパーミッションは、特定のファイルやディレクトリに対するユーザーとグループのアクセス権を制御する。
基本的なパーミッションは3種類で、以下のアクセス権を持つ。
- Read(読み取り):ファイルの内容を読み取ることができる。ディレクトリの場合、ディレクトリ内のファイルとサブディレクトリの一覧を表示できる。
- Write(書き込み):ファイルに対して変更を加えることができる。ディレクトリの場合、ディレクトリ内にファイルを作成、削除、名前変更できる。
- Execute(実行):ファイルをプログラムやスクリプトとして実行できる。ディレクトリの場合、そのディレクトリをカレントディレクトリとして使用できる。
ファイルにおける三つの権限
ちなみに、Linuxでファイルやディレクトリのパーミッションを参照する場合は、上記のアルファベット一文字で省略され、すべての権限がある場合はrwxと表記される。
権限がない部分はr-xというように-で表される。ちなみに、r=4、w=2、x=1、-=0として、rwx全ての権限がある場合は7、rとxは5というような数字で表記する場合もある。
パーミッションの対象は以下の3つのカテゴリーに分けられる。
- Owner(所有者):ファイルまたはディレクトリの所有者
- Group(グループ):ファイルまたはディレクトリを所有するグループ
- Other(その他):上記のどちらにも属さないその他のユーザー
ls -l コマンドを使用して、ファイルやディレクトリのパーミッションを表示できる。
例えば、-rw-r--r-- は、所有者には読み書きの権限があり、グループとその他のユーザーには読み取りのみの権限があることを意味する。
chmod コマンドを使用して、ファイルやディレクトリのパーミッションを変更できる。
例えば、chmod 644 file.txt は、所有者に読み書きの権限を与え、グループとその他のユーザーには読み取りのみの権限を与える。
また、特殊パーミッションには以下のものがある。
- setuid(Set User ID): ファイルが実行される際、所有者の権限で実行される。
- setgid(Set Group ID)ファイルが実行される際、所有グループの権限で実行される。
- sticky bit: 主にディレクトリに設定され、ディレクトリ内のファイルを所有者以外が削除できないようにする。
これらのパーミッションとアクセス権の管理は、Linuxシステムのセキュリティを維持するために非常に重要だ。 適切なパーミッション設定により、不正なアクセスからデータを保護し、システムの安全性を高めることができる。
ユーザによって操作できる場所を制限することが大事
2.ユーザーとグループ管理
Linuxにおけるユーザーとグループ管理は、ファイルアクセスとシステムリソースの利用に関するセキュリティの基本的な側面だ。
これにより、システム上で個々のユーザーやグループのアクセス権を適切に管理し、コントロールすることができる。
Linuxには複数アカウントを作成することができ、各ユーザーには固有のアクセス権限を付与できる。
- ユーザーの追加(useradd): コマンドを使用して新しいユーザーアカウントを作成する。例: useradd [username]
- パスワード設定(passwd): コマンドを使用してユーザーのパスワードを設定または変更する。例: passwd [username]
- ユーザー情報の変更(usermod): コマンドを使用して既存のユーザーアカウントの情報を変更する。例: usermod -aG [groupname] [username]
- ユーザーの削除(userdel): コマンドでユーザーアカウントを削除する。例: userdel [username]
ユーザーアカウントの情報は、/etcディレクトリ以下に含まれており、システム上のすべてのユーザーアカウントの情報が含まれる/etc/passwd、
ユーザーパスワードのハッシュとアカウント情報が保存される/etc/shadowがある。
詳しくは、/etc/passwdは、ユーザー名、パスワードフィールド(通常は x または * として表示され、実際のパスワードは /etc/shadow に格納されています)、ユーザーID(UID)
、グループID(GID)、ユーザーのフルネームや説明(コメントフィールド)、ホームディレクトリ、ログインシェルが含まれ、
/etc/shadowには、ユーザー名、パスワードのハッシュ、最後のパスワード変更日、パスワード変更までの日数、パスワード有効期限、パスワード変更警告期間、
パスワードが無効までの期間、アカウントの無効化日が含まれる。
グループは複数のユーザーをまとめるための方法で、ファイルやディレクトリに対するグループベースのアクセス権を設定できる。
- グループの追加(groupadd): コマンドで新しいグループを作成する。例: useradd [groupname]
- ユーザーをグループに追加(usermod): コマンドでユーザーをグループに追加する。例: usermod -aG [groupname] [username]
- グループの削除(groupdel): コマンドでグループを削除する。例: groupdel [groupname]
グループを管理
グループの情報は/etc/groupにリストとして含まれている。
このように割り当てられたユーザーとグループを用いて、ファイルやディレクトリに関してパーミッションを充てることになる。
パーミッションの設定としては「chmod」や「chown」コマンドを用い、適した管理権限を与えることができる。
chmod 755 [filename]:対象のファイルに対してowner(全権限)、group(readとexecute)、other(readとexecute)の権限設定
chown [ownername] [filename]:対象のファイルに対して、ownerを変更
chown [ownername:groupname] [filename]:対象のファイルに対してownerとgroupを変更
ユーザーとグループの管理は、システム上のリソースへのアクセスを適切に制御し、セキュリティを維持するための重要な部分だ。 これにより、不正なアクセスからシステムを保護し、ユーザーごとに必要なリソースへのアクセスを限定できる。
3.まとめ
今回はLinuxのユーザー、グループの設定とファイルパーミッションに関して説明した。 これらの管理は、必要な人に必要な権限を付与するという、セキュリティ上非常に重要な操作である。 必要以上に権限を付与することがないよう、理想的な設定を考えたうえで、コマンド操作を行っていこう。
▼参考図書、サイト
「スーパーユーザーなら知っておくべきLinuxシステムの仕組み」 インプレス Brian Ward, 柴田 芳樹
「Linux再入門―カーネル、シェル、ファイルといった基本概念を理解してトラブルシューティング力を高めよう」 Udemy しま