labunix's blog

labunixのラボUnix

blockdiagで遊ぶ

■ユーザの追加、移行順序について
 簡単に以下の3つの状態がある。

 1.useraddでGIDやグループを指定するには予めそのグループが存在していなくてはならない。
 2.useradd/passwd/usermmodでユーザの追加/変更
 3.shadowを移行するには、pwunconv/pwconvで平文、ハッシュ化を行う必要がある。

■blockdiagはnwdiagの時に一緒に導入した。

 chrootのwheezy/sidにnwdiagを導入する
 http://d.hatena.ne.jp/labunix/20130321

■blockdiagの「-T svg」で出力すると、
 LibreOffice3.6でフォントや色を修正出来る。
 また、blockdiagの「-f」オプションでもフォントの指定が出来る。

■blockdiagで日本語を使いたい。
 Lenny/SqueezeはIPAフォントがインストールされなかった。
 blockdiagもパッケージが無いので、Wheezy/Sidのどちらかを使う。
 blockdiagで使える文字コードはUTF-8のみ。

$ apt-cache search OpenType | grep IPA
fonts-ipaexfont - 日本語 OpenType フォント - IPAex フォント (IPAex ゴシック・明朝)
fonts-ipaexfont-gothic - 日本語 OpenType フォント - IPAex フォント (IPAex ゴシック)
fonts-ipaexfont-mincho - 日本語 OpenType フォント - IPAex フォント (IPAex 明朝)
fonts-ipafont - 日本語 OpenType フォントセット - IPA フォント
fonts-ipafont-gothic - 日本語 OpenType フォントセット - IPA ゴシックフォント
fonts-ipafont-mincho - 日本語 OpenType フォントセット - IPA 明朝フォント
fonts-ipamj-mincho - 日本語 OpenType フォント - IPAmj 明朝フォント

$ for list in ~/cifs/[slw]*;do sudo chroot "$list" apt-get install -y fonts-ipa*;done
$ for list in ~/cifs/[slw]*;do \
    echo "$list]" | sed s%.*/%"["%g; \
    sudo chroot "$list" dpkg -l | grep ^ii | grep "fonts-ipa" | awk '{print $2}'; \
  done
[lenny]
[sid]
fonts-ipaexfont
fonts-ipaexfont-gothic
fonts-ipaexfont-mincho
fonts-ipafont
fonts-ipafont-gothic
fonts-ipafont-mincho
fonts-ipamj-mincho
[squeeze]
[wheezy]
fonts-ipaexfont
fonts-ipaexfont-gothic
fonts-ipaexfont-mincho
fonts-ipafont
fonts-ipafont-gothic
fonts-ipafont-mincho
fonts-ipamj-mincho

■例えばttfのゴシックフォントは下記ディレクトリにある。

$ for list in ~/cifs/[slw]*;do \
    echo "$list]" | sed s%.*/%"["%g; \
    sudo chroot "$list" dpkg -L fonts-ipafont-gothic 2>&1 | grep ttf; \
  done
[lenny]
[sid]
/usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf
/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf
[squeeze]
[wheezy]
/usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf
/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf

■結局以下では日本語は使わなかった。

$ cat pass2.diag
blockdiag {
        orientation = portrait;

        A1 [label = "/etc/group"];
        B1 [label = "groupadd"];
        C1 [label = "/etc/passwd"];
        D1 [label = "useradd"];
        E1 [label = "passwd"];
        F1 [label = "usermod"];

        A2 [label = "/etc/shadow"];
        B2 [label = "pwunconv"];
        C2 [label = "/etc/passwd"];
        D2 [label = "pwconv"];

        A1 -> B1;
        A1 -> C1;
        C1 -> D1 , E1 , F1;

        A2 -> B2 -> C2 <- D2;
        D2 -> A2;

}

$ blockdiag -T png pass2.diag

■指定するなら、例えば以下のようになる。

$ blockdiag -T png pass2.diag -f /usr/share/fonts/opentype/ipafont-gothic/ipag.ttf

■グループの存在確認は順序としてだけで、ユーザ情報の操作なので、
 結局下記のような、2種類のフローにした。

f:id:labunix:20130407223710p:plain