လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> 0 င်ငွေ၏အသုံး 0 င်မှုအမှားများ - ခွဲစိတ်ကုသမှုကိုခွင့်မပြုလျှင်ကျွန်ုပ်ဘာလုပ်သင့်သနည်း။

0 င်ငွေ၏အသုံး 0 င်မှုအမှားများ - ခွဲစိတ်ကုသမှုကိုခွင့်မပြုလျှင်ကျွန်ုပ်ဘာလုပ်သင့်သနည်း။

gitbox 2025-05-29

1 ။ 0 င်ငွေကိုမိတ်ဆက် () function ကို

Chown ($ filmename, string ကို strings, strings | string ကို trand user) - သတ်မှတ်ထားသောဖိုင်သို့မဟုတ် directory ၏ပိုင်ရှင်ကိုပြောင်းလဲရန်အတွက် bool function ကိုအသုံးပြုသည်။ ၎င်းကိုဖိုင်မှတ်တမ်းတင်ခြင်းအပြီးတွင်၎င်း၏ပိုင်ဆိုင်မှုကိုပြုပြင်မွမ်းမံခြင်းကဲ့သို့သောအခြေအနေများကိုပုံမှန်ပြုပြင်ပြောင်းလဲရန်လိုအပ်သည့်အခြေအနေတွင်အသုံးပြုသည်။

နမူနာကုဒ်:

 <?php
$file = '/path/to/file.txt';
$user = 'www-data'; // ပိုင်ရှင်အသစ်အသုံးပြုသူအမည်

if (chown($file, $user)) {
    echo "ဖိုင်ပိုင်ရှင်ကိုပြောင်းထားသည် {$user}";
} else {
    echo "ပြောင်းလဲထားသောဖိုင်ပိုင်ရှင်မအောင်မြင်ပါ";
}
?>

2 ။ "လည်ပတ်ခွင့်မပြု" သောအမှားအတွက်အကြောင်းပြချက်၏သုံးသပ်ချက်ကိုခွဲခြမ်းစိတ်ဖြာခြင်း

  1. ခွင့်ပြုချက်မလုံလောက်

Chown () function သည်လုံလောက်သောခွင့်ပြုချက်လိုအပ်သည်။ ယေဘုယျအားဖြင့် Superuser (root) သည်ပိုင်ရှင်ကိုပြောင်းလဲနိုင်သည်။ အကယ်. လက်ရှိတွင် PHP script ကို run နေသောအသုံးပြုသူသည် root မဟုတ်ပါကစနစ်သည်ခွင့်ပြုချက်များကိုငြင်းပယ်လိမ့်မည်။

  1. ဖိုင်စနစ်ကန့်သတ်ချက်များ

အချို့သောဖိုင်စနစ်များ (ဥပမာ NFS, FAT32 ကဲ့သို့သောရွေးချယ်စရာများ) မှတစ်ဆင့်ဖိုင်ပိုင်ရှင်များကိုပြောင်းလဲခြင်းသည်ဖိုင်ပိုင်ရှင်အားပြောင်းလဲခြင်းကိုမထောက်ပံ့ပါ

  1. လုံခြုံရေး Module ကန့်သတ်ချက်များ

လုံခြုံရေးဆိုင်ရာ module များသည် (Selinux, Apparmor စသည်) ကိုဆာဗာတွင်ဖွင့်ထားနိုင်ပြီးဖိုင်ပိုင်ရှင်ကိုပြောင်းလဲစေနိုင်သည်။

  1. PHP Configuration ကန့်သတ်ချက်များ

PHP operating ပတ် 0 န်းကျင်သို့မဟုတ်လုံခြုံရေးမူဝါဒများ (ထိုကဲ့သို့သော open_basedir က န့်သတ်ချက်များကဲ့သို့) သည်ခွင့်ပြုချက်မလုံလောက်ခြင်းများကိုသွယ်ဝိုက်။ ဖြစ်စေနိုင်သည်။


3 ။ ဖြေရှင်းနည်း

1 ။ လုံလောက်သောခွင့်ပြုချက်ဖြင့်အသုံးပြုသူနှင့် script ကို run ပါ

PHP လည်ပတ်နေသောပတ် 0 န်းကျင်ရှိသုံးစွဲသူများသည် 0 င်ငွေ ကိုသယ်ဆောင်ရန်ခွင့်ပြုချက်ရှိသည်။ ထုတ်လုပ်မှုပတ် 0 န်းကျင်အတွက်အောက်ပါနည်းလမ်းများကိုအသုံးပြုနိုင်သည်။

  • Sudo ကို cli mode မှာသုံးပါ

 sudo -u root php script.php
  • System Schedule Task (CROS) ကိုအသုံးပြုပြီး root ote အဖြစ် Execute လုပ်ပါ။

  • လိုအပ်ပါက PHP-FPM သို့မဟုတ်ဝက်ဘ်ဆာဗာ၏အသုံးပြုသူများကိုချိန်ညှိပါ

