Risinājums PHP, kam nav atļaujas izpildīt exec komandu Linux

Saistītās oficiālās atsauces

PHP exec Linux sudoers file Sudo Commands

Modifikācijas, darbojoties fastcgi režīmā

Kad PHP darbojas fastcgi režīmā, tā atļaujas tiek pārmantotas no resursdatora programmas. Mēs izmantojam apache kā piemēru, lai izskaidrotu. Pirmkārt, mums jāatrod konts, kurā darbojas apache, un pēc tam izmantojiet vi vai vim, lai rediģētu failu / etc / sudoers, un failam jāpievieno šāds atsauces piemērs. Šajā saturā vispirms izmantojiet komandu ps, lai atrastu apache procesu httpd, atgrieztā rezultāta kreisajā pusē apskatiet konta informāciju un pēc tam rediģējiet failu sudoers, lai pievienotu autorizāciju apache kontam.

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

Modifikācijas, darbojoties php-fpm režīmā

Darbojoties php-fpm režīmā, tas darbojas kā atsevišķs process. Tātad mēs vispirms atrodam tā darbības kontu un pēc tam veicam autorizācijas darbības, kā norādīts iepriekš.

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

Pārbaudiet, vai izmaiņas stājas spēkā

Pēc iepriekšminētajām darbībām mēs mainījām pilnvarojumu, taču tas vēl nav stājies spēkā. Mums ir jārestartē pakalpojums, lai mūsu modifikācija stātos spēkā. Atbilstoši mūsu faktiskajai situācijai restartējiet apache vai php-fpm pakalpojumu. Pēc tam izpildiet komandu exec, lai apskatītu atgriezto rezultātu. Ja atgrieztais rezultāts tiek iegūts normāli, tas ir veiksmīgs.

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