CentOS 7 Apache menjalankan / menjalankan permintaan web sebagai pengguna root

0

Saya memiliki Utilitas PHP yang menerima permintaan pos dengan file sebagai parameter. Sekarang ketika permintaan itu diterima saya ingin menjalankannya sebagai pengguna root. Misalnya ketika pengguna mengklik www.mydomain.com/sendtextfiletoftp.php dari tukang pos atau alat lain apa pun itu harus dijalankan sebagai pengguna root.

Saya sudah lelah dengan sudo visudodan menambahkan baris-baris di bawah ini ke file sudoers, tetapi tetap saja permintaan dijalankan dengan pengguna apache

www-data ALL=NOPASSWD: /var/www/html/sendtextfiletoftp.php

apache ALL=NOPASSWD: /var/www/html/sendtextfiletoftp.php

File yang sama ketika dijalankan sebagai pengguna sudo dari command line ( sudo php72 /path/to/file/sendtextfiletoftp.php) berfungsi dengan baik.

Terima kasih atas bantuannya.

harnish
sumber
Server web sebenarnya tidak mengeksekusi file-file itu; itu membacanya, dan kemudian modul PHP menjalankan kode di dalamnya.
Ignacio Vazquez-Abrams

Jawaban:

0

Selain memungkinkan pengguna apache menjadi root untuk suatu perintah, Anda perlu melakukan panggilan di dalam kode Anda yang mencakup 'sudo'. Khas:

Dalam visudo saya akan meletakkan sesuatu seperti

apache ALL = NOPASSWD: / path / my_root_command

Dalam kode /var/www/html/sendtextfiletoftp.php saya, untuk bagian tertentu yang membutuhkan akses root, saya akan meletakkan sesuatu seperti:

exec ("sudo / path / my_root_command");

El_Tel
sumber
Terima kasih EI_Tel, Apa itu my_root_command? Saya menggunakan shell_exec (), apakah itu akan berfungsi?
harnish
Ini bisa berupa skrip shell atau panggilan sistem. Saya belum mencobanya tetapi saya kira itu bisa menjadi bagian dari kode php
El_Tel
Saya telah melakukan ini tetapi tidak berhasil
harnish
Saya telah melihat dengan benar dan ini berhasil. Saya menulis skrip shell kecil untuk tail / var / log / mesages yang membutuhkan akses root atau sudo
El_Tel
$ cat /usr/local/bin/taillog.sh #! / bin / bash tail / var / log / messages
El_Tel