続・玄箱でWebサーバ

昨日の方法だと/wwwディレクトリの内容を/mntにコピーした上で、/etc/thttpd.confも変更しなきゃなんないので、別の方法を考えてみた。
Webサーバでルートとなる/wwwにwwwディレクトリを/mntのshareディレクトリと同じく、ユーザーがnobody、グループがnogroupのパーミッション777で作っておき、このシンボリックリンクを/mnt/shareに作っておく。

mkdir /www/www
chown nobody:nogroup /www/www
chmod 777 /www/www
ln -s /www/www /mnt/share/www
chown nobody:nogroup /mnt/share/www

thttpdは/www以下しか見てくれなくて、シンボリックリンクも/wwwの外に張ると見てくれないので、/wwwの下に作ったwwwディレクトリを逆にSambaの管理している/mnt/shareにシンボリックリンクを張っておいて、こっちを見てもらうようにしてみた。
無事、ファイル一覧が表示されるんだけど、ユーザー認証されないのねん。必要に応じて.htpasswd作っておいてやるのが吉かも知れない。(Sambaからは.htpasswdファイル見えちゃうけど)
で、このままだと昨日と同じくSamba経由で共有フォルダに作られるファイル群に実行属性が付いているがために、thttpdがCGIだと思い込んで実行失敗しちゃって参照やダウンロードが出来ないので、Sambaの設定を変更してみる。
Sambaは起動スクリプトが/etc/rc.d/init.d/smbに、設定ファイルが/etc/samba/smb.confにあるので、バックアップを作ってからsmb.confのラスト近辺にある「force create mode = 777」を「force create mode = 766」に変更する。(666でも問題ないかも知れない)あとはSambaを再起動すれば以後は実行属性無しでファイルが作られる。

cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
TERM=vt100
vi /etc/samba/smb.conf
/etc/rc.d/init.d/smb restart

既に共有フォルダshareにあるファイルはWindows共有からの操作でカット&ペーストしてwwwフォルダに持ってきても作られたときの属性を保持しているので、実行属性は付いたままになるので別途コマンド操作でディレクトリ以外の実行属性を外しておく。(766にしてるけど、たぶん666でも大丈夫。)

cd /mnt/share
find . -type f -exec chmod 766 {} \;

ただ、日本語ファイル名は見えるし、ダウンロードも出来るんだけどファイル名をうまく取得できないっぽい。