[netatalk-ja:0328] Re: Netatalk運用に関する質問

HAT hat @ fa2.so-net.ne.jp
2014年 1月 13日 (月) 18:59:08 JST


Mon, 13 Jan 2014 17:14:26 +0900, Oichinokata <oichinokata @ oichinote.com>:
> 回答が返ってきましたが、"やりたいんだったら、パッチ作ってね!"
> 
>> you could write a patch using become_root() and unbecome_root() in libatalk/util/netatalk_config.c
> 
> でした。
> 
> どうしよう...。
> 
> libatalk/util/netatalk_conf.c(libatalk/util/netatalk_config.cは間違いと思われます)を見たところ、
> afp.confを読む部分は、次の2カ所でしょうか?
> 
>    1418     obj->iniconfig = atalk_iniparser_load(obj->options.configfile);

この部分はnetatalk 2の頃のAppleVolumesファイルに相当します。
つまりボリューム設定を読み込みます。
クライアントから接続があって、ユーザ認証が通った後に実行されます。
ユーザが誰であるか判明した後でなければ、見せるべきボリュームが判明しない
からです。

>    1746     if ((config = atalk_iniparser_load(AFPObj->options.configfile)) == NULL)

この部分はnetatalk 2の頃のafpd.confに相当します。
つまりafpサーバとしての設定を読み込みます。
たしかafpd起動時にしか読み込まなかったような気がします。(自信なし)

> この前後を、become_root()とunbecome_root()でくくれば良いのかな?

1746が起動時だけだとしたら、、become_root()は必要ないかもしれないです。

> 1746のif文の方は、configに代入している所を、外に出さなければならないと思いますが。

if文まるごとでもいいようにみえます。

あと、make installのときにafp.confをchmod 600する処理が必要かも。
更にdaemon起動時にafp.confのownerとpermissionを調べて問題があったら
即時終了する処理も...
少なくとも現状はセキュリティーホールがあるように思えますね。

bin/misc/uuidtest.cにもatalk_iniparser_load()がありますが、
これはテスト用であって運用と無関係なので無視していかと。

-- 
HAT


netatalk-ja メーリングリストの案内