【OS】権限とパーミッション
はじめに
コンピュータを使っていると、時々「権限がありません」や「アクセスが拒否されました」というエラーに出会うことがあります。これは、OS(WindowsやLinuxなど)がファイルやフォルダへのアクセスを制限しているためです。権限とパーミッションは、誰がどのファイルを読み取ったり、編集したり、実行したりできるかを決める重要な仕組みです。
例えば、重要なシステムファイルが誰でも書き換えられる状態だと、誤って削除したり、悪意のあるプログラムに改ざんされたりする危険があります。逆に、自分だけが使うファイルが他のユーザーから見えてしまうと、プライバシーの問題にもなります。このような問題を防ぐために、OSはファイルごとにアクセス権を細かく設定できるようになっています。
本記事では、権限とパーミッションの基本を、わかりやすく解説していきます。
※本記事では、Linux(UNIX系OS)を中心にまとめていきます
1. 権限とパーミッションの基本概念
1.1 権限(Permissions)とは
権限とは、「どのユーザーがどのファイルに対してどんな操作をできるか」を制御する仕組みです。
主に以下の3つの操作が制御されます。
- 読み取り(Read):ファイルの中身を読む、ディレクトリ内のファイル一覧を表示する
- 書き込み(Write):ファイルを編集・削除する、ディレクトリ内に新しいファイルを作成する
- 実行(Execute):プログラムを実行する、ディレクトリの中に入る(cd コマンドを使う)
1.2 パーミッションは誰に対して適用されるのか
権限は、主に3つの対象に対して設定されます。
- 所有者(Owner):ファイルを作成したユーザー。通常、このユーザーはファイルに対してフルコントロールを持っています。
- グループ(Group):複数のユーザーをまとめたグループ。例えば、開発チームのメンバー全員に同じ権限を与えたい場合に使います。
- その他のユーザー(Others):所有者でもグループメンバーでもない一般ユーザー。公開するファイルかどうかを決める際に重要です。
2. Linuxでのパーミッションの確認方法
LinuxやMac(UNIX系OS)では、ターミナルで ls -l
コマンドを実行すると、ファイルの権限を確認できます。
-rw-r--r-- 1 user group 1024 Jun 23 10:00 example.txt
この出力の最初の部分 -rw-r--r-- がパーミッションを表しています。
- 1文字目(-):ファイルの種類(- は通常ファイル、d はディレクトリ)
- 2~4文字目(rw-):所有者(Owner)の権限
- 5~7文字目(r--):グループ(Group)の権限
- 8~10文字目(r--):その他のユーザー(Others)の権限
この例では、
- 所有者(user):読み取り(r)と書き込み(w)が可能
- グループ(group):読み取り(r)のみ可能
- その他のユーザー:読み取り(r)のみ可能
となっています。
3. パーミッションの変更方法(chmodコマンド)
権限を変更するには、chmod(Change Mode)コマンドを使います。
3.1 数値モード(数字で設定)
権限を3桁の数字で表現します。
- 4(Read):読み取り
- 2(Write):書き込み
- 1(Execute):実行
例えば、chmod 755 example.txt とすると、
- 所有者(7 = 4+2+1):読み取り、書き込み、実行
- グループ(5 = 4+1):読み取り、実行
- その他(5 = 4+1):読み取り、実行
という権限が設定されます。
3.2 シンボリックモード(記号で設定)
u(所有者)、g(グループ)、o(その他)、a(全ユーザー)を使って設定します。
chmod u+x example.txt # 所有者に実行権限を追加
chmod go-w example.txt # グループとその他から書き込み権限を削除
5. 適切な権限設定の重要性
- セキュリティ:重要な設定ファイルが誰でも書き換えられると、システムが危険にさらされます。
- プライバシー:個人のファイルが他のユーザーから見えないようにする必要があります。
- 共同作業:チームで作業する場合、適切なメンバーだけが編集できるようにします。
例えば、Webサーバー(ApacheやNginx)では、Webページのファイルは「読み取り可能」だが「書き込み不可」に設定することが一般的です。逆に、アップロード用のディレクトリは「書き込み可能」だが「実行不可」にすることで、セキュリティを高められます。
まとめ
権限とパーミッションは、ファイルやディレクトリへのアクセスを制御するための重要な仕組みです。Linuxでは chmod コマンドで、Windowsではセキュリティ設定で管理できます。
- 読み取り(Read)、書き込み(Write)、実行(Execute)の3種類の権限がある
- 所有者、グループ、その他のユーザーごとに権限を設定できる
- 適切な権限設定はセキュリティと利便性のバランスが重要
これらの挙動を実際にLinuxにログインして使ってみると理解を深めることができます。
最後までお読みいただき、ありがとうございました。
参考・画像引用元URL
『新しいLinuxの教科書 第2版』
Discussion