เราจะเปลี่ยนรหัสผ่านรูทได้อย่างไร


39

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


นี่เป็นคำถามที่พบบ่อยดูได้ที่askubuntu.com/questions/24006/ …
Archemar

ดูเพิ่มเติมที่: unix.stackexchange.com/a/168422/25985
goldilocks


คำตอบ:


63

นี่คือวิธีที่ฉันสามารถนึกถึงจากการล่วงล้ำน้อยที่สุดไปจนถึงการล่วงล้ำที่สุด

โดยไม่ต้องรีบูตเครื่อง

ด้วย sudo:ถ้าคุณมีsudoสิทธิ์ใช้passwdงานคุณสามารถทำได้:

sudo passwd root

ป้อนรหัสผ่านของคุณจากนั้นป้อนรหัสผ่านใหม่สำหรับรูทสองครั้ง เสร็จสิ้น

แก้ไขไฟล์ : งานนี้ในกรณีที่ไม่น่าที่คุณไม่ได้มีเต็มรูปแบบsudoการเข้าถึง แต่คุณทำ/etc/{passwd,shadow}มีการเข้าถึงการแก้ไข เปิด/etc/shadowทั้งที่มีหรือsudoedit /etc/shadow sudo $EDITOR /etc/shadowแทนที่ฟิลด์รหัสผ่านของรูท (อักขระสุ่มทั้งหมดระหว่างโคลอนที่สองและสาม:) ด้วยฟิลด์รหัสผ่านของผู้ใช้ของคุณเอง บันทึก ท้องถิ่นมีรหัสผ่านเดียวกันกับคุณ เข้าสู่ระบบและเปลี่ยนรหัสผ่านเป็นอย่างอื่น

สิ่งเหล่านี้เป็นสิ่งที่ง่าย

ต้องรีบูต

โหมดผู้ใช้คนเดียว : นี่เป็นเพียงการอธิบายโดย Renan มันทำงานได้ถ้าคุณสามารถไปที่ GRUB (หรือบูตโหลดเดอร์) และคุณสามารถแก้ไขบรรทัดคำสั่ง Linux ได้ มันไม่ทำงานถ้าคุณใช้ Debian, Ubuntu และอื่น ๆ การกำหนดค่าบูตโหลดเดอร์บางตัวต้องการรหัสผ่านในการทำเช่นนั้นและคุณต้องรู้ว่าต้องดำเนินการ โดยไม่ต้องกังวลใจเพิ่มเติม:

  1. Reboot
  2. ป้อนรหัสผ่านเวลาบูตหากมี
  3. เข้าสู่เมนูบูตเดอร์ของคุณ
  4. หากมีโหมดผู้ใช้เดี่ยวให้เลือก (Debian เรียกมันว่า 'โหมดการกู้คืน')
  5. ถ้าไม่ใช่และคุณเรียกใช้ด้วง:
    1. เน้นตัวเลือกการบูตปกติของคุณ
    2. กดeเพื่อเข้าสู่โหมดแก้ไข คุณอาจถูกขอรหัสผ่านด้วงที่นั่น
    3. ไฮไลต์บรรทัดที่เริ่มต้นด้วยหรือkernellinux
    4. eกด
    5. เพิ่มคำว่า 'เดี่ยว' ในตอนท้าย (อย่าลืมเตรียมพื้นที่!)
    6. กดEnterและบูต stanza ที่แก้ไข ด้วงบางคนใช้Ctrl- การใช้งานบางอย่างX bมันบอกว่าอันไหนมันอยู่ที่ด้านล่างของหน้าจอ

ระบบของคุณจะบู๊ตในโหมดผู้ใช้คนเดียว การแจกแจงบางอย่างจะไม่ขอรหัสผ่านรูทของคุณ ณ จุดนี้ (Debian และ Debian-based ทำ) ตอนนี้คุณรูตแล้ว เปลี่ยนรหัสผ่านของคุณ:

mount / -o remount,rw
passwd # Enter your new password twice at the prompts
mount / -o remount,ro
sync # some people sync multiple times. Do what pleases you.
reboot

และrebootหรือถ้าคุณรู้ว่า runlevel ปกติของคุณพูดtelinit 2(หรืออะไรก็ตามที่มันเป็น)

