รูทเชลล์เปลี่ยนแปลงผิดพลาด ฉันจะเปลี่ยนกลับไปเป็นเปลือกที่ถูกต้องได้อย่างไร


19

ฉันป้อนผิดพลาด

chsh -s /usr/bin 

แทน

chsh -s /bin/bash 

และตอนนี้ฉันไม่สามารถเข้าสู่รูทเชลล์ฉันจะเริ่มเชลล์ bash ในฐานะรูทด้วยตนเองได้อย่างไร


คุณทำสิ่งนี้ในบริบทใด ในเทอร์มินัลปัจจุบันสำหรับเชลล์เริ่มต้นของผู้ใช้หรือไม่
jgr208

คุณไม่มีผู้ใช้ในกลุ่ม sudo ใช่ไหม
Rui F Ribeiro

3
ไม่sudo vipwทำงานหรือไม่
Rui F Ribeiro

1
@RuiFRibeiro ใช่มันไม่ได้ขอบคุณฉันไม่ทราบว่าฉันสามารถเปลี่ยนรูทเชลล์เริ่มต้นในไฟล์นั้นได้
ChiseledAbs

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

คำตอบ:


29

ในขณะที่รูทไม่สามารถเข้าถึงผู้ใช้ในกลุ่ม sudo ยังสามารถเรียกใช้คำสั่งพิเศษได้ - ดูเหมือนว่าข้อผิดพลาดไม่ได้อยู่ใน sudo แต่ที่อื่นในsudo chshคำสั่ง (เช่น chsh error)

เห็นได้ชัดว่า sudo ของคุณทำงานได้

ไฟล์ passwd สามารถแก้ไขได้ด้วย:

sudo vipw

และรูทเชลล์เปลี่ยนไปด้วยตนเอง

( /etc/passwdโดยทั่วไปบรรทัดแรก)

root:x:0:0:root:/root:/bin/bash

Fom man vipw

คำสั่ง vipw และ vigr แก้ไขไฟล์ / etc / passwd และ / etc / group ตามลำดับ ด้วยแฟล็ก -s พวกเขาจะแก้ไขเวอร์ชันเงาของไฟล์เหล่านั้น / etc / shadow และ / etc / gshadow ตามลำดับ โปรแกรมจะตั้งค่าการล็อคที่เหมาะสมเพื่อป้องกันความเสียหายของไฟล์


3
ฉันไม่เคยรู้เกี่ยวกับvipwและvigrขอขอบคุณ! ฉันมักจะใช้sudo vim /etc/passwd
แมว

3
คุณอาจสนใจในvisudo sudo.ws/man/1.8.15/visudo.man.html เช่นกัน @tac
Rui F Ribeiro

3
หรือsudo -eที่ใช้คุณสมบัติการล็อคการแก้ไขสำหรับการแก้ไขใด ๆ
kojiro

16

ตัวเลือกอื่นสมมติว่าคุณมีสิทธิ์เข้าถึงบัญชีอื่นคือการแทนที่เชลล์เริ่มต้นด้วยตนเองโดยใช้su --shell=/bin/bash:

-s, - เชลล์ = SHELL
เรียกใช้ SHELL หาก / etc / shells อนุญาต

ประโยชน์หลักของเรื่องนี้ก็คือว่ามันเพียง แต่ต้องมีการเข้าถึงไปยังบัญชีอื่นอีกไม่ได้รับการยกเว้นหนึ่ง


8

เพื่อเหตุผลด้านความปลอดภัยเข้าสู่ระบบไม่ว่าจะเป็นข้อความหรือกราฟิกและยูทิลิตี้เช่นนั้นsuและsudoช่วยให้คุณสามารถเรียกใช้คำสั่งในฐานะผู้ใช้ที่แตกต่างกันทั้งหมดเรียกใช้คำสั่งเหล่านั้นผ่านเปลือกของผู้ใช้เป้าหมาย หากเชลล์ผู้ใช้เป้าหมายไม่ทำงานคุณก็จะเห็นผลลัพธ์ :-(

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

บูตระบบช่วยเหลือติดตั้งระบบไฟล์รูทของระบบจริงที่ใดที่หนึ่งพูด/mnt/fooและแก้ไข/mnt/foo/etc/passwdเพื่อแก้ไขเชลล์ บันทึกเลิกเมานท์และคุณทำเสร็จแล้ว


อยากรู้อยากเห็นเกิดอะไรขึ้นถ้าคุณทำสิ่งนี้และไฟล์ / etc / passwd อยู่ในแฮชแทนที่จะเป็นข้อความธรรมดา
jgr208

1
/etc/passwdไม่ธรรมดา ฉันไม่ได้เห็นอย่างน้อยก็เหมือนทศวรรษ มันยังมีบางอย่างในบางระบบหรือไม่? อย่างไรก็ตามฉันเดาว่าchroot /mnt/foo chsh -s /bin/bashอาจจะใช้กลอุบายในกรณีนี้ได้?
Celada

ฉันไม่เคยมีปัญหาอธิบาย แต่ฉันทำงานกับระบบล็อคลงที่ต้องมี / etc / passwd ไม่เป็นข้อความธรรมดาเพื่อหลีกเลี่ยงแฮกเกอร์และการประนีประนอมระบบดังกล่าวมากขึ้นหากพวกเขาเข้าถึง อืมที่อาจใช้ได้ลองบอกว่าฉันหวังว่าฉันจะไม่ต้องลองดูว่ามันใช้งานได้จริงหรือเปล่า
jgr208

ฉันสามารถแก้ไข / etc / passwd ด้วย sudo จากบัญชีผู้ใช้ฉันไม่ทราบว่าเชลล์ถูกกำหนดไว้ในไฟล์นี้ขอบคุณ
ChiseledAbs

@ChiseledAbs โอ้คุณเป็นอย่างไร ดีสำหรับคุณดีใจที่คุณแก้ปัญหาของคุณ ฉันไม่คิดว่ามันจะทำให้คุณ
Celada

6

เพิ่มinit=/bin/bashไปยังบรรทัดคำสั่งเคอร์เนลของคุณ (หากบูตด้วย grub กดeเพื่อแก้ไขรายการบูต) และคุณจะมี bash shell ที่ทำงานเป็นรูทโดยไม่ต้องป้อนรหัสผ่าน ระบบไฟล์รูทของคุณจะยังคงติดตั้งแบบอ่านอย่างเดียวดังนั้นคุณจะต้องติดตั้งใหม่ก่อนจากนั้นคุณสามารถเปลี่ยนเชลล์กลับมาchshได้


4

sudo usermod -s /bin/bash jdoe

จะเปลี่ยนเปลือกของjdoebashไป จากนั้นคุณสามารถsudo egrep jdoe /etc/passwdตรวจสอบ

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