[Namazu-users-ja 981] Re: samba上のインデックス作成時の権限エラー

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2007年 6月 25日 (月) 18:26:20 JST


寺西です。

Syuta Yanagita wrote:
> 
> > 問題のファイルのみを対象にして、--debug オプション付きで実行した
> > 結果を見せてください。
> 
> 添付いたします。

添付ファイルの漢字コードが Shift_JIS なのは何故でしょうか?

添付ファイルの中身を解析すると、やはり -r が通過するけれども、
load_document の util::readfile 内の open でエラーが発生して
終了となっているようでした。

> 該当のファイルになると作成が停止され、NMZ.errファイルのみ残して
> インデックスファイルが削除されています。

誤解がないようにあえて再び書いておきますが、通常は
 
 > > mknmzは対象ファイルのリストを作るときに perl の -r演算子
 > > 
 > >    -r  File is readable by effective uid/gid.
 > > 
 > > を用いてファイルが読み込み可能か確認します。もし読み込み不可
 > > ならば、そのファイルを除外します。よって、インデックス作成の
 > > 途中で permission deniedで停止してしまうことはまずありません。

ということです。
ですので、-r は通過するけど実際に open するときに、 permission denied
が起きてしまうということは、異常事態です。
異常事態が起こった場合には、インデックスを残しません。(そのイン
デックスに問題が含まれる可能性があるためです。)

また、smbmount したディスクのファイルに対するインデックスの作成
に関しては特にサポートしていません。

> > Windows 側でファイルを作成しているユーザーとファイルの権限設定、
> > smbmount で指定したユーザー、smbmount のオプション、
> > mknmz を実行しているユーザーはどのようになっていますか。
> 
> mknmz は root で実行しておりました。

root 以外で実行すると大丈夫ということはありませんか?

> smbmount で使用したユーザーは、Windowsサーバーの一般ユーザーです。
> (Admin権限でマウントすることは諸事情で不可能です)

もちろん Admin 権限でマウントするべきではないでしょう。

> # たぶん、util::canopen を改良すればスキップできるようになるとは
> # 思いますけど。

ということで pl/util.pl の canopen を次のように修正すると良いで
しょう。
つまり、次の行をコメントアウトします。

    return (-r $file) if ($English::OSNAME ne "MSWin32");

これで、-r ではなく、実際にファイルを open して確認するようになり
ます。そのため、エラー終了することはなくなりますが、パフォーマンス
は落ちます。
ローカルディスクのファイルのみインデックスする場合は、ここをコメント
アウトする必要はありません。(念のため)


sub canopen($)
{
    my ($file) = @_;

    my $fh;

#    return (-r $file) if ($English::OSNAME ne "MSWin32");

    $fh = new IO::File $file, "r";

    return 0 if (!defined $fh);

    $fh->close();

    return 1;
}

-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




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