[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 メーリングリストの案内