こんにちは。ナミレリです。今回はLinuxやMacなどのUnix系OSの「パーミッションを極める」をテーマに紹介していきます。
この記事はこんな人にオススメ
- パーミッションが重要なのはわかるけど、a+wとか755とかなに?
- なんとなくコピペでパーミションを設定している
- 複数ユーザーが更新するファイルの適切なパーミッションがわからない
例えば、ApacheでWEBサーバを構築した後に多くの担当者がSSHやSFTP等でファイルをアップロードしたり、すでにアップロードされているファイルを別の担当者が更新する時などに、どのようにパーミッションを設定しておくかセキュリティ観点でとても重要です。
この記事でわかること
- パーミッションの概要
- ファイルのパーミッションとディレクトリのパーミッションの意味の違い
- 記号によるパーミッションの設定方法(例:a+w)
- 数字によるパーミッションの設定方法(例:755)
- 2進数と8進数の対応表
- よく使うパーミッション
パーミッションはとっつきにくく難解なイメージもありますが、一度理解してしまえばファイルやディレクトリを安全に扱うことが出来ますのでこれを機会にぜひパーミッションを極めてみましょう。
目次
パーミッションとは?
LinuxやMacなどのUnix系OSのパーミッションとは、ファイルやディレクトリを所有者(owner)、グループ(group)、その他(other)、この3つに対してアクセス権限を設定します。
また、所有者、グループ、その他、このそれぞれに対して読み取り権限、書き込み権限、実行権限の3つの権限を設定することができます。
表で整理すると下のようになります。
読み取り権限 | 書き込み権限 | 実行権限 | |
---|---|---|---|
所有者(owner) | どうする? | どうする? | どうする? |
グループ(group) | どうする? | どうする? | どうする? |
その他(other) | どうする? | どうする? | どうする? |
ファイルやディレクトリを所有者、グループ、その他、この3つに対してアクセス権限を設定すると書きましたが、それに加えてSUID、SGID、Sticky bitの3つの特殊なアクセス権限を設定することができます。SUID、SGID、Sticky bitの3つの特殊なアクセス権限については別の記事で紹介する予定です。
また、ファイルのパーミッションとディレクトリのパーミッションで、この3つの権限の意味が異なりますので紹介します。
ファイルのパーミッションとディレクトリのパーミッションの意味
ファイルに対する各権限のパーミッションの意味は下のようになります。ファイルについてはイメージそのままでわかりやすいと思います。
ファイルに対するパーミッションの意味
ファイル:パーミッション | 意味(ファイルに対する) |
---|---|
読み取り権限 | ファイルを読み取ることができる |
書き込み権限 | ファイルに書き込むことができる |
実行権限 | ファイルを実行することができる (プログラムやスクリプト等) |
次にディレクトリに対する各権限のパーミッションの意味は下のようになります。ディレクトリの実行権限は少しイメージと異なると思います。
ディレクトリに対するパーミッションの意味
ディレクトリ:パーミッション | 意味(ディレクトリに対する) |
---|---|
読み取り権限 | ディレクトリを読み取ることができる (配下にあるファイル一覧の取得等) |
書き込み権限 | ディレクトリに書き込むことができる (ファイルの作成、削除、名前変更等) |
実行権限 | そのディレクトリ配下に移動できる |
ディレクトリの実行権限が自分にあれば、そのディレクトリに入ることができますが、ディレクトリの実行権限がなければディレクトリに入ることはできません。
ここまでのまとめ
これまで紹介してきたようにパーミッションとは、ファイルやディレクトリを所有者、グループ、その他、この3つに対してのアクセス権限のことで、この3つのアクセス権限に対して読み取り権限、書き込み権限、実行権限の3つの権限を設定することです。
パーミッションの確認方法
ファイルやディレクトリの設定されたパーミッションはls -lで確認することができます。
ls -l
drwxrwxr-x 2 user_a group_a 6 11月 3 23:09 c_dir
drwx------ 2 user_a group_a 6 11月 3 23:09 d_dir
-rw-r--r-- 1 user_a group_a 0 11月 3 23:09 a.txt
-rw------- 1 user_a group_a 0 11月 3 23:09 b.txt
lrwxrwxrwx 1 user_a group_a 5 11月 3 23:10 e.txt -> b.txt
drwxrwxr-xやdrwx------、-rw-r--r--、-rw-------、lrwxrwxrwxなどの10桁の部分がパーミションの表記となります。
上の画像では、所有者のパーミッションがrwx、グループのパーミッションもrwx、その他のパーミションがr-xとなり、先頭のdはディレクトリを表しています。
では次にパーミッションの設定方法について紹介します。記号で設定する方法、数字で設定する方法の2つの方法があります。
パーミッションの設定方法:その1(記号で設定する方法)
まず最初はパーミッションを記号で設定する方法です(記号モード)。以下の記号を使って設定します。
誰に?どうする?何を?の順番でパーミッションを指定します。
1. 誰に?
記号 | 意味 |
---|---|
a | 全て(all) |
u | 所有者(user) |
g | グループ(group) |
o | その他(others) |
2. どうする?
記号 | 意味 |
---|---|
+ | 追加 |
– | 削除 |
= | 設定 |
3. 何を?
記号 | 意味 |
---|---|
w | 書き込み |
r | 読み取り |
x | 実行 |
実際に記号モードでパーミッションを設定してみる
では上の記号モードを使ってパーミッションを設定してみます。以下の表のパーミッションのfile01.txtがあるとします。
file01.txtのパーミッション(変更前)
読み取り権限 | 書き込み権限 | 実行権限 | |
---|---|---|---|
所有者 | ○ | ○ | – |
グループ | – | – | – |
その他全て | – | – | – |
ls -l
-rw------- 1 user_a group_a 0 11 4 16:40 file01.txt
自分自身しか読み書きできないファイルですね。読み取り権限を全てのユーザーに追加してみます。誰に?どうする?何を?の順番でパーミッションを指定しますので、誰に?→全てに(a)、どうする?→追加する(+)、何を?→読み取り(r)をとなります。chmodコマンドを使って下記のようにコマンド入力します。
chmod a+r file01.txt
このchmodコマンドによりパーミッションは下記の表のようになります。(書き込み権限は自分のみ、読み取り権限は全員にあります)
file01.txtのパーミッション(変更後)
読み取り権限 | 書き込み権限 | 実行権限 | |
---|---|---|---|
所有者 | ○ | ○ | – |
グループ | ○ | – | – |
その他全て | ○ | – | – |
ls -l
-rw-r--r-- 1 user_a group_a 0 11 4 16:40 file01.txt
では次に、この状態のfile01.txtに対してその他のユーザーの読み取り権限を削除してみます。記号の表記はo-rですね。
chmod o-r file01.txt
このchmodコマンドによりパーミッションは下記の表のようになります。(書き込み権限は自分のみ、読み取り権限はグループのみ、その他は権限なし)
file01.txtのパーミッション(さらに変更後)
読み取り権限 | 書き込み権限 | 実行権限 | |
---|---|---|---|
所有者 | ○ | ○ | – |
グループ | ○ | – | – |
その他全て | – | – | – |
ls -l
-rw-r----- 1 user_a group_a 0 11 4 16:40 file01.txt
次に、同じことを数字で設定してみましょう。
パーミッションの設定方法:その2(数字で設定する方法)
では続いて、数字モードを使ったパーミッションの設定方法を紹介します。数字モードは3つの権限(読み取り、書き込み、実行)に対してそれぞれにオンとオフを2進数(1か0)で表します。
下の表のように権限があれば1、権限がなければ0です。
file01.txtのパーミッション例
読み取り権限 | 書き込み権限 | 実行権限 | 2進数 | 8進数 | |
---|---|---|---|---|---|
所有者 | 1 | 1 | 0 | 110 | 6 |
グループ | 0 | 0 | 0 | 000 | 0 |
その他全て | 0 | 0 | 0 | 000 | 0 |
所有者の権限の2進数は110となっています。110は8進数で6です。
グループの権限の2進数は000となっています。000は8進数で0です。
その他の権限の2進数は000となっています。000は8進数で0です。
この場合、file01.txtのパーミッションは8進数で「600」と表現します。
最初の6は所有者のパーミッション、真ん中の0はグループのパーミッション、右の0はその他のパーミッションで、600と表現します。
ちなみに8進数は0〜7までの数字で表します。
Linux技術者認定試験の最初のインプットに最適です:Linux教科書 LPICレベル1 Version5.0対応
実際に数字モードでパーミッションを設定してみる
数字モードを使ったパーミッションの設定は、chmodコマンドで8進数の数字を指定します。
以下の表のパーミッションのfile01.txtがあるとします。
file01.txtのパーミッション(変更前:600)
読み取り権限 | 書き込み権限 | 実行権限 | 2進数 | 8進数 | |
---|---|---|---|---|---|
所有者 | 1 | 1 | 0 | 110 | 6 |
グループ | 0 | 0 | 0 | 000 | 0 |
その他全て | 0 | 0 | 0 | 000 | 0 |
自分自身しか読み書きできないファイルです。先程と同じように書き込み権限は自分のみのままで読み取りは全てのユーザーができるようにしてみます。
chmod 644 file01.txt
# chmod a+r file01.txtと同じ
上のchmodコマンドによりパーミッションは下記の表のようになります。(書き込み権限は自分のみ、読み取り権限は全員にあり)
file01.txtのパーミッション(変更後:644)
読み取り権限 | 書き込み権限 | 実行権限 | 2進数 | 8進数 | |
---|---|---|---|---|---|
所有者 | 1 | 1 | 0 | 110 | 6 |
グループ | 1 | 0 | 0 | 100 | 4 |
その他全て | 1 | 0 | 0 | 100 | 4 |
ls -l
-rw-r--r-- 1 user_a group_a 0 11 4 16:40 file01.txt
2進数、8進数、10進数のまとめ表
以下に2進数、8進数、10進数をまとめた表を記載します。
パーミッションは2進数で3桁(3ビット)使用するので、8進数では7までを使います。
2進数 | 8進数 | 10進数 |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
10 | 2 | 2 |
11 | 3 | 3 |
100 | 4 | 4 |
101 | 5 | 5 |
110 | 6 | 6 |
111 | 7 | 7 |
よく使う数字モードのパーミッションの例
次に、よく使われる数字モードのパーミッションの例を紹介します。
パーミッション:775(ディレクトリ)
ディレクトリのパーミッションでよく使うパーミッション775です。
chmod 775 Directory
ls -l
drwxrwxr-x 2 user_a group_a 64 11 4 16:48 Directory/
所有者とグループ以外のユーザーは、ディレクトリに書き込む権限がない設定です。
ディレクトリへの書き込みとは、ファイルの作成やファイルの削除、ファイルの名前変更等です。実行権限はあるのでそのディレクトリに入ることはでき、読み取り権限もあるのでファイル一覧を取得することはできます。
読み取り権限 | 書き込み権限 | 実行権限 | 2進数 | 8進数 | |
---|---|---|---|---|---|
所有者 | 1 | 1 | 1 | 111 | 7 |
グループ | 1 | 1 | 1 | 111 | 7 |
その他全て | 1 | 0 | 1 | 101 | 5 |
パーミッション:755(ディレクトリ)
ディレクトリのパーミッションでよく使うパーミッション755です。
chmod 755 Directory
ls -l
drwxr-xr-x 2 user_a group_a 64 11 4 16:48 Directory/
所有者以外のユーザーは、ディレクトリに書き込む権限がない設定です。
ディレクトリへの書き込みとは、ファイルの作成やファイルの削除、ファイルの名前変更等です。実行権限はあるのでそのディレクトリに入ることはでき、読み取り権限もあるのでファイル一覧を取得することはできます。
読み取り権限 | 書き込み権限 | 実行権限 | 2進数 | 8進数 | |
---|---|---|---|---|---|
所有者 | 1 | 1 | 1 | 111 | 7 |
グループ | 1 | 0 | 1 | 101 | 5 |
その他全て | 1 | 0 | 1 | 101 | 5 |
パーミッション:700(ディレクトリ)
ディレクトリのパーミッションでよく使うパーミッション700です。
chmod 700 Directory
ls -l
drwx------ 2 user_a group_a 64 11 4 16:48 Directory/
所有者以外のユーザーはどのアクセス権限もない設定です。自分以外のアクセスを禁止にする場合によく使います。自分自身のHOMEディレクトリはこのパーミッション700に設定することが多いです。
読み取り権限 | 書き込み権限 | 実行権限 | 2進数 | 8進数 | |
---|---|---|---|---|---|
所有者 | 1 | 1 | 1 | 111 | 7 |
グループ | 0 | 0 | 0 | 000 | 0 |
その他全て | 0 | 0 | 0 | 000 | 0 |
Linux技術者認定試験の最初のインプットに最適です:Linux教科書 LPICレベル1 Version5.0対応
パーミッション:664(ファイル)
ファイルのパーミッションでよく使うパーミッション664です。
chmod 664 File
ls -l
-rw-rw-r-- 2 user_a group_a 64 11 4 16:48 File
まず実行権限は所有者含めて誰に対しても付与していません。プログラムやスクリプト以外の一般的なファイルは実行権限は不要であるためです。所有者とグループ以外のユーザーは、ファイルに書き込む権限がない設定です。(読み取りは誰でもできる)
読み取り権限 | 書き込み権限 | 実行権限 | 2進数 | 8進数 | |
---|---|---|---|---|---|
所有者 | 1 | 1 | 0 | 110 | 6 |
グループ | 1 | 1 | 0 | 110 | 6 |
その他全て | 1 | 0 | 0 | 100 | 4 |
パーミッション:644(ファイル)
ファイルのパーミッションでよく使うパーミッション644です。
chmod 644 File
ls -l
-rw-r--r-- 2 user_a group_a 64 11 4 16:48 File
ファイルなのでこちらも実行権限は所有者含めて誰に対しても付与していません。プログラムやスクリプト以外の一般的なファイルは実行権限は不要です。所有者以外のユーザーは、ファイルに書き込む権限がない設定です。(読み取りは誰でもできる)
読み取り権限 | 書き込み権限 | 実行権限 | 2進数 | 8進数 | |
---|---|---|---|---|---|
所有者 | 1 | 1 | 0 | 110 | 6 |
グループ | 1 | 0 | 0 | 100 | 4 |
その他全て | 1 | 0 | 0 | 100 | 4 |
パーミッション:600(ファイル)
ファイルのパーミッションでよく使うパーミッション600です。
chmod 600 File
ls -l
-rw------- 2 user_a group_a 64 11 4 16:48 File
ファイルなのでこちらも実行権限は所有者含めて誰に対しても付与していません。プログラムやスクリプト以外の一般的なファイルは実行権限は不要です。所有者以外、ファイルを読み取ることも書き込むこともできない設定です。
読み取り権限 | 書き込み権限 | 実行権限 | 2進数 | 8進数 | |
---|---|---|---|---|---|
所有者 | 1 | 1 | 0 | 110 | 6 |
グループ | 0 | 0 | 0 | 000 | 0 |
その他全て | 0 | 0 | 0 | 000 | 0 |
パーミッション:400(ファイル)
ファイルのパーミッションでよく使うパーミッション400です。
chmod 400 File
ls -l
-r-------- 2 user_a group_a 64 11 4 16:48 File
ファイルなのでこちらも実行権限は所有者含めて誰に対しても付与していません。プログラムやスクリプト以外の一般的なファイルは実行権限は不要です。所有者は読み込むことができますが、書き込むことはできません。所有者以外のユーザーは全ての権限がない設定です。
読み取り権限 | 書き込み権限 | 実行権限 | 2進数 | 8進数 | |
---|---|---|---|---|---|
所有者 | 1 | 0 | 0 | 100 | 4 |
グループ | 0 | 0 | 0 | 000 | 0 |
その他全て | 0 | 0 | 0 | 000 | 0 |
最後に
最後まで読んでいただきありがとうございます。【Linux】パーミッションを極めるはいかがでしたでしょうか。ApacheでWEBサーバを構築した後に多くの担当者がSSHやSFTP等でファイルをアップロードしたり、すでにアップロードされているファイルを別の担当者が更新する時などに、どのようにパーミッションを設定しておくかわからない場合もあると思います。
パーミッションはとっつきにくく難解なイメージもありますが、一度理解してしまえばファイルやディレクトリを安全に扱うことが出来ますのでぜひ覚えてください。
MacやLinux、Pythonなど技術系のkindle本も豊富にあります。詳しくはこちらから。
Amazonの電子書籍読み放題サービス「Kindle Unlimited」でプライム会員を対象に、最初の3か月間を無料体験できるキャンペーンを実施中。マンガ、小説、ビジネス書、雑誌など500万冊から、好きな本を何冊でも読めるキャンペーンです。
初めてkindle unlimited 読み放題をご利用の方は30日間の無料で体験できます。
期間終了後は月額980円で、いつでもキャンセルできます。
200万冊以上が読み放題。お好きな端末で利用可能です。