Linux のファイル管理

マルチユーザシステムである Linux ではファイルの所有者とパーミッションは重要な概念です。 ファイルには、それぞれ所有者と所有するグループが決まっています。Linux のファイルには、[所有者(u)]、[グループ(g)]、[その他(o)] について、誰がそのファイルを 「読み(r)」「書き(w)」「実行(x)」 が可能であるか設定を行います。これらの権限をパーミッションと呼びます。
パーミッションを設定すると、「このファイルは自分は読み書き実行全てが可能、同じグループの人間は読む書きのみ可能、第三者には実行だけ許可する」 などといった制限が可能になります。

ファイルの種類

ファイルはデータの最小単位です。Linux ではファイルの種類を大きく4つに分けて分類されます。

レギューラーファイル
通常のファイル。テキストフィアルとバイナリファイル。
表記) -
ディレクトリファイル
ディレクトリそのもののこと。
表記) d
リンクファイル
windows でいうショートカットのこと。
表記) l
特殊デバイスファイル
Linux 上では、ハードウエアもファイルとして存在する。
表記) b または c

ファイルの属性

ls -l (ll) コマンドを使ってファイルの詳細を表示した場合、下記のような結果が得られます。

ls -l の結果例
drwxrwxr-x 4 naoki tdr-admin 4096 7月 31 11:59 admin
-rw-rw-r-- 1 naoki tdr-admin 2302 9月 17 12:04 index.php
lrwxrwxrwx 1 naoki tdr-admin 0023 3月 23 12:04 www1 -> /www1/

1行で1ファイルを表します。
1行目は admin ディレクトリ(ディレクトリファイル)、
2行目は index.php ファイル(レギュラーファイル)
3行目は /www1 へのショットーカット(リンクファイル)
を表現しています。
詳細は、以下のようになります。

■ 例)
drwxrwxr-x 4 naoki tdr-admin 4096 7月 31 11:59 admin
d
→   ファイル種類
rwxrwxr-x
→   パーミッション
4
→   リンク数
naoki
→   所有ユーザ
tdr-admin
→   所有グループ
4096
→   ファイルサイズ
7月 31 11:59
→   最終更新日時
admin
→   ファイル名

ファイルの所有ユーザ、所有グループの変更

全てのファイルにはそのファイルを所有するユーザとグループの情報を持っています。原則的に所有ユーザの無いファイルは存在しません。 ファイルを作成したユーザが所有ユーザになり、そのユーザが属するプライマリグループが所有グループとなります。
ファイルの所有ユーザ、所有グループを変更するには、 chown コマンドを用います。root のみがこのコマンドを利用できます。

■ ファイルの所有ユーザ、所有グループを変更の基本書式
chown [所有ユーザ]:[所有グループ] [ファイル・ディレクトリ名]

ディレクトリ内のファイルも再帰的に変更したい場合は、-R オプションを使います。

例) admin ディレクトリ内全てのファイルを所有ユーザを naoki 、所有グループを tdr-admin に変更
chown -R naoki:tdr-admin admin

ファイルのパーミッション

パーミッションは「読み(r)」「書き(w)」「実行(x)」の3つの権限の有無で設定されています。パーミッションの表示方法としては、rwx を用いた方法と3桁の数字を用いた方法の2通りあります。

表現読み書き実行
英語rwx
数字421

上記の権限を所有ユーザ、所有グループ、その他(第三者)に対し、それぞれ設定します。

■ 例) ll で取得したファイル情報
drwxr-x--x 4 naoki tdr-admin 4096 7月 31 11:59 admin

上記のファイルのパーミッションは rwxr-x--x で表現されています。 所有ユーザ、所有グループ、その他(第三者)別に分けると下記のようになります。

所有ユーザ所有グループ第三者
権限rwxr-x--x
読み → OK
書き → OK
実行 → OK
読み → OK
書き → NG
実行 → OK
読み → NG
書き → NG
実行 → OK

パーミッションの変更

パーミッションは基本的に所有ユーザと root のみが設定・変更する事ができます。変更のために使うコマンドは chmod です。

■ chmod(英語表記)
chmod [ユーザを表す表記] [+/-] [権限を表す記号] [ファイル名]

ユーザを表す表記とは下記のように英字1文字で表現する。

u
→   所有ユーザ(user)
g
→   所有グループ(group)
o
→   その他(other)
a
→   全て(all)
例) ファイル index.php の所有ユーザと所有グループに書き権限を付与し、その他は読み書き実行を禁止する
chmod ug+w, o-wrx index.php

■ chmod(数字表記)
chmod [権限を表す数字] [ファイル名]

権限を表す数字は、それぞれ下記のようになり、その数字を足したもので権限を表します。

4
→   読み
2
→   書き
1
→   実行
例) ファイル index.php に
所有ユーザに「読み(4)」「書き(2)」「実行(1)」を与え → 7
所有グループに「読み(4)」「書き(2)」を与え → 6
その他は全てを禁止する → 0
chmod 760 index.php

リンクファイルの作成

あるファイルへリンクを作成するには、 ln コマンドを使用します。(シンボリックリンク時に利用します。)

■ シンボリックリンクの作成
ln -s [リンク先のファイル] [シンボリックリンク名]

※ -s をつけないとハードリンクと言って、シンボリックリンクにはなりませんので、シンボリックリンク作成時は -s をつける。