มีผู้ใช้เพียงคนเดียวในระบบของฉัน ฉันจะเปลี่ยน ID ผู้ใช้จากค่าเริ่มต้น 1,000 ได้อย่างไร
หากมีขั้นตอนเพิ่มเติมที่จำเป็นในการหลีกเลี่ยงการทำลายกระบวนการล็อกอินในการติดตั้งเดสก์ท็อปทั่วไปสิ่งเหล่านั้นควรรวมอยู่ในคำตอบ
มีผู้ใช้เพียงคนเดียวในระบบของฉัน ฉันจะเปลี่ยน ID ผู้ใช้จากค่าเริ่มต้น 1,000 ได้อย่างไร
หากมีขั้นตอนเพิ่มเติมที่จำเป็นในการหลีกเลี่ยงการทำลายกระบวนการล็อกอินในการติดตั้งเดสก์ท็อปทั่วไปสิ่งเหล่านั้นควรรวมอยู่ในคำตอบ
คำตอบ:
ปัญหาคือว่าอย่างที่คุณพูดถึงคุณไม่สามารถเปลี่ยน UID ของผู้ใช้เมื่อมันเข้าสู่ระบบในเซสชั่น คุณต้องใช้บัญชีผู้ใช้อื่นเพื่อดำเนินการต่อ
แต่คุณไม่จำเป็นต้องสร้างบัญชีผู้ใช้ใหม่โปรโมตเป็นผู้ดูแลระบบออกจากระบบลงชื่อเข้าใช้บัญชีผู้ดูแลระบบใหม่เปลี่ยน UID ของบัญชีหลักออกจากระบบลงชื่อเข้าใช้บัญชีหลักของคุณแล้วลบผู้ใช้ผู้ดูแลระบบใหม่ เพียงเปลี่ยน UID ของคุณ ;)
คุณสามารถบูตเข้าสู่โหมดการกู้คืน (เป็นตัวเลือกที่ปรากฏขึ้นเมื่อคุณเปิดเครื่องคอมพิวเตอร์หรือกด shift ค้างไว้หลังจากข้อความ BIOS เสร็จสมบูรณ์ใช้งานESCบนเครื่อง Dell ที่ใช้ OEM-Ubuntu) สิ่งนี้จะบันทึกคุณในเซสชันรูท การเข้าสู่ระบบใน root และไม่ใช่บัญชีผู้ใช้ปกติของคุณคุณจะสามารถแก้ไข UID ของคุณได้
เนื่องจากโหมดการกู้คืนใช้งานได้เฉพาะในอินเตอร์เฟสบรรทัดคำสั่งเมื่อเข้าสู่เซสชันรูทคุณจะต้อง:
ใช้คำแนะนำ BubbaJ เพื่อ remount รากของระบบแฟ้มในโหมดอ่านเขียนmount -o remount,rw /
:
ใช้คำสั่งหลุยส์อัลบาของusermod -u NEW_UID your_username
:
reboot
) เพื่อให้คุณสามารถบูตในโหมดปกติusermod -u NEW_UID your_username
และfind / -uid 1000 -exec chown -h 5000 '{}' \+
รีบูตนำไปสู่การเข้าสู่ระบบ GUI เดาเซสชั่นเท่านั้น
usermod: user user_name is currently used by process 1118
@Alexandre P.
คุณสามารถเปลี่ยนได้ใน/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 {} +
sudo find / -xdev -uid 1000 -exec chown 5000 '{}' \+
อย่างอื่นอย่างใดอย่างหนึ่งจะรวมถึงข้อมูลที่ติดตั้ง (ใน/mnt
ซึ่งอาจจะเป็นที่ไม่พึงประสงค์) และไฟล์ที่คุณดีกว่าไม่ยุ่งกับในและ/proc
/dev
ดูโพสต์นี้
โซลูชันที่สมบูรณ์โดยใช้ @AlexandreP และ @ddeimeke + เอกสารอย่างเป็นทางการ ไม่จำเป็นต้องรีบูตเครื่อง
นโยบาย Debian / Ubuntu คือว่าถ้ามีผู้ใช้jim
ด้วย ID ผู้ใช้1001
นอกจากนี้ยังมีกลุ่มjim
ที่มี 1001
ID โซลูชันนี้จะอัปเดต ID กลุ่มเหล่านั้นด้วย
sudo passwd root
ล็อกอินด้วยรูทและรันสิ่งนี้ด้วยชื่อผู้ใช้และ 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
$username
sudo passwd -dl root
sudo setfacl -m "u:<NEWUID>:r-x" /media/<USERNAME> sudo setfacl -x "u:<OLDUID>" /media/<USERNAME>
หากคุณไปที่คอนโซลและประเภท: usermod --help
คุณจะได้รับหนึ่งในพารามิเตอร์ที่บอกว่า:
-u, --uid UID UID ใหม่สำหรับบัญชีผู้ใช้
ดังนั้นหากคุณต้องการเปลี่ยน UID สำหรับผู้ใช้ cyrex ให้ทำดังนี้
usermod -u 1000 cyrex
ที่จะเปลี่ยน uid สำหรับ cyrex จากค่าใด ๆ ที่เคยมีมาก่อนเป็น 1,000
หากคุณต้องการทำสิ่งนี้ด้วยสายตาให้ทำดังนี้
ไปที่
ระบบ -> การบริหาร -> ผู้ใช้และกลุ่ม
เลือกตัวคุณเองจากรายการและคลิกที่การตั้งค่าขั้นสูง
โพสต์อยู่ท้ายหน้าต่าง
ด้วย KDE: ในเมนูเปลี่ยนการตั้งค่าผู้ใช้ขั้นสูง:
การเปลี่ยนจากผู้ใช้รายอื่นไม่สามารถใช้งาน 1,000 ซึ่งเป็นผู้ใช้เริ่มต้น
คุณต้องทำด้วยตัวเอง - ประสบการณ์ของฉัน
ก่อนอื่นคุณต้องเข้าสู่ระบบในฐานะ 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
ฉันทำตามคำแนะนำของ ddeimekeพร้อมกับการเปลี่ยนแปลงต่อไปนี้:
sudo su
/etc/shadow
ฉันได้เห็นมันกล่าวถึงในคำตอบอื่น ๆ root
ที่คุณควรจะบูตเพื่อการกู้คืนหรือเข้าสู่ระบบเป็น Mine ติดตั้ง Ubuntu 14 ใหม่ดังนั้นฉันยินดีที่จะทดสอบว่ามันจะทำงานได้โดยไม่ต้องเข้าสู่ระบบroot
หรือไม่ นอกจากนี้ฉันกำลังทำสิ่งนี้บนอินสแตนซ์ EC2 ผ่าน SSH