Suluhisho kwa PHP kutokuwa na ruhusa ya kutekeleza amri kwenye Linux
Marejeleo rasmi yanayohusiana
PHP exec Linux sudoers file Sudo CommandsMarekebisho wakati wa kukimbia katika hali ya haraka
Wakati PHP inafanya kazi katika hali ya haraka, idhini zake zinarithiwa kutoka kwa programu yake ya mwenyeji. Tunachukua apache kama mfano kuelezea. Kwanza, tunahitaji kupata akaunti ambayo apache inaendesha, na kisha tumia vi au vim kuhariri faili ya / nk / sudoers, na ongeza mfano ufuatao wa kumbukumbu kwenye faili. Katika yaliyomo yafuatayo, tumia kwanza amri ya ps kupata mchakato wa apache httpd, angalia habari ya akaunti upande wa kushoto kabisa wa matokeo yaliyorudishwa, na kisha uhariri faili ya wapenda kuongeza idhini kwa akaunti ya apache.
ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
Marekebisho wakati wa kukimbia katika hali ya php-fpm
Wakati wa kukimbia katika hali ya php-fpm, inaendesha kama mchakato tofauti. Kwa hivyo kwanza tunapata akaunti yake inayoendesha, na kisha fanya shughuli za idhini kama hapo juu.
ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
Thibitisha kuwa mabadiliko yanaanza
Baada ya shughuli hapo juu, tumebadilisha idhini, lakini bado haijaanza kutumika. Tunahitaji kuanzisha upya huduma ili kufanya marekebisho yetu yatekeleze. Kulingana na hali yetu halisi, anza tena huduma ya apache au php-fpm. Kisha fanya amri ya utekelezaji ili uone matokeo yaliyorudishwa.Kama matokeo yaliyorudishwa yanapatikana kawaida, inafanikiwa
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);