こんにちは。関東の大学に通う大学生ミンチ(@programminchi)です。今回はUNIXやLinuxにおける、ファイルやディレクトリのパーミッションについて発信していきたいと思います。
パーミッションとは?
ファイルやディレクトリへのアクセス権のことです。
パーミッションを確認することでそのファイルを読み込んだり、ファイルに書き込みをしたり、はたまた、実行したりということをどこまでできるのか知ることができます。
また、それをファイル毎に自分で設定してあげることも可能です。
パーミッションの確認方法
まずは、パーミッションの確認方法を見ていきましょう。これは、簡単でlsコマンドをlオプション付きで実行してあげると、確認できます。以下に実行例とそれに対する出力を表示します。
$ls -l -rw-rw-r-- 1 minchi group 300 8月 8 18:00 file1.txt -rw------- 1 minchi group 500 8月 9 18:00 file2.txt drwxr--r-- 2 minchi group 4000 6月 3 10:00 directory1
以上のようにlsコマンドを実行するとカレントディレクトリ内にあるファイルやディレクトリの情報が一つずつ表示されました。出力の一行は左から順にファイルの種別とパーミッション(10文字の内、最初の一文字がファイルの種別、残りの9文字がパーミッションを表しています。)、リンク数、所有者、グループ名、バイト数、変更日時、ファイル(ディレクトリ)の名前を表しています。
例えば、出力の一行目を見てみてください。この行はfile1.txtというファイルの情報を表しており、一番最初の1文字(-)がファイルの種別、次にくる9文字(rw-rw-r--)がこのファイルのパーミッションを表しています。そして、次の1がリンク数、minchiが所有者、groupがグループ名、300がバイト数、8月 8 18:00が変更日時になります。
ここで一つファイルの種別とは何を表すのか主なものを以下に示します。
-.....通常のファイルであることを示す。
d.....ディレクトリであることを示す。
l.....リンクであることを示す。
パーミッションの読み方
それぞれの文字が何を表しているのか
まず、ここではパーミッションについて理解するために以下のような例で考えていきましょう。
rwxrw-r--
パーミッションは上で示したように9文字で表されます。その内最初の3文字はファイルの所有者のパーミッション、次の3文字は同一グループのユーザのパーミッション、最後の3文字はその他のユーザのパーミッションを表します。
さらに、rは読み出し可能、wは書き込み可能、xは実行可能であることを表しています。上の例でいうと、ファイルの所有者が読み書き実行可能、同一グループのユーザが読み書き可能、その他のユーザが読み込みだけ可能ということになります。
ファイルのパーミッション
ファイルとディレクトリでパーミッションの意味が少し変わってくるので細かい部分についての説明をしていきます。まず、ファイルのパーミッションについて。ファイルのパーミッションでは、rはそのファイル自体を読み込むことができるかを表します。また、wはファイルの内容を書き換えて上書き保存することができるかを表します。そして、xはプログラムなどとして実行できるかを表します。
ディレクトリのパーミッション
次にディレクトリのパーミッションについて。rはそのディレクトリの中にあるファイルやディレクトリの一覧を見ることができるか(lsできるか)を表します。wはそのディレクトリの下でファイルを作ったり削除したりできるかを表します。最後にxはそのディレクトリ内のファイルやディレクトリにアクセスできるかを表します。
パーミッションの別の表現
8進数表記する
9文字のパーミッションを8進数3桁で表現することもできます。まず、9桁の2進数でパーミッションを表現し、それらを3桁毎に区切って8進数で表現します。例えば、パーミッションがrwxrw-r--であった時、2進数で111110100と表し、その後、これを3桁毎に8進数にして、764となります。
コマンドchmodでパーミッションを変更する
方法1
$chmod ugoa+rwx file ※ugoa+rwxの部分は任意
実際にfileという名前のファイルのパーミッションを変更したい時は上のようにしてあげます。以下にugoaが何を表しているのか示します。
u.....所有者のパーミッション
g.....グループのユーザのパーミッション
o.....その他のユーザのパーミッション
a.....全てのユーザのパーミッション
分かりにくいかもしれないので、例を挙げると、所有者に書き込み許可を加えたいときはu+x、グループユーザとその他のユーザに読み出しと書き込みの許可を与えたいときはgo+rw、などとします。
さらにパーミッションの範囲を狭めたいときは-を使ってやることもできます。例えば、すべてのユーザが読み出しできないようにしたいときはa-rとします。
方法2
パーミッションの変更に8進数表記を使ってやることもできます。
$chmod 764 file ※764の部分は任意
上の例ではfileのパーミッションが764に変更されます。つまりrwxrw-r--に変更されるということです。
まとめ
以上で書いたことは最初学習しているときは眠たくなるような話なので、聞き流していたのですが、実際にはとても重要なことです。
ファイル内に大事な情報が含まれていて、パーミッションを変更する必要があるときなどを考えてもらえばわかると思いますが、あまりないがしろにできない問題です。知っていればすぐにできることですのでこの機会に自分で手を動かして実践してみてください!!
もっとUNIXについて理解したい!って人は他のUNIXに関する記事も是非読んでみてください!
今後も定期的にコンピュータ系の記事を発信していくので是非、興味のある人はツイッターの方もフォローお願いします!!