Skip to content

Instantly share code, notes, and snippets.

@monsat
Created March 13, 2012 03:53
Show Gist options
  • Save monsat/2026630 to your computer and use it in GitHub Desktop.
Save monsat/2026630 to your computer and use it in GitHub Desktop.
Create a user
#!/bin/sh
#
# CentOS6.2
#
#
# vars
#
UNAME=`uname -i`
# http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm
EPELRPM="epel-release-6-5.noarch.rpm"
EPELURL="http://download.fedoraproject.org/pub/epel/6/${UNAME}/${EPELRPM}"
# http://rpms.famillecollet.com/enterprise/6/remi/x86_64/remi-release-5-8.el5.remi.noarch.rpm
REMIRPM="remi-release-6-1.el6.remi.noarch.rpm"
REMIURL="http://rpms.famillecollet.com/enterprise/6/remi/${UNAME}/${REMIRPM}"
#
# yum
#
yum -y update
yum -y install wget
yum -y install expect
yum -y install sudo
#
# install
#
rpm -Uvh $EPELURL && echo "set up epel"
rpm -Uvh $REMIURL && echo "set up remi"
# screen
yum -y install screen && echo "installed screen"
# vim
yum -y install vim-enhanced && echo "installed vim"
# git
yum -y install git && echo "installed git"
exit 0
#!/bin/bash
#
# ユーザー作成スクリプトver.0.1
# by http://blog.paz-para.com/?p=1352
#
# wheel対応
#
#---------------------------------------#
# 変数宣言 #
#---------------------------------------#
USERNAME="$1"
USERGROUP="$2"
USERPASSWD="$3"
WHEEL="wheel"
#---------------------------------------#
# 引数チェック #
#---------------------------------------#
# 第一引数はユーザー名になります。
# 引数が1つもなかったらエラーを返します。
if [ "$USERNAME" = "" ] ; then
cat << _EOT_
Help=================================
./createUser.sh [UserName] [UserGroup] [UserPassword]
UserName : user name to create
UserGroup : (optional) group name. if blank, create by user name.
UserPassword : (optional) password. if blank, create by random password.
=====================================
_EOT_
exit 1
else
echo "...Argument OK!!"
fi
# ユーザー名が重複していないか確認します。
# 重複している場合はエラーを返します。
for user in `ls /etc/passwd | cut -d: -f 1`
do
if [ "$USERNAME" = "$user" ]; then
echo " Error: User Already Exists..."
exit 1
fi
done
echo "...User not exist!!"
# ユーザー名と既存のディレクトリ名が重複していないか確認します。
# 重複している場合はエラーを返します。
for dir in `ls /home`
do
if [ "$USERNAME" = "$dir" ]; then
echo " Error: Directory Already Exists..."
exit 1
fi
done
echo "...Directory not exist!!"
# ユーザー名の文字数を確認します。
# 32文字を超えていたらエラーを返します。
if [ "${#USERNAME}" -gt 32 ]; then
echo " Error: Username too Long..."
exit 1
else
echo "...Username's Length OK!!"
fi
# ユーザー名に使用された文字を確認します。
# 不正な文字を使用していたらエラーを返します。
if expr $USERNAME : [a-zA-Z0-9_-] > /dev/null ; then
echo "...Username's Character OK!!"
else
echo " Error: Caracter Not allow..."
exit 1
fi
# 第二引数はグループ名になります。
# 引数がなかったらユーザー名で作成されます。
if [ "$USERGROUP" = "" ] ; then
USERGROUP="$USERNAME"
else
echo "...Argument OK!!"
fi
# グループ名の文字数を確認します。
# 32文字を超えていたらエラーを返します。
if [ "${#USERGROUP}" -gt 32 ]; then
echo " Error: Username too Long..."
exit 1
else
echo "...Groupname's Length OK!!"
fi
# グループ名に使用された文字を確認します。
# 不正な文字を使用していたらエラーを返します。
if expr $USERGROUP : [a-zA-Z0-9_-] > /dev/null ; then
echo "...Groupname's Character OK!!"
else
echo " Error: Caracter Not allow..."
exit 1
fi
# グループ名が存在していない場合はグループを作成します。
GROUPEXISTS=`grep -e "${USERGROUP}:" /etc/group`
if [ ! "${GROUPEXISTS}" ]; then
groupadd "${USERGROUP}" && echo " Group created..."
fi
# 第三引数はパスワードになります。
# パスワードが空ではなく、8文字未満の場合はエラーを返します。
if [ "$USERPASSWD" != "" ] && [ "${#USERPASSWD}" -lt 8 ]; then
echo " Error: Password too short..."
exit 1
else
echo "...Password Length OK!!"
fi
# パスワードが空の場合は生成して代入します。
# 自動生成のパスワードは8桁の乱数を利用します。
if [ "$USERPASSWD" = "" ]; then
USERPASSWD=`mkpasswd -l 8 -d 2 -c 3 -C 3 -s 0`
fi
# useraddコマンドで新規ユーザーを作成します。
useradd ${USERNAME} && echo "...Useradd OK!!"
# group を登録します。
usermod -a --group ${USERGROUP} ${USERNAME}
usermod -a --group ${WHEEL} ${USERNAME}
usermod -g ${USERGROUP} ${USERNAME}
# .sshディレクトリを作成します
mkdir /home/${USERNAME}/.ssh && echo "...mkdir .ssh OK!!"
# authorized_keys を作成します
touch /home/${USERNAME}/.ssh/authorized_keys && echo "...touch authorized_keys OK!!"
# 所有者をユーザーに変更します。
chown -R ${USERNAME}:${USERGROUP} /home/${USERNAME}/ && echo "...chown Userdir OK!!"
# 新規に作成されたディレクトリの権限を755に変更します。
chmod 755 /home/${USERNAME}/ && echo "...chmod Userdir OK!!"
# 新規に作成された .ssh ディレクトリの権限を700に変更します。
chmod 700 /home/${USERNAME}/.ssh && echo "...chmod .ssh OK!!"
# 新規に作成された authorized_keys の権限を600に変更します。
chmod 600 /home/${USERNAME}/.ssh/authorized_keys && echo "...chmod authorized_keys OK!!"
# 新規に作成されたユーザーのパスワードを設定します。
expect -c "
spawn passwd ${USERNAME}
expect \"新しいUNIX パスワード:\"
sleep 1
send \"${USERPASSWD}\r\"
sleep 1
expect \"新しいUNIX パスワードを再入力してください:\"
send \"${USERPASSWD}\r\"
expect eof
"
#登録完了です!
cat << _EOT_
Making User Complete!!!
Info=================================
New UserName : ${USERNAME}
New UserGroup : ${USERGROUP}
NEW UserPassword : ${USERPASSWD}
=====================================
_EOT_
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment