วิธีเรียกใช้เชลล์สคริปต์ด้วยคำสั่ง Sudo ใน Linux
sudo เป็นเครื่องมือบรรทัดคำสั่งที่มีประสิทธิภาพซึ่งช่วยให้ “ผู้ใช้ที่ได้รับอนุญาต ” สามารถเรียกใช้คำสั่งในฐานะผู้ใช้รายอื่น (ผู้ใช้ระดับสูงตามค่าเริ่มต้น) ตามที่กำหนดโดยนโยบายความปลอดภัย ในระบบ Linux ส่วนใหญ่หรือไม่ใช่ทั้งหมด นโยบายความปลอดภัยจะถูกขับเคลื่อนโดยไฟล์ /etc/sudoers
อ่านเพิ่มเติม: 10 การกำหนดค่า Sudoers ที่มีประโยชน์สำหรับการตั้งค่า 'sudo' ใน Linux
ดังนั้น หากต้องการรันเชลล์สคริปต์หรือโปรแกรมในฐานะรูท คุณต้องใช้คำสั่ง sudo อย่างไรก็ตาม sudo จดจำและเรียกใช้คำสั่งที่มีอยู่ในไดเร็กทอรีที่ระบุใน secure_path ใน /etc/sudoers เท่านั้น เว้นแต่จะมีคำสั่งอยู่ใน secure_path คุณจะตอบโต้ข้อผิดพลาดเช่นข้อผิดพลาดด้านล่าง
สิ่งนี้จะเกิดขึ้นแม้ว่าสคริปต์จะมีอยู่ในไดเร็กทอรีในตัวแปรสภาพแวดล้อม PATH เนื่องจากเมื่อผู้ใช้เรียกใช้ sudo PATH จะถูกแทนที่ด้วย < แข็งแกร่ง>secure_path
echo $PATH
ls -l
sudo proconport.sh 80
ในสถานการณ์ข้างต้น ไดเรกทอรี /home/aaronkilik/bin อยู่ในตัวแปรสภาพแวดล้อม PATH และเรากำลังพยายามเรียกใช้สคริปต์ /home/aaronkilik/bin /proconport.sh (ค้นหากระบวนการฟังบนพอร์ต) ด้วยสิทธิ์รูท
จากนั้นเราพบข้อผิดพลาด “sudo: proconport.sh: ไม่พบคำสั่ง ” เนื่องจาก /home/aaronkilik/bin ไม่ได้อยู่ใน sudo Secure_path > ดังที่แสดงในภาพหน้าจอถัดไป
เพื่อแก้ไขปัญหานี้ เราจำเป็นต้องเพิ่มไดเร็กทอรีที่มีสคริปต์ของเราใน sudo Secure_path โดยใช้ คำสั่ง visudo โดยการแก้ไขไฟล์ /etc/sudoers ดังต่อไปนี้
sudo visudo
โปรดทราบ: วิธีการนี้มีผลกระทบด้านความปลอดภัยที่ร้ายแรง โดยเฉพาะบนเซิร์ฟเวอร์ที่ทำงานบนอินเทอร์เน็ต ด้วยวิธีนี้ เรามีความเสี่ยงที่ระบบของเราจะถูกโจมตีต่างๆ เนื่องจากผู้โจมตีที่จัดการเพื่อเข้าถึงไดเร็กทอรีที่ไม่ปลอดภัย (ไม่มีสิทธิ์ผู้ใช้ระดับสูง) ที่ถูกเพิ่มใน Secure_path สามารถเรียกใช้สคริปต์/โปรแกรมที่เป็นอันตรายด้วย คำสั่ง sudo< /แข็งแกร่ง>.
ด้วยเหตุผลด้านความปลอดภัย โปรดอ่านบทความต่อไปนี้จากเว็บไซต์ sudo ซึ่งอธิบายช่องโหว่ที่เกี่ยวข้องกับ Secure_path: https://www.sudo.ws/sudo/alerts/secure_path.html
โดยเฉพาะอย่างยิ่ง เราสามารถระบุเส้นทางที่แน่นอนให้กับสคริปต์ในขณะที่รันสคริปต์ด้วย sudo:
sudo ./proconport.sh 80
แค่นั้นแหละ! คุณสามารถติดตามรายการบทความเกี่ยวกับคำสั่ง sudo:
- วิธีเรียกใช้คำสั่ง 'sudo' โดยไม่ต้องป้อนรหัสผ่านใน Linux
- วิธีรักษาเซสชันการหมดเวลารหัสผ่าน 'sudo' ให้นานขึ้นใน Linux
- วิธีการแก้ไข “ชื่อผู้ใช้ไม่อยู่ในไฟล์ sudoers เหตุการณ์นี้จะถูกรายงาน ” ใน Ubuntu
- ให้ Sudo ดูถูกคุณเมื่อคุณป้อนรหัสผ่านไม่ถูกต้อง
หากคุณมีคำถามหรือความคิดเห็นเกี่ยวกับบทความนี้ แบ่งปันกับเราผ่านแบบฟอร์มความคิดเห็นด้านล่าง