[netatalk-ja:0329] Re: Netatalk運用に関する質問
Oichinokata
oichinokata @ oichinote.com
2014年 1月 13日 (月) 21:07:45 JST
パッチ、できたかもしれません。Ubuntu 12.04でビルドしました。
*** libatalk/util/netatalk_conf.c.org 2013-10-29 00:46:51.000000000 +0900
--- libatalk/util/netatalk_conf.c 2014-01-13 20:57:57.368870991 +0900
***************
*** 1415,1421 ****
--- 1415,1423 ----
if (obj->iniconfig)
atalk_iniparser_freedict(obj->iniconfig);
LOG(log_debug, logtype_afpd, "load_volumes: loading: %s", obj->options.configfile);
+ become_root();
obj->iniconfig = atalk_iniparser_load(obj->options.configfile);
+ unbecome_root();
EC_ZERO_LOG( readvolfile(obj, pwresult) );
***************
*** 1743,1749 ****
#endif
options->flags = OPTION_UUID | AFPObj->cmdlineflags;
! if ((config = atalk_iniparser_load(AFPObj->options.configfile)) == NULL)
return -1;
AFPObj->iniconfig = config;
--- 1745,1754 ----
#endif
options->flags = OPTION_UUID | AFPObj->cmdlineflags;
! become_root();
! config = atalk_iniparser_load(AFPObj->options.configfile);
! unbecome_root();
! if (config == NULL)
return -1;
AFPObj->iniconfig = config;
このパッチを適用してビルドする事で、
afp.confが600でも、
一般ユーザがAFPのボリュームにアクセスできます。
インストーラ(Makefile)のどこを変更してよいのかわからないので、afp.confを600にする方法がわかりません。
お市
2014/01/13 18:59、HAT <hat @ fa2.so-net.ne.jp> のメール:
> 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 メーリングリストの案内