Linux တွင် exec command ကိုခွင့်ပြုချက်မရဘဲ PHP အတွက်ဖြေရှင်းချက်
ဆက်စပ်သောတရားဝင်ကိုးကားချက်များ
PHP exec Linux sudoers file Sudo Commandsfastcgi mode မှာ run သောအခါပြုပြင်မွမ်းမံ
PHP သည် fastcgi mode ဖြင့်လည်ပတ်နေစဉ်၎င်း၏ခွင့်ပြုချက်များသည်၎င်း၏ host program မှအမွေဆက်ခံသည်။ ကျနော်တို့ Apache ကိုဥပမာတစ်ခုအဖြစ်ယူပါ။ ပထမ ဦး စွာ apache လုပ်ဆောင်နေသည့် account ကိုရှာရန်လိုသည်။ ထို့နောက် / etc / sudoers ဖိုင်ကိုတည်းဖြတ်ရန် vi သို့မဟုတ် vim ကို အသုံးပြု၍ အောက်ပါရည်ညွှန်းဥပမာကိုဖိုင်ထဲသို့ထည့်ပါ။ အောက်ပါအကြောင်းအရာများတွင်ပထမ ဦး ဆုံး ps command ကို အသုံးပြု၍ httpd apache process ကိုရှာရန်၊ ရလဒ်၏ဘယ်ဘက်ခြမ်းရှိအကောင့်အချက်အလက်များကိုကြည့်ပါ၊ ထို့နောက် apache အကောင့်သို့ခွင့်ပြုချက်ထည့်ရန် sudoers ဖိုင်ကိုတည်းဖြတ်ပါ။
ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
php-fpm လည်ပတ်ချိန်တွင်ပြုပြင်ခြင်းနည်းလမ်း
php-fpm mode တွင်အလုပ်လုပ်သောအခါ၎င်းသည်သီးခြားဖြစ်စဉ်တစ်ခုအနေဖြင့်အလုပ်လုပ်သည်။ ဒါကြောင့်ကျနော်တို့ပထမ ဦး ဆုံး၎င်း၏ပြေးအကောင့်ကိုရှာဖွေ, ပြီးတော့အထက်တွင်ကဲ့သို့ခွင့်ပြုချက်စစ်ဆင်ရေးလုပ်ဆောင်။
ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
အပြောင်းအလဲများအကျိုးသက်ရောက်ကြောင်းစစ်ဆေးပါ
အထက်ဖော်ပြပါလုပ်ငန်းများအပြီးတွင်ကျွန်ုပ်တို့သည်ခွင့်ပြုချက်ကိုပြုပြင်ပြီးပါပြီ။ သို့သော်၎င်းသည်အကျိုးသက်ရောက်ခြင်းမရှိသေးပါ။ ကျွန်ုပ်တို့၏ပြုပြင်မွမ်းမံမှုကိုအကျိုးသက်ရောက်စေရန်ဝန်ဆောင်မှုကိုပြန်လည်စတင်ရန်လိုအပ်ပါသည်။ ကျွန်ုပ်တို့၏အခြေအနေမှန်အရ Apache သို့မဟုတ် php-fpm ဝန်ဆောင်မှုကိုပြန်လည်စတင်ပါ။ ပြန်လာသောရလဒ်ကိုကြည့်ရှုရန် exec command ကို execute လုပ်ပါ။ ပြန်လာသောရလဒ်ကိုပုံမှန်ရရှိပါက၎င်းသည်အောင်မြင်သည်။
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);