ฉันจะเปลี่ยนชื่อผู้ใช้ของฉันได้อย่างไร


325

ก่อนหน้านี้เมื่อฉันติดตั้ง Ubuntu ฉันเลือกชื่อผู้ใช้ที่ค่อนข้างโง่สำหรับบัญชีของฉันซึ่งฉันไม่ต้องการใช้อีกต่อไป

ฉันจะเปลี่ยนสิ่งนี้ (รวมถึงชื่อของโฮมไดเร็กตอรี่ของฉันและชื่อในเทอร์มินัล) โดยไม่สูญเสียการตั้งค่าสำหรับแอปพลิเคชันได้อย่างไร?
ฉันจะรักษาสิทธิ์และกุญแจของฉันไว้ในการตรวจสอบความถูกต้องต่างๆ (เช่นอีเมล SSH, GPG และอื่น ๆ ) ได้อย่างไร
การตั้งค่าใดที่อาจหายไปหากฉันเปลี่ยนชื่อผู้ใช้


เหตุใดเราไม่สามารถนำทางไปยัง /usr/share/applications/users.desktop >> คลิกที่ชื่อผู้ใช้ที่จะเปลี่ยน >> คลิกที่เปลี่ยนชื่อผู้ใช้ >> เปลี่ยนชื่อ >> คลิกที่ตกลง ฉันคิดว่านี่เป็นวิธีที่ง่ายที่สุดในการเปลี่ยนชื่อผู้ใช้ใช่ไหม
อานันท์

คำตอบ:


324

ระบบปฏิบัติการที่คล้าย Unix จะแยกชื่อผู้ใช้ออกจากข้อมูลประจำตัวของผู้ใช้ดังนั้นคุณสามารถเปลี่ยนชื่อได้อย่างปลอดภัยโดยไม่ส่งผลกระทบต่อ ID สิทธิ์ทั้งหมดไฟล์ ฯลฯ เชื่อมโยงกับข้อมูลประจำตัวของคุณ (uid) ไม่ใช่ชื่อผู้ใช้ของคุณ

เพื่อจัดการทุกด้านของฐานข้อมูลผู้ใช้คุณใช้usermodเครื่องมือ

หากต้องการเปลี่ยนชื่อผู้ใช้ (เป็นการดีที่สุดที่จะทำเช่นนี้โดยไม่ต้องเข้าสู่ระบบ):

sudo usermod -l newUsername oldUsername

อย่างไรก็ตามนี่ไม่ได้เปลี่ยนชื่อโฟลเดอร์บ้าน

ในการเปลี่ยนโฮมโฟลเดอร์ให้ใช้

sudo usermod -d /home/newHomeDir -m newUsername

หลังจากคุณเปลี่ยนชื่อผู้ใช้

ตัวอย่างเช่นคุณสามารถออกจากระบบไปที่คอนโซล ( Ctrl+ Alt+ F1) และsudo su -กลายเป็นรูทที่แท้จริง (ตรงข้ามกับsudo -sที่ $ HOME ยังคง / home / yourname.) บางทีคุณอาจต้องฆ่ากระบวนการที่ยังทำงานอยู่บางส่วนจากผู้ใช้รายนี้ เป็นครั้งแรก ต้องการทำเช่นนั้นป้อนps -u usernameให้มองหา PID kill PID-numberที่ตรงกันและฆ่าพวกเขาโดย

อัปเดต: ตามที่ระบุไว้บางไฟล์อาจอ้างอิงโฮมไดเร็กตอรี่เก่าของคุณ คุณสามารถเก็บ symlink ไว้สำหรับความเข้ากันได้แบบย้อนหลังได้เช่นln -s /home/newname /home/oldnameหรือคุณสามารถเปลี่ยนเนื้อหาไฟล์ด้วยsed -i.bak 's/*oldname*/*newname*/g' *list of files*มันจะสร้างการสำรองข้อมูลสำหรับแต่ละไฟล์ที่มีนามสกุล. bak

