Maison  >  Questions et réponses  >  le corps du texte

PHP ne peut pas accéder à RNDC

J'édite un fichier de zone /var/named/rpz.local et je dois recharger rndc après avoir exécuté cette commande :

cd /var/named
rndc reload rpz.local

Tout va bien en utilisant cli en tant qu'utilisateur root, mais le problème est que je ne peux pas l'exécuter via nginx (PHP) /usr/sbin/rndc. Alors peux-tu me donner un indice ?

Je peux exécuter ceci :

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

Mais si j'exécute cette commande, le résultat sera vide : system('rndc 重新加载'); ou shell_exec('rndc 相关'); Il semble que je n'ai pas accès à rndc car je ne peux même pas exécuter : rndc 状态 Mais si je lance ceci :

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

J'ai le résultat de uptime and uptime command. But there is nothing f或者 shell_exec('rndc reload') J'ai aussi fait la commande ci-dessous mais ça n'a pas fonctionné :

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

P粉794851975P粉794851975264 Il y a quelques jours365

répondre à tous(2)je répondrai

  • P粉545956597

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

    Si vous avez PHP exécuté en tant que root dans Nginx, vous avez un problème sérieux et bien plus encore.

    Veuillez consulter votre manuel d'utilisation pour comprendre le rôle de l'utilisateur root et son objectif. Gérez ensuite le système en conséquence.

    Ou en bref : ce n'est pas parce que vous pouvez faire quelque chose en tant que root que vous devez le faire depuis PHP. Découvrez pourquoi. réel. honnêtement.

    Sinon, veuillez contacter l'administrateur système responsable qui connaît votre système d'exploitation et clarifier les exigences en personne.

    répondre
    0
  • P粉463291248

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

    Le problème a été résolu. comment ? En essayant de courir rndc 命令时,我得到 NULL . Comme mentionné dans ce post j'ai changé la commande en :

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

    Alors je l'ai fait :

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

    Problème résolu.

    Merci beaucoup chérie@hake

    P.S Comme @hake l'a mentionné, nous avions tort d'exécuter nginx en tant que sudoer ou d'ajouter nginx au groupe sudoer, alors ne faites pas l'erreur, même si le débogage est correct et les tests (pas plus de 1 à 2 heures ) .

    répondre
    0
  • Annulerrépondre