このエントリーを含むはてなブックマークはてなブックマーク - オレだけのフォルダ、君に捧げるファイル: 「パーミッション」をしっかりと理解する このエントリをつぶやくこのWebページのtweets Googleブックマークに追加 Bookmark this on Delicious

Unix系のOSは、1台のコンピュータを複数のユーザで同時に使える「マルチユーザOS」。
誰もが勝手にマシンに接続してあらゆる情報にアクセスしたり、ファイルを変更できないように、またうっかり他人が作成したファイルを消してしまわないように、ファイル/フォルダに細かいアクセス権(パーミッション)を設定する仕組みとなっています。
これにより、自分、自分たちのグループが作成した大切なファイルを、他人や他のグループには見れないように「アクセス不可」とすることもできますし、誤って削除されないように「読み込み専用」にして保護することができるわけです。

具体的には、Linuxでは、ファイルやディレクトリ毎に所有者(owner)、グループ(group)が設定され、ファイル単位、ディレクトリ単位で、「読み取り(Read)」、「書き込み(Write)」、「実行(Execute)」の権限が設定できるようになっています。

■アクセス権をチェックしてみる

ls -l」はディレクトリの中味を詳細に表示してくれるコマンドです。

まずは左端に注目してみましょう。「-」、「d」、「l」の3種類あることがわかります。それぞれは次の意味を示します。

  • 「-」:ファイル
  • 「d」:ディレクトリ(フォルダ)
  • 「l」:リンク

lrwxrwxrwx」の場合には、リンクファイルであることになります。
2番目以降は、3つづつの文字で順番に、「所有者」、「グループ」、「その他」のパーミッションを表しています。またr,w,xは以下の意味です。

  • 「r」:読み取り可能
  • 「w」:書き込み可能
  • 「x」:実行可能

・・・すなわち「lrwxrwxrwx」は、「l」リンクファイルであり、パーミッションについては、以下を表しています。

  • 「所有者」には「rwx」=読み取り、書き込み、実行の全てが可能に。
  • 「グループ」にも「rwx」=読み取り、書き込み、実行の全てが可能に。
  • 「その他」にも「rwx」=読み取り、書き込み、実行の全てが可能に。

「-rw-r–r–」の場合にはどうでしょう?頭の「-」はディレクトリではなく、単独のファイルですね。

  • 「所有者」には「rw-」=読み取り、書き込みが可能に。
  • 「グループ」には「r–」=読み取りだけが可能に。
  • 「その他」には「r–」=読み取りだけが可能に。

■所有者を変更する

-rw-r–r– 1 aiko aiko 10114 2008-11-28 11:28 Prime003.png
パーミッション表示の右隣にある数字は「リンク数」を表し、その右隣には「aiko」→所有者、「aiko」グループという順で表示されています。
では、このファイルを、同じホスト(パソコン)の他のアカウントIDを持つ人(u-bon)が利用できるようにしてみます。

その為には以下のコマンドで、所有者を変更します。この作業には管理者権限が必要です。

sudo chown 変更後のユーザ名 ファイル名


はい、ユーザ名の所がu-bonに変更になり、私からu-bonに捧げるファイルができあがりました。

■新規に作成したファイル、ディレクトリのアクセス権は?


さて、Ubuntuの場合、新規に作成したファイル/ディレクトリには以下のようなアクセス権がデフォルトで与えられます。
新規に作成したファイル → 「-rwxr-xr-x」
新規に作成したディレクトリ → 「drwxr-xr-x」

  • 「所有者」には「rwx」=読み取り、書き込み、実行の全てが可能に。
  • 「グループ」には「r-x」=読み取り、実行が可能に。
  • 「その他」にも「r-x」=読み取り、実行が可能に。

さて、次にこのアクセス権を細かく設定しなおしたい場合、いちいちこれらの記号で指定するのはとても面倒です。
簡単にする方法が次の「オクタルモード」で表示する方法です。

「r」=読み取り権に4ポイント
「w」=書き込み権に2ポイント
「x」=実行権に1ポイント

  • 「rwx」=7
  • 「rw-」=6
  • 「r-x」=5
  • 「r–」=4
  • 「—」=0

したがって、新規に作成したディレクトリのアクセス権は、次のように表せます。

「d」はディレクトリの意味、「rwx」=7、「r-x」=5、「r-x」=5、すなわち、

「drwxr-xr-x」=755 として表せます。

■ファイル/ディレクトリのアクセス権を変更する

では、オクタルモードの数値でアクセス権を変更してみましょう。自分だけしか読み書きできず、グループの他のメンバーも他人には一切見ることもできないディレクトリにするには・・・そう!「700」にすればOKですね?

「himitsu」というディレクトリを作成した後に、次のコマンドを打ちます。

chmod オクタル値 フォルダ/ファイル名
chomod 700 himitsu



drwx—— 2 aiko aiko 4096 2009-02-02 10:55 himitsu
ふ、ふ、ふ、これでムフフなファイルはこの中にしまっておけば安全になるのであります。

さてさて、以上長々と申し上げてきたアクセス権、ややこしくて面倒なのでありますが、自分の、自分たちの大切な情報資産を守るために、うっかり他人にファイルを削除されない為の手段として使いこなすととっても便利です。

なお、ネット越しにファイルのやりとりをする際に、Ubuntuでは標準で「samba」というWindowsのファイルシステムと互換性がある方法を採用しています。
これがありがたい事に、ここいらへんの所有権の移転手続きを自動的に行ってくれます。
裏を返して言えば、chownで所有者の変更コマンドを用いるのが面倒な場合、同一マシンの他ユーザの場合でもsamba経由でファイルのやりとりをすれば大丈夫!すんなりと引き継ぐ事ができます。

Related posts:

  1. ファイルシステムのマウントとアンマウント、「/etc/fstab」がキモ