13.14. 所有権と権限

この章の前半で、cdコマンドを使用して rootのログインディレクトリに入ろうとしたとき、以下のメッセージが出て 入れませんでした。

cd /root
bash: /root: Permission denied

これは Linuxの セキュリティの機能の一つです。UNIXと同様に Linuxは マルチユーザーシステムであり、ファイルの権限は悪意のある不正操作から システムを保護するための一つの手段です。

権限を拒否された時に、アクセスをする方法の一つに、以前の説明 にあるようにsuを使用してrootに入ることです。 rootのパスワードを持っているユーザーは誰でもアクセスできるためです。

しかし、スーパーユーザーへの切り替えがいつでも簡便で推奨できる ものではありません。スーパーユーザーとして、誤って重要な設定ファイルを 壊してしまう可能性があるからです。

すべてのファイルとディレクトリはその作成者の所有物になります。 ユーザーが、自分のログインディレクトリでsneakers.txt ファイルを作成(項13.9.1 参照)すれば、そのsneakers.txtファイルはユーザーの 所有物となります。

これは、誰に対してファイルの読み取り、書き込み、又は実行 (もしファイルがテキストファイルでなく、アプリケーションの場合)の 許可を持たせるか指定することができると言う意味です。

読み取りと書き込みと実行は、権限の中の3つの主要設定です。 アカウントが作成されユーザーがグループに配置されたとき、ファイルの 読み取り、書き込み、又は実行を許可するグループも指定することが できます。

では、sneakers.txtを詳しく調べて みましょう。lsコマンドに-l オプションを付けて実行します(図13-11 を参照)。

ここには、多くの詳細情報が提供されています。誰が読み取り(r)と 書き込み(w)ができるか、誰がファイルを作成したか(sam)、所有者の所属 グループ(sam)を示しています。デフォルトでは、グループの名前は自分の ログイン名と同じということを覚えていてください。

図 13-11. sneakers.txtに関する権限

表示された情報から、権限以外にも、ファイル名、作成日時、 サイズがわかります。

最初の文字列が現在の権限を表示しています。10個のスロットが あります。最初のスロットはファイルタイプを示すものです。それ以後の 9つのスロットは、ユーザーの3種のカテゴリーの3つの権限セットを 表します。

例えば、

-rw-rw-r--

これらの3つのセットは、ファイルの所有者と、ファイルが所属する グループ、そして「その他」つまりシステム上のその他のユーザーです。

-    (rw-)   (rw-)   (r--) 1 sam sam 
|      |       |       | 
type  owner  group   others
      

ファイルタイプ(type)を表す最初の項目には、以下のいずれかが 表示されます。

最初の項目に続く3つの組(所有者、グループ、その他のユーザーに 対応する、それぞれ3つの項目)には、それぞれ以下の3種類の権限が 表示されます。

所有者、グループ、その他に対してハイフンが表示されているときは、 そのファイルは特定の権限が与えられていないことを示します。ここで sneakers.txtファイルを再度検証して権限を確認 しましょう。

ls -l sneakers.txt
-rw-rw-r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

ファイルの所有者 (ここでは, sam) は、読み取りと書き込みの権限 を持っています。グループsamも、sneakers.txt への読み取りと書き込みの権限を持っています。これはプログラムに関する ものではないので所有者とグループのどちらも実行する権限はありません。

13.14.1. chmodコマンド

chmodコマンドを使用して権限を変更します。 次の例は、chmodコマンドでsneakers.txt 上の権限の変更の仕方を示しましょう。

オリジナルのファイルは、初期の権限設定が次のようになって います。

-rw-rw-r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

ファイルの所有者またはrootでログインしていれば、所有者、 グループ、その他に対するすべての権限を変更することができます。

ここで、所有者とそのグループはファイルの読み込みとファイル への書き込みができます。このグループに属さないユーザーは、ファイルの 読み込みだけが可能になっています(r-- )。

注意重要
 

ファイルの権限はセキュリティの機能であることを忘れないで ください。誰か他のユーザーに読み込み、書き込み、及びファイルの 実行を許可する時はファイルへの不正操作、変更、又は削除のリスクを 増大していることになります。原則として、読み込みと書き込みは本当に その作業が必要なユーザーのみに与えるべきです。

ここでは、試しにすべてのユーザーにファイルへの書き込みを 許可します、するとすべてのユーザーはそれを読み込み、コメントを 書き込んで保存できるようになります。つまり、このファイルに対する 権限のうちの「その他」セクションを変更する必要があります。

先ず、ファイルを見てみましょう。シェルプロンプトで 次の入力をします。

ls -l sneakers.txt

このファイルに関する情報が表示されます。

-rw-rw-r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

それでは、次のように入力してみましょう。

chmod o+w sneakers.txt

この o+w コマンドはシステムに、 sneakers.txtに対する書き込み権限を他の人に与えたいこと を伝えます。結果を見るには、ファイルの詳細を再度表示します。 ファイルは次のように表示されます。

-rw-rw-rw-    1 sam sam     150 Mar 19 08:08 sneakers.txt

