見出し画像

ZFSonRoot(2日目)

先日に引き続きサーバーのリプレイス作業を行なっておりました。

OSのインストールが終わったので次に管理ユーザーの設定を行いました。

システム管理ユーザー

私のサーバーは実務環境は、全てKVMの仮想マシン上になりるので物理サーバー上に作成するユーザーは、2つまずは、システム管理ユーザーそしてKVMの管理ユーザーになります。

サーバーの構築が完了したら前述通り実務環境は、KVM上になるためサーバー構築時と定期的なマシンメンテ(アップデート作業も含む)意外使わないユーザーです。

ZFS on Root環境

インストールメディアからのOSインストールであれば、インストール時に管理者権限(sudo実行権限)のユーザーを作るか、そうでなかったとしても通常のファイルシステム(ext4)の環境であれば、useraddコマンドのコマンドオプションでsudo実行権限を持つグループをサブグループにしてユーザーを作成して終了なのですが・・・

ZFSファイルシステムを使っている場合、ユーザーのホームディレクトリを別途作成してからユーザーを作ると言う作業手順になります。

加えてUbuntu20のZFSonRoot環境から各ディレクトリには、UUIDを振って作成するようになっています。

新規ユーザー作成

なので新規ユーザーを作成する時は、以下のコマンドになります。

UUIDの取得

UUID=$(dd if=/dev/urandom of=/dev/stdout bs=1 count=100 2>/dev/null |
tr -dc 'a-z0-9' | cut -c-6)

ZFSルートディレクトリの情報設定

ROOT_DS=$(zfs list -o name | awk '/ROOT\/ubuntu_/{print $1;exit}')

ホームディレクトリを作成

sudo zfs create -o com.ubuntu.zsys:bootfs-datasets=$ROOT_DS \
-o canmount=on -o mountpoint=/home/${NEW_USER} \
rpool/USERDATA/<NEW_USER>_$UUID

ここまで準備してからLinuxのアカウント作成

sudo useradd <NEW_USER> -s /bin/bash

ホームディレクトリがユーザーを作成する時点で存在する場合は、ホームディレクトリの基本ファイル(bashrcなど)が格納されている「/etc/skel」からコピーを行わないため手動でコピーをおこなす。

sudo cp -a /etc/skel/. /home/${NEW_USER}

最後にホームディレクトリのパーミッションを適切に修正

sudo chown -R <NEW_USER>:<NEW_USER> /home/<NEW_USER>

ー補足ー

rpoolは、ZFSファイルシステムで作ったRootディレクトリのデータセット
<NEW_USER>は、新規作成する任意のユーザー名


構築時に2回しか行わないのでいいのですがめんどくさいです。

なので単調ですがスクリプト事前に作ってそれを実行して今回は、ユーザーを作りました。

#!/bin/bash                                                                                                                                                                         
#ZFSファイルシステム上に新規管理ユーザを作成する
#ユーザ名を変数へ格納
echo 'new user name'
read NEW_USER
# UUIDの取得
UUID=$(dd if=/dev/urandom of=/dev/stdout bs=1 count=100 2>/dev/null |
tr -dc 'a-z0-9' | cut -c-6)
# ZFSルートディレクトリの情報設定
ROOT_DS=$(zfs list -o name | awk '/ROOT\/ubuntu_/{print $1;exit}')
#ホームディレクトリを作成
sudo zfs create -o com.ubuntu.zsys:bootfs-datasets=$ROOT_DS \
-o canmount=on -o mountpoint=/home/${NEW_USER} \
rpool/USERDATA/${NEW_USER}_$UUID
#アカウント作成
sudo useradd ${NEW_USER} -s /bin/bash
#ホームディレクトリに必要なファイルを「/etc/skel」からコピー
sudo cp -a /etc/skel/. /home/${NEW_USER}
#ホームディレクトリのパーミッションを適切に修正
sudo chown -R ${NEW_USER}:${NEW_USER} /home/${NEW_USER}
#作成されたアカウントの確認
sudo id ${NEW_USER}
getent passwd | grep ${NEW_USER}
getent group | grep ${NEW_USER}
zfs list -o name | grep ${NEW_USER}


管理ユーサーの設定

Ubuntu20の場合、通常インストールで管理者権限のユーザーを作った場合、サブグループとして以下の設定がなされています。

adm
cdrom
dip
lpadmin
lxd
plugdev
sambashare
sudo

よってユーザー作成後にそのユーザーをシステム管理ユーザーにする場合は、以下のコマンドを実行する必要があります。

usermod -a -G adm,cdrom,dip,lpadmin,lxd,plugdev,sambashare,sudo <username>

そのほかにもSSH接続設定など行いましたが、この辺は通常環境と同じ感じなので今日はこの辺で

3日目は、KVM管理ユーサーの設定を行う予定です。


いいなと思ったら応援しよう!