Rumah  >  Soal Jawab  >  teks badan

PHP tidak boleh mengakses RNDC

Saya sedang mengedit fail zon /var/named/rpz.local dan perlu memuat semula rndc selepas melaksanakan arahan ini:

cd /var/named
rndc reload rpz.local

Semuanya baik-baik saja menggunakan cli sebagai pengguna root, tetapi masalahnya ialah saya tidak dapat menjalankannya melalui nginx (PHP) /usr/sbin/rndc. Jadi bolehkah anda memberi saya petunjuk?

Saya boleh menjalankan ini:

$Output = shell_exec("uptime");
print($Output);

Tetapi jika saya menjalankan arahan ini, output akan kosong: system('rndc 重新加载'); atau shell_exec('rndc 相关'); Nampaknya saya tidak mempunyai akses kepada rndc kerana saya tidak dapat menjalankan: rndc 状态 Tetapi jika saya menjalankan ini:

system(`uptime`); // Sun Aug 20 22:36:51 +0330 2023
$Test = shell_exec(`rndc status`); // return nothing
print($Test);
system('uptime');//  00:28:03 up 18 days, 10:47,  2 users,  load average: 0.00, 0.02, 0.05

Saya mempunyai hasil uptime and uptime command. But there is nothing f或者 shell_exec('rndc reload') Saya juga melakukan arahan di bawah tetapi tidak berjaya:

setfacl -m u:nginx:rwx rpz.local
setfacl -m u:nginx:rwx /usr/sbin/rndc

P粉794851975P粉794851975215 hari yang lalu325

membalas semua(2)saya akan balas

  • P粉545956597

    P粉5459565972024-02-22 00:36:26

    Jika anda mempunyai PHP berjalan sebagai root dalam Nginx, anda mempunyai satu masalah yang serius dan kemudian beberapa.

    Sila rujuk manual operasi anda untuk memahami peranan pengguna akar dan tujuannya. Kemudian uruskan sistem dengan sewajarnya.

    Atau ringkasnya: hanya kerana anda boleh melakukan sesuatu sebagai root, tidak bermakna anda harus melakukannya dari dalam PHP. Ketahui sebabnya. sebenar. secara jujur.

    Jika tidak, sila hubungi pentadbir sistem yang bertanggungjawab yang mengetahui sistem pengendalian anda dan jelaskan keperluan secara peribadi.

    balas
    0
  • P粉463291248

    P粉4632912482024-02-22 00:06:56

    Masalah telah selesai. bagaimana? Bila nak lari rndc 命令时,我得到 NULL . Seperti yang dinyatakan dalam siaran ini Saya menukar arahan kepada:

    $Test = shell_exec(`rndc reload rpz.local 2>&1`); // return permission denied for rndc.key file
    print($Test);

    Jadi saya melakukannya:

    setfacl -m u:nginx:rwx /etc/rndc.key

    Selesai masalah.

    Terima kasih banyak sayang@hake

    P.S Seperti yang @hake sebutkan, adalah salah untuk kami menjalankan nginx sebagai sudoer atau menambah nginx ke kumpulan sudoer, jadi jangan buat kesilapan, walaupun penyahpepijatan adalah ok dan menguji (tidak lebih daripada 1-2 jam ).

    balas
    0
  • Batalbalas