เป็นไปได้ไหมที่จะเปลี่ยนชื่อบัญชีผู้ใช้ Unix?


49

ฉันติดตั้ง Ubuntu บนคอมพิวเตอร์ที่มีคนอื่นใช้อยู่ตอนนี้ ฉันเปลี่ยนชื่อบัญชีด้วยชื่อของเธอ แต่จะเปลี่ยนเฉพาะชื่อเต็มไม่ใช่ชื่อผู้ใช้ซึ่งยังคงแสดงอยู่ที่ด้านบนขวา (ในfast-user-switch-applet) มีคำสั่งให้เปลี่ยนชื่อบัญชีผู้ใช้ Unix หรือไม่?

ฉันคิดว่าจะสร้างบัญชีผู้ใช้ใหม่ด้วยชื่อใหม่แล้วคัดลอกทุกอย่างในบ้าน "เก่า" ไปที่บ้านของบัญชีใหม่ มันจะเพียงพอหรือไม่ แต่ฉันคิดว่าไฟล์จะมีสิทธิ์ของบัญชีเก่าหรือไม่ ฉันควรทำยังchown -R newuser ~ไงดี?

มีวิธีที่ง่ายกว่า / แนะนำให้ทำเช่นนี้?

คำตอบ:


52

ลอง

usermod --move-home --login <new-login-name> --home <new-home-dir> <old-login-name>

--move-homeตัวเลือกย้ายเนื้อหาไดเรกทอรีบ้านเก่าไปใหม่ได้รับจาก--homeตัวเลือกที่ถูกสร้างขึ้นถ้ามันไม่ได้อยู่แล้ว

หากคุณต้องการให้กลุ่มผู้ใช้หลักตรงกับnew-login-name, เพิ่ม--gid <new-login-name>ไปยังคำสั่งด้านบน แต่กลุ่มจะต้องมีอยู่ก่อน

ดูหน้าคนสำหรับข้อมูลเพิ่มเติม:

man usermod

ขอบคุณ! ฉันไม่รู้เกี่ยวกับคำสั่งนี้ :) อย่างไรก็ตามนั่นเป็นเพียงบัญชีเดียวในคอมพิวเตอร์เครื่องนี้และชายคนนี้บอกว่า: «คุณต้องทำให้แน่ใจว่าผู้ใช้ที่ระบุชื่อไม่ได้ดำเนินการกระบวนการใด ๆ เมื่อคำสั่งนี้จะถูกดำเนินการหากผู้ใช้ตัวเลข ID ผู้ใช้ชื่อผู้ใช้หรือ ไดเรกทอรีบ้านของผู้ใช้กำลังมีการเปลี่ยนแปลง usermod ตรวจสอบสิ่งนี้บน Linux แต่ตรวจสอบว่าผู้ใช้ล็อกอินตาม utmp บนสถาปัตยกรรมอื่นหรือไม่ »คุณจะแนะนำให้ใช้ไลฟ์ซีดีเพื่อทำสิ่งนี้หรือสร้างบัญชีชั่วคราวที่ฉันจะลบเมื่อมันเสร็จ?
Yann Dìnendal

2
เนื่องจากคุณใช้ Ubuntu และไม่สามารถเข้าสู่ระบบได้ในฐานะ root ฉันจะสร้างบัญชีอื่นที่เรียกว่าผู้ดูแลระบบที่คุณใช้สำหรับงานประเภทนี้ บัญชีชั่วคราวจะใช้งานได้เช่นกัน แต่คุณอาจเก็บไว้เนื่องจากคุณอาจทำสิ่งที่คล้ายกันในอนาคต
gvkv

3
ระวังให้ดีว่าusermod --homeจะต้องมีเส้นทางแบบเต็มเช่น/home/user.name- มิฉะนั้นจะสร้างไดเรกทอรีบ้านใหม่ภายในไดเรกทอรีการทำงานปัจจุบัน
feeela

นั่นจะไม่เปลี่ยนกลุ่ม!
Heanz

22

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

  • รายการผู้ใช้/etc/passwdและไฟล์ที่เกี่ยวข้อง (เช่น/etc/shadow, /etc/master.passwd)
  • รายการกลุ่มใน/etc/group(และ/etc/gshadow)
  • /etc/sudoersอาจจะเป็นรายการใน
  • กล่องจดหมายระบบโดยทั่วไปหรือ/var/mail/$USER/var/spool/mail/$USER
  • crontab โดยทั่วไป /var/spool/cron/crontabs/$USER
  • ในatงาน ( /var/spool/cron/atjobs/*)

โฮมไดเรกทอรีมีแนวโน้มที่จะปรากฏในสถานที่มากขึ้น แอ็พพลิเคชันจำนวนมากเขียนพา ธ สัมบูรณ์ในไฟล์จุดต่างๆ ถ้าคุณตัดสินใจที่จะเปลี่ยนชื่อไดเรกทอรีบ้านได้เป็นอย่างดี (ในขณะที่มีความต้องการที่ผู้ใช้ไม่มีaliceไดเรกทอรีบ้าน 's จะ/home/aliceมีจะเป็น/home/bobจะทำให้เกิดความสับสน) คุณจะต้องดูแลของคนเหล่านั้น การแทนที่ทั่วโลกจะใช้งานได้กับแอปพลิเคชันส่วนใหญ่ แต่ฉันไม่ได้สัญญา ถ้าเป็นไปได้ให้เก็บชื่อโฮมไดเร็กตอรี่เก่าไว้เป็นลิงก์สัญลักษณ์ไปยังไดเร็กทอรีที่ถูกเปลี่ยนชื่อ


4

นี่เป็นบทสรุปของคำสั่งที่ฉันใช้กับระบบ Debian:

groupadd NEW
usermod -l NEW -m -d /home/NEW -g NEW OLD
chfn -f "New Fullname" NEW
cd /home
ln -s NEW OLD

คำสั่งสองคำสั่งสุดท้ายสร้างลิงก์สัญลักษณ์จากชื่อของโฮมไดเร็กตอรี่เก่า ( / home / OLD ) ไปที่ชื่อใหม่ ( / home / NEW )


มีไว้groupaddเพื่ออะไร
Yann Dìnendal

2
แทนที่จะgroupaddผมคิดว่ามันอาจจะดีกว่าที่จะgroupmod -n NEW OLDหลีกเลี่ยงการเปลี่ยน GID อย่างน้อยใน Ubuntu กลุ่มที่มีชื่อเดียวกันกับผู้ใช้จะถูกตั้งค่าตามค่าเริ่มต้นดังนั้นใคร ๆ ก็อยากจะเปลี่ยนชื่อเช่นกัน
jamadagni

1

ทั้งหมดข้างต้นเป็นวิธีการที่สวยงาม แต่ทำไมไม่เพียงแค่สร้างผู้ใช้ใหม่คัดลอกเนื้อหาทั้งหมดของมันจากหน้าแรกและนั่นคือมันได้หรือไม่ แน่นอนหากเป็นเรื่องเกี่ยวกับบัญชีบริการ (แอปพลิเคชัน) อาจไม่ใช่วิธีปฏิบัติที่ดีที่สุด


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