ข้อมูลเพิ่มเติมบางอย่างสำหรับผู้ใช้ที่ไม่ค่อยมีประสบการณ์เช่นฉัน:
เนื่องจากฉันมีบัญชีผู้ใช้เพียงหนึ่งบัญชีเท่านั้น (ผู้ดูแลระบบ) มันจะไม่ให้ฉันเปลี่ยนชื่อผู้ใช้ ("คุณเข้าสู่ระบบแล้ว" เป็นการตอบสนองใน TTY1 ( Ctrl+ Alt+ F1) รอบนี้

  1. เข้าสู่ระบบด้วยข้อมูลประจำตัวเก่าของคุณและเพิ่มผู้ใช้ใหม่เช่น "ชั่วคราว" ใน TTY1:

    sudo adduser temporary
    

    ตั้งรหัสผ่าน

  2. อนุญาตให้ผู้ใช้ชั่วคราวเรียกใช้ sudo โดยเพิ่มผู้ใช้ไปยังกลุ่ม sudo:

    sudo adduser temporary sudo
    
  3. exitออกจากระบบที่มีคำสั่ง
  4. กลับไปที่ tty1: เข้าสู่ระบบด้วยบัญชีผู้ใช้และรหัสผ่าน 'ชั่วคราว' เปลี่ยนชื่อผู้ใช้และโฟลเดอร์ของคุณดังกล่าวข้างต้น exit(จนกว่าคุณจะได้รับข้อความแจ้งการเข้าสู่ระบบ)
  5. กลับไปที่ TTY7 ( Ctrl+ Alt+ F7) เพื่อเข้าสู่ระบบบนหน้าจอ GUI / เดสก์ท็อปปกติและดูว่าใช้งานได้หรือไม่
  6. ลบผู้ใช้และโฟลเดอร์ชั่วคราว:

    sudo deluser temporary
    sudo rm -r /home/temporary
    

11
น่าเสียดายที่มันไม่เป็นความจริงสำหรับไฟล์การกำหนดค่าที่แตกต่างกันภายใต้ $ HOME ลองใช้งานบางอย่างเช่นgrep -IRFl /home/username ~และคุณจะเห็นว่ามีการอ้างอิงไปยังไดเรกทอรีภายในบ้านของคุณจำนวนเท่าใด
จัดการ

1
แก้ไขได้ง่าย - เพียงแค่ต้องใช้ตัวแก้ไขบัญชีผู้ใช้ในเอกภาพตามด้วยการรีสตาร์ท
Steve Koch

6
สำหรับผู้ที่มีโฟลเดอร์ภายในบ้านที่เข้ารหัสคุณจะต้องแก้ไข/home/.ecryptfs/oldusername/.ecryptfs/Private.mntให้ชี้ไปที่โฟลเดอร์บ้านใหม่ของคุณมิฉะนั้นคุณจะไม่สามารถเข้าสู่ระบบผ่าน Unity ได้
ฟาเอล

2
sudo usermod -d /home/edge -m edgeอัตราผลตอบแทน: usermod: Directory /home/empedokles could not be renamed in /home/edgeเช่นขั้นตอนที่ 4 จะไม่ทำงาน
empedokles

2
@JTC ไม่เคยแก้ไขธรรมดาsudoers ใช้เสมอnano visudo
โฟมบิน

107

หากต้องการรวมทั้งหมดเข้าด้วยกัน:

  1. ที่หน้าจอเริ่มต้นกดCtrl+ +AltF1
  2. เข้าสู่ระบบโดยใช้ชื่อผู้ใช้และรหัสผ่านของคุณ
  3. ตั้งรหัสผ่านสำหรับบัญชี "root"

    sudo passwd root
    
  4. ออกจากระบบ.

    exit
    
  5. เข้าสู่ระบบโดยใช้บัญชี "root" และรหัสผ่านที่คุณตั้งไว้ก่อนหน้านี้

  6. เปลี่ยนชื่อผู้ใช้และโฮมโฟลเดอร์เป็นชื่อใหม่ที่คุณต้องการ

    usermod -l <newname> -d /home/<newname> -m <oldname>
    
  7. เปลี่ยนชื่อกลุ่มเป็นชื่อใหม่ที่คุณต้องการ

    groupmod -n <newgroup> <oldgroup>
    
  8. ล็อคบัญชี "รูท"

    passwd -l root
    
  9. หากคุณใช้ ecryptfs (โฮมไดเรกทอรีเข้ารหัส) กำหนดใช้ไดเรกทอรีที่เข้ารหัสของคุณโดยใช้ecryptfs-recover-privateและแก้ไข<mountpoint>/.ecryptfs/Private.mntเพื่อแสดงไดเรกทอรีบ้านใหม่ของคุณ

  10. ออกจากระบบ.

    exit
    
  11. กดCtrl+ +AltF7

และตอนนี้คุณสามารถเข้าสู่ระบบโดยใช้ชื่อผู้ใช้ใหม่ของคุณ


6
ถ้าหลังจากที่usermod -l คุณได้รับuser <oldname> is currently used by process <processno>คุณสามารถหากระบวนการที่ (อาจจะเป็นภูตหรือ tmux / จอ) ps aux | grep <processno>โดยใช้ kill <processno>คุณอาจต้องการที่จะหยุดกระบวนการได้อย่างสง่างามที่มิฉะนั้นคุณจะ
RedPixel

1
ขอบคุณสำหรับการใส่ความคิดเห็นนี้เข้าด้วยกัน มันมีประโยชน์มาก สองสิ่งที่อาจกล่าวได้ว่า หลังจากขั้นตอนที่ 4 ฉันเริ่มระบบใหม่ดังนั้นฉันจะไม่ได้รับข้อความแสดงข้อผิดพลาดในขั้นตอนที่ 6 นอกจากนี้หลังจากกระบวนการนี้เสร็จสมบูรณ์ไฟล์ / etc / passwd จะมีและความคิดเห็น ID ตรงกับชื่อผู้ใช้เก่า นี่จะทำให้หน้าจอล็อกอินแสดงชื่อล็อกอินเก่า ฉันไม่พบวิธีที่เหมาะสมในการแก้ไขจากบรรทัดคำสั่ง แต่ฉันแก้ไขด้วยการลงชื่อเข้าใช้บัญชีผู้ใช้ไปที่การตั้งค่าบัญชีและเปลี่ยน "ชื่อเข้าสู่ระบบ" เป็นชื่อผู้ใช้ สิ่งนี้อัพเดตไฟล์ / etc / passwd และแก้ไขปัญหา
Jibbers

1
วิธีนี้เป็นวิธีที่ง่ายและไม่ซับซ้อนในการทำ เป็นการรีบูตที่ดีขึ้นหลังจากขั้นตอนที่ 4 ตามที่ @Jibbers แนะนำ
Yerke

ฉันพูดถึงว่า "บุ๊กมาร์กในหน้าต่างเบราว์เซอร์ไฟล์" กำลังชี้ไปที่โฟลเดอร์เก่าดังนั้นฉันต้องลบบุ๊คมาร์คเหล่านั้น
ollydbg23

จะไม่ทำงาน หากคุณกด Ctrl + Alt + F1 ที่จุดเริ่มต้นก็พยายามเข้าสู่ผู้ใช้ที่สร้างขึ้นใหม่ซึ่งจะไม่อนุญาต
empedokles

27

รีสตาร์ทในโหมดการกู้คืนและไปที่เชลล์พรอมต์รูท ("พรอมต์ให้เชลล์รูทพรอมต์")

ขั้นแรกให้ติดตั้ง root ใหม่

mount -o remount,rw /

ในการเปลี่ยนชื่อผู้ใช้และชื่อโฮมโฟลเดอร์

usermod -l <newname> -d /home/<newname> -m <oldname>

สำหรับชื่อกลุ่ม

groupmod -n <newgroup> <oldgroup>

1
เมื่อฉันใช้usermod -l <newname> -d /home/<newname> -m <oldname>สิ่งนี้จะทำให้ฉันมีข้อผิดพลาดusermod: user oldusername is currently used by process 3170และถ้าฉันฆ่ากระบวนการยังคงให้ฉันข้อผิดพลาดเดียวกัน ใช้อูบุนตู 13.10
Waqas

4
อย่าทำอย่างนี้ถ้าไดเรกทอรีที่บ้านของคุณถูกเข้ารหัส !!!! ฉันทำตามขั้นตอนนี้และส่งให้ฉันนั่งอย่างบ้าคลั่ง 2 ชั่วโมง ... วิธีเดียวที่จะกู้คืนได้คือทำตามขั้นตอนนี้อีกครั้งและใส่ชื่อเดิม (ไม่ชอบ) กลับมาปัญหาที่คุณจะมีคือ "ไม่สามารถ chdir เข้าสู่ภูเขา จุด "
Mike

เหตุใดเราไม่สามารถนำทางไปยัง /usr/share/applications/users.desktop >> คลิกที่ชื่อผู้ใช้ที่จะเปลี่ยน >> คลิกที่เปลี่ยนชื่อผู้ใช้ >> เปลี่ยนชื่อ >> คลิกที่ตกลง ฉันคิดว่านี่เป็นวิธีที่ง่ายที่สุดในการเปลี่ยนชื่อผู้ใช้ใช่ไหม
อานันท์

9

บน Ubuntu 13.10, 14.04, 16.04:

  1. คลิกที่ไอคอน "การตั้งค่าระบบ"
  2. คลิกที่ "บัญชีผู้ใช้"
  3. บัญชีผู้ดูแลระบบของคุณควรแสดงขึ้นมา
  4. คลิกที่ปุ่ม "ปลดล็อก"
  5. ป้อนรหัสผ่านผู้ใช้ตามที่ร้องขอเพื่ออนุญาตการเปลี่ยนแปลงบัญชีของคุณ
  6. เมื่อปลดล็อคแล้วคุณสามารถคลิกที่ชื่อผู้ใช้เก่าที่คุณต้องการเปลี่ยนและพิมพ์ชื่อผู้ใช้ใหม่เพื่อแทนที่
  7. เมื่อคุณพิมพ์ชื่อใหม่ให้คลิกที่ปุ่ม "ล็อค" เพื่อทำการเปลี่ยนแปลงอย่างถาวร
  8. รีสตาร์ท Ubuntu

3
นี่ไม่ได้เปลี่ยนชื่อผู้ใช้สำหรับฉันเพียงแค่ชื่อ ชื่อผู้ใช้เก่ายังคงปรากฏในเทอร์มินัลและเป็นโฮมไดเรกทอรีและกลุ่ม (แม้หลังจากรีบูตเครื่อง)
DougC

3

เมื่อได้รับusermod: can't change /etc/passwordเพียงแค่เรียกใช้คำสั่งต่อไปนี้:

ในคอนโซลการกู้คืนรากรัน:

mount -o remount,rw /

จากนั้นรันใหม่อีกครั้ง:

usermod -l <newname> -d /home/<newname> -m <oldname>

เหตุใดเราไม่สามารถนำทางไปยัง /usr/share/applications/users.desktop >> คลิกที่ชื่อผู้ใช้ที่จะเปลี่ยน >> คลิกที่เปลี่ยนชื่อผู้ใช้ >> เปลี่ยนชื่อ >> คลิกที่ตกลง ฉันคิดว่านี่เป็นวิธีที่ง่ายที่สุดในการเปลี่ยนชื่อผู้ใช้ใช่ไหม
อานันท์

1

คำตอบที่แสดงไว้ที่นี่โดย @ karthick87 ทำงานได้อย่างสมบูรณ์แบบ แต่นี่คือสิ่งที่ฉันจะทำเพื่อความปลอดภัยและหลีกเลี่ยงข้อบกพร่องทั้งหมด:

  1. สร้างบัญชี / ผู้ใช้แยกต่างหากและตรวจสอบให้แน่ใจว่าความสามารถในการรูทบัญชี / ผู้ใช้หรือการเข้าสู่ระบบเป็นผู้ใช้ที่สามารถรูทใด ๆ
  2. ออกจากระบบด้วยบัญชีปัจจุบันแล้วเข้าสู่ระบบด้วยบัญชีที่กล่าวถึงในขั้นตอนที่ 1
  3. ฆ่ากระบวนการทั้งหมดของผู้ใช้ก่อนหน้านี้
  4. ตอนนี้ทำตามขั้นตอนที่กล่าวถึงโดย @ karthick87 และเปลี่ยนชื่อผู้ใช้และยังเป็นเจ้าของไดเรกทอรีบ้าน
  5. จากนั้นทำตามคำตอบของ @Sriraj Hebbar เพื่อเปลี่ยนชื่อกลุ่ม
  6. ออกจากระบบด้วยผู้ใช้สำรองและเข้าสู่ระบบด้วยผู้ใช้ของคุณ หากคุณสร้างผู้ใช้เพิ่มเติมให้ลบมัน

0

เมื่อคุณทำusermod -l <newname> -d /home/<newname> -m <oldname>คุณจะได้รับ useradd: can't change /etc/passwdข้อความแสดงข้อผิดพลาดเพื่อหลีกเลี่ยงสิ่งนี้เพียงเพิ่มsudo --ไปยังคำสั่งด้านบนเช่น

sudo -- usermod -l <newname> -d /home/<newname> -m <oldname>

และ

sudo --  groupmod -n <newgroup> <oldgroup>

-3

พีซีบางเครื่องไม่มีusermodแอพคุณจึงสามารถทำได้ด้วยตนเอง เมื่อรูทเปิด/etc/passwdให้แก้ไข:

sudo vim /etc/passwd

และเปลี่ยนชื่อผู้ใช้ที่จุดเริ่มต้นของบรรทัด:

user:x:500:501:username:home/user:/bin/bash

ไปที่:

newuser:x:500:501:username:home/user:/bin/bash

ถ้าคุณทำงานของ root เพียงเข้าสู่ระบบและถ้าคุณได้เข้าสู่userระบบออกจากระบบและ relogin


ฉันลองวิธีนี้ (ก่อนที่ฉันจะค้นพบusermodคำสั่ง) และรหัสผ่านของผู้ใช้จะไม่ได้รับการยอมรับอีกต่อไป
Ben Voigt

@BenVoigt ไม่ทุกชิ้นมี usermod
МалъСкрылевъ

3
มันเป็นอูบุนตู! ถ้ามันไม่ได้มีusermodการติดตั้งเสียมันเป็นส่วนหนึ่งของpasswdแพคเกจซึ่งเป็นที่ต้องการ
Auspex
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.