90 lines
1.8 KiB
Bash
90 lines
1.8 KiB
Bash
#!/bin/bash
|
|
|
|
# 检查用户名是否已存在
|
|
check_user()
|
|
{
|
|
user=$1
|
|
u=`cat /etc/passwd | awk -F ':' '{print $1}'| grep $user`
|
|
if [ -n "$u" ];then
|
|
return 1
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
# UID
|
|
get_uid()
|
|
{
|
|
g=`cat /etc/group |grep $1| awk -F ':' '{print $3}'`
|
|
if [ -z $g ];then
|
|
echo -e "\033[31;1m$1 not exists\033[0m"
|
|
exit 1
|
|
fi
|
|
max=$[g+500]
|
|
uids=`cat /etc/passwd | awk -F ':' '{print $3}'`
|
|
for uid in $uids;do
|
|
if [ $uid -gt $g -a $uid -lt $max ];then
|
|
g=$uid
|
|
fi
|
|
done
|
|
echo $[g+1]
|
|
}
|
|
|
|
## 添加用户
|
|
if [ $# -eq 0 ];then
|
|
echo -e "\033[31;1mUSGE:$0 [username]\033[0m"
|
|
else
|
|
# chattr -i
|
|
chattr -i /etc/passwd
|
|
chattr -i /etc/group
|
|
|
|
while [ $# -gt 0 ];do
|
|
echo -e "\033[32;1m++++++Group Lists++++++\033[0m"
|
|
echo -e "\033[32;1m\ta: devgroup\n\tb: ops\n\tc: appgroup\n\td: dbgroup\033[0m"
|
|
read -p "Choose Group for $1[default devgroup]:" group
|
|
: ${group:=devgroup}
|
|
|
|
case $group in
|
|
a|A|devgroup)
|
|
echo -e "\033[31;1mAdd user for check logs! \033[0m"
|
|
Gid=1000
|
|
;;
|
|
b|B|ops)
|
|
echo -e "\033[31;1mAdd user for system manager! \033[0m"
|
|
Gid=10
|
|
;;
|
|
c|C|appgroup)
|
|
echo -e "\033[31;1mAdd user for app! \033[0m"
|
|
Gid=0
|
|
;;
|
|
d|D|dbgroup)
|
|
echo -e "\033[31;1mAdd user for database! \033[0m"
|
|
Gid=0
|
|
;;
|
|
*)
|
|
echo -e "\033[31;1mNo Support! \033[0m"
|
|
Gid=0
|
|
;;
|
|
esac
|
|
gid=`cat /etc/group |grep $group| awk -F ':' '{print $3}'`
|
|
if [[ `check_user $1` -eq 1 ]];then
|
|
echo -e "\033[31;1m$1 exists already! \033[0m"
|
|
else
|
|
u=`get_uid $group`
|
|
if [ $Gid -gt 0 ];then
|
|
/usr/sbin/useradd -u $u -g $gid -G $Gid $1
|
|
else
|
|
/usr/sbin/useradd -u $u -g $gid $1
|
|
fi
|
|
password=`/usr/bin/openssl rand -base64 8`
|
|
echo -e "$1 password: \033[033;1m$password\033[0m"
|
|
echo $password | passwd --stdin $1
|
|
fi
|
|
shift
|
|
done
|
|
|
|
# chattr +i
|
|
chattr +i /etc/passwd
|
|
chattr +i /etc/group
|
|
|
|
fi
|