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


49

มีผู้ใช้เพียงคนเดียวในระบบของฉัน ฉันจะเปลี่ยน ID ผู้ใช้จากค่าเริ่มต้น 1,000 ได้อย่างไร

หากมีขั้นตอนเพิ่มเติมที่จำเป็นในการหลีกเลี่ยงการทำลายกระบวนการล็อกอินในการติดตั้งเดสก์ท็อปทั่วไปสิ่งเหล่านั้นควรรวมอยู่ในคำตอบ


5
จากความอยากรู้สาเหตุของการเปลี่ยน ID ผู้ใช้คืออะไร
Olivier Lalonde

14
หากคุณแลกเปลี่ยนข้อมูลกับระบบอื่น ๆ ผ่าน NFS หรือเพียงวิธีคัดลอกที่เก็บรักษา UID ไว้จะช่วยได้ถ้าคุณใช้ UID เดียวกันสำหรับชื่อผู้ใช้เดียวกันในระบบ
João Pinto

Joãoทำให้ถูกต้อง โดยเฉพาะอย่างยิ่งฉันหวังว่าจะจับคู่ UID กับผู้ใช้ใน Mac OS X เพื่อให้ระบบไฟล์ที่ใช้ร่วมกันมีสิทธิ์ที่ต้องการในระบบปฏิบัติการ
ændrük

1
เวอร์ชันปัจจุบันของ Nethack (3.6.0) บันทึกเกมรวมถึง uid ปัจจุบันในชื่อไฟล์ หากคุณต้องการซิงค์เกมบันทึกระหว่างเครื่องคุณต้องจับคู่ uids (การใช้ symlink นั้นใช้ไม่ได้)
Jonathan Hartley

คำตอบ:


27

ปัญหาคือว่าอย่างที่คุณพูดถึงคุณไม่สามารถเปลี่ยน UID ของผู้ใช้เมื่อมันเข้าสู่ระบบในเซสชั่น คุณต้องใช้บัญชีผู้ใช้อื่นเพื่อดำเนินการต่อ

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

คุณสามารถบูตเข้าสู่โหมดการกู้คืน (เป็นตัวเลือกที่ปรากฏขึ้นเมื่อคุณเปิดเครื่องคอมพิวเตอร์หรือกด shift ค้างไว้หลังจากข้อความ BIOS เสร็จสมบูรณ์ใช้งานESCบนเครื่อง Dell ที่ใช้ OEM-Ubuntu) สิ่งนี้จะบันทึกคุณในเซสชันรูท การเข้าสู่ระบบใน root และไม่ใช่บัญชีผู้ใช้ปกติของคุณคุณจะสามารถแก้ไข UID ของคุณได้

เนื่องจากโหมดการกู้คืนใช้งานได้เฉพาะในอินเตอร์เฟสบรรทัดคำสั่งเมื่อเข้าสู่เซสชันรูทคุณจะต้อง:

  1. ใช้คำแนะนำ BubbaJ เพื่อ remount รากของระบบแฟ้มในโหมดอ่านเขียนmount -o remount,rw / :

  2. ใช้คำสั่งหลุยส์อัลบาของusermod -u NEW_UID your_username :

  3. ทำตามคำแนะนำของ ddeimekeเพื่ออัปเดตการอนุญาตไฟล์
  4. จากนั้นบูตคอมพิวเตอร์ใหม่ ( reboot) เพื่อให้คุณสามารถบูตในโหมดปกติ

1
ใช้งานไม่ได้กับ Ubuntu 14.04 หลังจากทำusermod -u NEW_UID your_usernameและfind / -uid 1000 -exec chown -h 5000 '{}' \+รีบูตนำไปสู่การเข้าสู่ระบบ GUI เดาเซสชั่นเท่านั้น
Kay

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

คุณอาจต้องการตรวจสอบ/etc/login.defsและ/etc/adduser.confไฟล์ของคุณหากคุณเปลี่ยน uid ของคุณนอกเหนือจากนโยบายที่ให้ไว้ในไฟล์การกำหนดค่าเหล่านั้น ผู้ใช้ที่อยู่นอกขีด จำกัด ของนโยบายจะไม่แสดงในลูปการเข้าสู่ระบบ แต่คุณสามารถเปลี่ยนนโยบายได้ ดูคำตอบ
K Markey

usermod: user user_name is currently used by process 1118 @Alexandre P.
alper

54

คุณสามารถเปลี่ยนได้ใน/etc/passwd, /etc/groupและ/etc/shadowหรือคุณใช้ possibilties ที่แนะนำข้างต้น แต่ที่สำคัญที่สุด - คุณต้องเปลี่ยนความเป็นเจ้าของไฟล์ทั้งหมดที่เป็นของผู้ใช้

