Skip to content

PlusMagi's Blog By Pitt Phunsanit

Plus emotional magic to the knowledge of logic.

  • About’s Pitt
Close Button

เช็ค file owner permission โดย phpเช็ค file owner permission โดย php

2014-01-182014-01-18| phunsanitphunsanit| 0 Comment | 07:00

อัพงานที่ทำแล้วมีอาการแปลก ๆ login ไม่ได้ upload view ขึ้นไปใหม่ก็ไม่เปลี่ยน ลองเข้าไปลบ cache เอง ถึงจะหาย ใช้ไปไม่นานก็เป็นอีก คิดว่าเป็นปัญหาที่ไฟล์ permission และไฟล์ owner ลองสังเกตดูเจ้าของไฟล์ที่ ftp ขึ้นไปมีเจ้าของคนละเลขกัน

เป็นธรรมดาที่เฟรมเวิร์กเดี๋ยวนี้จะสร้างไฟล์ขึ้นมาเองเพื่อทำเป็น cache หรือ auto-loading ต่าง ๆ ขึ้นมาเอง อย่าง laravel หลัก ๆ ก็จะอยู่ที่ /storage/ ถ้าตัว php ไม่สามารถที่จะเขียนไฟล์ ลบไฟล์ออก หรือแค่ไฟล์ในนี้ไม่ได้จะออกอาการเอ๋อทันที
ใช้ filezilla เปลี่ยน chmod สังเกตว่าบางไฟล์มันเปลี่ยนสิทธิไม่ได้ มีปัญหา owner แล้วแน่นอน
ก็ขอข้อมูลการติดต่อทาง host จากเจ้าของเห็นชื่อก็สังหรณ์ใจทันที เป็นเจ้าของเดียวก็บโปรแกรม apple ที่มีปัญหาดราม่ากันกับกลุ่มคนทำเว็บเรื่องไม่ update โปรแกรมตัวเอง ติดต่อไปก็งานเข้าทันทีเค้าบอกว่า permission ต่างกันแล้วยังไง มันไม่มีผลอะไร แต่เค้าก็มีปุ่มให้ 2 ปุ่มวิเศษ (ทำไว้ทำไม่วะครับ) คือ

  • กดปุ๊บ จะเปลี่ยน owner ให้ทั้งโพลเดอร์ นาน ๆ อัพทีคงจะไม่เป็นไร เข้าไปกดมันก็ได้
  • อีกปุ่มคือ “ปล่อยผี” กดแล้วจะเปลี่ยนสิทธิทุกไฟล์เป็น 777 wtf กันเลย ไม่กลัวความปลอดภัยกันเลยใช่มั๋ย งานมันต้องเอาขึ้นแล้วก็ทน ๆ ก่อน
    หลังจากทำทุกอย่างที่เค้าบอกมาแล้ว โปรแกรมเหมือนจะใช้ได้ ยกเว้น upload file ผ่านทาง php ไม่ได้ ดู error log
at HandleExceptions->handleError ('2', 'is_executable () :
open_basedir restriction in effect. File (/usr/local/php53/lib/php/) is not within the allowed path (s) : (.:/home/www/virtual/xxx/:
/usr/local/php53/lib/php/:/tmp/) ',
'/home/www/virtual/xxx/cms_inside/htdocs/vendor/symfony/process/ExecutableFinder.php',
'63', array ('name' => 'php', 'default' => false, 'extraDirs' => array ('/usr/local/php70/bin') ,
'searchPath' => array ('.', '/home/www/virtual/xxx/', '/usr/local/php53/lib/php/', '/tmp/') ,
'dirs' => array ('.', '/home/www/virtual/xxx/') ,
'path' => '/usr/local/php53/lib/php/')) 

ไป search หาดูเค้าบอกกันว่า path มันไม่อยู่ใน config open_basedir ทดลองกับเครื่องตัวเองก็เป็นสาเหตุได้จริง ๆ ก็ส่งอีเมล ไปขอให้แก้ config ให้ใหม่ใส่ /usr/local/php70/bin เพิ่มเข้าไป คุณท่านก็บอกกลับมาว่า มันไม่เกี่ยว เค้าก็เขียน php เหมือนกัน แต่ก็ยอมแก้ให้ หลังจากนั้นไฟล์ก็ี upload ได้ปกติ ชักจะเริ่มสงสัยแล้วว่า config server แล้วก็เขียนโปรแกรมเป็นจริง ๆ รึเปล่า

ต่อมา เจออีกกว่าส่งอีเมลออกไม่ได้ เพราะว่าไป disable บางอย่างไว้ ครั้งนี้เปลี่ยน host ละไม่ไหวเจ้านี้ เลยเขียน script ไว้ตรวจเบื้องต้น รอเค้าเซ็ตไปก่อน

<?php
echo '<br>Current script owner: ' . get_current_user () ;
echo '<hr>'; echo '<br>file upload by ftp owner = ' . fileowner ('test.php') ;
echo '<br>file upload by ftp group = <pre>' . print_r (posix_getgrgid (filegroup ('test.php')) , true) , '</pre>';
echo '<hr>'; echo '<br>file index.php owner = ' . fileowner ('index.php') ;
echo '<br>file index.php group = <pre>' . print_r (posix_getgrgid (filegroup ('index.php')) , true) , '</pre>';
echo '<hr>'; file_put_contents ('testFile.php', '<?php phpinfo () ;') ;
echo '<br>create by php owner = ' . fileowner ('testFile.php') ;
echo '<br>file upload by php group = <pre>' . print_r (posix_getgrgid (filegroup ('testFile.php')) , true) , '</pre>';
unlink ('testFile.php') ;

