Maison > Questions et réponses > le corps du texte
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粉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.
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 ) .