ตัวอย่างเช่นหาก ID ผู้ใช้เก่าคือ 1,000 และใหม่คือ 5000:

find / -uid 1000 -exec chown -h 5000 {} +

และเช่นเดียวกันสำหรับรหัสกลุ่ม (หากคุณเปลี่ยนเช่นกัน)

find / -gid 1000 -exec chgrp -h 5000 {} +

8
นี่เป็นจุดสำคัญจริงๆ มีหลายสิ่งที่จะพังถ้าคุณทำตามเทคนิคที่ให้ไว้ในคำตอบอื่น ๆ โดยไม่ทำเช่นนี้
poolie

4
ฉันเพียงแค่เรียนรู้หนึ่งที่ดีกว่าควรใช้sudo find / -xdev -uid 1000 -exec chown 5000 '{}' \+อย่างอื่นอย่างใดอย่างหนึ่งจะรวมถึงข้อมูลที่ติดตั้ง (ใน/mntซึ่งอาจจะเป็นที่ไม่พึงประสงค์) และไฟล์ที่คุณดีกว่าไม่ยุ่งกับในและ/proc /devดูโพสต์นี้
เซบาสเตียน

2
นี่ไม่ใช่ความคิดที่ดี ในกรณีที่ / home อยู่ในระบบไฟล์ที่แตกต่างกันคุณจะไม่เปลี่ยนความเป็นเจ้าของไฟล์ของคุณเอง
ddeimeke

ในคำตอบนี้คุณควรเปลี่ยนสิทธิ์ของกลุ่มและ uid ก่อนที่จะแก้ไขไฟล์ใน / etc ใช่ไหม?
MrDaniel

ไม่สำคัญว่าคุณจะทำอะไรก่อน
ddeimeke

25

โซลูชันที่สมบูรณ์โดยใช้ @AlexandreP และ @ddeimeke + เอกสารอย่างเป็นทางการ ไม่จำเป็นต้องรีบูตเครื่อง

นโยบาย Debian / Ubuntu คือว่าถ้ามีผู้ใช้jimด้วย ID ผู้ใช้1001นอกจากนี้ยังมีกลุ่มjimที่มี 1001ID โซลูชันนี้จะอัปเดต ID กลุ่มเหล่านั้นด้วย

  1. เปิดใช้งานบัญชีรูท :

    sudo passwd root
    
  2. หากผู้ใช้เข้าสู่ระบบแล้วออกจากระบบ (เช่นในอาคารเสมือน)
  3. ไปที่ VT1: Ctrl-Alt-F1
  4. ล็อกอินด้วยรูทและรันสิ่งนี้ด้วยชื่อผู้ใช้และ UID เก่า / ใหม่ที่ให้มา:

    # put the information we need in variables
    username=...
    old_uid=`id -u $username`  # looks up current (old) uid
    new_uid=...
    
    # update the user ID and group ID for $username
    usermod -u $new_uid $username
    groupmod -g $new_uid $username
    
    # update the file ownerships
    # NB: you cannot combine the next two chowns, or files where 
    # only the uid xor the gid matches won't be updated  
    chown -Rhc --from=$old_uid $new_uid /    # change the user IDs
    chown -Rhc --from=:$old_uid :$new_uid /  # change the group IDs
    
  5. ออกจากระบบ
  6. เข้าสู่ระบบในฐานะ $username
  7. ปิดใช้งานบัญชีรูท :

    sudo passwd -dl root
    

ไม่จำเป็นต้องเปิดใช้งานบัญชีรูท เพียงแค่ใช้โหมดการกู้คืน
ændrük

2
นี่ควรจะเร็วกว่าการรีบูตเครื่องซึ่งเป็นสาเหตุที่ฉันโพสต์ไว้
l0b0

3
ใน Ubuntu 14.04 และ 14.10 คุณต้องแก้ไขสิทธิ์ ACL ที่ขยายเพิ่มใน / media มิฉะนั้นการติดตั้งอัตโนมัติ (ใน Nautilus / Nemo) เป็นตัวแบ่งเนื่องจาก UID เก่ายังคงอยู่ sudo setfacl -m "u:<NEWUID>:r-x" /media/<USERNAME> sudo setfacl -x "u:<OLDUID>" /media/<USERNAME>
richud.com

สิ่งนี้ได้ผลเหมือนมนต์เสน่ห์สำหรับฉัน แต่ต้องเปลี่ยน uid เท่านั้น
chmike

การเปิดใช้งานบัญชีรากฟังดูง่ายขึ้น (และน่ากลัวน้อยกว่า) สำหรับฉันกว่าใช้โหมดการกู้คืน
Jonathan Hartley

