第7回:PS3にLinux……パリのやくざに吠えてみる (゚Д゚)ゴルァ!!

さぁ、パリのやくざ(=Apache)にケンカを売ろう! (゚Д゚)ゴルァ!!

と言っただけでは意味が分からないですよね。
僕には常々疑問だったのですが、初心者がLinux解説本やLinuxインストールについて情報を提供しているWebサイトを見ながらApacheを起動させることは可能なのだろうか?
と言うのも、僕が第6回で解説した記事の通りにやればApacheは起動します。
特にユーザーディレクトリ下のpublic_htmlを参照しないで、この画面↓を目撃することだけならば、たいていの人が可能だと思います。


だがしかし。
外部からのアクセスをユーザーディレクトリ下のpublic_htmlを参照するように指定した時点で、Webブラウザからアクセスしてみるとアクセス拒否(このディレクトリにアクセスする権限がありません)と表示されて、どうして良いのか解らないという状況に追い込まれる人が多いんじゃないでしょうか?
僕が何度もApache起動で敗退してきたのも、これが原因でした。Linuxがインストールされているサーバから直接localhost指定でアクセスす れば、public_htmlに格納されたコンテンツを見ることができる。でもほかのマシンからアクセスすると拒否される。解決方法が解らない……泣く、 みたいな (´;ω;`)ウッ…


アクセスを拒否られた悲しみあふれる画面。

この悲しみの壁を乗り越えたいよ。(`・ω・´)シャキーン
なので、Apacheインストール後のフォローをメモしておきます。
外部マシンからアクセスできない原因は、ディレクトリのパーミッション(読み書きできる設定)が適切ではないからなんだよ。

---/
├いろいろなディレクトリ
├home (root以外の一般ユーザがファイルをおいて作業する場所)
├hogehoge (一般ユーザのアカウントと同じ名前のディレクトリ)
├public_html (wwwサーバが参照するコンテンツファイルを置く場所)

要するに、外部からアクセスしてきた人がpublic_htmlの中まで入ってこれるように設定ができていないから「見えねぇよ~!!」という事態が発生するんだ。

まずrootアカウントでログオンしますね。

たとえばウチのPS3のルートディレクトリの状況。

[root@ps3 /]# ls -l
total 96
drwxr-xr-x 2 root root 4096 Jan 6 14:46 bin
drwxr-xr-x 3 root root 4096 Jan 6 01:32 boot
drwxr-xr-x 11 root root 13760 Jan 6 17:20 dev
drwxr-xr-x 122 root root 8192 Jan 6 17:56 etc
drwxrwxr-x 4 root root 4096 Jan 6 17:06 home
drwxr-xr-x 14 root root 4096 Jan 6 14:29 lib
drwxr-xr-x 7 root root 4096 Jan 6 14:26 lib64
drwx------ 2 root root 16384 Jan 5 21:45 lost+found
drwxr-xr-x 2 root root 4096 Jan 6 01:34 media
drwxr-xr-x 2 root root 4096 Oct 7 2006 misc
drwxr-xr-x 3 root root 4096 Jan 6 01:32 mnt
drwxr-xr-x 2 root root 4096 Oct 11 2006 opt
dr-xr-xr-x 82 root root 0 Jan 6 17:19 proc
drwxr-x--- 3 root root 4096 Jan 6 15:22 root
drwxr-xr-x 2 root root 8192 Jan 6 14:46 sbin
drwxr-xr-x 2 root root 4096 Oct 11 2006 selinux
drwxrwxr-x 1 root root 0 Jan 6 17:19 spu
drwxr-xr-x 2 root root 4096 Oct 11 2006 srv
drwxr-xr-x 10 root root 0 Jan 6 17:19 sys
drwxr-xr-x 2 root root 4096 Jul 13 2006 tftpboot
drwxrwxrwt 5 root root 4096 Jan 6 17:19 tmp
drwxr-xr-x 15 root root 4096 Jan 5 22:06 usr
drwxr-xr-x 29 root root 4096 Jan 6 15:22 var

drwxrwxrwxの意味はこんな感じ。先頭のdは無視します。
^^^^^^^^^
最初の3つは「所有者」、次の3つは「所属グループ」、最後の3つは「その他のユーザー」という3つのランク付けができるということなんだ。
記号の意味はこの通り。
r:読み出し可能 (数字で表すと4)
w:書き込み可能 (数字で表すと2)
x:実行可能   (数字で表すと1)
-:権限なし   (数字で表すと0)

なので、現在のhomeディレクトリの状態を見ると、homeディレクトリ直下に対し
所有者:root 読み出しOK、書き込みOK、実行OK
所属グループ:root 読み出しOK、書き込みOK、実行OK
その他のユーザ:読み出しOK、書き込みNG、実行OK
となっています。

homeディレクトリの中に一般ユーザhogeと、hogeが作ったpublic_htmlディレクトリがあります。ディレクトリのパーミッション状況を見てみます。

[root@ps3 home]# ls -l
drwx------ 4 hoge hoge 4096 Jan 6 20:59 hoge

[root@ps3 hoge]# ls -l
drwxr-xr-x 2 hoge hoge 4096 Jan 6 20:59 public_html

つまり、hogeのホームディレクトリは所有者しかアクセスできない。
hogeの中にあるpublic_htmlはhogeは読み書き動作はできるが、その他のユーザーは閲覧と実行しかできないというパーミッションになっている。

ではこいつを適当なものに変更してゆきましょう。
数字は先ほどの権限をそれぞれ合計したものです。

■public_htmlのパーミッションを変更する。
[root@ps3 hoge]# chmod 755 public_html

■hogeのパーミッションを変更する。
[root@ps3 home]# chmod 711 hoge

では再びPS3の外側にあるマシンから~hogeにアクセスしてみます。


はい、ディレクトリの中が見えましたね。
そして "Parent Directory"をクリックしてpublic_htmlディレクトリの上へ顔を出そうとすると、おもしろいことになりますよ (・∀・)ニヤニヤ

0 件のコメント:

コメントを投稿