· FabLab Westharima Team · ドキュメント  · 10 min read

[Unix系OS] [chmod]パーミッションとは?パーミッションを数値で指定

Unix系OSのファイルパーミッションの基本から実践まで。chmodコマンドの使い方、数値指定の方法、SSH鍵やWebサーバーでの具体的な設定例を解説。

目次

パソコンにあるファイルやディレクトリを扱う上で、パーミッション(Permission) を適切に設定しないと、プログラムが正しく実行されなかったり、最悪、情報漏洩などを引き起こしたりすることがあります。

ターミナルでのコマンド入力作業中、パーミッション設定変更に手間取ったことがあり、今後のために、パーミッションの概要・表示方法・見方・チートシートなどを備忘録としてまとめてみました。

パーミッションとは?

Unix系OSでは、ファイルパーミッションやアクセスモードは非常に重要な役割を果たします。これらのパーミッションは、ファイルやディレクトリに対するユーザーやグループのアクセスを制御するために使用されます。正しく設定されていないと、セキュリティリスクにつながる場合があります。

パーミッションの基本

ファイルのパーミッション

ファイル:パーミッション表記意味
読み取り (read):rファイルを読み取る権限
書き込み (write)wファイルにデータを書き込むまたはファイルを削除する権限
実行 (execute)xファイル(プログラムやスクリプトなど)を実行する権限
権限なし-

ディレクトリのパーミッション

ディレクトリ:パーミッション表記意味
読み取り (read):rディレクトリ内のファイル名リストを読み取る権限
書き込み (write)wディレクトリ内でのファイルの作成、削除を許可
実行 (execute)xディレクトリ内のファイルやサブディレクトリにアクセスする権限
権限なし-

ディレクトリの実行権限が自分にあれば、そのディレクトリに入ることができますが、ディレクトリの実行権限がなければディレクトリに入ることはできません。


ユーザークラス

上記のパーミッションは、3つの異なるクラスのユーザーに対し割り当てることができます。

所有者 (user)ファイルを作成したユーザー
所有グループ (group)ファイルの作成者が属するグループ
その他 (others)その他全員

これらを組み合わせることで、特定のユーザーやグループに対する細かなアクセス制御が可能です。

パーミッションの表示

ターミナルにて ls -l コマンド を使用すると、ファイルパーミッションを確認できます。

ls -l

出力例は以下の通りです。

-rwxr-xr-- 1 user group 12345 Jan 23 12:34 example.txt

出力例の行は以下の情報を表しています:

-rwxr-xr—ファイルパーミッション
1リンクの数
userファイルの所有者
groupファイルの所有グループ
12345ファイルサイズ(バイト)
Jan 23 12:34最終更新日時
example.txtファイル名

パーミッションの見方

上述の -rwxr-xr-- がパーミッションと言われるもので、それぞれの文字は以下を表します。

  • 最初の1文字 : ファイルの種別

    • 「d」はディレクトリ、「-」はファイル
  • 2~4文字目, 5~7文字目, 8~10文字目 : それぞれ3つの異なるクラスのユーザーに対する権限を表しています。

    • 2~4文字目 : 所有者のパーミッション
    • 5~7文字目 : 所有グループのパーミッション
    • 8~10文字目 : その他全員のパーミッション

これを出力例 -rwxr-xr-- で考えると、

  • 最初の1文字 - : ファイル

  • 2~4文字目 rwx : 所有者(読み取り、書き込み、実行)

  • 5~7文字目 r-x : 所有グループ(読み取り、実行)

  • 8~10文字目 r-- : その他全員(読み取りのみ)

というパーミッションが設定されていることがわかります。

パーミッションの変更

各ユーザークラスに対するパーミッションを設定するには、chmodを使い、3桁の数値を組み合わせて設定できます。最初の桁は所有者のパーミッション、2桁目はグループのパーミッション、そして3桁目はその他のユーザのパーミッションです。_(chmod は change mode の略で,ファイルやディレクトリのパーミッションを変更するコマンドです。)_

