วิธีที่เหมาะสมในการเปลี่ยนชื่อผู้ใช้ใน Ubuntu หรือ linux ใด ๆ


26

ฉันใช้ Ubuntu 12.04 และทำการปรับแต่งบางอย่าง ฉันจะทำให้เป็น iso ใหม่ซึ่งปรับแต่ง Ubuntu

สิ่งที่ฉันต้องการถามคือฉันจะเปลี่ยนชื่อผู้ใช้ได้อย่างไร มีการกำหนดค่ามากมายในโฟลเดอร์บ้านปัจจุบันของฉัน ดังนั้นฉันไม่ต้องการยุ่งกับการเปลี่ยนชื่อผู้ใช้

ดังนั้นมีแนวปฏิบัติหรือเวิร์กโฟลว์ที่ดีที่สุดในการทำเช่นนั้น


โฮมไดเร็กตอรี่ของคุณมักถูกสร้างด้วยชื่อผู้ใช้ของคุณ, แต่คุณสามารถเปลี่ยนชื่อผู้ใช้โดยไม่ต้องเปลี่ยนไดเร็กตอรี่โฮมด้วยการเปลี่ยนองค์ประกอบแรกของรายการใน / etc / passwd และ / etc / shadow. ตรวจสอบให้แน่ใจว่าคุณสามารถเข้าสู่ระบบในฐานะรูท (ไม่ใช่เพียงแค่ sudo จากชื่อผู้ใช้ของคุณ) ในกรณีที่คุณทำผิดพลาด
Anthon

ถ้าฉันต้องการเปลี่ยนชื่อโฮมไดเร็กตอรี่? และความหมายอะไรกันแน่โดยองค์ประกอบในกลุ่มแรก?
CorpusCallosum

คำตอบ:


28

จริงๆวิธีการที่เหมาะสม? สมมติว่าคุณต้องการเปลี่ยนผู้ใช้ 'ปีเตอร์' เป็น 'พอล'

groupadd paul
usermod -d /home/paul -m -g paul -l paul peter

สิ่งนี้จะเปลี่ยนชื่อกลุ่มโฮมไดเร็กตอรี่และความเป็นเจ้าของและกลุ่มของไดเรคทอรี่นั้นเป็นชื่อใหม่พร้อมกับไฟล์ทั้งหมด คุณท้ายด้วยผู้ใช้ที่แยกไม่ออกจากการถูกสร้างขึ้นเป็น 'paul'

อีกวิธีหนึ่งคือแก้ไขฟิลด์แรกของรายการของ peter ใน/etc/passwdและ/etc/shadowไฟล์ จากนั้นเปลี่ยนการปรากฏของ 'peter' เป็น 'paul' /etc/groupทุกครั้ง แล้วเปลี่ยนชื่อไดเรกทอรีบ้านจากไป/home/peter /home/paulจากนั้นchown -R paul /home/peterจะได้รับการเป็นเจ้าของและกลุ่มของไดเรกทอรีและไฟล์ทั้งหมดและ dirs ภายใต้มันจะมีคนใหม่


3
ไม่จำเป็นต้อง chown ถ้าคุณแก้ไข / etc / {passwd, shadow, group} - เจ้าของร้านค้า inode & กลุ่มตัวเลข
Graham Nicholls

5

ฉันจะแนะนำไม่พยายามเปลี่ยนชื่อผู้ใช้ /home/<username>นี้จะกระทำโดยทั่วไปกับปัญหาเมื่อชื่อของผู้ใช้มีการอ้างอิงแบบคงที่ในแฟ้มการกำหนดค่าในรูปแบบของไดเรกทอรีบ้านของผู้ที่ สิ่งเหล่านี้แทบไม่เคยเขียนด้วยวิธีทั่วไปดังนั้นจึงเป็นการดีที่สุดที่จะสร้างชื่อผู้ใช้ใหม่จากนั้นโอนย้ายไฟล์และข้อมูลของผู้ใช้ไปยังบัญชีใหม่


1
ขอบคุณสำหรับความคิดเห็น ฉันสร้างผู้ใช้ใหม่และเปลี่ยน userid / group และโฮมไดเร็กตอรี่เกี่ยวกับอันเก่า ดูเหมือนว่าทุกอย่างทำงานได้ดี คุณคิดว่าวิธีนี้อาจทำให้เกิดปัญหาได้หรือไม่?
CorpusCallosum