แทนที่init : เผินๆคล้ายกับเคล็ดลับโหมดผู้ใช้คนเดียวด้วยคำแนะนำเดียวกันส่วนใหญ่ แต่ต้องใช้ความกล้าหาญมากขึ้นด้วยบรรทัดคำสั่ง คุณบูตเคอร์เนลของคุณดังกล่าวข้างต้น แต่แทนที่จะคุณเพิ่มsingle init=/bin/shนี้จะทำงาน/bin/shในสถานที่initและจะทำให้คุณมีมากเปลือกต้นด้วยสิ่งอำนวยความสะดวกเกือบจะไม่มี ณ จุดนี้เป้าหมายของคุณคือ:

  1. เมานด์วอลลุ่มเสียง
  2. รับpasswdทำงาน
  3. เปลี่ยนรหัสผ่านของคุณด้วยpasswdคำสั่ง

ขึ้นอยู่กับการตั้งค่าเฉพาะของคุณสิ่งเหล่านี้อาจไม่สำคัญ (เหมือนกับคำแนะนำสำหรับโหมดผู้ใช้คนเดียว) หรือไม่สำคัญมาก: การโหลดโมดูลการเริ่มต้นซอฟต์แวร์ RAID การเปิดไดรฟ์ข้อมูลที่เข้ารหัสเริ่ม LVM และอื่น ๆ หากไม่มีinitคุณจะไม่ได้ใช้dæmonsหรือกระบวนการอื่น ๆ แต่/bin/shรวมถึงลูก ๆ ของมันดังนั้นคุณจะสวยด้วยตัวคุณเอง คุณยังไม่มีการควบคุมงานดังนั้นจึงควรระวังสิ่งที่คุณพิมพ์ วางผิดที่หนึ่งcatและคุณอาจต้องรีบูตถ้าคุณไม่สามารถออกไปได้

Rescue Disk : อันนี้ง่าย บูตดิสก์ช่วยเหลือที่คุณเลือก เมานต์ระบบไฟล์รูทของคุณ กระบวนการขึ้นอยู่กับว่าเลเยอร์ของคุณมีลำดับชั้นอย่างไร

 # do some stuff to make your root volume available.
 # The rescue disk may, or may not do it automatically.
 mkdir /tmp/my-root
 mount /dev/$SOME_ROOT_DEV /tmp/my-root
 $EDITOR /tmp/my-root/etc/shadow
 # Follow the `/etc/shadow` editing instructions near the top
 cd /
 umount /tmp/my-root
 reboot

เห็นได้ชัดว่า$SOME_ROOT_DEVมีชื่ออุปกรณ์บล็อกใดถูกกำหนดให้กับระบบไฟล์รูทของคุณโดยดิสก์การช่วยเหลือและ$EDITORเป็นตัวแก้ไขที่คุณโปรดปราน (ซึ่งอาจต้องviอยู่ในระบบช่วยเหลือ) หลังจากนั้นrebootอนุญาตให้เครื่องบูตตามปกติ รหัสผ่านของรูทจะเป็นของผู้ใช้ของคุณเอง เข้าสู่ระบบในฐานะ root และเปลี่ยนทันที

ทางอื่น

เห็นได้ชัดว่ามีการเปลี่ยนแปลงมากมายที่กล่าวมา พวกเขาทั้งหมดต้มลงไปสองขั้นตอน:

  1. รับสิทธิ์การเข้าถึงคอมพิวเตอร์ของคุณ (catch-22 - และเคล็ดลับที่แท้จริง)
  2. เปลี่ยนรหัสผ่านของรูท

ยังไงก็ตามที่จะทำสิ่งนี้จากระยะไกล? สมมติว่า SSH ปิดตัวลง
CMCDragonkai

1
หากไม่มี SSH (หรือสมมติว่าวิธีอื่นใดที่ไม่ปลอดภัยแบบ scently เช่น rsh หรือ telnet) คุณจะไม่สามารถเข้าถึงเครื่องจากระยะไกลดังนั้นคุณจึงไม่สามารถเปลี่ยนรหัสผ่านได้ นอกจากคอมพิวเตอร์เป้าหมายจะมีปัญหาที่ทราบแล้วว่าสามารถใช้ประโยชน์จากระยะไกลได้ซึ่งจะช่วยให้คุณสามารถวางเปลือกหอยได้ ความคิดทำให้ฉันกลัวมากกว่า telnet daemon ที่กำลังทำอยู่ :)
Alexios

ดังนั้นฉันจะต้องเทเลพอร์ตทางกายภาพเพื่อแก้ไขหรือไม่
CMCDragonkai

