PHP- ի լուծում Linux- ում exec հրամանը կատարելու թույլտվություն չունենալու համար

Առնչվող պաշտոնական հղումներ

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