Compare commits
2 Commits
master
...
user-renam
Author | SHA1 | Date |
---|---|---|
|
474fd0ec65 | 4 years ago |
|
946a8bcb37 | 4 years ago |
@ -0,0 +1,51 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Arguments: old name, new name
|
||||||
|
|
||||||
|
if [ $# -lt 3 ]; then
|
||||||
|
printf '%s\n' "Wrong number of arguments\!" >&2
|
||||||
|
printf '%s\n' "Usage: user-rename [old name] [new name] [new home]" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
OLD=$1
|
||||||
|
NEW=$2
|
||||||
|
HOME=$3
|
||||||
|
|
||||||
|
# Get old home dir (no longer used, keeping around for a bit in case it is needed)
|
||||||
|
#OLD_HOME=$(grep $OLD /etc/passwd | awk -F: '{print $6}')
|
||||||
|
|
||||||
|
# Begin sanity check
|
||||||
|
if ! id "$OLD" 2>&1 >/dev/null; then
|
||||||
|
printf '%s\n' "ERROR 11: OLD user name not found: $OLD" >&2
|
||||||
|
exit 11
|
||||||
|
fi
|
||||||
|
|
||||||
|
if id "$NEW" 2>&1 >/dev/null; then
|
||||||
|
printf '%s\n' "ERROR 12: NEW user name already exists: $NEW" >&2
|
||||||
|
exit 12
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "$HOME" ]; then
|
||||||
|
printf '%s\n' "ERROR 13: New HOME directory already exists: $HOME" >&2
|
||||||
|
exit 13
|
||||||
|
fi
|
||||||
|
# End sanity check
|
||||||
|
|
||||||
|
# Rename user
|
||||||
|
usermod -l $NEW $OLD || { printf '%s\n' "Error renaming user\!" >&2 && exit 1 }
|
||||||
|
|
||||||
|
# Change home dir location
|
||||||
|
usermod -d $HOME -m $NEW || { printf '%s\n' "Error moving home directory\!" >&2 && exit 1 }
|
||||||
|
|
||||||
|
|
||||||
|
# Check if primary group matches old user name; modify if so
|
||||||
|
if [ ! "$(id -gn $NEW)" == "$OLD" ]; then
|
||||||
|
groupmod -n $NEW $OLD || { printf '%s\n' "Error renaming primary group\!" >&2 && exit 1 }
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Done! Print some info and exit
|
||||||
|
grep $NEW /etc/passwd
|
||||||
|
id $NEW
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
Loading…
Reference in new issue