Линукс дээр exec командыг гүйцэтгэх зөвшөөрөлгүй PHP-ийн шийдэл

Үүнтэй холбоотой албан ёсны лавлагаа

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