หน้า 1 จากทั้งหมด 1

เทคนิคการรัน Script ด้วย User อื่นที่ไม่ใช่ root

โพสต์โพสต์แล้ว: 03 ก.ย. 2022 16:56
โดย nuiz
สมมติว่าเราเขียนสคริปต์ php ที่ให้เช็คว่ามีไดเร็คตอรี่ files หรือไม่ ถ้าไม่มีก็ให้สร้าง ปกติถ้าเรารันสคริปต์ตอน login เป็น root ก็จะไม่มีปัญหาอะไรครับ จะสร้างไดเร็คตอรี่ files ได้ ยกเว้นเขียนสคริปต์ผิด
ไฟล์ check_and_create_dir.php
โค้ด: เลือกทั้งหมด
#!/usr/bin/php
<?php
    $tmpFolder='files/';
    if(!is_dir($tmpFolder)){
      mkdir($tmpFolder, 0755);
    }
?>


แต่ถ้าเราเอาไปใส่ไว้ในไฟล์เว็บ (ต้องลบบรรทัด #!/usr/bin/php ออกด้วยนะ) สมมติว่าเอาไฟล์ check_and_create_dir.php นี้ไปไว้ในไดเร็คตอรี่ /var/www/html/demo เราคาดหวังว่ามันจะสร้างไดเร็คตอรี่ files ให้เรา ปรากฏว่ามันไม่สร้าง

สาเหตุเป็นเพราะ directory permission ของ /var/www/html/demo มันอาจจะไม่ได้ให้ user ที่รัน httpd เขียนข้อมูลลงไปได้ (อ่านได้อย่างเดียว) ซึ่งถ้าเป็นเครื่อง issabel/elastix/freepbx ยูสเซอร์ที่รัน httpd คือ asterisk นะครับ (ไม่ใช่ root หรือว่า apache) ดังนั้นเราต้องเซ็ต permission ของไดเร็คตอรี่ /var/www/html/demo ใหม่

โค้ด: เลือกทั้งหมด
chown -R asterisk.asterisk /var/www/html/demo
chmod -R 755 /var/www/html/demo


ประมาณนี้ครับ

ถ้าจะลองรันสคริปต์ด้วย Command Line โดยรันด้วยยุูสเซอร์ asterisk เราก็ใช้คำสั่ง sudo -u asterisk ./check_and_create_dir.php ครับ