コマンド例(chmod xxx ファイル名)

chmod 644 example.txt

重要なのは3桁の数値で、以下の権限の数値の合計となっています。

  • 権限:数値
    • 読み取り可能:4
    • 書き込み可能:2
    • 実行可能  :1

したがって、このコマンド例は、ファイル「example.txt」に対し、所有者に読み取りと書き込みの権限を与え、グループとその他のユーザーには読み取りのみの権限を与えたい場合のコマンドとなります。

合計数値読み取り r書き込み w実行可能 x
所有者(owner)6(4+2+0)-rw-
所有グループ(group)4(4+0+0)--r—
その他ユーザー(others)4(4+0+0)--r—

以下は、chmod コマンドを使用した際の主要な数値とそれに対応するパーミッションのチートシートです。

パーミッションのチートシート

基本的なパーミッション数値

0何の権限もなし---
1実行のみ—x
2書き込みのみ-w-
3書き込みと実行-wx
4読み取りのみr—
5読み取りと実行r-x
6読み取りと書き込みrw-
7読み取り、書き込み、実行rwx

chmod コマンド 例

数値所有者グループ他のユーザー
700全ての権限権限なし権限なし
755全ての権限読み取り・実行読み取り・実行
644読み取りと書き込み読み取りのみ読み取りのみ
600読み取りと書き込み権限なし権限なし
666読み取りと書き込み読み取りと書き込み読み取りと書き込み
400読み取りのみ権限なし権限なし
444読み取りのみ読み取りのみ読み取りのみ

実際の使用例

パーミッション設定が必要になる代表的なケースと、その設定方法を紹介します。

1. SSH秘密鍵のパーミッション設定

SSH接続に使用する秘密鍵ファイルは、セキュリティ上、所有者だけが読み取れるようにする必要があります。

chmod 600 ~/.ssh/id_rsa

解説: 600は所有者のみ読み書き可能で、他のユーザーは一切アクセスできません。これにより、秘密鍵の不正利用を防ぎます。

2. Webサーバーのファイル権限

Webサーバー(Apache、Nginxなど)で公開するファイルの典型的な設定です。

# HTMLファイルやCSSファイル
chmod 644 index.html

# ディレクトリ
chmod 755 /var/www/html

# 実行ファイルやスクリプト
chmod 755 script.sh

解説:

  • 644: 所有者は編集可能、Webサーバーや訪問者は読み取りのみ
  • 755: ディレクトリは実行権限が必要(ディレクトリ内にアクセスするため)

3. 環境変数ファイル(.envなど)

APIキーやデータベースパスワードなど、機密情報を含むファイルの保護です。

chmod 600 .env

解説: 開発環境でも本番環境でも、環境変数ファイルは所有者だけがアクセスできるようにします。

4. 共同作業用のディレクトリ

チームで共有するディレクトリで、全員が読み書きできるようにする場合です。

chmod 775 /shared/project

解説: 775は所有者とグループメンバーが読み書き・実行可能、その他は読み取りと実行のみです。

5. 実行可能なスクリプトの作成

作成したシェルスクリプトやPythonスクリプトを実行可能にする場合です。

chmod 755 deploy.sh
# または
chmod +x deploy.sh

解説: スクリプトファイルには実行権限が必要です。755または+xオプションで実行権限を付与します。

注意事項

  • 注意事項として、パーミッションは、正しく設定されていないと、悪意のある第三者にファイルを不正に見られたり書き換えられる可能性があります。

  • そのため、権限を設定する際は、必要最小限の権限をユーザーに与えることで、セキュリティリスクを減らします。 例えば、特定のユーザーがファイルを読み取る必要があるだけの場合、そのユーザーに書き込み権限を与えるべきではありません。

Back to Blog

Related Posts

View All Posts →