RedHat-Linuxメモ
グループについて
syslogデーモンについて
rpmコマンドをアップデートする
E-IDEのHDDを増設する
opensshをインストールする
opensshをインストールする その2
Real Server Basicをインストールする
リモートマシンのバックアップをとる
グループについて
UNIXでは、ディレクトリやファイルごとにパーミッションが設定されています。パーミッションを知るには、「ls」コマンドのあとに「-l」オプションを付けて実行します。
# ls -l
drwxr-xr-x 2 root root 1024 Feb 9 12:04 cgi-bin
drwxr-xr-x 3 root root 1024 Jan 18 16:19 htdocs
drwxr-xr-x 3 root root 2048 Jan 16 21:12 icons
drwxr-xr-x 3 root root 1024 Jan 18 16:19 htdocs
|
「drwxr-xr-x」がパーミッションを表わしています。先頭の「d」はそれぞれがディレクトリであることを表わしています。続いて3文字ずつの単位で「rwx」が続きます。「-」の場合は、rwxのうち該当するものが無効であることを表わしています。
つまり、「r-x」なら「r」と「x」は許可されているが「w」は許可されていない、「rw-」なら「r」と「w」は許可されているが「x」は許可されていないというように理解します。
たとえば、上の例なら、「cg-bin」ディレクトリは、オーナー(所有者)は「rwx」、グループに所属するユーザは「r-x」、その他のユーザは「r-x」というように、オーナー、グループ、その他のユーザの順で、「rwx」の許可・非許可が明示されています。
「rwx」の「r」はRead、「w」はWrite、「x」はeXecuteの略で、それぞれ「読み取り権」「書き込み権」「実行権」のことです。
つまり「cgi-bin」では、オーナーは読み込みも書き込みも実行することもできますが、グル−プに所属するユーザは読み込みと実行することしかできず、その他のユーザも読み込みと実行することしかできません。
対象がディレクトリの場合での「x 実行権」は、ディレクトリの内容を表示したり(lsコマンド)、そのディレクトリ内に移動したり(cdコマンド)、ディレクトリ内のファイルをオープンしたりすることを意味しています。
同じように、対象がディレクトリの場合での「r 読み取り権」は、ディレクトリの内容を表示したり(lsコマンド)したりすることを意味しています。lsコマンドでカレントディレクトリのファイル一覧を見るには、「x」と「r」の両方が必要です。一覧表示させることはできないが、実行する(あるいはオープンする)ことはできる状態は、「x」だけが可能な状態です。その逆に実行権はないが読み取り権はあるディレクトリをlsコマンドで表示させると、ファイル名しか表示されません。
対象がディレクトリの場合での「w 書きこみ権」は、ディレクトリの中にファイルを作ったり、削除できるということを意味しています。シンボリックリンクをはることも、この権利がなければできません。
「rwx」のあとの数字はともかくとして、そのあとのふたつの名前は、左側が「オーナー」、右側が「グループ」を表わしています。したがって、ここの4つのディレクトリは、すべて「root」がオーナーで、グループも「root」です。
# ls -l
-rw-r--r-- 1 root root 2326 Jul 3 1996 apache_pb.gif
-rw-r--r-- 1 root root 1622 May 20 1998 index.html
|
上の結果では、apache_pb.gifとindex.htmlのふたつのファイルは、オーナー、グループとも「root」で、rootはこのふたつに対して書き込むことも読み込むこともできますが、root以外はこのふたつのファイルに対して読み込むことしかできないようになっています。
以上が、UNIXでのパーミッションの基本です。実際にはより高度で柔軟な仕組みがあるのですが、とりあえず以上のことは理解しておいてください。
さて、ホームページを管理するという観点から考えると、ftpを使うにしろ、sambaを利用するにしろ、こうしたパーミッションの問題から、Webを管理するユーザをまとめたグループを作ったほうが便利です。「~」で始まる個人用のページならともかく、会社全体のページといった場合には、だれもがアクセスできるディレクトリにWebのデータがあったほうがいいことは、おわかりいただけると思いますが、そのディレクトリが、
drwxr-xr-x 3 root root 1024 Jan 18 16:19 htdocs
|
のように、オーナーもグループも「root」になっていては、「root」以外は読むことしかできません。そこで、オーナーはそのままで(オーナーを変更してしまってもいい)、グループを変えることにします。
その前に、グループを作り、そこに必要なユーザを追加しておきます。グループは、「/etc/group」で管理しています。
webuser::9801:oohashi,kawasaki
|
というように、
|
グループの名前::グループID番号:ユーザ1,ユーザ2(,ユーザ3,....)
|
といった形式で登録します(グループの名前とグループID番号の間にはパスワードも設定できますが、現在では使われていません)。グループID番号はすでに登録してあるものと重複しない番号で、大きな数(1000以上65000以下の整数)を割り当てておきます。
グループを作ったら、ディレクトリの属性を変更します。
としてchgrpコマンドでグループを変更します。オーナーを変更するchownコマンドでなら、
# chown root.webuser htdocs
|
というように、
|
chown オーナー.グループ ディレクトリ名(またはファイル名)
|
というように指定します。オーナーとグループの間には「.」(ピリオド)を使います。
最後に、パーミッションを、ディレクトリは「drwxrwxr-x」となるように、ファイルは「-rw-rw-r--」になるよう設定します。perlスクリプトなど実行する必要があるファイルの場合には、「-rwxrwxr-x」にします。パーミッションの変更には、chmodコマンドを使います。
chmodコマンドでは、u(user)、g(group)、o(other)といったオプションで設定することもできますが、初心者にわかりやすいのは、「644」や「755」といった数字による設定でしょう。簡単に言ってしまえば、「7」が「rwx」、「6」が「rw-」、「5」が「r-x」、「4」が「r--」を意味し、3ケタの数字で「オーナー」「グループ」「その他のユーザ」のそれぞれのパーミッションを設定します。
(この数字の仕組みも簡単で、「r」が「4」、「w」が「2」、「x」が「1」にあたり、その足し算で、「rwx」なら「4+2+1=7」、「rw-」なら「4+2+0=6」、「r-x」なら「4+0+1=5」、「r--」なら「4+0+0=4」となっているだけです。)
webuserというグループを作ったなら、ディレクトリに対しては「chmod 775 <ディレクトリ名>」、ファイルに対しては「chmod 664 <ファイル名>」として、webuserグループにも書き込み権を与えるようにします。
ただし、ディレクトリについては、以上のやり方で設定すると、そのディレクトリの中にあるファイルを修正したり、ファイルを新しく作ったりしたときなどに、そのユーザがオーナーとなり、グループもそのユーザになってしまいます。それをユーザが「作ったユーザ」で、グループが「webuser」にするには、そのディレクトリに対して「chmod 2775 <ディレクトリ名>」(あるいは「chmod g+s <ディレクトリ名>」とします。そのときのディレクトリのパーミッションは「drwxrwsr-x」になります。
|