ฉันจะ cd ลงในไดเรกทอรีเป็น root ได้อย่างไร


10

สมมติว่ามีไดเรกทอรีที่ฉันไม่มีสิทธิ์เข้าถึง เห็นได้ชัดsudo cd fooว่าไม่ได้ผลเพราะcdเปลือกหอยมีอยู่ในทุก ๆ เปลือก

จนถึงตอนนี้ฉันเพิ่งใช้sudo bash(ใช่ฉันรู้ว่ามีวิธีที่ดีกว่า) เพื่อรับรูทพรอมต์ จากนั้นฉันสามารถcdเข้าไปในไดเรกทอรีเพื่อแหย่

มีวิธีที่ดีกว่าในการทำเช่นนี้?


ทำไมคุณถึงต้องการcdเป็นรูท (เว้นแต่คุณจะอยู่ในรูทเชลล์)
tripleee

ถ้าไดเรกทอรีเป็นเจ้าของโดย root และไม่มีการดำเนินการทั่วโลก
strugee

1
นั่นไม่ใช่กรณีที่ถูกต้องจริงๆ มันอาจจะเป็นประโยชน์เพื่อให้สามารถที่จะอ่านไดเรกทอรี cdแต่ที่ไม่ต้องใช้ไดเรกทอรีที่จะไดเรกทอรีที่ทำงานของคุณคือคุณไม่จำเป็นต้อง
tripleee

sudo lsใช่ฉันไม่ทราบว่าจนกว่าจะมีการตอบรับชี้ให้เห็นว่าฉันจะเป็นเพียงแค่
strugee

คำตอบ:


12

ไม่, ไม่มีทางไปcdยังไดเร็กตอรี่ที่อนุญาตให้รูทโดยที่ไม่ต้องรูทเท่านั้น. ไม่ควรมีไดเรกทอรีมากเกินไปที่มีข้อ จำกัด นี้ ส่วนใหญ่แล้วเป็นการเข้าถึงไฟล์ที่กำหนดซึ่งมีข้อ จำกัด เช่น/etc/shadowไฟล์หรือไฟล์บันทึกเฉพาะที่อยู่ด้าน/var/logล่าง

คุณสามารถใช้เพื่อดูพวกเขาแทนsudo ls <dir> bashนอกจากนี้เมื่อใช้sudoเป็นรูทคุณมักต้องการตั้งค่าผู้ใช้ ( suคำสั่ง) แทนbashดังนั้นให้ใช้คำสั่งนี้แทน:

$ sudo su -

คุณยังสามารถทำสิ่งเดียวกันได้ด้วย-iสวิตช์ของ sudo :

$ sudo -i

ตัดตอนมาจากหน้าคนเกี่ยวกับ sudo -i

อ็อพชัน -i (จำลองการล็อกอินเริ่มต้น) รันเชลล์ที่ระบุในรายการ passwd (5) ของผู้ใช้เป้าหมายเป็นเชลล์ล็อกอิน ซึ่งหมายความว่าไฟล์ทรัพยากรเฉพาะการเข้าสู่ระบบเช่น. profile หรือ .login จะอ่านโดยเชลล์ หากระบุคำสั่งคำสั่งจะถูกส่งไปยังเชลล์เพื่อดำเนินการ มิฉะนั้นเชลล์แบบโต้ตอบจะถูกดำเนินการ

สำหรับไฟล์ที่คุณไม่สามารถเข้าถึงได้คุณสามารถใช้sudoคำสั่งเหล่านี้:

$ sudo tail /var/log/messages

$ sudo less /etc/shadow

3
ทำไมคุณจะใช้sudo su -แทนsudo -i? ทั้งคู่มอบสิทธิ์ผู้ใช้ระดับสูงให้คุณทั้งหมด แต่สิ่งที่คุณต้องการคือความสามารถในการ CAP_DAC_READ_SEARCH
Stéphane Chazelas

@StephaneChazelas - ฉันไม่เคยสังเกตเห็นสวิตช์นั้นมาก่อน การแนะนำดั้งเดิมของฉันsudoคือผ่านสภาพแวดล้อมของ Solaris และรุ่นของsudoที่นั่นไม่รวมสวิตช์นี้ เมื่อมองดูsudo changelogดูเหมือนว่ามีการเพิ่มตัวเลือกในปี 2004 เดาว่าฉันออกเดทกับตัวเอง แต่คุณถาม 8-) ฉันจะแก้ไขคำตอบเพื่อรวมทั้งสองขอบคุณ!
slm

@ StéphaneChazelasฉันเห็นด้วย ฉันชอบsudo -Hiเพราะมันตั้งไดเรกทอรีบ้านด้วย (ไม่ตั้งค่าเริ่มต้นใน distro ของฉันค่าเริ่มต้นอาจแตกต่างกันไป) หากคุณไม่ทำคุณอาจจบลงด้วยไฟล์ที่เป็นเจ้าของรูทในบ้านของคุณถ้ามันสร้างไฟล์ใหม่ที่นั่น
doug65536

5

ไม่ไม่มี คุณต้องการเชลล์ที่รันเป็นรูท


และดังที่ระบุไว้ในความคิดเห็นมันค่อนข้างไม่มีจุดหมายเลยcdเว้นแต่ว่าคุณกำลังใช้เชลล์หรือกระบวนการเปรียบเทียบ
tripleee

0

ใช่คุณทำไม่ได้ นี่เป็นวิธีแก้ปัญหา:

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