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