Linuxには、「パーミッション(権限)」というものがあります。
これは、ディレクトリやファイルなどを操作する際の「権限」のこと。
正確にいえば、Windowsにも権限設定は存在するのですが、意識する場面が少ないので、触ったことがない方も多いと思います。
Windowsだと「管理者権限で実行」で対処できることが多いですしね。
ですが、Linuxではこの「パーミッション」を意識する場面がたくさん出てきますので、必ず押さえておきましょう!
この記事では、Linuxのパーミッションを体系的に学べるようなっています。

もくじ
パーミッション(権限)とは
パーミッションとは、ディレクトリやファイルなどを操作するための「権限」のことです。
これはセキュリティのためにある機能で、「特定のディレクトリやファイルに対し、ユーザーやグループがどのような操作をおこなえるか」を設定します。
Linuxでのパーミッションの種類は、以下の3つになっています。
- 読み取り権限(read)
- 書き込み権限(write)
- 実行権限(execute)
そして、これらパーミッションはディレクトリやファイルの「所有者」と「所有グループ」、「その他のユーザー」それぞれに設定されています。
たとえば、「index.html」というファイルがあったとすると
- 「index.html」の所有者は「kitsune」、権限は「読み込み」「書き込み」「実行」
- 「index.html」の所有グループは「develop」、権限は「読み込み」「実行」
- 「index.html」のその他のユーザーの権限は「読み込み」
のように、1つのファイルに対して、これだけのパーミッションが設定されているのです。
パーミッションの見方(Linux)
パーミッションの意味も、なんとなくは理解できたかと思います。
では、さきほどの「index.html」のパーミッションを、実際に使われるLinuxの表記にしてみますね。
「-rwxr-xr-- kitsune develop」
こんな英語とハイフンの羅列を見せられても、何がなんだかわからないですよね。
じゃあ、もう少しわかりやすく分解してみましょう!
- 「-」…ファイルタイプ
- 「rwx」…所有者の権限
- 「r-x」…所有グループの権限
- 「r--」…その他のユーザーの権限
- 「kitsune」…所有者名
- 「develop」…所有グループ名
ファイルタイプ
まず、最初の「-」ですが、これは「ファイルタイプ」をあらわしています。
- 「d」…ディレクトリ
- 「l」…リンク
- 「-」…ファイル
今回は、ファイルなので「-」になりますね。
所有者の権限
2つ目の「rwx」は、「所有者の権限」をあらわしています。
- 「r」…「read(読み取り権限)」
- 「w」…「write(書き込み権限)」
- 「x」…「execute(実行権限)」
所有者は、このファイルに対して「すべての権限を持っている」ということになります。
所有グループの権限
3つ目の「r-x」は、「所有グループの権限」をあらわしています。
- 「r」…「read(読み取り権限)」
- 「-」…「書き込み権限なし」
- 「x」…「execute(実行権限)」
所有グループは、「書き込み以外の権限を持っている」ということになります。
その他のユーザーの権限
4つ目の「r--」は、「その他のユーザーの権限」をあらわしています。
ここまで理解できていれば、察しがつくと思います。
その他のユーザーは、「読み取り権限だけを持っている」ということになりますね。
所有者名と所有グループ名
最後の2つは、このファイルの「所有者」と「所有グループ」をあらわしています。
パーミッションの確認(ディレクトリ、ファイル)
Linuxのすべてのディレクトリやファイルには、パーミッションが必ず設定されています。
これらのパーミッションを確認したい場合は、「ls -l」コマンドを実行することで簡単に確認できます。
実は、さきほどの「-rwxr-xr-- kitsune develop」は、「ls -l」コマンドの出力結果だったのです。
Linuxコマンドについては、こちらの記事に詳しくまとめています。

パーミッションの変更(ディレクトリ、ファイル)
ディレクトリやファイルのパーミッションを変更したいときは、「chmod(change mode)」コマンドを利用します。
chmod ファイルモード ファイル名
ファイルモードは、数字で指定することが多いので覚えておきましょう!
- 0…「---」
- 1…「--x」
- 2…「-w-」
- 3…「-wx」
- 4…「r--」
- 5…「r-x」
- 6…「rw-」
- 7…「rwx」
たとえば、所有者を「rw-」、グループを「r--」、その他ユーザーを「r--」に変更したい場合は、以下のコマンドを実行します。
chmod 644 index.html
もし、すべてのユーザーに「/tmp/test」ディレクトリのフル権限を与えたいなら、以下のコマンドを実行します。
chmod 777 /tmp/test
ただ、上の場合だと「/tmp/test」ディレクトリのみが対象になり、その下にあるディレクトリやファイルは対象外となります。
指定したディレクトリ配下のファイルやディレクトリをすべて対象にしたい場合は、「-R」オプションをつけて実行します。
chmod -R 777 /tmp/test
「-R」は、「recursive(再帰的)」の略なので、繰り返すってことですね。
パーミッションエラーは「実行権限」がないから
パーミッションを変更しようと「chmod」コマンドを実行すると、「permission denied」のようなエラーが発生することがあります。
これは、ログインしているユーザーに対象のディレクトリやファイルの実行権限がないことが原因です。
そんなときは、コマンドの前に「sudo」をつけてみてください。
sudo chmod 777 index.html
「sudo」をつけることで、コマンドを管理者権限で実行できます。
ただし、管理者権限を付与されていないユーザーは「sudo」を使えないので注意!
パーミッション「777」は危険!?
フル権限に変更する方法を紹介しておいてなんですが、なんでもかんでも「777」のフル権限に設定してしまうと大変危険だったりします。
そもそも、Linuxは複数人で利用することを前提としているので、「777」にしてしまうと誰でもファイルを書き変えられることになるのです。
つまり、書き込み権限をむやみに渡さないことが大切なんです。
必要がなければ「755」や「644」に設定し、特定のユーザー以外に書き込み権限を与えないようにしましょう。
ちなみに、ローカル環境の場合は自分しか使わないので、「777」に設定してもそこまで大きな問題にはなりません。
ですが、勉強のためにもパーミッションは必要な権限だけを設定するよう癖づけておいたほうが、実務でも役立ちますよ。
まとめ:パーミッションはすべてディレクトリとファイルに設定されている!
Linuxのパーミッションについて、絶対にはずせない部分をまとめて紹介しました。
とりあえず、ここでは「Linuxのすべてのディレクトリとファイルには、パーミッションが設定されている」と覚えておいてもらえれば大丈夫。
パーミッションの設定がわからなくなったら、この記事をいつでも見直せるようにだけしておいてください。
次は、Linuxを操作するために必要な「Linuxの基本コマンド」について学びましょう!
またね、キツネ(@kitaaaa_kitsune)でした!
