UNIX入門:6. ファイル管理
6.1. アクセス権とその確認法
UNIX では,各ファイルに対し「所有者」があり,その所有者が所有するファイルのアクセス権を設定します。各ユーザは,管理者グループ,WWW グループなど,必ず何かしらの「グループ」に所属しています。
■ファイルの所有者からみたユーザの区分
・u
:所有者 (user)
・g
:その所有者が属すグループ(group)
・o
:その他 (others)
ファイルに対するアクセスは,読み込み権,書き込み権,実行権があります。
■アクセスの区分
・r
:読み込み可 (readable)
・w
:書き込み可 (writable)
・x
:実行可 (executable)
したがって,各ファイルに対し「所有者 (u
)」「グループ (g
)」「その他 (o
)」の3つにユーザを区分し,各々の区分に対し読み込み権 (r
),書き込み権 (w
),実行権 (x
) を所有者が指定することになります。
以下の表における taro
はそのファイルの所有者 (u
),staff
はユーザ名 taro
が属すグループ (g
) です。
% ls -l drwxr-xr-x 1 taro staff 14 Feb 21 18:15 Jobs lrwxr-xr-x 1 taro staff 14 Feb 21 18:08 My_Programs -> ../My_Programs -rwxr--r-- 1 taro staff 56 Feb 21 18:05 benchmark.sh %
■drwxr-xr-x
部分の読み方
・1桁目:ファイルの種類
d:ディレクトリ
l:"->" 以下をオリジナルファイルにもつ「シンボリックリンク」 (6.3 を参照)
-:ファイル
・残り9桁
3分割して見る。
最初の3つ:所有者 (u
) のアクセス権
次の3つ:グループ (g
) のアクセス権
残り3つ:他の人 (o
) のアクセス権
- 例)
benchmark.sh
の場合所有者 (
u
) が読み込み (r
),書き込み (w
),実行 (x
) 可で,グループstaff
に属すユーザ (g
) と他のユーザ (o
) は読み込み (r
) のみ可能なファイル。
6.2. アクセス権の変更
ファイルのアクセス権の変更は,その所有者のみ可能です。その方法は次の通り。
■アクセス権の変更法
chmod [who][+/-][permission] file
[凡例]
who
u:ユーザ(所有者),g:グループ,o:その他
+/-
+:権限を与える,-:権限を奪う
permission
r:読み込み,w:書き込み,x:実行
- 例6.2.1:グループに読み込み権を与える
% chmod g+r hello.sh
- 例6.2.2:グループとその他から書き込み権を奪う
% chmod go-w hello.sh
- 例6.2.3:所有者のみに実行権を与える
% chmod u+x hello.sh
- 例6.2.4:すべてに実行権を与える
% chmod +x hello.sh % chmod a+x hello.sh
[ノート]アクセス権については,数字による指定のみしか受け付けない環境がある。次がその対応表になる。
r w x
4 2 1
例えば,rwxr--r--
であれば,u に 4+2+1=7,g に 4+0+0,o に 4+0+0 と計算して,次のようにアクセス権を与える。
chmod 744 ファイル名
6.3. ファイル/ディレクトリへのリンク:「シンボリック・リンク (Symbolic Link)」
シンボリック・リンクは,Macintosh でいうところの「エイリアス」,Windows でいうところの「ショートカット」に相当します。但し,UNIX で「エイリアス」といった場合,コマンドへのリンクをいい,「シンボリック・リンク」はあくまでもファイルやディレクトリをオリジナルとします (「エイリアス」については下記第7項を参照)。
シンボリック・リンクへのアクセス権は,オリジナルのアクセス権に従います。したがって,シンボリック・リンクのアクセス権を読み込み,書き込み,実行禁止にしても,オリジナルがそうでなければ読み書き,あるいは実行できます。
■シンボリック・リンクの作成
ファイル/ディレクトリ original にリンク名 symlink でリンク
% ln -s original symlink
- 例6.3.1:カレント・ディレクトリ内に,ホーム・ディレクトリ内のディレクトリ「
Mail
」のシンボリック・リンクを作成。% cd ~/My_Programs % ln -s ~/Mail lrwxr-xr-x 1 taro staff 19 Feb 24 03:35 Mail -> /Users/taro/Mail -rw-r--r-- 1 taro staff 94 Feb 5 18:01 hello.c -rwxr-xr-x 1 taro staff 9544 Feb 5 18:02 hello.out -rwxr--r-- 1 taro staff 68 Feb 5 17:57 hello.pl -rwxr--r-- 1 taro staff 56 Feb 21 18:05 hello.sh
[ノート] これは以下と同じ。
% ln -s ~/Mail .
.
や~
については,3 の「[ノート] ディレクトリの省略表現」を参照。また,リンク名を省略すれば,シンボリック・リンクの名称は,オリジナルと同じ。
■シンボリック・リンクの削除
% rm symlink
- 例6.3.2:前の例のシンボリック・リンク「
Mail
」を削除。% rm Mail % ls -l -rw-r--r-- 1 taro staff 94 Feb 5 18:01 hello.c -rwxr-xr-x 1 taro staff 9544 Feb 5 18:02 hello.out -rwxr--r-- 1 taro staff 68 Feb 5 17:57 hello.pl -rwxr--r-- 1 taro staff 56 Feb 21 18:05 hello.sh