彷徨えるフジワラ

年がら年中さまよってます

ユーザ追加と、ホーム領域の "zfs create"

OpenSolaris をインストールする際に作成される、管理用ユーザのホーム領域は、ZFS の rpool プール内の /export/home 配下に、新たに "zfs create" される形で作成される。

で、ユーザ追加コマンド(useradd)のデフォルト挙動が、これと同じだと仮定するならば:

  • useradd コマンドから "zfs create" が実施される
  • /export/home 配下での mkdir(2) を契機に "zfs create" が実施される

のいずれかである必要がある。

useradd が "zfs create" を実施するにしても、外部依存性等の点から考えて、ハードコーディングによる直接実行はちょっと考え難い。

間接実行だとすると、設定ファイルの雛形が /etc/skel に格納されているように、初期化処理スクリプトを格納したディレクトリが用意されている、というのが妥当な線かな?しかし、オンラインマニュアルにも特に記述が無い事から、useradd 契機での "zfs create" は無さそうな感じ。
そうなると、後者の「mkdir(2) 契機で "zfs create"」か?

しかしその場合は:

  • /export/home 直下では、mkdir(2) 契機で "zfs create" したい
  • /export/home 配下の別ファイルシステム内では、mkdri(2) 契機で "zfs create" したくない

であろうことから:

配下のファイルシステムには引き継がれない属性によって、mkdir(2) 契機で "zfs create" を実施

みたいな仕組みが必要になる筈なのだけど、rpool/export/home に "zfs get all" しても、特にそれらしい属性は見当たらない。

いい加減面倒になったので、エイヤ!で useradd してみたら .... 単に /export/home 直下にディレクトリが作成されただけでした。

えー!? "zfs create" は手動実施かよ?心配して損した!!

っつーことで、ZFS で各アカウントのホーム領域を個別のファイルシステムに分離する場合のアカウント作成手順は:

  1. "zfs create rpool/export/home/${username}" で新規 FS 作成
  2. "chown ${username} /export/home/${username}" で所有変更
  3. useradd でアカウント作成("-d /export/home/${username}" 付き)

といったところか。

useradd 実施時点でホームディレクトリが作成済みの場合、設定ファイルのテンプレート類がコピーされないので、必要に応じて /etc/skels 配下からファイルをコピー(+ 所有変更)しておくのを忘れずに。

運用方針次第だけど、自前領域のスナップショット管理の権限ぐらいは、各ユーザに与えた方が良いかもね。