Score:0

Nginx php-fpm 1 จาก 3 พูลไม่ทำงาน: ส่งคืน stat() ล้มเหลว (13: ปฏิเสธการอนุญาต)

ธง tr

ฉันมี nginx ที่มี 3 พูลสำหรับ php7.4-fpm - หนึ่งรายการต่อผู้ใช้ 3 คนในระบบเนื่องจากมีแอปและไฟล์ของตนเอง การตั้งค่าของทั้ง 3 นั้นเหมือนกันทุกประการ แต่อันที่เพิ่มเข้ามาล่าสุดมีปัญหาเรื่องการอนุญาต

เบราว์เซอร์ส่งคืนข้อผิดพลาด 404 - ไม่พบ

ข้อผิดพลาดส่งคืนในบันทึก nginx:

2022/01/18 09:32:16 [crit] 504237#504237: *5120 stat() "/var/www/user3/websites/site.com/index.php" ล้มเหลว (13: การอนุญาต ถูกปฏิเสธ), ลูกค้า: XXX.XXX.XXX.XXX, เซิร์ฟเวอร์: site.com, คำขอ: "GET / HTTP/2.0", โฮสต์: "site.com"

sudo -u user3 สถิติ /var/www/user3/websites/site.com/index.php

ผลตอบแทน

  ไฟล์: /var/www/user3/websites/site.com/index.php
  ขนาด: 405 Blocks: 8 IO Block: 4096 ไฟล์ปกติ
อุปกรณ์: 807h/2055d ไอโหนด: 1441895 ลิงก์: 1
การเข้าถึง: (0644/-rw-r--r--) Uid: ( 1003/ user3) Gid: ( 1003/ user3)
เข้าถึง: 2022-01-17 20:32:08.081267396 +0000
แก้ไข: 26-2020-04 21:46:41.000000000 +0000
เปลี่ยนแปลง: 2022-01-18 09:35:09.129994390 +0000

การกำหนดค่าพูล:

[php7.4-user3]

ผู้ใช้ = ผู้ใช้3
กลุ่ม = ผู้ใช้3

ฟัง = 127.0.0.1:9003
ฟัง เจ้าของ = ไม่มีใคร
Listen.group = ไม่มีใคร
Listen.allowed_clients = 127.0.0.1

pm = ออนดีมานด์
pm.max_children = 24
pm.start_servers = 16
pm.min_spare_servers = 6
pm.max_spare_servers = 24
pm.process_idle_timeout = 900 วินาที
pm.max_requests = 55

php_admin_value[error_log] = /var/log/fpm-php7.4.log
php_admin_flag[log_errors] = เปิด
php_admin_value[error_reporting] = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED

พูลอื่นๆ ค่อนข้างเหมือนกัน ยกเว้นชื่อพูล ผู้ใช้และกลุ่มคือ user1, user2 และพอร์ตการฟังจะแตกต่างกัน เช่น 9001, 9002, 9003 ดังนั้น x ในการกำหนดค่า

การกำหนดค่าโฮสต์เสมือน

เซิร์ฟเวอร์ {
    server_name site.com www.site.com;

    access_log /var/log/nginx/site.com.access.log; 
    error_log /var/log/nginx/site.com.error.log;

    รูท /var/www/user3/websites/site.com;

    ดัชนี index.php index.html index.htm;

    ที่ตั้ง / {
      try_files $uri $uri/ /index.php?$args;
    }
    ตำแหน่ง ~ \.php$ {
      try_files $uri =404;
      รวม fastcgi_params;
      fastcgi_pass 127.0.0.1:9003;
    }

    ฟัง 443 ssl http2;
    ssl_certificate /etc/letsencrypt/live/site.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem;
    รวม /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
เซิร์ฟเวอร์ {
    ถ้า ($host = www.site.com) {
        ส่งคืน 301 https://$host$request_uri;
    }
    ถ้า ($host = site.com) {
        ส่งคืน 301 https://$host$request_uri;
    }
    ฟัง XXX.XXX.XXX.XXX:80;
    server_name site.com www.site.com;
    กลับ 404;
}

ฉันขาดอะไรไปสำหรับผู้ใช้ 3 ดังนั้น nginx และ fpm จึงใช้งานได้ การกำหนดค่าเดียวกันสำหรับผู้ใช้ 1 และผู้ใช้ 2 ทำงานได้ดี

jp flag
ตรวจสอบว่า `user3` สามารถเข้าถึง (มีสิทธิ์ +x) ไดเร็กทอรีทั้งหมดในทรี `/var/www/user3/websites/site.com` ซึ่งรวมถึง `/var`, `/var/www` เป็นต้น
jp flag
ที่จริงแล้วไม่ใช่ `user3` แต่เป็นผู้ใช้ nginx
in flag
คุณสามารถตรวจสอบได้อย่างง่ายดายโดยเรียกใช้ `namei -l /var/www/user3/websites/site.com/index.php`
tr flag
จะทำอย่างไรโดยไม่ส่งผลกระทบต่อผู้ใช้จริง: สิทธิ์ของเจ้าของกลุ่ม
tr flag
ตกลง. ปรากฏโฟลเดอร์ /var/www/user3 มีสิทธิ์ 750 แทน 755 ตอนนี้ใช้งานได้ ขอบคุณ!
Score:0
ธง tr

ปรากฏโฟลเดอร์ /var/www/user3 มีสิทธิ์ 750 แทน 755 ตอนนี้ใช้งานได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา