FirstRelease
authordev <dev>
Tue, 18 Oct 2022 08:44:17 +0000 (08:44 +0000)
committerdev <dev>
Tue, 18 Oct 2022 08:44:17 +0000 (08:44 +0000)
useradd.sh [new file with mode: 0755]

diff --git a/useradd.sh b/useradd.sh
new file mode 100755 (executable)
index 0000000..69836ae
--- /dev/null
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+#####################################################################################
+#
+#   chroot 環境にユーザーを追加する
+#     ログインユーザー情報を関連ファイルに追加する
+#
+#   使用上の注意
+#     - chroot環境を構築後に、このスクリプトを実行すること
+#     - 既存ユーザーを対象。新規ユーザーの場合は事前に、'useradd' しておくこと
+#
+#   $Id: useradd.sh,v 1.1 2022/10/18 08:44:17 dev Exp $
+#
+#####################################################################################
+
+# Settings
+# --- 設定変更 ここから ---
+# chroot を作成するディレクトリを指定
+CHG_ROOT=/chroot
+
+# --- ここまで ---
+
+# Init
+FLG=0
+EXEC_CMD=(
+  /usr/bin/install
+  /usr/bin/id
+)
+
+for valf in ${EXEC_CMD[@]}
+do
+  if [ ! -x $valf ]; then
+    echo "File ($valf) not found"
+    FLG=1
+  fi
+done
+
+if [ $FLG -eq 1 ]; then
+  echo "--- Error ---"
+  exit 1
+fi
+
+if [ -z $1 ]; then
+  echo "Undefined Username"
+  echo "$0 <username>"
+  exit 1
+fi
+
+USER=$1
+id $USER > /dev/null 2>&1
+if [ $? -ne 0 ]; then
+  echo "User $USER not found"
+  echo "Create User $USER"
+  exit 1
+fi
+GROUP=`id -gn $USER`
+
+# Main
+
+test ! -d ${CHG_ROOT}/home/$USER && install -m 0700 -o $USER -g root -d ${CHG_ROOT}/home/$USER
+test ! -d ${CHG_ROOT}/home/${USER}/.ssh && install -m 0700 -o $USER -g root -d ${CHG_ROOT}/home/${USER}/.ssh
+
+if [ ! -f ${CHG_ROOT}/home/${USER}/.ssh/authorized_keys -a -f /home/${USER}/.ssh/authorized_keys ]; then
+  install -m 0600 -o $USER -g root /home/${USER}/.ssh/authorized_keys ${CHG_ROOT}/home/${USER}/.ssh/authorized_keys
+fi
+
+if [ -d /home/${USER}/.ssh ]; then
+  mv /home/${USER}/.ssh /home/${USER}/.ssh.bak
+  ln -s ${CHG_ROOT}/home/${USER}/.ssh /home/${USER}/.ssh
+fi
+
+grep ${CHG_ROOT}/etc/passwd -e "^$USER:" >/dev/null 2>&1
+test $? -ne 0 && grep /etc/passwd -e "^$USER" >> ${CHG_ROOT}/etc/passwd
+
+grep ${CHG_ROOT}/etc/group -e "^$GROUP:" >/dev/null 2>&1
+test $? -ne 0 && grep /etc/group  -e "^$GROUP" >> ${CHG_ROOT}/etc/group
+
+grep ${CHG_ROOT}/etc/shadow -e "^$USER:" >/dev/null 2>&1
+test $? -ne 0 && grep /etc/shadow -e "^$USER" >> ${CHG_ROOT}/etc/shadow