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通りあります。
| 表現 | 読み | 書き | 実行 |
|---|---|---|---|
| 英語 | r | w | x |
| 数字 | 4 | 2 | 1 |
上記の権限を所有ユーザ、所有グループ、その他(第三者)に対し、それぞれ設定します。
- ■ 例) ll で取得したファイル情報
-
drwxr-x--x 4 naoki tdr-admin 4096 7月 31 11:59 admin
上記のファイルのパーミッションは rwxr-x--x で表現されています。 所有ユーザ、所有グループ、その他(第三者)別に分けると下記のようになります。
| 所有ユーザ | 所有グループ | 第三者 | |
|---|---|---|---|
| 権限 | rwx | r-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 をつける。