コマンド入門:パーミッションを変更するコマンド

最終更新:2021-12-19 by Joe

コマンドで、ファイルのパーミッションを変更するコマンドです。

パーミッションとは権限のことで、ファイルをけしたり、作ったり、変更したりするするときに、この設定が個々のファイルやディレクトリになされているので、それによってできたりできなかったりします。

パーミッション(permission)とは?

パーミッションには「Read(読み込み)権限」「Write(書き込み)権限」「Execution(実行)権限」の3つの概念があります。

Read: 4
Write: 2
Execute: 1

これらの権限の組み合わせを、1から7までの数字で表すことができます。

1: Execution
2: Write
3: Execution + Write 
4: Read
5: Read + Write
6: Read + Execution
7: Read + Write + Execution

下記は、ファイルオーナ:joeで、644を割り振った例です。

// ファイルのパーミッションを調べる
$ ls -la index.php

// 出力。パーミッションは、664。
drwxr-xr-x@  27 root  wheel 918  Oct 7 2017
drwxrwxrwx   72 root  wheel 2448 Oct 4 2017 
-rw-r--r--@   1 joe   wheel 3065 Dec 7 2017 index.php

パーミッションを変更するのコマンド

パーミッションを変更するには、「chmod」コマンドを使います。

// index.phpのパーミッションを変更し、777にする
chmod 777 index.php

注意点

ファイルのパーミッションを変更するには、現在のユーザがそのファイルのWrite権限を持っている必要があります。もしWrite権限がなければ、rootユーザとしてログインしなおすか、もしくは、sudoコマンドを利用します。

// sudo として、index.phpのパーミッションを変更し、777にする
sudo chmod 777 fine_name.php

sudoを実行するには、sudoを実行できるグループに所属している必要があります、OSに依って、sudoグループや、wheelグループがデフォルトでsudo権限をもったグループとなっています。

複数のファイルのパーミッションを一度にまとめて変更する

たくさんのファイルがある時は、1ファイルずつchmodを実行するのは大変ですので、下記のコマンドでまとめて実行するのがお決まりのやり方です。

// 現在のディレクトリ配下のディレクトリの権限を一度に変更する
find ./ -type d -exec chmod 755 {} +

// 現在のディレクトリ配下のファイルの権限を一度に変更する
find ./ -type f -exec chmod 644 {} +

find コマンドは、ファイル検索に利用するコマンドです。-typeオプションにより、d: directory、または、f: file を指定して、それぞれに適切な権限を割り振ります。開発現場に置いては、多くの場合、ファイルを「644(664)」かディレクトリを「755(775)」とすることが多いと思います。