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

Oichinokata oichinokata @ oichinote.com
2014年 1月 13日 (月) 22:45:13 JST


HATさんへ、

気になって、前者を外して試してみましたが、エラーになります。

Jan 13 22:37:03.034074 afpd[20828] {iniparser.c:545} (E:Default): iniparser: cannot open "/etc/afp.conf"

chmodについては、日を改めて、調査したいと思います。
今日は疲れました。

とりあえず、今できているパッチを、メールに添付して、本家MLに送っちゃっても構いませんかね?

chmodの必要がある事と、次の件も併せて。

>>>> 更にdaemon起動時にafp.confのownerとpermissionを調べて問題があったら
>>>> 即時終了する処理も...
>> 
>> も、どこに組み込んでいいのか、さっぱりわかりません。
> 
> become_root()の直前にstat()して、st_modeとst_uidをみて、ダメだったら
> 
>    LOG(log_error, logtype_afpd, "設定ファイルのアクセス権がダメダメです");
>    return -1;
> 
> かな。
> 
> ただし、これにはどうにもならない問題があります。
> 設定ファイルのlog file =を読み込む前なので、デフォルトのログファイルに
> エラーが出力されると思います。
> 
> これの実装は本家に相談ですかね。


お市

2014/01/13 22:18、HAT <hat @ fa2.so-net.ne.jp> のメール:

> HATです。
> 
> Mon, 13 Jan 2014 21:07:45 +0900, Oichinokata <oichinokata @ oichinote.com>:
>> パッチ、できたかもしれません。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にする方法がわかりません。
> 
> Makefileやconfigure等は自動生成されるファイルなので、これらのパッチを
> 書いてもダメなんです。
> ビルドやインストールに関する修正は、tarball版でなくgit版に対して作成する
> 必要があります。
> sourceforgeの方は最新になってないので、GitHubの方のbranch-netatalk-3-1に
> 対して修正しなければなりません。
> 
> $ git clone https://github.com/Netatalk/Netatalk.git netatalk
> $ cd netatalk
> $ git checkout branch-netatalk-3-1
> 
> この作業が面倒な場合は、
> https://github.com/Netatalk/Netatalk/tree/branch-netatalk-3-1
> このページの右の「Download ZIP」のボタンで
> Netatalk-branch-netatalk-3-1.zip
> をダウンロードする方法もあります。
> 
> ビルド/インストールに関係するファイルは、
> configure.ac
> macros/*.m4
> 各ディレクトリのMakefile.am
> です。
> 
> configure.acはたぶん今回は関係ないです。
> macros/*.m4はconfigure時に必要なライブラリ類を探し回るものなので、
> これまた関係ないです。
> 
> 今回修正する必要があるのは、
> config/Makefile.am
> だと思います。
> このファイルでafp.conf.tmplからafp.confを生成し、make install時に
> 該当ディレクトリにコピーしています。
> このファイルのどこかにchmodを挿入すればよいと思います。
> 
> chmodを使っている参考ファイルは、
> distrib/initscripts/Makefile.am
> だと思います。このファイルではinitscriptに実行属性を付けてますね。
> 
> -- 
> HAT



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