Linux や UNIX は、1 台のシステムに複数のユーザーが同時にログインして使用することができるマルチユーザー対応 OS です。そのために、ユーザーがファイルの読み込み、書き込み、あるいはコマンドを実行するには、そのファイルに対するアクセス権限を持っている必要があります。アクセス権限を持たないユーザーは、そのファイルの読み込みや書き込みを行うことはできません。このように、ファイルやディレクトリに対する許可属性(パーミッション)の設定は、システムのセキュリティを操作する最も基本的な機構を提供しています。ファイルやディレクトリは、他にも様々な属性を保持しています。それらの属性は、以下のように ls コマンドで確認することができます。
$ ls -l total 40 drwxr-xr-x 2 taro taro 4096 Sep 3 21:13 data/ -rw-r--r-- 1 taro taro 12809 Sep 3 21:08 sample1.txt -rw-r--r-- 1 taro koba 9364 Sep 3 21:08 sample2.txt -rw-rw-rw- 1 taro taro 5489 Sep 3 21:08 sample3.txt |
各フィールドの意味は左から以下の通りです。
ファイルタイプとパーミッション
ハードリンクの数
所有者
グループ
ファイルサイズ(Byte)
タイムスタンプ
ファイル名
ファイルタイプとパーミッションを示すフィールドは 10 文字で構成されますが、最初の 1 文字がファイルタイプを表し、残りの 9 文字がファイルの許可属性(パーミッション)を表しています。ファイルタイプを表す文字には以下の種類があります。
c や b は、ハードウェアデバイスにアクセスするためのインターフェースとなるデバイスファイルです。シンボリックリンクは、深い階層に位置するファイルやディレクトリへのアクセスを簡単にしたい場合やソフトウェアバージョン間のディレクトリ配置位置の違いを吸収したい場合などに利用されます。
ファイルタイプに続く残りの 9文字がそのファイルやディレクトリのパーミッションを表しています。パーミッションは以下のように最初の 3文字は所有者、次の 3文字はグループ、最後の 3文字はその他のユーザーのパーミッションを表します。所有者とは、このファイルやディレクトリを作成したユーザーを意味します。グループについては、第25章 を参照してください。

つまり、上記の sample1.txt ファイルの場合は、所有者に rw- 、グループに、r-- 、その他のユーザーに r-- のパーミッションが設定されていることを表しています。これらのパーミッションで使用される文字(r、w、x、-)の意味は次の通りです。
この例では、sample1.txt ファイルの所有者である taro は読み書き可能(rw-)ですが、その他のユーザーは読み込みだけが可能(r--)な権限が与えられています。また、x はシェルスクリプトやプログラムなどの実行ファイルに付与される権限で、そのプログラムの実行が可能であることを意味します。また、ディレクトリに x の権限が与えられている場合は、そのディレクトリへの移動が可能であることを意味します。なお、Turbolinux 10 Server で新規ファイルを作成すると、ファイルのパーミッションは 644(rw-r--r--)が標準で設定されます。ディレクトリの場合は 755(rwxr-xr-x)となります。パーミッションの変更は、chmod コマンドを使用します。
パーミッションには上記で解説した、r、w、x、-、の他にもスティッキービット、SUID ビット、SGID ビットと呼ばれる特殊な権限もあります。スティッキービットは、ファイルの所有者、もしくはディレクトリの所有者だけがファイルの削除を行えるようにするための権限です。例えば、/tmp ディレクトリのパーミッションを確認すると、次のように最後の文字が t であることがわかります。
drwxrwxrwt 18 root root 4096 Sep 3 19:47 /tmp/ |
/tmp はすべてのユーザーに書き込み権限が与えられたディレクトリで、一時的なファイルを保存するためのディレクトリとして利用されています。しかし、単に書き込み権限を与えただけでは、他のユーザーのファイル上書きしたり、削除してしまうことも可能です。スティッキービットをディレクトリに設定すると他のユーザーがファイルを削除できなくなります。
SUID ビットと SGID ビットは、一時的に異なるユーザー権限でプログラムの実行を可能とするために使用されます。例えば、passwd コマンドを実行すると、一般ユーザーが自分のパスワードを変更することができますが、ユーザーのパスワード情報を管理している /etc/shadow ファイルには、root のみ読み書き可能な権限(rw-------)が設定されています。そこで、passwd コマンドには、一般ユーザーもパスワード情報の更新ができるように、一時的に root の権限を与える SUID ビットが設定されています。
-r-s--x--x 1 root root 15600 Sep 3 14:52 /usr/bin/passwd* |
このように、SUID ビットが指定されたファイルは、所有者の実行権限を表す文字に s が設定されます。また、SGID ビットが指定されたファイルの場合は、所有グループの実行権限に s が設定されます。SGID が設定されたファイルは、SUID と同様に、コマンド実行時に一時的に所有グループの権限が適用されます。このように、SUID と SGID は便利な機能ではありますが、root の権限を一般ユーザーに使用させることによるセキュリティホールの原因ともなり得るため、SUID、SGIDの使用は極力避けるべきです。
リンクには、先に述べたシンボリックリンクとハードリンクの 2つの種類が存在します。シンボリックリンクとは、実体は別なところに存在するファイルへのパスを記録しているにすぎません。これに対して、ハードリンクはどちらのファイルも同じディスク領域を示しています。しかし、ハードリンクはファイルシステムをまたいで作成できないなどの制限があるため、リンクを作成する場合は、シンボリックリンクを使用するのが一般的です。
そのファイルを所持するユーザー名、グループ名が表示されます。一般ユーザーはファイルの所有者を変更することはできません。root ユーザーがファイルの所有者、またはグループを変更するには、chown や chgrp コマンドを使用します。
そのファイルが更新された最新日時が表示されます。