これで誰でもがファイルを読み込み、書き込むことができます。

sneakers.txtから読み取りと書き込みの 権限を削除するにはchmodコマンドを使用して、 読み取りと書き込みの権限を両方とも取り除きます。

chmod go-rw sneakers.txt

go-rwコマンドをタイプすることによって、 システムにsneakers.txtファイルからグループと その他ユーザーの読み取りと書き込みの権限を削除するように指示して います。

結果は次のようになります。

-rw-------    1 sam sam    150 Mar 19 08:08 sneakers.txt

chmodコマンドで権限を変更する場合、 これらの設定は一種の暗記法だと考えてください。すべきことは、 chmodでのいくつかの記号と文字を覚えるだけです。

ここに、コマンドで使用できる記号と文字のリストを示します。

対象

u — ファイルを所有するユーザー(所有者)

g — ユーザーが属するグループ

o — その他のユーザー(所有者やグループではないユーザー)

a — すべてのユーザー (u, g, and o)

権限

r — 読み取り権限

w — 書き込み権限

x — ファイル実行権限

操作

+ — 権限の追加

- — 権限の削除

= — これを唯一の権限とする

実際に試してみましょう。sneakers.txtから、 すべての権限を削除してみましょう—すべてのユーザー。

chmod a-rwx sneakers.txt

さて、cat sneakers.txtでファイルが 読めるか試してみましょう。次のようになります。

cat: sneakers.txt: Permission denied

自分も含めてすべての権限を削除した結果、予定通りにファイルが 操作できなくなりました。しかし、自分にファイルの所有権があるので、 次のコマンドで、いつでも権限を取り戻すことができます。

chmod u+rw sneakers.txt

cat sneakers.txtコマンドを使用して、ファイルの所有者となる自分がファイルを再び読むことができるか確かめます。

ここでchmodでよく使われる代表的な設定を説明しておきましょう。

-Rオプションを追加することによって、 ディレクトリツリー全体の権限をまとめて変更することができます。

ここで、ディレクトリに対する実行権限の意味に注意して ください。ディレクトリはアプリケーションと異なり「実行」することは できません。ディレクトリの場合の実行権限は、そのディレクトリ内に 移動する権限を意味します。

tiggerに対する実行権限をその他の ユーザーに許可しない場合、だれが読み込みあるいは書き込みの アクセスを持っていても関係ありません。正確なファイル名を知らない 限り、だれもそのディレクトリに入ることができません。

例えば、次のように入力します。

chmod a-x tigger

すべてのユーザーの実行権限を削除します。

この状態でcdを使用して tiggerに移動しようとすると次のことが起こります。

bash: tigger: Permission denied

次に自分自身とそのグループのアクセス権限を復元しましょう。

chmod ug+x tigger

ここで、その結果を ls -dl でチェックします。 その他のユーザーだけがtiggerディレクトリへの アクセスを拒否されているはずです

13.14.2. 数による権限の変更

chmodの設定で 短い文字で設定を覚える 暗記法を以前に説明しています。ここにもう1つの権限の変更法が あります。最初は少々、複雑に見えるかも知れません。

sneakers.txtに対して最初の権限に 戻りましょう。

-rw-rw-r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

各権限の設定は数値で表されます。

これらの数値が合計されて、その合計の数字が権限の指定に使用されます。 例えば、もし、読み取りと書き込みの権限が欲しい場合、その数値は6となります。 (読み取り4、書き込み2、合計6 )

sneakers.txtの権限を数値で表すと、 次のようになります。

 -  (rw-)   (rw-)  (r--)
      |       |      |
    4+2+0   4+2+0  4+0+0

ユーザーの合計は6で、グループの合計が6で、その他のユーザー の合計が4となります。この場合、権限の表示は 664 となります。

sneakers.txtの中で変更操作して、 グループが書き込み権限を持たないで、読み取り権限だけを持つ ようにするには、そのアクセスから数値2を引きます。

そうすると、このファイルの権限の数値は 6、4、4となります (644)。

この新しい設定を有効にするために、次のようにタイプします。

chmod 644 sneakers.txt

ここで、変更を確認するために、ファイルのリストを開いて見ましょう。 以下の入力をします。

ls -l sneakers.txt

その出力は 次のようになるはずです。

-rw-r--r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

これで、sneakers.txtへのグループと他の ユーザーの書き込み権限がなくなりました。グループの書き込み権限を 元に戻すには、2番目の権限を表す数値に(2)を加算した数値を設定 します。

chmod 664 sneakers.txt

警告警告
 

権限の設定を666にすると、これはすべてのユーザーにファイル 又はディレクトリに対して読み取りと書き込みの許可を与えることに なります。また、777の設定にするとすべてのユーザーに読み取りと 書き込み及び実行の権限を与えます。これらの権限は重要なファイルに 対して不正操作を許すことになります。ですから一般的にこれらの設定は 使用すべきではありません。

以下に、よく使われる設定の数値と意味を一覧にしておきましょう。

次に、ディレクトリに対してよく使われる設定をあげます。