ทำไมคำสั่งที่รันเป็น sudo ไม่พบคำสั่งส่งคืน


12

คำสั่งตัวอย่าง:

drush cc all

ใช้งานได้ แต่สิ่งนี้:

sudo drush cc all

ให้ฉัน:

sudo: drush: command not found

ทำไม? จะแก้ไขได้อย่างไร?


cdผมยังมีปัญหานี้บางครั้งที่มีคำสั่งพื้นฐานเช่น การใช้dzdo cdคำสั่ง "ไม่พบคำสั่งส่งคืน" แน่นอนผมมาตระหนักว่าcdไอเอ็นจีลงในไดเรกทอรีที่ฉันไม่ได้มีสิทธิ์ในจะไม่ช่วยมากดังนั้นฉันอาจต้องเปลือกรากหรือจำเป็นต้องdzdo ls, dzdo mvฯลฯ เนื้อหาจากภายนอกที่ dir
Wildcard

2
ปัญหาsudo cdคือว่าcdเป็นคำสั่งในตัวไม่ใช่โปรแกรม หากคุณต้องการที่จะไปลงในไดเรกทอรีที่คุณไม่สามารถเข้าถึงใด ๆ ที่และ (ตัวอย่าง) เปลี่ยนชื่อไฟล์ที่นั่นคุณจะทำ (ตัวอย่าง) หรือsudo mv dir/oldfile dir/newfile sudo sh -c "cd dir; mv oldfile newfile"
G-Man กล่าวว่า 'Reinstate Monica'

คำตอบ:


13

เมื่อคุณsudoคุณได้รับการกำหนดค่าล่วงหน้า$PATHซึ่งเป็นสิ่งที่ควรจะเป็นเส้นทางเริ่มต้นของผู้ใช้รู$PATHโปรแกรมของคุณไม่ได้อยู่ในรายชื่อของไดเรกทอรีระบุว่า

ดูตัวอย่าง

sudoพยายามให้ปลอดภัยเมื่อเรียกใช้คำสั่งภายนอก

มีสองวิธีที่แตกต่างในการจัดการกับตัวแปรสภาพแวดล้อม โดยค่าเริ่มต้น ตัวเลือกenv_reset sudoersถูกเปิดใช้งาน สาเหตุนี้คำสั่งที่จะดำเนินการมีสภาพแวดล้อมน้อยที่สุดบรรจุTERM, PATH, HOME, SHELL, LOGNAME, USERและUSERNAMEนอกเหนือไปจากกระบวนการตัวแปรกล่าวอ้างได้รับอนุญาตจากenv_checkและenv_keep sudoersตัวเลือก มีรายการที่อนุญาตสำหรับตัวแปรสภาพแวดล้อมได้อย่างมีประสิทธิภาพ

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


0

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

นอกจากนี้คุณต้องใส่บรรทัด/etc/sudoersเพื่ออนุญาต man sudoersสำหรับไวยากรณ์มันมากเกินไปที่จะใส่ที่นี่

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