PHP– ის გადაწყვეტა, რომელსაც არ აქვს Linux– ზე exec ბრძანების შესრულების ნებართვა
დაკავშირებული ოფიციალური ცნობები
PHP exec Linux sudoers file Sudo Commandsცვლილებები fastcgi რეჟიმში გაშვებისას
როდესაც PHP მუშაობს fastcgi რეჟიმში, მისი უფლებები მემკვიდრეობით მიიღება მისი მასპინძელი პროგრამიდან. ჩვენ ვიღებთ აპაჩის მაგალითს ასახსნელად. პირველ რიგში, ჩვენ უნდა მოვძებნოთ ანგარიში, რომლის მიხედვითაც მუშაობს 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);