112 lines
2.7 KiB
Bash
Executable File
112 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# clone a user
|
|
|
|
function clone_user_ () {
|
|
|
|
module_load confirm
|
|
type confirm
|
|
|
|
echo "============="
|
|
echo "this script will create a new user"
|
|
echo "based on an existing user's data"
|
|
echo
|
|
echo "You will be shown a list of users who can currently log on"
|
|
echo "Remember which user you would like to clone."
|
|
echo "You will be asked for the new user's name, their password"
|
|
echo "and the old user to clone".
|
|
echo "============="
|
|
echo
|
|
|
|
echo -n "New user's name: "
|
|
read newuser
|
|
|
|
echo -n "New user's password: "
|
|
read newpassword
|
|
|
|
echo
|
|
|
|
echo "Current users you can clone:"
|
|
echo "----"
|
|
awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd
|
|
echo
|
|
|
|
echo -n "Old user to clone: "
|
|
read olduser
|
|
echo "olduser uid is $(id -u $olduser)"
|
|
|
|
echo
|
|
echo "You have selected: "
|
|
echo "----"
|
|
echo "new user: $newuser"
|
|
echo "new user password: $newpassword"
|
|
echo "old user: $olduser"
|
|
echo
|
|
|
|
olduser_GROUPS="$(id -Gn ${olduser} | sed "s/${olduser} //g" | sed "s/ ${olduser}//g" | sed "s/ /,/g"),$olduser"
|
|
olduser_SHELL=$(awk -F : -v name=${olduser} '(name == $1) { print $7 }' /etc/passwd)
|
|
|
|
echo "old user groups: "
|
|
echo "----"
|
|
echo $olduser_GROUPS
|
|
echo "olduser shell: "
|
|
echo $olduser_SHELL
|
|
# read -rsp $'Press any key to continue or ctrl-c to exit...\n' -n1 key
|
|
# return
|
|
# confirm "ready to clone user, begin?" || return 1
|
|
|
|
# useradd --groups $olduser_GROUPS --shell $olduser_SHELL $newuser
|
|
|
|
# echo $newuser:$newpassword | chpasswd
|
|
|
|
# read -rsp $'ready to make home direcoty -- ctrl-c to exit...\n' -n1 key
|
|
|
|
# mkdir /home/$newuser
|
|
# chown -R $newuser:$newuser /home/$newuser
|
|
|
|
# echo
|
|
# echo "Script should be done now."
|
|
# echo
|
|
# echo "Do you see your new users name below?"
|
|
# echo
|
|
# awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd
|
|
|
|
# echo
|
|
# echo "We are now going to copy the old user's home folder to the new user"
|
|
# echo "then change ownership to the new user"
|
|
# echo
|
|
# read -rsp $'Ready to copy home folder --- or ctrl-c to exit...\n' -n1 key
|
|
|
|
|
|
rsync -aPv --exclude 'Downloads' /home/$olduser/. /home/$newuser/
|
|
chown -R --from=$olduser $newuser:$newuser /home/$newuser
|
|
|
|
echo
|
|
echo "Now we are going to change the names of files and folders to the new user"
|
|
echo
|
|
|
|
grep -rlI $olduser /home/$newuser/ . | sudo xargs sed -i 's/$olduser/$newuser/g'
|
|
|
|
echo
|
|
echo "Done now."
|
|
echo
|
|
read -rsp $'Press any key to exit...\n' -n1 key
|
|
echo
|
|
echo
|
|
|
|
}
|
|
|
|
clone_user () {
|
|
if [[ $EUID != 0 ]]; then
|
|
|
|
clone=$(declare -f clone_user_)
|
|
module_load confirm
|
|
confirm=$(declare -f confirm)
|
|
sudo bash -c "$confirm; $clone; clone_user_"
|
|
else
|
|
echo run as regular user with sudo privliges and it will elevate
|
|
fi
|
|
}
|
|
|
|
# # if script was executed then call the function
|
|
(return 0 2>/dev/null) || clone_user |