PHP-ді Linux-те exec командасын орындауға рұқсаты жоқ шешім

Осыған байланысты ресми сілтемелер

PHP exec Linux sudoers file Sudo Commands

Fastcgi режимінде жұмыс істеген кездегі модификация

PHP fastcgi режимінде жұмыс істеп тұрған кезде, оның рұқсаттары оның хост бағдарламасынан алынады. Түсіндіру үшін мысал ретінде апашені аламыз. Алдымен біз apache жұмыс жасайтын есептік жазбаны тауып, / etc / sudoers файлын өңдеу үшін vi немесе vim пайдаланып, файлға келесі сілтеме мысалын қосуымыз керек. Келесі мазмұнда алдымен ps командасын қолданып, httpd apache процесін табыңыз, қайтарылған нәтиженің сол жағындағы есептік жазба ақпаратын қарап, содан кейін apache тіркелгісіне авторизация қосу үшін sudoers файлын өңдеңіз.

            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);