เปลี่ยนชื่อ username บน Linux

Anuchit Prasertsang - Sep 20 - - Dev Community

สิ่งที่ต้องทำ

  1. login ด้วยสิทธิ์ root หรือ สร้าง user ใหม่ และให้สิทธิ์เป็น root แล้ว login ด้วย user นั้น
  2. เปลี่ยนชื่อใหม่ sudo usermod -l newUsername oldUsername
  3. ย้าย home directory sudo usermod -d /home/newHomeDir -m newUsername
  4. เปลี่ยนชื่อ group sudo groupmod -n newUsername oldUsername

รายละเอียดของแต่ละขั้นตอน

สร้าง user ชั่วคราว ใหม่

Linux ไม่อนุญาติให้เปลี่ยนชื่อ username ของ user ที่ login อยู่ ดังนั้นเราจะต้องสร้าง user ใหม่ แล้วให้สิทธิ์เป็น root แล้ว login ด้วย user นั้น

sudo useradd -m -s /bin/bash tempUsername
sudo passwd tempUsername
sudo usermod -aG sudo tempUsername
su - tempUsername
Enter fullscreen mode Exit fullscreen mode

คำอธิบาย

  • useradd สร้าง user ใหม่
  • -m สร้าง home directory ใหม่
  • -s /bin/bash กำหนด shell ใหม่ // ไม่จำเป็นต้องใส่ก็ได้
  • passwd กำหนดรหัสผ่านใหม่
  • usermod กำหนดสิทธิ์ให้เป็น root -aG เพิ่ม user ลงใน group sudo
  • su login ด้วย user ใหม่

หรือ sudo useradd tempUsername แล้วจะถามรหัสผ่านใหม่ แล้วก็ sudo usermod -aG sudo tempUsername ได้เลย

ตรวจสอยว่า ว่ามี user ใหม่เพิ่มเข้ามาหรือไม่

cat /etc/passwd

# ผลลัพธ์
#...
tempUsername:x:1001:1001::/home/tempUsername:/bin/bash
Enter fullscreen mode Exit fullscreen mode

ทำการ logout แล้ว login ด้วย user ใหม่

หากไม่ logout แล้ว login ด้วย user ใหม่ จะเกิดปัญหาเมื่อต้องการเปลี่ยนชื่อ username ที่ login อยู่
เพราะ session ของ user ที่ login อยู่เดิมยังคงใช้งานอยู่จะไม่สามารถเปลี่ยนชื่อ username ได้

ssh tempUsername@ip-address
Enter fullscreen mode Exit fullscreen mode

เปลี่ยนชื่อ username ที่อยากเปลี่ยน

sudo usermod -l newUsername oldUsername
Enter fullscreen mode Exit fullscreen mode

ย้าย home directory

sudo usermod -d /home/newHomeDir -m newUsername
Enter fullscreen mode Exit fullscreen mode

เปลี่ยนชื่อ group

sudo groupmod -n newUsername oldUsername
Enter fullscreen mode Exit fullscreen mode

ตรวจสอบ

cat /etc/passwd

# ผลลัพธ์
#...
newUsername:x:1001:1001::/home/newHomeDir:/bin/bash

cat /etc/group

# ผลลัพธ์
#...
newUsername:x:1001:
Enter fullscreen mode Exit fullscreen mode

รีสตาร์ทเครื่อง

sudo reboot
Enter fullscreen mode Exit fullscreen mode

แล้ว login ด้วย user ใหม่

หากต้องการให้ user ใหม่เป็น root

sudo usermod -aG sudo newUsername
Enter fullscreen mode Exit fullscreen mode

หากต้องการ sudo su โดยไม่ต้องใส่รหัสผ่าน

sudo vim /etc/sudoers.d/010_oldUsername-nopasswd

# แก้ไขเป็น
newUsername ALL=(ALL) NOPASSWD: ALL
Enter fullscreen mode Exit fullscreen mode

พร้อมทั้งเปลี่ยนชื่อไฟล์เป็น 010_newUsername-nopasswd

ลบ user ชั่วคราว

sudo userdel -r tempUsername
Enter fullscreen mode Exit fullscreen mode

NOTE
Crontab jobs will not be run for users whose accounts have been renamed either due to changes in the local system or because they are managed through a central user database (external to the system, for example an LDAP directory).
rename your crontab config file /var/spool/cron/crontabs/oldUsername to /var/spool/cron/crontabs/newUsername and change or path file inside then restart crontab sudo systemctl restart cron

. . . . . . . . . . . . . . . . . . . . . . .