Soluzione à PHP chì ùn hà micca permessu per eseguisce u cumandimu exec in Linux

Riferimenti ufficiali rilativi

PHP exec Linux sudoers file Sudo Commands

Mudificazioni quandu si corre in modu fastcgi

Quandu PHP funziona in modu fastcgi, i so permessi sò ereditati da u so prugramma ospitante. Pigliemu l'apache cum'è esempiu per spiegà. Prima, avemu bisognu di truvà u cuntu sottu chì apache hè in esecuzione, è dopu aduprà vi o vim per edità u fugliale / etc / sudoers, è aghjunghje l'esempiu di riferenza seguente à u fugliale. In u cuntenutu chì seguita, utilizate prima u cumandamentu ps per truvà u prucessu apache httpd, fighjate l'infurmazioni di u cuntu à u latu più à sinistra di u risultatu restituitu, è dopu editate u fugliale sudoers per aghjunghje l'autorizazione à u cuntu apache.

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

Mudificazioni quandu si esegue in modu php-fpm

Quandu si esegue in modu php-fpm, funziona cum'è un prucessu separatu. Cusì truvemu prima u so contu in esecuzione, è dopu eseguimu operazioni d'autorizazione cum'è sopra.

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

Verificate chì i cambiamenti entrinu in vigore

Dopu l'operazione sopra, avemu mudificatu l'autorizazione, ma ùn hè ancu entrata in vigore. Avemu bisognu di riavviare u serviziu per fà chì a nostra mudificazione entre in vigore. Secondu a nostra situazione attuale, riavvia l'apache o u serviziu php-fpm. Allora eseguite u cumandimu exec per vede u risultatu restituitu. Se u risultatu restituitu hè uttenutu nurmale, hè successu.

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