3

ลองใช้คำสั่งusermod

exec sudo su
usermod --login newname oldname

เพียงทำ 'sudo ทุกอย่างที่คุณกำลังจะทำ' การทำ sudo su จะไม่บันทึกคำสั่งอย่างถูกต้อง
Keith Twombley

3

คุณสามารถเปลี่ยนได้ ดูฉันจะเปลี่ยนชื่อผู้ใช้ของฉันได้อย่างไร บน AskUbuntu คำแนะนำเหล่านั้นใช้ได้ดีสำหรับฉัน เพื่อรักษาการกำหนดค่าของคุณเพียงแค่สร้าง symlink สำหรับไดเรกทอรีบ้านเก่าของคุณดังที่อธิบายไว้ในคำตอบของคำถามนั้น


3

ใช้ usodod เพื่อเปลี่ยนชื่อผู้ใช้และไดเรกทอรีบ้าน เปลี่ยนผู้ใช้ peter เป็น paul:

usermod -l paul peter
grep paul /etc/passwd /etc/shadow       # check

เปลี่ยนโฮมไดเร็กตอรี่และย้ายทุกอย่างไปที่นั่น (สร้างถ้าจำเป็น)

usermod -m -d /home/paul paul
grep paul /etc/passwd               # check

เปลี่ยน ชื่อกลุ่มแต่อย่าใช้ usodod เพราะคุณต้องสร้างกลุ่มอื่นก่อน (เช่น GID 1001) และถึงแม้ว่ามันจะอัปเดต GID สำหรับทุกอย่างภายในไดเรกทอรี $ HOME คุณจะต้องค้นหาและเปลี่ยน ไฟล์และไดเรกทอรีอื่น ๆ ที่มีความเป็นเจ้าของกลุ่มเก่า ให้เปลี่ยนชื่อกลุ่มด้วยตนเองแทน

nano /etc/group

และการเปลี่ยนแปลง

peter:x:1000:

ไปยัง

paul:x:1000:

คุณจะต้องเปลี่ยนชื่อไฟล์ที่ใช้โดย cron, at และบริการอื่น ๆที่ใช้ชื่อผู้ใช้แทน UID ใช้

find /var -name "*peter*"

เพื่อค้นหาไฟล์เหล่านี้

คุณจะต้องเปลี่ยน ไฟล์ปรับแต่งที่ใช้โดยบริการบางอย่างเช่นคุณจัดการแอปพลิเคชันเมล

สุดท้าย สคริปต์ที่ใช้ "/ home / peter /" จะต้องได้รับการแก้ไข เปลี่ยนการเกิดขึ้นของ "/ home / peter /" เป็น "$ HOME"

มันไม่ได้เป็นงานที่ต้องเปลี่ยนข้อมูลประจำตัวของผู้ใช้ แต่คุณต้องทำอย่างละเอียด


เพิ่มขึ้นเพราะนี่เป็นวิธีการเดียวกับที่ฉันใช้ (ด้วยเหตุผลเดียวกันกับการรักษา GID) BTW คุณสามารถรวมสองusermodคำสั่งเป็นหนึ่งเดียวและคุณควรจำไว้ว่าต้องแก้ไข/etc/gshadowพร้อมกับ/etc/group; สองของพวกเขาสามารถเปลี่ยนแปลงได้ด้วย GNU sed: sudo sed -i 's/oldname/newname/g' /etc/{group,gshadow}- sudo groupmod -n newname oldnameหรือดีกว่ายังคงอยู่กับ ทำได้ดีมากสำหรับการเน้น gotchas อื่น ๆ เช่นต้องเปลี่ยนชื่อของ crontab ของผู้ใช้ด้วยตนเอง (ถ้ามี)
Anthony G - ความยุติธรรมสำหรับโมนิก้า

ภาคผนวกด่วนสำหรับสิ่งนี้ ... คุณไม่สามารถเข้าสู่ระบบในขณะที่ทำ สร้างผู้ใช้ temp ใหม่ที่เป็นส่วนหนึ่งของกลุ่ม sudoers เข้าสู่ระบบด้วยทำการเปลี่ยนแปลงออกจากระบบใหม่จาก accound temp ใหม่เข้าสู่ระบบที่เปลี่ยนชื่อแล้วลบบัญชี temp
Janus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.