Рашэнне для 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);