ถ้าทั้งหมดได้ user id เดียวกัน หรืออยู่ group เดียวกันก็เบาใจ แต่ไม่จำเป็นว่า group จะต้องเป็น www-data เคยเจอว่าบางที่เค้าจะสร้าง group ใหม่ให้ลูกค้าแต่ละเจ้าไปเลยเพื่อความปลอดภัย

เปลี่ยนโฮสต์เจ้าใหม่ โปรแกรมที่เขียนทำงานได้ตามปกติทุกอย่าง ลาก่อนน้องเอ๊ปเปิ๊ล อย่างลืมนะครับ เลิกใช้แอปเปิ้ลกันได้แล้ว


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

  • PHP: upgrade PHP ใหม่กว่า
  • PHP Ecosystem Readiness
  • PHP Standards Fixer
Read MoreRead More

Posts pagination

ก่อนหน้า 1 … 874 875 876 … 1,506 ถัดไป

Projects

  • Statement Columns Mapping Helper
  • PlusMagi Site Search
  • jQuery Plus Repeater

Recent Posts

  • Linux: ตรวจสอบความถูกต้องของระบบด้วยสปีดขั้นสุด 🚀
  • Tarball: เป็น version control ?
  • SecDevOps: เปลี่ยนความปลอดภัยให้เป็นเนื้อเดียวกับ Code และ Operation
  • WordPress: ดูว่า post ทุก ๆ วันเสาร์ใช่มั๋ย
  • เทคนิคตั้งค่า umask 002 ให้กับทุก User บน Mac อัตโนมัติผ่าน Terminal (Batch Script)

Archives

Categories

  • .net core (6)
  • AI (32)
  • business (10)
  • Businesses (29)
  • cd (10)
  • ci (10)
  • Design (96)
    • UX/UI (23)
  • dotnet (3)
  • envoy (1)
  • Histories (20)
  • Life (170)
    • Books (57)
    • Cartoon (11)
    • Movies (25)
    • Sci-Fi (42)
    • Tips and Tricks (28)
    • ปรัชญา (16)
    • พัฒนาตนเอง (15)
    • พุทธ (10)
  • mystery (3)
  • Network (190)
    • Apache HTTP Server (17)
    • IOT (3)
    • Nginx (32)
    • Stalwart (6)
  • Operating Systems (301)
    • Unix-like (221)
      • Android (16)
        • F-Droid (5)
      • Homebrew (21)
      • iPhone (8)
      • Linux (131)
      • macOS (105)
        • OrbStack (11)
      • Oh My ZSH (4)
      • Shell Script (49)
      • SSH (11)
    • Windows (128)
      • PowerShell (27)
      • WSL (25)
  • Programming (1,005)
    • .NET (29)
      • .NET Core EF (6)
      • C# (26)
    • API (60)
      • REST (21)
      • Swagger (11)
    • Database (246)
      • DBeaver (3)
      • MariaDB (33)
      • MySql (73)
      • Oracle Database (6)
        • 10g (3)
      • PostgreSQL (17)
      • RDBMS (22)
      • SQL Server (87)
        • SSMS (9)
        • T-SQL (28)
      • SQLite (2)
    • PowerBuilder (20)
    • Python (7)
    • Rust (17)
    • System Analyst (SA) (77)
    • Testing (37)
      • Automated Testing (16)
        • Playwright (7)
    • UML (39)
    • Web (516)
      • Backend (350)
        • Golang (2)
        • Java (58)
          • Spring Boot (15)
        • Node.js (4)
        • PHP (261)
          • Laravel (51)
          • Yii (5)
      • Frontend (153)
        • CSS (18)
          • Tailwind CSS (5)
        • JavaScript (133)
          • Angular (3)
          • jQuery (62)
          • Tabulator (20)
          • Vue.js (5)
      • WordPress (26)
  • Programs (104)
    • Excel (12)
  • science (5)
  • SecDevOps (114)
    • CI/CD (10)
    • Docker (48)
    • GIT (36)
  • Security (156)
  • sistema (1)
  • social (1)
  • system (58)
  • system analyst (2)
  • technology (161)
  • technologyระบบ (26)
  • technologyและระบบ (2)
  • ui (6)
  • Uncategorized (6)
  • ux (7)
  • กฎหมาย (11)
  • การจัดการข้อมูล (44)
  • การจัดการข้อมูลและองค์ความรู้ (3)
  • จิตวิทยา (17)
  • ชีวิต (13)
  • ทั่วไป (1)
  • ธุรกิจ (12)
  • ประวัติศาสตร์ (3)
  • ภาษาศาสตร์คอมพิวเตอร์ (6)
  • ระบบ (51)
  • วัฒนธรรม (2)
  • วิทยาการข้อมูล (19)
  • วิทยาการข้อมูลและภาษาศาสตร์คอมพิวเตอร์ (1)
  • วิทยาศาสตร์ (13)
  • องค์ความรู้ (8)
  • เทคโนโลยี (14)
  • เทคโนโลยีระบบ (6)

Sirat WordPress Theme By VWThemes

Scroll Up
Exit mobile version