【chmod】パーミッション(権限)を設定する方法!図解有り!

スポンサーリンク

chmodとは

-rw-rw-r-- 中略 hayana.txt

linuxのターミナル上で「ls -l」を入力すると上記のように表示されます。右部が「ファイル名」で左部が現在設定されているパーミッション(権限)を表示しています。
「chmod」を使用すると指定したファイルのパーミッションを設定をすることが出来ます。
詳しくは後述しますが、簡単には「所有者(user)」、「グループ(group)」、「その他(other)」の3種のユーザ権限に対してそれぞれファイルやディレクトリの「読み込み(read)」、「書き込み(write)」、「実行(executive)」の3つの権限を「与えるか」、「与えないか」の設定することが出来ます。以下の表の項目を設定することになります。

権限設定表
ユーザ権限 ファイル・ディレクトリ権限

所有者:user(u)

・読み込み(r)「与える」「与えない」
・書き込み(w)「与える」「与えない」
・実行  (x)「与える」「与えない」

グループ:group(g)

・読み込み(r)「与える」「与えない」
・書き込み(w)「与える」「与えない」
・実行  (x)「与える」「与えない」

その他のユーザ:other(o)

・読み込み(r)「与える」「与えない」
・書き込み(w)「与える」「与えない」
・実行  (x)「与える」「与えない」

指定したファイルに「u」「g」「o」それぞれに「r」「w」「x」の中からどれを与えてあげようか(複数選択可)というのを選んであげる設定です。
これを設定すると下図の「許可された操作」という部分を設定してあげることが出来ます。許可がない項目は操作できません。

 

パーミッションの確認方法

最上にあるパーミッションの例だと説明しずらいので、一度すべての権限を開放します。
すると以下のように表示されます。現在のパーミッションを確認するには「ls -l」を使うと良いでしょう。

-rwxrwxrwx 中略 hayana.txt

確認する場所は上記の左側です。一番左の「ー」「d」「l」はファイルタイプを表しているので無視します。
注目するべきところはその次から書いてある、「rwxrwxrwx」と書かれている場所です。

ここがパーミッションを表しています。
この9つの文字列を3文字ずつに分けてみてあげると
「rwx  rwx  rwx 」という風に見てあげることが出来ます。
一番左側のrwxには所有者の、真ん中のrwxにはグループの、一番右側のrwxにはその他のユーザのパーミッションが記載されています。

パーミッションの変更

ここでやっと「chmod」の出番です。

chmod

所有者、グループ、その他のユーザそれぞれのパーミッションを変更することが出来ます。
【chmod】の使用例(使用ファイル:hayana)

//chmodの書き方
chmod 権限設定 hayana

//3桁の数字を使って設定する書き方
chmod 777 hayana

//権限指定の設定記号を使用して設定する書き方
chmod u+r hayana //所有者に読み込み権限を付加する
chmod o-w hayana //その他のユーザから書き込み権限を削除する
chmod g=x hayana //グループの権限を実行のみに変更する

といったようにパーミッションを変更していきます。

3桁の数字での権限設定

数字で権限を設定する際、数字の意味を知らないと思った通りの設定が行えません。
数字の意味を捉えてから利用していきましょう。

なぜ3桁なのか

これは、一番左の桁に所有者の権限、真ん中の桁にグループの権限を、一番右の桁でその他のユーザの権限をそれぞれ設定しているからです。

3桁目:
所有者の権限
2桁目:
グループの権限

1桁目:
その他のユーザの権限

0~7 0~7 0~7

それぞれの項目に0~7番まで割り振ることが出来ます。
そのため、権限の数字は、000番から777番までの778種類を変更を行うことが出来ます。

778種類も覚えられないよ~

そんな鬼みたいな量の暗記をしなくても大丈夫です。
ここで覚えるのは3桁の意味と0~7の表を覚えるだけで、ある程度の事はできるようになります。

0~7での権限設定

数値 権限 (ls -l) 権限の意味
0 権限なし
1 –x 実行権
2 -w- 書込権
3 -wx 書込・実行権
4 r– 読込権
5 r-x 読込・実行権
6 rw- 読込・書込権
7 rwx 全ての権限

上記2つの事を踏まえて、以下のパーミッション例を見てみましょう。

chmod 257 hayana

上記の様に権限を変更したファイル「hayana」のパーミッション以下のようになります。
〇:権限あり × :権限なし

設定範囲(数字) 読み込み権限 書き込み権限 実行権限
所有者 (2) × ×
グループ(5) ×
その他 (7)

ls -lでの出力結果は以下の通りになります。

--w-r-xrwx 中略 hayana

設定用の記号でのアプローチ

この設定方法は、ユーザと操作する権限を限定してパーミッションを設定するアプローチです。
数字でのアプローチは、設定するシーン全てでユーザ権限を考慮して設定しなくてはならないので少し面倒でしたが、このアプローチは、操作したいユーザに対してどのような権限を操作したいのかをそのまま設定できます。以下の例を見てみましょう。

chmod u+w hayana

例の設定では所有者に書き込み権限を付加するという設定をしています。
各種権限と操作の表を覚えれば何不自由なくパーミッションの変更ができるようになります。

ユーザ範囲 記号 記号の意味
所有者 u user
グループ g group
その他 o other
全ユーザ a all
操作記号 意味
+(半角) 指定したユーザ範囲に権限を付加する
ー(半角) 指定したユーザ範囲から権限を削除する
=(半角) 指定したユーザ範囲の権限を変更する
記号 権限
r 読み込み権限
w 書き込み権限
x 実行権限
ファイル名「hayana」での操作例
//全てのユーザから実行権を削除したい場合
chmod a-x hayana

//その他のユーザの権限を読み取り権と実行権に変更したい場合
chmod o=rx hayana

//全てのユーザに読み込み権限を付加し、その他のユーザから書き込み権限を削除する
chmod a+r,o-w hayana

記号でのアプローチは、上記の様なパーミッション操作ができます。
細かい設定がしたい場合は、非常に役に立つアプローチだと思います。
是非、使ってみてください!