トップ 最新 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|

2017-02-02 [長年日記]

_ [FreeBSD][雑記]11.0系にて autofs -> symbolic link -> autofsを辿ると刺さる

バグっぽいので記録

症状は、autofsした NFS mount point間で結ばれた symbolic linkを辿ると ハングアップする(pingにも答えない)というもの

セットアップは、indirect automapを使った次の構成

  • /indirect-root indirect mapの automountpoint
  • /indirect-root/A NFS server Aへの indirect map entry
  • /indirect-root/A/x/link NFS server A上の symbolic linkで /indirect-root/B/x/targetを指す
  • /indirect-root/B NFS server Bへの indirect map entry
  • /indirect-root/B/x/target NFS server B上の regular file

このセットアップで、NFS mountが外れている状況から/indirect-root/A/x/linkを stat(2)するとハングアップする

同様の条件で、stat(2)の代わりにlstat(2)を使うと /indirect-root/Aに NFS server Aが mountされ、正常に sytem callが終了する

また、NFS mountが外れている状況から/indirect-root/B/x/targetを stat(2)するケースでは、NFS server Bが mountされ、正常に sytem callが終了する

/indirect-root/Aに NFS mountされている状況での、 /indirect-root/A/x/linkへの stat(2)は問題ない

症状から察するに、stat(2) system call内部でsymbolik linkを辿る際に 複数の automountが発生するとハングアップする模様

手元の環境では、11.0-RELEASE p1と 11.0-STABLEで再現したが、 同様のセットアップの10.3-STABLE環境では再現しない

なお、12-CURRENTは未調査

対処療法は、stat(2)を発行するコマンドには、 realpathで解決済みのパスを与えること


2017-02-06 [長年日記]

_ [FreeBSD][samba]samba4 on ZFS on FreeBSD備忘録

忘れそうなので、環境構築のメモ

NAS箱の認証情報統合を考えてるので、ADのPDCを構成することが目的

まずは、samba4.xのインストールと動作環境系の覚書

  • net/samba44及び net/samba43は、third_party/waf/wafadmin/Tools/cc.pyへのパッチが必要
  • net/samba44のsamba-toolでは、domain provisionの途上でpythonがcrashする(net/samba43は問題無し)
    • 詳細は未調査
  • /var/db/samba4が、POSIX 1e ACLをサポートしていないとsamba-toolでのdomain provisionが失敗する
    • /var/db/samba4上に形成するsysvolにてPOSIX 1e ACLを設定するため
    • 現状のFreeBSD11のZFS実装は、NFSv4 ACLのみ?
    • ZVOLをalcsオプション付きでUFS mountすれば動く
      • fstabには、lateオプション付きで書いておく
      • newfs時にsoft updatessoft update journalingをONしておくと良い
        • 忘れたら、tunefs(8)で

AD作成の覚書

  • PDCの初期化
samba-tool domain provision --domain=MYDOMAIN --realm=MYDOMAIN.AD.EXAMPLE.JP --use-rfc2307 --adminpass=HOGEHOGE
    • --adminpassオプションを付けないと、管理者パスワードは自動生成されて、最後のsummaryに表示されるが…ぶっちゃけ覚えられない
  • Domain UsersのGIDマッピングの変更
ldbedit -H /var/db/samba4/private/idmap.ldb
    • ldbeditからデータベース上のxidNumberを手動で書き換え(samba停止中に)
      • 事前にwbinfo --name-to-sid "Domain Users"でSIDを調べた場合は、ldbeditへ ObjectSid=[sid]を渡すと余計なエントリが編集対象にならない
    • 手元の環境だと、idmap_ldb:use rfc2307 = yesの設定でも、samba userの GIDがDomain Groupから選ばれ20(staff)にマップされるのが、都合が悪いので変更
    • 多分、samba-toolのPython側にパッチを当てる方がスマートだけど探すのが面倒 orz
  • Password設定の変更
    • 有効期限の制限を外す
samba-tool domain passwordsettings set --max-pwd-age=0
    • パスワード複雑性検査を外す
samba-tool domain passwordsettings set --complexity=off
      • 実運用ではお勧め出来ないが、テスト中は外しておかないと打ち込むのが面倒
  • SAMBA userの追加
samba-tool user add MY_SMB_ACCOUNT --nis-domain=MY_DOMAIN --uid=MY_ACCOUNT --uid-number=MY_UID --gid-number=MY_GID --unixhome=MY_HOME_DIR --login-shell=/bin/tcsh
    • SAMBA user MY_SMB_ACCOUNTを unix user MY_ACCOUNTと同一視する設定
      • idmap_ldb:use rfc2307 = yesを設定しても、WINBINDが配るGIDがSMBアカウントに設定した UNIX GIDではなく、Domain UsersのGIDになる
      • winbind nss info = rfc2307を設定しても、home directorylogin-shellが templateからの生成になる
        • template homedirを適切に設定しておく(さもないと homes共有がまともに動かない?)
        • homedirが単一階層で無いときは、null mountとか symbolic linkするのかなぁ…
        • tdb backendがいかんのかなぁ?
  • WINBINDの設定
    • /etc/nsswitch.confの passwd, groupに winbindを追加(filesより後にすること)
    • デバック中は、winbind enum users = yeswinbind enum groups = yesを設定しておくと便利
    • ADからのログインは使う予定がないので、PAM関連の設定はパス
  • DNSの統合
    • 同一サーバーで、DNS権威サーバーやキャッシュリゾルバーを動かしている場合、SAMBA4内蔵のDNSを使うにはbind interfaces only = yesinterfacesの設定が必須
    • デフォルトでは、ANYの53番ポートをLISTENされてしまう
    • interfacesで設定したアドレスでLISTENするので、DNS権威サーバーと衝突しない別名アドレスを選ぶこと
    • ローカルなキャッシュリゾルバーを127.0.0.1で動かしている場合は、127.0.0.1interfacesに追加出来ない
      • smbpasswdなどが、localhostに接続に行くので多少問題になる
      • 必要なサービスは、inetd + ncなので適宜にリダイレクトすること
      • samba4の設定としては、dns forwarderでリゾルバーへフォワードさせる設定が推奨っぽいが、キャッシュリゾルバーの代わりをsambaにやらせるとプロセスが落ちたときにDNSが引けなくなるのでNG
      • キャッシュリゾルバーのフォワード設定(ドメイン単位)・ローカルドメインの権限移譲を設定し、MYDOMAIN.AD.EXAMPLE.JPへのDNS検索をSAMBAプロセスが立ち上げてるDNSサーバーへ向ける
        • 設定しないと、AD関連のDNSレコードが引けない

カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記