Re: mount -t smbfs の挙動
On Sun, 24 Sep 2023 11:11:28 +0900 ISHII wrote: > 広島の石井です。 > > 青木さん調査していただいてありがとうございます。 > > On Sun, 24 Sep 2023 10:13:30 +0900 > 20230924101330.0cc2564b952d6f0936352...@dec.sakura.ne.jp : Tomoaki AOKI > wrote: > > > 青木@名古屋です。 時間が空いて申し訳ありません。 > > > > このあたり、/etc/以下に置かれるものの関係はあちこちにバラけがちで > > 探し難いのですが、 > > > > https://cgit.freebsd.org/src/blame/contrib/smbfs/examples/dot.nsmbrc > > →たぶんこれを基に構築されているので/etc/nsmb.confのコメントと一致 > > しています。 該当のcharsetsの行はcommit 34ffbc80d694で更新されて > > いて、当該commitを見ると > > > > https://cgit.freebsd.org/src/commit/contrib/smbfs/examples/dot.nsmbrc?id=34ffbc80d69446c64599a878a0a950c9e66f7bf5 > > →diffを見ると、変更前がman nsmb.confと同じになっています。 > > > > 従って、man pageの方がこの変更に追従できていません。 > > コメントの方を信用されるのが吉と思います。 > > そのようにします。 > が、man page 10年以上放置されているとは > > ISHII 青木@名古屋です。 こういう完全ボランティアベースのプロジェクトでは、「動作」や「機能」に 直接関係しないマニュアルやドキュメントはモチベーションが上がり難くて 放置されがちですね。 プログラム中のコメントやヘルプ表示は実装のついでに 直したり、設定ファイルの(事実上の)サンプルは自分でも使うために 更新されることが多いとは思いますが。 # portsのINDEXも削除や更新されたものに依存するportsのチェック漏れや # 一緒にコミットしなければいけない新規portsのコミット忘れでちょくちょく # 壊れてます。 なんだかんだ言って、cpersiva@や私が炭坑のカナリアに # なって騒いで直してもらったりするケースが多い気が。 何故かports # ツリーを更新したタイミングのちょっと前に壊されていることが多いような # 気がします。 運が悪いのでしょうか... -- 青木 知明 [Tomoaki AOKI]
Re: mount -t smbfs の挙動
広島の石井です。 青木さん調査していただいてありがとうございます。 On Sun, 24 Sep 2023 10:13:30 +0900 20230924101330.0cc2564b952d6f0936352...@dec.sakura.ne.jp : Tomoaki AOKI wrote: > 青木@名古屋です。 時間が空いて申し訳ありません。 > > このあたり、/etc/以下に置かれるものの関係はあちこちにバラけがちで > 探し難いのですが、 > > https://cgit.freebsd.org/src/blame/contrib/smbfs/examples/dot.nsmbrc > →たぶんこれを基に構築されているので/etc/nsmb.confのコメントと一致 > しています。 該当のcharsetsの行はcommit 34ffbc80d694で更新されて > いて、当該commitを見ると > > https://cgit.freebsd.org/src/commit/contrib/smbfs/examples/dot.nsmbrc?id=34ffbc80d69446c64599a878a0a950c9e66f7bf5 > →diffを見ると、変更前がman nsmb.confと同じになっています。 > > 従って、man pageの方がこの変更に追従できていません。 > コメントの方を信用されるのが吉と思います。 そのようにします。 が、man page 10年以上放置されているとは ISHII
Re: mount -t smbfs の挙動
On Thu, 10 Aug 2023 22:34:06 +0900 ISHII wrote: > 広島の石井です。 > > On Thu, 10 Aug 2023 20:13:21 +0900 > dcdc6d8d-3b11-442e-a4e5-b619fce6e...@gmail.com : 内藤祐一郎 > wrote: > > > ja_JP.UTF-8 に統一すれば良いと思います。 > > 何度もお手数をおかけしてケアレスミスを見つけていただき感謝します。 > 今後一層精進します。 > これで、/etc/fstab に記載した記述が正しく働いている理由もわかりました。 > > ところで、青木 知明さんの、 > > On Thu, 10 Aug 2023 18:46:56 +0900 > 20230810184656.fbebd1cbbcb7e072c875f...@dec.sakura.ne.jp : Tomoaki AOKI > wrote: > > > 古い記憶ですが、mount_smbfsで-Eオプションでcharset変換の > > 指定をしても上手くいかず、/root/.nsmbrcで指定したら機能した > > ため、以降、ずっとそのように運用しています。 > > この投稿で少し疑問だったことを思い出しました。 > /etc/nsmb.conf のことなんですが、man nsmb.conf には、 > Keyword SectionComment > A B C D > addr - + - -IP address of SMB server > charsets - + + +local:remote charset pair > nbns + + - -address of NetBIOS name server (WINS) > nbscope + + - -NetBIOS scope > nbtimeout+ + - -timeout for NetBIOS name servers > password - - + +plain text or simple encrypted password > used to access the given share > retry_count + + - -number of retries before connection is > marked as broken > timeout + + - -SMB request timeout > workgroup+ + + +workgroup name > > と書かれていて、/etc/nsmb.conf には、コメントとして、 > # keyword/section A B C D Comment > # > # addr- + - - IP address of SMB server > # charsets + + + + local:remote charset pair > # nbns + + - - address of NetBIOS name server (WINS) > # nbscope + + - - NetBIOS scope > # nbtimeout + + - - timeout for NetBIOS name servers > # password - - + + a plain text password used to access > to the givenshare > # retry_count + + - - number of retries before connection > marked as broken > # timeout+ + - - SMB request timeout > # workgroup + + + + name of workgroup > > と書かれています。どちらが正しいと思います? > 私は、/etc/nsmb.conf のコメントが正しいと思います。小さいことですが・・・ > > ISHII 青木@名古屋です。 時間が空いて申し訳ありません。 このあたり、/etc/以下に置かれるものの関係はあちこちにバラけがちで 探し難いのですが、 https://cgit.freebsd.org/src/blame/contrib/smbfs/examples/dot.nsmbrc →たぶんこれを基に構築されているので/etc/nsmb.confのコメントと一致 しています。 該当のcharsetsの行はcommit 34ffbc80d694で更新されて いて、当該commitを見ると https://cgit.freebsd.org/src/commit/contrib/smbfs/examples/dot.nsmbrc?id=34ffbc80d69446c64599a878a0a950c9e66f7bf5 →diffを見ると、変更前がman nsmb.confと同じになっています。 従って、man pageの方がこの変更に追従できていません。 コメントの方を信用されるのが吉と思います。 -- Tomoaki AOKI
Re: mount -t smbfs の挙動
広島の石井です。 On Thu, 10 Aug 2023 20:13:21 +0900 dcdc6d8d-3b11-442e-a4e5-b619fce6e...@gmail.com : 内藤祐一郎 wrote: > ja_JP.UTF-8 に統一すれば良いと思います。 何度もお手数をおかけしてケアレスミスを見つけていただき感謝します。 今後一層精進します。 これで、/etc/fstab に記載した記述が正しく働いている理由もわかりました。 ところで、青木 知明さんの、 On Thu, 10 Aug 2023 18:46:56 +0900 20230810184656.fbebd1cbbcb7e072c875f...@dec.sakura.ne.jp : Tomoaki AOKI wrote: > 古い記憶ですが、mount_smbfsで-Eオプションでcharset変換の > 指定をしても上手くいかず、/root/.nsmbrcで指定したら機能した > ため、以降、ずっとそのように運用しています。 この投稿で少し疑問だったことを思い出しました。 /etc/nsmb.conf のことなんですが、man nsmb.conf には、 Keyword SectionComment A B C D addr - + - -IP address of SMB server charsets - + + +local:remote charset pair nbns + + - -address of NetBIOS name server (WINS) nbscope + + - -NetBIOS scope nbtimeout+ + - -timeout for NetBIOS name servers password - - + +plain text or simple encrypted password used to access the given share retry_count + + - -number of retries before connection is marked as broken timeout + + - -SMB request timeout workgroup+ + + +workgroup name と書かれていて、/etc/nsmb.conf には、コメントとして、 # keyword/section A B C D Comment # # addr- + - - IP address of SMB server # charsets + + + + local:remote charset pair # nbns + + - - address of NetBIOS name server (WINS) # nbscope + + - - NetBIOS scope # nbtimeout + + - - timeout for NetBIOS name servers # password - - + + a plain text password used to access to the givenshare # retry_count + + - - number of retries before connection marked as broken # timeout+ + - - SMB request timeout # workgroup + + + + name of workgroup と書かれています。どちらが正しいと思います? 私は、/etc/nsmb.conf のコメントが正しいと思います。小さいことですが・・・ ISHII
Re: mount -t smbfs の挙動
内藤です。 > 2023/08/10 19:00、ISHII のメール: > > お返事ありがとうございます、広島の石井です。 > > On Thu, 10 Aug 2023 16:35:38 +0900 > 1e529798-5dfd-44cf-9f26-9886b0d20...@gmail.com : 内藤祐一郎 > wrote: > >> 一応念のために確認なのですけれども、LC_ALL には何が入っていますか? >> できれば、locale の結果を全て見せていただけると助かります。 > > 下記のように LC_ALL には何も入っていません。 > > LANG=ja-JP.UTF-8 > LC_CTYPE="C" > LC_COLLATE="C" > LC_TIME="C" > LC_NUMERIC="C" > LC_MONETARY="C" > LC_MESSAGES="C" > LC_ALL= ああ、なるほど。locale の結果に “C” となっているのは、 環境変数で設定されておらず、自動的に設定された値であることを 表しています。けれども、この場合 LANG が設定されているので、 その値が使用されるはずですが、ja の次にハイフンが入っていますので、 正しい値とは解釈されず、デフォルトの “C" が設定されています。 > 一般ユーザーでは、 > > LANG=ja_JP.UTF-8 > LC_CTYPE="ja_JP.UTF-8" > LC_COLLATE="ja_JP.UTF-8" > LC_TIME="ja_JP.UTF-8" > LC_NUMERIC="ja_JP.UTF-8" > LC_MONETARY="ja_JP.UTF-8" > LC_MESSAGES="ja_JP.UTF-8" > LC_ALL= 一方こちらは ja の後がアンダースコアのため、正しい値として解釈されています。 ja_JP.UTF-8 に統一すれば良いと思います。 -- 内藤 祐一郎 naito.yuich...@gmail.com
Re: mount -t smbfs の挙動
お返事ありがとうございます、広島の石井です。 On Thu, 10 Aug 2023 16:35:38 +0900 1e529798-5dfd-44cf-9f26-9886b0d20...@gmail.com : 内藤祐一郎 wrote: > 一応念のために確認なのですけれども、LC_ALL には何が入っていますか? > できれば、locale の結果を全て見せていただけると助かります。 下記のように LC_ALL には何も入っていません。 LANG=ja-JP.UTF-8 LC_CTYPE="C" LC_COLLATE="C" LC_TIME="C" LC_NUMERIC="C" LC_MONETARY="C" LC_MESSAGES="C" LC_ALL= 一般ユーザーでは、 LANG=ja_JP.UTF-8 LC_CTYPE="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_ALL= です。 ISHII
Re: mount -t smbfs の挙動
On Thu, 10 Aug 2023 16:35:38 +0900 内藤祐一郎 wrote: > 内藤です。 > > > 2023/08/10 16:21、ISHII のメール: > > > > お返事ありがとうございます、広島の石井です。 > > > > On Thu, 10 Aug 2023 12:51:32 +0900 > > caf94649-104d-49b4-92f1-4b3929cf9...@gmail.com : 内藤祐一郎 > > wrote: > > > >>> mount_smbfs: can't set locale '' > >>> mount_smbfs: smb_lib_init: can't initialise local > >>> となり、マウントできません。 > >> > >> このエラーになっている時の locale は何が設定されていますか? > > > > LANG=ja-JP.UTF-8 > > LC_CTYPE="C" > > 一応念のために確認なのですけれども、LC_ALL には何が入っていますか? > できれば、locale の結果を全て見せていただけると助かります。 > > > です。root には、su や su - でなっていますが、どちらも同じですね。ちなみに一般ユーザーでは、 > > > > LANG=ja_JP.UTF-8 > > LC_CTYPE="ja_JP.UTF-8" > > こちらも同様に LC_ALL には何が入っていますか? > > > です。LC_CTYPE="C" では駄目ということですか・・・。 > > まだ何とも分かりません。 > > -- > 内藤 祐一郎 > naito.yuich...@gmail.com 古い記憶ですが、mount_smbfsで-Eオプションでcharset変換の 指定をしても上手くいかず、/root/.nsmbrcで指定したら機能した ため、以降、ずっとそのように運用しています。 (雛形は/usr/share/examples/smbfs/dot.nsmbrcです。) 古いI・O DATAのNASで手元側が*.UTF-8だとリモート側をCP932に する必要があった以外、それよりは新しい(といっても古く、 既に稼働しませんが)同社製NASではUTF-8:UTF-8、Synology製 NASでも同様の設定で動作しています。 rootのlocaleは LC_ALL=Cのみで、あとはLANG=en_US.UTF-8くらいです。 mountはrootで行っている(一般ユーザからsuduでは行って いない)ので詳細は省きますが、root以外はLANG=ja_JP.UTF-8と しています。 また、私の場合、smbfsのためのエントリも/etc/fstabに定義 しています(noautですが)。 mount時点では関係しませんが、日本語ファイル名がある場合、 Bug90815 [1] の最新又はその1つ前の別バージョンのパッチが適用 されていないとcharset変換でハングアップしてしまいます。 一番古いパッチはComment1で正しいという意見が付いているものの 既に適用できず、2つ目はそれを適用可能に(srcの変更に追従して) 修正しただけのもの、最後のものはComment5で提示された対案を きちんと当たるように微修正したものです。 [1] https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=90815 -- 青木 知明 [Tomoaki AOKI]
Re: mount -t smbfs の挙動
内藤です。 > 2023/08/10 16:21、ISHII のメール: > > お返事ありがとうございます、広島の石井です。 > > On Thu, 10 Aug 2023 12:51:32 +0900 > caf94649-104d-49b4-92f1-4b3929cf9...@gmail.com : 内藤祐一郎 > wrote: > >>> mount_smbfs: can't set locale '' >>> mount_smbfs: smb_lib_init: can't initialise local >>> となり、マウントできません。 >> >> このエラーになっている時の locale は何が設定されていますか? > > LANG=ja-JP.UTF-8 > LC_CTYPE="C" 一応念のために確認なのですけれども、LC_ALL には何が入っていますか? できれば、locale の結果を全て見せていただけると助かります。 > です。root には、su や su - でなっていますが、どちらも同じですね。ちなみに一般ユーザーでは、 > > LANG=ja_JP.UTF-8 > LC_CTYPE="ja_JP.UTF-8" こちらも同様に LC_ALL には何が入っていますか? > です。LC_CTYPE="C" では駄目ということですか・・・。 まだ何とも分かりません。 -- 内藤 祐一郎 naito.yuich...@gmail.com
Re: mount -t smbfs の挙動
お返事ありがとうございます、広島の石井です。 On Thu, 10 Aug 2023 12:51:32 +0900 caf94649-104d-49b4-92f1-4b3929cf9...@gmail.com : 内藤祐一郎 wrote: > > mount_smbfs: can't set locale '' > > mount_smbfs: smb_lib_init: can't initialise local > > となり、マウントできません。 > > このエラーになっている時の locale は何が設定されていますか? LANG=ja-JP.UTF-8 LC_CTYPE="C" です。root には、su や su - でなっていますが、どちらも同じですね。ちなみに一般ユーザーでは、 LANG=ja_JP.UTF-8 LC_CTYPE="ja_JP.UTF-8" です。LC_CTYPE="C" では駄目ということですか・・・。 https://forums.freebsd.org/threads/freebsd-8-mount_smbf-problem-utf-8.9078/ では、utf-8 に非対応と云う結論になってましたけど・・・。古い話なんで。 ISHII
Re: mount -t smbfs の挙動
内藤です。 > 2023/08/10 11:58、ISHII のメール: > > こんにちは、広島の石井と申します。 > > 先程の投稿で環境を書くのを忘れていました。 > FreeBSD 13.2-RELEASE-p2 GENERIC amd64 > です。 > > 最近気づいたのですが Linux NAS をマウントするのに man mount_smbfs の使用例のように root で、 > > # mount_smbfs -I 192.168.20.3 -E koi8-r:cp866 //guest@samba/tmp /smb/tmp > > とすると、(もちろん -I 以降は私の環境に合わせています) > mount_smbfs: can't set locale '' > mount_smbfs: smb_lib_init: can't initialise local > となり、マウントできません。 このエラーになっている時の locale は何が設定されていますか? エラーが発生している状態で locale(1) を引数なしで実行すると表示されます。 おそらく下の sudo 時とは異なる locale だと思いますので、 どのようにして root ユーザになったのかに依存して変わると思います。 mount_smbfs は最初に LC_CTYPE を “” で初期化しますが、 そこでエラーになっているようです。 > # mount -t smbfs -I 192.168.20.3 -E koi8-r:cp866 //guest@samba/tmp /smb/tmp > > に至っては > usage: mount [-adflpruvw] [-F fstab] [-o options] [-t ufs | external_type] > mount [-dfpruvw] special | node > mount [-dfpruvw] [-o options] [-t ufs | external_type] special node > と返ってきます。 > > 私の理解では、mount -t hoge は mount_hoge へのリンクだと思っていました。 > どなたか事情をご存知でしょうか。 smbfs だけが特殊で、FreeBSD プロジェクトの外部で開発されたものを 同梱しているからだと思います。mount -t の認識するファイルシステムタイプに 含まれていません。 > また、ユーザーで、 > sudo mount_smbfs -I 192.168.20.3 -E koi8-r:cp866 //guest@samba/tmp /smb/tmp > とすれば何事もなくマウントできます。 おそらく、前述のエラーになっている時と locale が異なるからだと思います。 一般ユーザの locale が引き継がれていて、そちらは正常なのでしょう。 -- 内藤 祐一郎 naito.yuich...@gmail.com