ค้นหาเว็บไซต์

วิธีเรียกใช้เชลล์สคริปต์ด้วยคำสั่ง 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:

  1. วิธีเรียกใช้คำสั่ง 'sudo' โดยไม่ต้องป้อนรหัสผ่านใน Linux
  2. วิธีรักษาเซสชันการหมดเวลารหัสผ่าน 'sudo' ให้นานขึ้นใน Linux
  3. วิธีการแก้ไข “ชื่อผู้ใช้ไม่อยู่ในไฟล์ sudoers เหตุการณ์นี้จะถูกรายงาน ” ใน Ubuntu
  4. ให้ Sudo ดูถูกคุณเมื่อคุณป้อนรหัสผ่านไม่ถูกต้อง

หากคุณมีคำถามหรือความคิดเห็นเกี่ยวกับบทความนี้ แบ่งปันกับเราผ่านแบบฟอร์มความคิดเห็นด้านล่าง