[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[webdav-jp:1127] Re: クォータへの対応



  吉山です。

On Thu, 21 Oct 2004 23:18:58 +0900
mac@xxxxxxxxxxxxx wrote:

> 岡崎と申します。
> 吉山様よろしくお願い致します。
> 
> >   diskquota パッチは、各ファイル/ディレクトリを
> >
> > 	・所有者を各ユーザにしてファイルシステム quota を利用できるようにする
> > 	・グループを Apache 専用グループにして httpd から読み書きできるようにする
> >
> > 為のパッチです。その為には、パッチ適用と共に、WebDAV フォルダ中のファイル
> > /ディレクトリの所有者/グループを↑の通りにし、パーミッションを ug+rw す
> > る必要があります。
> 
> Apacheの所有者とグループが「nobody」、ユーザの所有者とグループが「username」
> とした場合
> /home にあるユーザのディレクトリ /home/username の所有者を「username」にグ
> ループを「nobody」としパーミッションを「rw-rw----」にするということで正しい
> でしょうか?

  正しくありません。
  UNIX 系 OS では一般に、ディレクトリに実行属性がついていないとプロセスが
そのディレクトリに移動できません。ですので、ug+rw と書いたのです。
  具体的には、

	・ディレクトリ→ rwxrwx--- (770)
	・ファイル→ rw-rw---- (660)

となるように設定して下さい。一度設定が行われたなら、Apache(+diskquota パッ
チ)経由で作られたファイル/ディレクトリは chown_user コマンドにより上記を
保持します。

> >   明確にドキュメントされていなくてすいません。現在の実装では、ファイルシス
> > テムの文字コードを環境変数APACHE_FS_ENCODE で指定するようになっており、
> > FS_ENCODE は廃止されています。起動時のスクリプト(/etc/init.d/httpd)や、
> > スクリプトの設定ファイル /etc/sysconfig/httpd 辺りで下記の通り設定してくだ
> > さい。
> >
> > 例:ファイルシステム上のファイル/ディレクトリ名の文字コードを日本語 EUC(
> > MS 拡張対応)にする場合
> >
> > 	export APACHE_FS_ENCODING="EUCJP-MS"
> 
> /etc/sysconfig/httpdというファイルは存在しないのですが、これは新たに
> export APACHE_FS_ENCODING="EUCJP-MS"
> の一行を書き込んだファイルをhttpdという名前で作ると考えてよいのでしょうか?

  Red Hat 系のシステムにおける httpd のパッケージでは、/etc/init.d/httpd
スクリプトが/etc/sysconfig/httpd ファイルを参照するので、この中で環境変数
を設定すれば httpd に反映されます。

  ただ…おそらく、この話は Apache-2.0.52 をソースからコンパイルしています
ね?それだと反映されないので、/etc/init.d/httpd があればそれに直接環境変数
の設定を記述して下さい。

> >   (WebDAV フォルダ中のファイル/ディレクトリで使用される)一般ユーザアカ
> > ウントの uid は 500〜9999 の範囲に収まっていますでしょうか?
> 
> 新規ユーザを作ると500番から作られるので、これでよいかなと思っているのですが、
> やはり1000番辺りから作る方がよいでしょうか?

  現状で良いと思いますよ。

> >> chown_user.c を下記のようにコンパイル・インストールしました。
> >> # gcc -Wall -o chown_user chown_user.c
> >> # chown root.nobody chown_user
> >> # chmod 4050 chown_user
> >> # cp chown_user /usr/local/apache2
> >
> > 	ls -l /usr/local/apache2/chown_user
> >
> > を実行すると何が出ます?
> 
> ---Sr-x---  1 root root 6439 10月 20 10:56 /usr/local/apache2/chown_user
> と出ました。(/usr/local/apache2/chown_userの部分は赤色に反転しています)

  問題あります。
  コピーした際にそうなったのでしょうが、/usr/local/apache2/chown_user ファ
イルのグループを chown コマンドでApacheの所属グループ(この場合はnobody)
にして下さい(cp -a でコピーしなおしても良いでしょう)。上記では Apache が
chown_user コマンドを実行できないことになります。
  方法はともかく、

	---Sr-x---  1 root nobody 6439 10月 20 10:56 /usr/local/apache2/chown_user

になるよう設定して下さい。

  なお、本当は Apache 専用のアカウント/グループを用意するのが better です。
様々なチェックをかけているとは言え、chown_user は危険なコマンドです。
nobody アカウント/グループは各種デーモンの実行アカウントとして利用されて
いるケースがありますので、上記の設定ではこれらのデーモンが chown_user コマ
ンドを実行できる事になります。悪用すれば、chown_user コマンドでWebDAVフォ
ルダ上の個人のファイル/ディレクトリを任意の所有者に変更する事ができます。
これは立派なセキュリティホールです。

---
吉山あきら<yosshy@xxxxxxxxxxxx>