หากเราไม่ทราบรหัสผ่านรูทและไม่สามารถเข้าถึงเครื่องได้เราจะเปลี่ยนรหัสผ่านรูทได้อย่างไร
หากเราไม่ทราบรหัสผ่านรูทและไม่สามารถเข้าถึงเครื่องได้เราจะเปลี่ยนรหัสผ่านรูทได้อย่างไร
คำตอบ:
นี่คือวิธีที่ฉันสามารถนึกถึงจากการล่วงล้ำน้อยที่สุดไปจนถึงการล่วงล้ำที่สุด
ด้วย sudo:ถ้าคุณมีsudoสิทธิ์ใช้passwdงานคุณสามารถทำได้:
sudo passwd root
ป้อนรหัสผ่านของคุณจากนั้นป้อนรหัสผ่านใหม่สำหรับรูทสองครั้ง เสร็จสิ้น
แก้ไขไฟล์ : งานนี้ในกรณีที่ไม่น่าที่คุณไม่ได้มีเต็มรูปแบบsudoการเข้าถึง แต่คุณทำ/etc/{passwd,shadow}มีการเข้าถึงการแก้ไข เปิด/etc/shadowทั้งที่มีหรือsudoedit /etc/shadow sudo $EDITOR /etc/shadowแทนที่ฟิลด์รหัสผ่านของรูท (อักขระสุ่มทั้งหมดระหว่างโคลอนที่สองและสาม:) ด้วยฟิลด์รหัสผ่านของผู้ใช้ของคุณเอง บันทึก ท้องถิ่นมีรหัสผ่านเดียวกันกับคุณ เข้าสู่ระบบและเปลี่ยนรหัสผ่านเป็นอย่างอื่น
สิ่งเหล่านี้เป็นสิ่งที่ง่าย
โหมดผู้ใช้คนเดียว : นี่เป็นเพียงการอธิบายโดย Renan มันทำงานได้ถ้าคุณสามารถไปที่ GRUB (หรือบูตโหลดเดอร์) และคุณสามารถแก้ไขบรรทัดคำสั่ง Linux ได้ มันไม่ทำงานถ้าคุณใช้ Debian, Ubuntu และอื่น ๆ การกำหนดค่าบูตโหลดเดอร์บางตัวต้องการรหัสผ่านในการทำเช่นนั้นและคุณต้องรู้ว่าต้องดำเนินการ โดยไม่ต้องกังวลใจเพิ่มเติม:
kernellinuxระบบของคุณจะบู๊ตในโหมดผู้ใช้คนเดียว การแจกแจงบางอย่างจะไม่ขอรหัสผ่านรูทของคุณ ณ จุดนี้ (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และจะทำให้คุณมีมากเปลือกต้นด้วยสิ่งอำนวยความสะดวกเกือบจะไม่มี ณ จุดนี้เป้าหมายของคุณคือ:
passwdทำงาน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 และเปลี่ยนทันที
เห็นได้ชัดว่ามีการเปลี่ยนแปลงมากมายที่กล่าวมา พวกเขาทั้งหมดต้มลงไปสองขั้นตอน:
ฉันคิดว่ามันน่าจะใช้ได้กับ 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แรกpasswdในสภาพแวดล้อม chroot จากไลฟ์ซีดีหรือไม่?
เมื่อพิจารณาจากแท็กที่ฉันคิดว่าคุณกำลังใช้ RHEL แต่โซลูชันนี้ควรใช้งานได้ดีสำหรับ distros ทั้งหมด
หากลืมรหัสผ่านรูทคุณสามารถบูตในโหมดผู้ใช้คนเดียวและใช้รหัสนี้เพื่อเปลี่ยนรหัสผ่าน วิธีการนี้อธิบายไว้ในคำแนะนำทีละขั้นตอนของ Red Hat :
kernelกดeอีกครั้งsingleที่ปลายของสายนี้ที่ใส่ จากนั้นกดENTERและboot จากมันในที่สุดคุณจะได้รับพรอมต์ซึ่งคุณสามารถพิมพ์passwd rootและเปลี่ยนรหัสผ่าน จากนั้นพิมพ์rebootเพื่อรีบูทระบบ
/boot/grub/grub.confเพื่อลบรหัสผ่าน bootloader และ/etc/inittabเปลี่ยนเชลล์ผู้ใช้คนเดียวให้เป็นแบบ / bin / sh (cc @pradeepchhetri)