[debian-users 00666] Re: NFS上でのdebuildがエラーになる
Yasuhiro KIMURA
yasu @ utahime.org
2020年 7月 20日 (月) 01:06:26 JST
木村です。
From: Hideki Yamane <henrich @ iijmio-mail.jp>
Subject: [debian-users 00665] Re: NFS上でのdebuildがエラーになる
Date: Sun, 19 Jul 2020 20:51:18 +0900
>> fakerootとNFSの問題にみえます。
> では仮説として debian/control ファイルで Rules-Requires-Root: no を
> 指定して fakeroot しないようにしてみるとか。
>
> https://sources.debian.org/src/jdim/0.4.0-1/debian/control/ な
> 感じで最初のブロックに指定します。
これを試してみたところ、debuildが正常に完了するようになりました。
From: KISE Hiroshi <kise @ fuyuneko.jp>
Subject: [debian-users 00664] Re: NFS上でのdebuildがエラーになる
Date: Sun, 19 Jul 2020 19:20:54 +0900 (JST)
> 検索してみたのですが、みつけられたのは、これぐらい。
>
> https://github.com/hpcng/singularity/issues/4928
>> Fakeroot may not work correctly with some network filesystems not
>> aware of user namespace mappings.
これをみてピンと来るものがあって、試しにautofsの設定を変更してNFSv3で
マウントするようにしたところ、↑の変更を加えなくてもdebuildが成功する
ようになりました。
それで再度NFSv4にしていろいろ試したり調べたりしたところ、どうやら以下
のようなことのようです。
1. ユーザやグループをNFSv3では数値(UID/GID)で取り扱うが、NFSv4では文字
列(ユーザ名/グループ名)で取り扱う
2. UID 0に相当するユーザ名はDebianでもFreeBSDでも同じ(root)だが、GID 0
に相当するグループ名は異なる(rootとwheel)
3. Fakerootを使うと、`chown root:root FileName`に相当する処理が行われ
る(推測)
4. NFSv3を使っている場合、3の処理は「FileNameのUIDを0、GIDを0に変更」
としてNFSサーバに要求されるので、成功する(推測)
5. NFSv4を使っている場合、3の処理は「FileNameのオーナーをroot、グルー
プをrootに変更」としてNFSサーバに要求されるが、NFSサーバ側にはroot
というグループがないので、失敗する(推測)
例えば、NFSv4でマウントしている状態で、
yasu @ rolling-vm-debian1[1069]% ls -l ~/tmp/hogehage
-rw-r--r-- 1 yasu user 0 7月 20 00:48 /home/yasu/tmp/hogehage
なファイルに対して、
yasu @ rolling-vm-debian1[1073]% sudo chown root ~/tmp/hogehage
は成功して
yasu @ rolling-vm-debian1[1074]% ls -l ~/tmp/hogehage
-rw-r--r-- 1 root user 0 7月 20 00:50 /home/yasu/tmp/hogehage
となりますが、
yasu @ rolling-vm-debian1[1075]% sudo chgrp root ~/tmp/hogehage
は
yasu @ rolling-vm-debian1[1075]% sudo chgrp root ~/tmp/hogehage
chgrp: changing group of '/home/yasu/tmp/hogehage': Invalid argument
のようにエラーとなるので、多分↑の推測は正しいものと思います。
それでNFSv4を使いつづけるのなら、NFSサーバなFreeBSDの/etg/groupにroot
をGID=0なグループとして追加する、というのが解決策となりますが、何とな
くそれは気持ちが悪かったので、専用の作業用ディレクトリをNFSサーバ側で
exportして、クライアント側ではそのディレクトリをNFSv3でマウントするこ
とにしました。
---
木村 康浩
debian-users メーリングリストの案内