ファイルのアクセス権
ファイルのアクセス権について
CGIスクリプトとして働くRubyプログラムは、cgi-binディレ クトリに保存した上で、ktermより次のコマンドを入力しなければ正しく動かす ことが出来なかった。
pan{c11xxxx}% chmod 755 ◯◯.rb[Return]
chmodコマンドはファイルへのアクセス権を設定するコマンドである。では、その後の755は何を意味するのだろうか。これを理解するためには、まずアクセス権について理解する必要がある。
ファイルのアクセス権
ktermを使い、lsコマンドに引数-laをつけ、ディレクトリ内のファイル一覧を表示してみよう。どのディレクトリで行っても構わない。コマンドを入力すると、ファイル名以外に-rw-r--r--というような不思議な記号が表示されることが確認できる。
pan{c11xxxx}% ls -la[Return] drwxr-xr-x 2 naoya st2005 512 9月 29日 19:10 ./ drwxr-xr-x 13 naoya st2005 1024 9月 29日 16:03 ../ -rw-r--r-- 1 naoya st2005 46 9月 24日 16:09 .htaccess -rw-r--r-- 1 naoya st2005 3743 9月 29日 19:10 10-access.htm -rw-r--r-- 1 naoya st2005 5934 2月 15日 2008年 10-css.htm -rw-r--r-- 1 naoya st2005 2319 2月 15日 2008年 10-image.htm -rw-r--r-- 1 naoya st2005 4828 9月 29日 19:06 10-open.htm -rw-r--r-- 1 naoya st2005 22966 9月 29日 18:42 10.htm -rw-r--r-- 1 naoya st2005 22501 9月 24日 16:19 9.htm -rwxr-xr-x 1 naoya st2005 807 9月 24日 16:45 kakaku.rb* -rw-rw-rw- 1 naoya st2005 144 9月 29日 19:06 open-cgi.dat -rwxr-xr-x 1 naoya st2005 887 9月 29日 19:01 open-cgi.rb*
これが各ファイルのアクセス権を示したものである。先頭は、「-」または「d」となっているが、これはファイルとディレクトリを区別するもので、「-」はファイル、「d」はディレクトリとなる。
先頭の1桁を除外すると、残りは9桁である。これは3桁×3つに分割することができる。最初の3桁は自分自身(u)のアクセス権、次の3桁は自分と同一グループのユーザー(g)のアクセス権、最後の3桁は他のユーザー(o)のアクセス権である。
u (User) | g (Group) | o (Other) | ||||||
---|---|---|---|---|---|---|---|---|
r | w | x | r | w | x | r | w | x |
ここで、rはReadの略であり読み込む権利を、wはWriteの略であり編修する権利を、xはeXecuteの略で実行する権利を表している。r、w、xと表示されている場合はその権利があり、-の場合はその権利がないという意味になる。
ファイルを作成した直後のアクセス権の設定は、rw-r--r--となっているが、これは次のような意味となる。
- 自分(u):r(読み込み)とw(編集)のみ可
- グループ(g):r(読み込み)のみ可
- 他人(o):r(読み込み)のみ可
CGIスクリプトとして使用するRubyプログラムは、自分だけでなく他人が使用する可能性があるため、gやoに実行する権利を与える必要があるし、CGIの中でopenメソッドを使ってファイルの読み書きをする場合は、gやoにファイルを読み込む権利や編修する権利を与える必要がある。
アクセス権の変更
アクセス権の変更方法[1] ビットパターンによる指定
u, g, oそれぞれについて3種類の権利を設定することができる。許可する場合を1、許可しない場合を0とした場合、u, g, oそれぞれについて000, 001, 010, 011, 100, 101, 110, 111という8種類の組み合わせが想定できる。これを3桁の2進数と見なし、10進数に直した値を使って指定しようとする方法である。
組み合わせ | r(Read) | w(Write) | x(eXecute) | 10進数 |
---|---|---|---|---|
000 | - | - | - | 0 |
001 | - | - | OK | 1 |
010 | - | OK | - | 2 |
011 | - | OK | OK | 3 |
100 | OK | - | - | 4 |
101 | OK | - | OK | 5 |
110 | OK | OK | - | 6 |
111 | OK | OK | OK | 7 |
pan{c11xxxx}% chmod 755 hoge.rb[Return]
この場合、hoge.rbに対して、Userはr,w,xいずれも許可、GroupとOtherはr,xのみ許可という設定をしていることになる。
アクセス権の変更方法[2] シンボルを用いて指定
ユーザーを表すu, g, oと、アクセス権を表すr, w, xを組み合わせて指定する方法である。例を示しながら説明する。
pan{c11xxxx}% chmod u+x hoge.rb[Return] #=>Userにx(eXecute)を追加
pan{c11xxxx}% chmod o-r hoge.rb[Return] #=>Otherからr(Read)を除去
pan{c11xxxx}% chmod +x hoge.rb[Return] #=>User、Group、Otherにx(eXecute)を追加
pan{c11xxxx}% chmod -w hoge.rb[Return] #=>User、Group、Otherからw(Write)を除去