今回はLinuxを扱う業務の中では頻出のパーミッションについて説明します。
ファイルの種類やパーミッションの設定方法について理解すると、安全なファイル管理をすることができます。
Linuxファイルには大きく分けて通常ファイルとスペシャルファイルの2種類が存在します。
通常ファイル
一般的に扱うことの多いファイルで、読み込み・書き込み・実行が可能なファイルを指します。ファイルの種類を表す先頭の記号は「-」です。
<使用例>
#ファイルの詳細を確認
ls -l example.txt
-rw-r--r-- 1 tomoya miracle 0 July 21 16:07 example.txt
通常ファイル・スペシャルファイルの分類においてはディレクトリは通常ファイルに含まれます。ディレクトリの種類を表す先頭の記号は「d」です。
<使用例>
#'test_dir'というディレクトリを作成
mkdir test_dir
#ディレクトリの詳細を確認
ls -l
drwxr-xr-x 2 tomoya miracle 4096 July 21 16:07 test_dir
このほかにも、先頭の記号が「l」になることもあります。これは、シンボリックリンクを表しています。シンボリックリンクとは元のファイルのある場所を指しています。
スペシャルファイル
スペシャルファイルにはいくつかの種類があります。
デバイスファイル
コンピュータでは様々なデバイスを利用する必要があります(ハードディスク・SDD・DVDドライブ・USB等)。それらのデバイスを利用するために、Linuxではデバイスに対応したデバイスファイルというファイルが存在します。このデバイスファイルがあるおかげで、ほかのファイルと同じようにデバイスにアクセスできます。
デバイスファイルにはブロックデバイスとキャラクタデバイスの2つがあります。
・ブロックデバイス:ブロックという単位でデータ転送を行うデバイス。ハードディスク・CD-ROM・フラッシュメモリ等がブロックデバイスに分類されます。先頭の記号は「b」です。
・キャラクタデバイス:キャラクタ単位でデータ転送を行うデバイス。キーボード・マウス・ターミナル等がキャラクタデバイスに分類されます。先頭の記号は「c」です。
デバイスファイルは/dev配下に格納されています。
所有者と所有グループ
全てのファイルにはそのファイルの所有者と所有グループが決まっています。ファイルを作成すると、作成したユーザーとプライマリグループがそれぞれファイルの所有者と所有グループに割り当てられます。
下の例ではexample.txtの所有者は「tomoya」、所有グループが「miracle」となっています。
<使用例>
ls -l example.txt
-rw-r--r-- 1 tomoya miracle 0 July 21 16:07 example.txt
chownコマンド
chown(change owner)はファイルの所有者(owner)や所有グループを変更するためのコマンドです。
chownコマンドを使用する際はroot権限が必要になります。
<使用例>
sudo chown [新たなユーザー名] [変更するファイル名] example.txt
sudo chown [新たなユーザー名]:[新たなグループ名] example.txt
ディレクトリ配下のファイルやディレクトリの所有者を変更する場合は、「-R(--recursive)」オプションを指定します。
chgrpコマンド
chgrp(change group)はファイルの所有グループを変更するコマンドです。chgrpコマンドは一般ユーザーでも実行できます。ただし、その場合に設定可能なグループはそのユーザーが属しているグループに限定されます。それ以外のグループを指定する場合はroot権限が必須です。
<使用例>
chgrp [新たなグループ名] [変更するファイル名]
なお、ディレクトリの所有グループを変更する場合は、「-R」オプションを指定します。
パーミッション
ファイルやディレクトリには様々なパーミッション(権限)があります。パーミッションを適切に付与することで安全なファイル管理が可能になります。パーミッションには基本的なパーミッションと特殊なパーミッションが存在します。
基本的なパーミッション(r/w/x)
ファイルやディレクトリにはr(read:読み込み権限)、w(write:書き込み権限)、x(execute:実行権限)という3つの基本的なパーミッションを設定できます。また、r、w、xにはそれぞれ4、2、1の数字は割り当てられています。
<使用例>
ls -l example.txt
-rw-r--r-- 1 tomoya miracle 0 July 21 16:07 example.txt
上記の例を見てみると、左端から2番目の3文字ずつ「rw-」が所有者、「r--」がグループ、「r--」がその他のユーザーのパーミッションを表しています。このパーミッションを数字で表すと「644」になります。(r+w(4+2)、r(4)、r(4))
chmodコマンド
chmod(change mode)はファイルへのアクセス権限を変更するためのコマンドです。コマンドを実行するにはroot権限が必要です。chmodコマンドでは以下のような記号やアルファベットを使用します。
「対象」では、何に対して権限を与えるかを示します。
u(users):所有者
g(groups):グループ
o(others):その他のユーザー
a(all):すべてのユーザー
「操作記号」では、対象の権限をどうするかを示します。
+:追加する
-:削除する
=:指定する
「権限」では、どの権限かを示します。
r・w・x:読み・書き・実行
s:SUID・SGID
t:スティッキービット
最後に
ファイルのパーミッションを適切に設定することは、安全なファイル管理をするうえで非常に重要な点になります。
実際に業務等でファイルを作った際にはパーミッションを意識してみてください。