2 ။ ဖိုင်ခွင့်ပြုချက်များနှင့် attribution ကိုပြုပြင်ရန်အခြားရွေးချယ်စရာများ

ChoN () ကို မသုံးနိုင်ပါကအောက်ပါရွေးချယ်စရာတစ်ခုကိုသင်စဉ်းစားနိုင်သည်။

  • ပိုင်ရှင်အစားခွင့်ပြုချက်ကိုချိန်ညှိရန် chmod () ကိုသုံးပါ။

 chmod($file, 0644);
  • ပြင်ပ shell ကို command များမှတဆင့် execute (ခွင့်ပြုချက်ရရှိနိုင်ပါသည်)

 exec("sudo chown www-data " . escapeshellarg($file));

မှတ်စု: EXICE () ကို အသုံးပြုသည့်အခါ command injection ကိုကာကွယ်ရန်လုံခြုံမှုကိုသေချာစေရန်သေချာပါစေ။

3 ။ ဖိုင်စနစ် Mount options များကိုစစ်ဆေးပြီးညှိပါ

ဖိုင်သည် 0 င်ငွေများကိုတည်နေရာတည်ရှိရာအခန်းက န့် ရှိ, မရှိကိုအတည်ပြုပါ။ အကယ်. Mountain အတွင်းခွင့်ပြုချက်ကိုကန့်သတ်ထားပါကပြန်စဉ်းစားပါ။

 mount -o remount,defaults /mount/point

သို့မဟုတ်ခွင့်ပြုချက်စစ်ဆင်ရေးကိုထောက်ပံ့သောဖိုင်စနစ်ကိုသုံးပါ။

4 ။ ပိတ်ပါသို့မဟုတ်လုံခြုံရေး module configuration ကိုညှိပါ

အကယ်. ဆာဗာသည် Selinux သို့မဟုတ် apparmor enable လုပ်ထားပါကစည်းမျဉ်းများကိုခေတ္တပိတ်ထားနိုင်သည်သို့မဟုတ်ချိန်ညှိနိုင်သည်။

  • Selinux ကိုပိတ်ပါ

 setenforce 0
  • Chown စစ်ဆင်ရေးခွင့်ပြုရန်သက်ဆိုင်ရာလုံခြုံရေးမူဝါဒများညှိပါ


4 ။ အကျဉ်းချုပ်

Chown (): စစ်ဆင်ရေးသည်ခွင့်ပြုထားသော အမှားများကိုများသောအားဖြင့်ခွင့်ပြုချက်မလုံလောက်ခြင်းကြောင့်ဖြစ်သည်။ PHP script တည်ရှိနေသောအသုံးပြုသူသည်ဖိုင်ပိုင်ရှင်ကိုပြောင်းလဲရန်လုံလောက်သောခွင့်ပြုချက်ရှိရမည်။ ယေဘုယျအားဖြင့် PHP process များသည်ထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်အမြစ်နှင့်တိုက်ရိုက်ဆက်သွယ်လိမ့်မည်မဟုတ်ပါ။ လုပ်ငန်းများကိုစီစဉ်ခြင်းသို့မဟုတ်ပြင်ပပညတ်များမှတစ်ဆင့် sudo နှင့်စစ်ဆင်ရေးများကိုလုပ်ဆောင်ရန်အကြံပြုသည်။

တစ်ချိန်တည်းမှာပင်ဖိုင်စနစ်အမျိုးအစားများနှင့်လုံခြုံရေး module များကိုခွင့်ပြုချက်ကန့်သတ်ချက်များကိုဂရုပြုရန်နှင့်အမှန်တကယ်အခြေအနေများအပေါ် အခြေခံ. သင့်လျော်သောဖြေရှင်းနည်းများကိုရွေးချယ်ရန်လိုအပ်သည်။


ပူးတွဲပါနမူနာကုဒ် ( ChoN (chown () အမှားအယွင်းများကိုကိုင်တွယ်ဖြေရှင်းခြင်း)

 <?php
$file = '/path/to/file.txt';
$user = 'www-data';

if (!file_exists($file)) {
    die("ဖိုင်မတည်ရှိပါဘူး");
}

if (@chown($file, $user)) {
    echo "ဖိုင်ပိုင်ရှင်အောင်မြင်စွာပြုပြင်ပြီးပြီ {$user}";
} else {
    $error = error_get_last();
    echo "ပိုင်ရှင်ပြုပြင်မွမ်းမံမှုမအောင်မြင်ပါ,အမှားသတင်းစကား: " . ($error['message'] ?? 'အမည်မသိအမှား');
}
?>