先日、他の人が権限を変更するところを見る機会があったのですが、お恥ずかしながらそこで初めて数字以外で権限を設定する方法を知りました。
そこで、chmodについてまとめてみたいと思います。
chmod
ファイルやフォルダの権限を変更するコマンドです。当然、どのファイル・フォルダをどのように変更するかという指定が必要になります。
権限変更の指定の前に、権限について説明します。
まず、権限は対象となるユーザと許可するアクションの2つで成り立ってます。
対象となるユーザは、所有者、所有者グループ、その他の3種類となっています。
一方、許可するアクションも読み込み、書き込み、実行の3種類に分かれています。
chmodでは、これを0~7の数字を使い、3桁で表現します。
1桁目は、所有者の
2桁目は、所有者グループの
3桁目は、その他の、許可されているアクションを記しています。
では、0~7でどうやって許可されているアクションを示しているのでしょう。
肝となるのは、対象となるユーザは排他的であるのに対し、許可するアクションは重複するということです。
対象ユーザは、所有者であれば、所有者グループではなく、またその他であることはありません。
しかし、許可するアクションは、読み込み、書き込み、実行、それぞれが独立しており、
読み込み、実行が許可されているが、書き込みが許可されていないということもありえます。
実は、0~7の数字はそのままで考えるのではなく、2進法にして考えます。
許可・不許可を0と1で、各項目(読み込み、書き込み、実行)を桁に置き換えているのです。
例:
読み込み(r) | 書き込み(w) | 実行(x) |
許可 | 不許可 | 許可 |
1 | 0 | 1 |
上記のような場合、2進法で101に置き換えられ、さらに10進法に変えて、5と表現されます。
全て許可する場合は、111になるので、7になるということです。
これが、ユーザの種類毎に繰り返され、3桁の数字となります。
777の場合、全てのユーザに全ての権限があるということです。
700の場合、所有者のみ全てのアクセスが可能だということになります。
chmod 777 [ファイル・フォルダ名]
とすれば対象のファイル・フォルダに全てのユーザの全てのアクセスを許可することになります。
数字で権限を指定する以外にも、対象のユーザを指定して権限を変更できます。
その場合、対象ユーザや権限の種類などをちゃんと指定する必要があります。
対象ユーザ | 指定方法 |
所有者 | u |
所有者グループ | g |
その他 | o |
すべて | a |
権限の種類 | 指定方法 |
読み込み | r |
書き込み | w |
実行 | x |
変更の種類 | 指定方法 |
指定した権限の追加 | + |
指定した権限の削除 | – |
指定した権限に変更 | = |
個人的には、最初の設定では、数字の方が指定しやすく、
既に使用中のファイルの権限を変える必要がある場合は、文字での指定が安全で良いのかなと思います。
権限の対応表
読み込み(r) | 書き込み(w) | 実行(x) | 10進数 | |
0 | 0 | 0 | 0 | |
0 | 0 | 1 | 1 | |
0 | 1 | 0 | 2 | |
0 | 1 | 1 | 3 | |
1 | 0 | 0 | 4 | |
1 | 0 | 1 | 5 | |
1 | 1 | 0 | 6 | |
1 | 1 | 1 | 7 |