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

โปรแกรมบน CentOS ที่ควรติดตั้งใช้งานร่วมกับ VoIP Server

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

โพสต์โดย nuiz » 03 ก.ย. 2022 16:56

สมมติว่าเราเขียนสคริปต์ 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 ครับ
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 7058
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

ย้อนกลับไปยัง CentOS - The Community Enterprise Operating System

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 3 ท่าน

cron