如何重命名Linux用户?

RHEL-Like

1 前言

一个问题,一篇文章,一出故事。
笔者今天遇到用户需要更改Linux用户名的情况,于是整理了一套更改命令以便以后可以批量操作。

2 最佳实践

2.1 测试环境

如何安装Oracle Linux 10.x?

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"
没有评论

发表回复

RHEL-Like
如何安装Oracle Linux 10.x LibreOffice_26.2.2?

1 前言 一个问题,一篇文章,一出故事。 笔者今天需要基于Oracle Linux 10.x安装部署 …

RHEL-Like
如何安装Oracle Linux 10.x?

1 前言 一个问题,一篇文章,一出故事。 今天需要部署基于GitEgg框架的微服务新项目,基于系统需 …

Nginx
如何在Oracle Linux 9.x部署Nginx扫毒代理Clammit?

1 基础知识 1.1 Clammit的介绍 Clammit具备整合(集成)nginx与clamav的 …