เมื่อพยายามที่จะเปลี่ยนชื่อผู้ใช้เทอร์มินัลบอกฉันว่าผู้ใช้กำลังถูกใช้โดยกระบวนการ


16

ฉันกำลังพยายามเปลี่ยนชื่อผู้ใช้ของฉันตามคำแนะนำที่นี่แต่หลังจากใช้คำสั่งต่อไปนี้:

CurrentName@HostName ~ $ sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName

เทอร์มินัลตอบกลับด้วย:

CurrentName@HostName ~ $ usermod: user CurrentName is currently used by process 2491

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

คำตอบ:


8

อ้างถึงman usermod:

CAVEATS
   You must make certain that the named user is not executing any 
   processes when this command is being executed
   if the user's numerical user ID, the user's name, or the user's home 
   directory is being changed.  usermod
   checks this on Linux, but only check if the user is logged in 
   according to utmp on other architectures.

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

นอกจากนี้ฉันทราบว่าคุณไม่ได้ใช้สิ่งนี้ในฐานะที่เป็นรูต เรียกใช้เป็นรูทหรือรันด้วย "sudo usermod"


3
หากคุณไม่สามารถฆ่ากระบวนการโดยไม่เริ่มต้นใหม่ให้รวมคำสั่งเช่นkill -9 23162 && sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName
Richard Frank

2
โปรแกรมusermodดูเหมือนว่าจะถูกทำลายโดยการออกแบบ หากการจัดการผู้ใช้เสร็จสิ้นในเซิร์ฟเวอร์ LDAP การเปลี่ยนแอ็ตทริบิวต์ผู้ใช้เป็นไปได้เสมอและไม่ขึ้นอยู่กับระบบที่รันอยู่ ฉันใช้ Ansible ซึ่งใช้usermodและระบบหลุมไม่น่าเชื่อถือเนื่องจากการเปลี่ยนแปลงถูกบล็อกโดยผู้ใช้ที่ลงชื่อเข้าใช้
ceving

1

ฉันคิดว่าคุณควรใช้คำสั่งกับผู้ใช้อื่น เข้าสู่ระบบด้วย root หรือผู้ใช้อื่นแล้วลองอีกครั้ง หากคุณอยู่ในหน้าต่าง x พร้อมกับผู้ใช้ที่คุณต้องการเปลี่ยนฟังดูสมเหตุสมผลว่าคำสั่งล้มเหลว


1

นี่เป็นปัญหาส่วนใหญ่ของ Ubutu ที่คุณไม่มีบัญชีรูทเพื่อเข้าสู่ระบบตั้งแต่แรก ดังนั้นสิ่งนี้จึงสร้างความขัดแย้ง: ฉันเป็นผู้ใช้ในกลุ่ม sudoer ฉันไม่สามารถเปลี่ยนรหัสของฉันเองได้

ไม่แน่ใจว่านี่เป็นทางออกที่ดีที่สุด ฉันแรกสร้างบัญชีปลอม foo เพิ่มสิ่งนี้ในรายการ sudo จากนั้นฉันลงชื่อเข้าใช้บัญชี foo และดำเนินการ usermod -g MYOWNGID mylogin


0

ฉันมีปัญหาเดียวกันโดยใช้ usermod มันแก้ไขโดยใช้พารามิเตอร์ -m ที่ย้ายเนื้อหาของไดเรกทอรีบ้านไปที่การแปลใหม่ ใช้ตัวเลือกนี้ร่วมกับ -d (แก้ไขไดเรกทอรีหลักของผู้ใช้ที่มีผู้ใช้)

ฉันแนะนำให้ดูคำสั่ง manermod


0

ลองขั้นตอนเหล่านี้:

  1. ตั้งรหัสผ่านสำหรับผู้ใช้รูท:

sudo passwd root

  1. รีบูต Ubuntu
  2. เข้าสู่ระบบเป็น "root" หลังจากบูทขึ้น -> สิ่งนี้จะทำให้อูบุนตูไม่สร้างกระบวนการสำหรับผู้ใช้ปัจจุบัน
  3. เปลี่ยนชื่อผู้ใช้

    usermod -l newuser -d / home / newuser -m olduser

  4. ตรวจสอบชื่อผู้ใช้ที่มีการเปลี่ยนแปลงโดยการตรวจสอบชื่อโฟลเดอร์ด้วยชื่อผู้ใช้ใหม่ใน / home directory

-1

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

หากดูเหมือนว่างานมากเกินไปคุณสามารถเปลี่ยนการเชื่อมโยงได้ที่: https://medium.com/@deltazero/linux-howto-rename-currently-operating-user-f8fae62db110

มันทำงานได้เช่นนี้:

# your new username
newuser=dave

# root-run these all at once
sudo su -c "\
  sed -i s/$USER/$newuser/g /etc/group \
  && sed -i s/$USER/$newuser/g /etc/shadow \
  && sed -i s/$USER/$newuser/g /etc/passwd \
  && mv /home/$USER/ /home/$newuser"

# exit & reconnect under new username
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.