RHEL-Like
1 前言
一个问题,一篇文章,一出故事。
笔者今天遇到用户需要更改Linux用户名的情况,于是整理了一套更改命令以便以后可以批量操作。
2 最佳实践
2.1 测试环境
2.2 脚本实现步骤
2.2.1 创建脚本
vim ~/scripts/reNameUser.sh
加入如下配置,
#!/bin/bash
oldName="$1"
newName="$2"
reNameUser() {
local oldUser="$1"
local newUser="$2"
# Check empty parameters and show usage
if [[ -z "$oldUser" || -z "$newUser" ]]; then
echo "Usage: $0 "
exit 1
fi
# Check if old user exists
if ! id -u "${oldUser}" >/dev/null 2>&1; then
echo "ERROR: Old user '${oldUser}' does not exist. Exiting script!"
exit 1
fi
# Check if new user already exists
if id -u "${newUser}" >/dev/null 2>&1; then
echo "ERROR: New user '${newUser}' already exists. Cannot rename!"
exit 1
fi
# Kill processes and rename user/group/home directory
sudo pkill -9 -u "$oldUser" 2>/dev/null
sudo usermod -l "$newUser" "$oldUser" >/dev/null 2>&1
sudo groupmod -n "$newUser" "$oldUser" >/dev/null 2>&1
sudo usermod -d "/home/$newUser" -m "$newUser" >/dev/null 2>&1
# Handle symbolic link if exists
if [ -L "/home/$newUser" ]; then
realPath=$(realpath "/home/$newUser")
sudo mv "$realPath" "$(dirname $realPath)/$newUser" >/dev/null 2>&1
sudo rm -f "/home/$newUser"
sudo ln -s "$(dirname $realPath)/$newUser" "/home/$newUser"
fi
echo "SUCCESS: User renamed from '$oldUser' to '$newUser' successfully."
}
reNameUser "$oldName" "$newName"
2.2.2 测试脚本
bash ~/scripts/reNameUser.sh "user" "user01"
没有评论