7

หากคุณไปที่คอนโซลและประเภท: usermod --helpคุณจะได้รับหนึ่งในพารามิเตอร์ที่บอกว่า:

-u, --uid UID UID ใหม่สำหรับบัญชีผู้ใช้

ดังนั้นหากคุณต้องการเปลี่ยน UID สำหรับผู้ใช้ cyrex ให้ทำดังนี้

usermod -u 1000 cyrex

ที่จะเปลี่ยน uid สำหรับ cyrex จากค่าใด ๆ ที่เคยมีมาก่อนเป็น 1,000

หากคุณต้องการทำสิ่งนี้ด้วยสายตาให้ทำดังนี้

ไปที่

ระบบ -> การบริหาร -> ผู้ใช้และกลุ่ม

เลือกตัวคุณเองจากรายการและคลิกที่การตั้งค่าขั้นสูง

โพสต์อยู่ท้ายหน้าต่าง


1
ฉันลองวิธีกราฟิกที่คุณแนะนำ แต่มีข้อความแจ้งว่า "คุณไม่สามารถเปลี่ยน ID ผู้ใช้ในขณะที่ผู้ใช้ลงชื่อเข้าใช้" คุณทดสอบวิธีนี้แล้วหรือยัง?
ændrük

2
เฮ้นั่นเป็นเรื่องจริง ฉันลองใช้บัญชีอื่น คุณต้องเข้าสู่ระบบผ่านรูทหรือบัญชีผู้ดูแลระบบอื่น ๆ จากนั้นทำวิธีกราฟิก ขอโทษสำหรับสิ่งนั้น.
Luis Alvarado

2
  • ไปที่ระบบ >> การดูแลระบบ >> ผู้ใช้และกลุ่ม

ข้อความแสดงแทน

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

1
ฉันควรเพิกเฉยต่อคำเตือนในภาพหน้าจอของคุณ "คุณไม่สามารถเปลี่ยน ID ผู้ใช้ในขณะที่ผู้ใช้ลงชื่อเข้าใช้"
ændrük

คุณต้องเปลี่ยนจากบัญชีผู้ใช้อื่นเพื่อกำจัดคำเตือนนี้
karthick87

7
คำถามของฉันคือ "ฉันจะเปลี่ยน ID ผู้ใช้ของตัวเองได้อย่างไร" หากคุณต้องการคำตอบว่าฉันควรสร้างผู้ใช้ใหม่เพียงเพื่อแก้ไขค่านี้คุณควรแก้ไขคำตอบของคุณเพื่อระบุ
ændrük

0

ด้วย KDE: ในเมนูเปลี่ยนการตั้งค่าผู้ใช้ขั้นสูง:

การเปลี่ยนจากผู้ใช้รายอื่นไม่สามารถใช้งาน 1,000 ซึ่งเป็นผู้ใช้เริ่มต้น

คุณต้องทำด้วยตัวเอง - ประสบการณ์ของฉัน


0

ก่อนอื่นคุณต้องเข้าสู่ระบบในฐานะ root อย่างน้อยก็สักครู่ดังนั้นให้เราทำสิ่งนี้ให้เป็นไปได้:

sudo passwd root

รีบูต, ctrl + alt + f1 เพื่อสลับไปยังคอนโซลล็อกอินเป็น root ทำต่อไปนี้ (ความเป็นเจ้าของในบ้าน dir จะได้รับการดูแลโดยอัตโนมัติ):

groupmod --gid NEWGID username
usermod  --uid NEWUID username 

สำหรับไฟล์ของคุณในสถานที่อื่น ๆ นอกจาก dir บ้านของคุณไปที่:

sudo chown -R username:username /path/to/files

ลบและล็อค passwd ของ root หากคุณต้องการ (ฉันมักจะเก็บไว้):

passwd -dl root

0

ฉันทำตามคำแนะนำของ ddeimekeพร้อมกับการเปลี่ยนแปลงต่อไปนี้:

  1. ฉันไม่ได้ออกจากระบบและทำแทน sudo su
  2. ฉันไม่ได้สัมผัส /etc/shadow

ฉันได้เห็นมันกล่าวถึงในคำตอบอื่น ๆ rootที่คุณควรจะบูตเพื่อการกู้คืนหรือเข้าสู่ระบบเป็น Mine ติดตั้ง Ubuntu 14 ใหม่ดังนั้นฉันยินดีที่จะทดสอบว่ามันจะทำงานได้โดยไม่ต้องเข้าสู่ระบบrootหรือไม่ นอกจากนี้ฉันกำลังทำสิ่งนี้บนอินสแตนซ์ EC2 ผ่าน SSH

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