replaceUser.sh 1.3 KB

1234567891011121314151617181920212223242526
  1. #!/bin/bash
  2. # Created By : cybergavin
  3. # Created On : 12-MAR-2020
  4. # Description : QAD script to change a user login name.
  5. # USER-DEFINED : Replace 'user1' and 'user2' by the actual users to be swapped. user2 (new_user) must not be created before executing this script.
  6. # Will not execute if the old_user is logged in or owns a running process.
  7. #####################################################################################################################################################
  8. old_user=user1
  9. new_user=user2
  10. # Modify user's login name
  11. sudo usermod -l $new_user $old_user
  12. # Modify user's group name if same as user name
  13. [[ -n "`grep \"^${old_user}\" /etc/group`" ]] && sudo groupmod -n $new_user $old_user
  14. # Rename any file or directory named with the old user's login name
  15. for i in $(sudo find / -name "$old_user" -user $new_user 2>/dev/null)
  16. do
  17. sudo mv $i `dirname $i`/${new_user}
  18. done
  19. # Change home directory for new user as "usermod" does not do it
  20. ohdir=`grep "^${new_user}" /etc/passwd |cut -d: -f6`
  21. if [ -n "`echo $ohdir | grep \"${old_user}\"`" ]; then
  22. nhdir=`echo $ohdir | sed "s/${old_user}/${new_user}/g"`
  23. sudo usermod -d $nhdir ${new_user}
  24. fi
  25. # Replace old user by new user in the sudoers file
  26. sudo sed -i "s/${old_user}/${new_user}/g" /etc/sudoers