Friday, November 21

how to use php commnad “shell_exec” as root in RPi

วันนี้ นำเสนอเทคนิคเล็กน้อย สำหรับการเรียกใช้คำสั่ง root ผ่านหน้าเว็บแอพลิเคชั่น อย่างเช่น php บน RPi

ตัวอย่างปัญหา คือ ผมต้องการตั้งค่า วันเวลา บน Rpi

เช่น ผมต้องการให้มีการแก้ไข เวลาของ RPi  แล้ว ปกติ เราสามารถเรียกใช้คำสั่ง

sudo date --set="15 NOV 2014 12:43:10"   โดยพิมพ์ไปที่ terminal ของ Rpi ได้  แต่ ถ้าเราต้องการทำ web application ให้สามารถแก้ไขเวลาของ RPi หล่ะ เราจะทำอย่างไร

โดยปกติแล้ว php จะสามารถรัน shell_exec แล้วตามด้วย linux command ได้ เช่น

<?php

$output = shell_exec(“ls –l”);

echo “<pre>$output</pre>

?>

หากเราเรียกเว็บเพจที่มี สคริปต์ตัวอย่างด้านบน เราก็จะเห็นรายละเอียดไฟล์ในโฟวเดอร์ใน linux นั้น แต่ ถ้าเราต้องการให้ shell_exec เรียกคำสั่งที่เป็นของ root ได้หล่ะ เช่น

shell_exec(‘sudo date --set="15 NOV 2014 12:43:10"’);  แบบนี้ เราจะทำไม่ได้ เพราะ ตัวเว็บเพจนี้ ไม่มีสิทธิ์ทำเช่นนั้นได้ วิธีแก้ไข ก็คือ เราต้องไปกำหนดสิทธิ์ให้เว็บ application นี้ก่อน ทำตามนี้

หากเราต้องการให้เรียกใช้คำสั่ง shell_exec ของ PHP  ใน RPi ให้สามารถเรียกใช้คำสั่ง root ได้ เราจำเป็นต้องแก้ไขสิทธิ ของ application ที่ต้องใช้งานสักหน่อย

พิมพ์  sudo visudo

ทำการเพิ่ม  www-data  ALL=(ALL)  NOPASSWD:ALL  ไปที่ท้ายไฟล์ แล้วทำการบันทึกไฟล์นี้

sudo visudo

จากนั้นเขียนสคริปต์ไฟล์ php แล้วไปวางไว้ที่ /var/www 

<?php

$output = shell_exec(‘sudo date --set="15 NOV 2014 12:43:10"’);

echo “<pre>$output</pre>”;

?>

บันทึกโค๊ดนี้ ตั้งชื่อไฟล์ตามใจชอบ เช่น time.php  เสร็จแล้ว ลองเปิดหน้าเว็บบราวเซอร์ แล้ว เรียกไปที่ time.php โดยใส่ ip ของ RPi เช่น  http://192.168.1.103/time.php  เราก็จะสามารถตั้งค่าเวลาของ RPi ผ่านหน้าเว็บได้  ซึ่งโดยปกติ จะไม่สามารถเรียกใช้คำสั่ง sudo ผ่าน shell_exec ได้ 

ลองเอาไปประยุกต์กันดูนะครับ

ปล. บทความนี้ ไม่อาจเขียนละเอียดมากนัก ผู้ที่ไม่มีพื้นฐานเลย อาจจะงง สักเล็กน้อย ขออภัยไว้ ณ ทีนี้ด้วย

อ่านเพิ่มเติม...
 

แจกฟรี พื้นที่ฝากไฟล์ 15 GB

ติดตามข่าวสารผ่าน Twitter

ติดตาม Blog นี้

Blog อื่นๆของฉัน

  • Test AMR Fleet Management program - ระบบบริหารจัดการจราจรและจัดคิวงานของรถ AMR (Autonomous Mobile Robot) ที่พัฒนาโดยบริษัท WP Solution Co., Ltd. จากภาษา C# ทั้งในส่วนของ Backend (Service app...
  • Gearset matching 2021 program - เป็นงานใหญ่ที่เพิ่งจบไป ที่ระยอง ปลวกแดง บริษัทผลิตชิ้นส่วนรถยนต์ คอนเซปต์ คือต้องการเก็บค่าหลังจากการทดสอบชิ้นส่วยรถยนต์ เพื่อเก็บไว้ในฐานข้อมูลให้แผนกถ...
  • Free Screen Capture โปรแกรมบันทึกหน้าจอ ฟรีๆ - หากเพื่อนๆ จะมองหาโปรแกรม ที่ไว้สำหรับบันทึกหน้าจอคอมพิวเตอร์ ไม่ว่าจะบันทึกในรูปของภาพนีิ่ง (Screen shot) หรือแบบบันทึกเป็นภาพเคลื่อนไหว ( screencas...
  • Type-Fu : Typing practice game online - หากใครที่สนใจ หรือจะต้องทำงานเกี่ยวกับคอมพิวเตอร์ หนึ่งในความจำเป็นก็คือ จะต้องเรียนรู้ที่พิมพ์สัมผัสได้ เพราะการที่พิมพ์สัมผ้สได้ มันได้ประโยชน์หลายๆ อย...

Microcontroller Electronics update

สถิติเยี่ยมชมบล๊อก