ການແກ້ໄຂບັນຫາ PHP ໂດຍບໍ່ມີການອະນຸຍາດໃຫ້ ດຳ ເນີນການ ຄຳ ສັ່ງ exec ໃນ Linux

ເອກະສານທາງການທີ່ກ່ຽວຂ້ອງ

PHP exec Linux sudoers file Sudo Commands

ການດັດແປງເມື່ອເຮັດວຽກໃນໂຫມດ fastcgi

ເມື່ອ PHP ກຳ ລັງເຮັດວຽກຢູ່ໃນໂຫມດ fastcgi, ສິດອະນຸຍາດຂອງມັນຈະຖືກສືບທອດຈາກໂປແກຼມໂຮດຂອງມັນ. ພວກເຮົາເອົາ apache ເປັນຕົວຢ່າງເພື່ອອະທິບາຍ. ກ່ອນອື່ນ ໝົດ, ພວກເຮົາຕ້ອງຊອກຫາບັນຊີທີ່ apache ກຳ ລັງແລ່ນຢູ່, ຫຼັງຈາກນັ້ນໃຫ້ໃຊ້ vi ຫຼື vim ເພື່ອແກ້ໄຂເອກະສານ / etc / sudoers, ແລະເພີ່ມຕົວຢ່າງອ້າງອີງຕໍ່ໄປນີ້ໃນເອກະສານ ໃນເນື້ອຫາຕໍ່ໄປນີ້, ທຳ ອິດໃຫ້ໃຊ້ ຄຳ ສັ່ງ ps ເພື່ອຊອກຫາຂັ້ນຕອນຂອງ apache httpd, ເບິ່ງຂໍ້ມູນບັນຊີຢູ່ເບື້ອງຊ້າຍຂອງຜົນໄດ້ຮັບທີ່ສົ່ງຄືນ, ແລະຫຼັງຈາກນັ້ນດັດແກ້ເອກະສານ sudoers ເພື່ອເພີ່ມການອະນຸຍາດເຂົ້າໃນບັນຊີ apache.

            ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
        

ການປ່ຽນແປງໃນເວລາທີ່ແລ່ນໃນໂຫມດ php-fpm

ໃນເວລາທີ່ແລ່ນໃນໂຫມດ php-fpm, ມັນເຮັດວຽກເປັນຂະບວນການແຍກຕ່າງຫາກ. ດັ່ງນັ້ນພວກເຮົາຊອກຫາບັນຊີທີ່ ກຳ ລັງ ດຳ ເນີນການກ່ອນ, ແລ້ວ ດຳ ເນີນການອະນຸຍາດດັ່ງທີ່ກ່າວມາຂ້າງເທິງ.

            ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
        

ຢັ້ງຢືນວ່າການປ່ຽນແປງມີຜົນ

ຫຼັງຈາກການປະຕິບັດງານຂ້າງເທິງ, ພວກເຮົາໄດ້ດັດແກ້ການອະນຸຍາດ, ແຕ່ວ່າມັນຍັງບໍ່ທັນມີຜົນບັງຄັບໃຊ້ເທື່ອ. ອີງຕາມສະຖານະການຕົວຈິງຂອງພວກເຮົາ, ໃຫ້ເລີ່ມການບໍລິການ apache ຫຼື php-fpm. ຫຼັງຈາກນັ້ນກໍ່ປະຕິບັດ ຄຳ ສັ່ງ exec ເພື່ອເບິ່ງຜົນໄດ້ຮັບທີ່ສົ່ງຄືນ.

            exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);