About Permission

4月 1, 2009

Linuxを含めたUNIX系OSの、パーミッションについておさらい。

UNIXを学び始めたころは、参考書でパーミッションのページを開くとわけが分からず目を
そむけたくなり、分かり始めると「そういうことか!」と理解できたことがうれしくなり、
日々の業務でルーチンになると空気にように当たり前に感じて、特に意識もしなくなる。

頭に定着したからこそ意識せずにいられる側面もあるけれど、こういうことは使わなく
なるとすぐに忘れる。ということで、初歩的なことからまとめておこう、と。
(以下はLinuxに限らずUNIX系OSに共通することですが、便宜上Linuxを想定して記述)

Linuxでls -lを実行した時に左側に表示されるr,w,x,- が並んでいる箇所が、対象ファイルや
ディレクトリのパーミッションの設定となる。

$ ls -ld Directory_A
drwxr-xr-x 5 root wheel 170 Jan 31 2008 Directory_A/


一番左の桁はファイルタイプを表し、通常は -,ディレクトリならd, シンボリックリンクならl,となっている。残りの9文字が3文字ずつ、それぞれ「所有ユーザ、所有グループ、その他のユーザ」の区分でパーミッションが指定されている。それぞれの「許可する権限の内容」は以下の通り。

r: 読取り権限あり
w: 書込み権限あり
x: 実行権限あり
-: 権限なし


ただし、パーミッションの意味はファイルとディレクトリでは少々異なる。





ディレクトリについては、実行権がないとカレントディレクトリの変更ができなくなるため、
通常実行権は与えたままにしておく。
r,w,x,-はそれぞれ数値で表すことができる。

r: 読取り権限 4
w: 書込み権限 2
x: 実行権限 1
-: 権限なし 0


「所有ユーザ、所有グループ、その他のユーザ」それぞれに数値をセットし、
ファイルの権限を”644″,”750″等と呼ぶことができる。
drwxr-xr-xの場合、以下の組み合わせで権限が”755″となる。

所有ユーザ: 4+2+1=7
所有グループ: 4+1=5
その他のユーザ: 4+1=5


パーミッションの変更にはchmodコマンドを使う。chmodにはシンボリックモード
と絶対モードの2つの方法がある。
シンボリックモードは文字列で許可する・しない権限を指定する。
絶対モードは上記の数値セットを指定する。個人的にはこちらの方が覚えやすく簡単。


chmod_シンボリックモード


例えばスクリプトを作成後、そのままでは実行ファイルにならないため、実行権を与える。
以下、どちらの方法でもよい(以下の例では所有者オーナーのみに実行権を与えている)。

$ chmod u+x scriptA
$ chmod 744 scriptA


こんなところだろうか。
うーむ、基本の基本をまとめるのは以外と難しい。


Categories: Linux