WRT "เปลี่ยนรหัสผ่านของรูท" ดูที่นี่: unix.stackexchange.com/a/168422/25985
goldilocks

7

ฉันคิดว่ามันน่าจะใช้ได้กับ distro ใด ๆ

หากคุณสามารถเข้าถึงพาร์ติชันรูทจากระบบอื่นเช่นซีดีสดคุณสามารถแก้ไขได้จากที่/etc/shadowนั่น chmod u+w shadowแรกที่คุณต้อง ค้นหารายการrootอาจเป็นรายการแรกและมีลักษณะดังนี้:

root:$6$asdG0[..etc...]ae/:15666:0:99999:7:::

ลบทุกอย่างระหว่างโคลอนสองตัวแรกดังนั้นคุณจะได้:

root::15666:0:99999:7:::

chmod u-w shadowแล้วก็ ตอนนี้คุณสามารถรีบูตระบบและรูทจะไม่มีรหัสผ่าน คุณสามารถพิมพ์rootที่พรอมต์การเข้าสู่ระบบและจะไม่ถามใคร จากนั้นคุณสามารถใช้passwdเพื่อตั้งค่าหนึ่ง

ที่จะต้องระมัดระวังเป็นพิเศษ:

  • สร้างสำเนาสำรองของ/etc/shadowแรก
  • อย่าลงชื่อเข้าใช้ด้วยชื่ออื่นยกเว้นรูทจนกว่าคุณจะตั้งรหัสผ่านใหม่ สิ่งนี้ไม่สำคัญ แต่จะป้องกันความเป็นไปได้ทางทฤษฎีของมัลแวร์ที่ไม่มีสิทธิประโยชน์ทำให้เกิดแมรี่พาส ("เฮ้บางทีอาจไม่มีรหัสผ่านรูท ... ") ค่อนข้าง IMO ลึกซึ้ง

นั่นจะใช้ได้ แต่เด็กมันทำให้ฉัน * cringe * เพื่อลบรหัสผ่านในบัญชีรูท ฉันใช้มัน Ubuntu ไม่ได้วางคุณลงในรูตเชลล์ใน runlevel 1 หรือความคิดที่ดีกว่านั้นคือการทำงานpasswdในสภาพแวดล้อม chroot จากไลฟ์ซีดีหรือไม่?
SailorCire

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

@SailorCire ^^^
goldilocks

ฉันสงสัยมากเกี่ยวกับความเป็นไปได้ของมัลแวร์เช่นกัน อย่างไรก็ตามความคิดที่อยู่เบื้องหลังสิ่งที่ฉันแนะนำคือมันห้าม "โอ้ฉันจะเปลี่ยนมันในภายหลังเพราะมันใช้งานได้ในขณะนี้" ประเภทของความคิดที่พวกเราหลายคนตกอยู่ใน
SailorCire

นอกจากนี้คุณยังสามารถอ้างถึงคำตอบนี้สำหรับวิธีการสร้างรหัสผ่านด้วยตนเองสำหรับ/etc/shadow
NullUser

4

เมื่อพิจารณาจากแท็กที่ฉันคิดว่าคุณกำลังใช้ RHEL แต่โซลูชันนี้ควรใช้งานได้ดีสำหรับ distros ทั้งหมด

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

  1. eเข้าสู่เมนูด้วงและกด
  2. เลือกบรรทัดที่ขึ้นต้นด้วยkernelกดeอีกครั้ง
  3. singleที่ปลายของสายนี้ที่ใส่ จากนั้นกดENTERและboot จากมัน

ในที่สุดคุณจะได้รับพรอมต์ซึ่งคุณสามารถพิมพ์passwd rootและเปลี่ยนรหัสผ่าน จากนั้นพิมพ์rebootเพื่อรีบูทระบบ


1
วิธีนี้จะใช้งานได้เฉพาะในกรณีที่คุณไม่มี boot passwd
pradeepchhetri

1
และถ้าคุณไม่ได้ใช้ / sbin / sulogin สำหรับเชลล์ผู้ใช้คนเดียว (มันจะพร้อมท์ให้ใส่รหัสผ่านของรูท)
James O'Gorman

หากคุณสามารถเข้าสู่ระบบไฟล์คุณสามารถแก้ไข/boot/grub/grub.confเพื่อลบรหัสผ่าน bootloader และ/etc/inittabเปลี่ยนเชลล์ผู้ใช้คนเดียวให้เป็นแบบ / bin / sh (cc @pradeepchhetri)
NullUser
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.