La page Web PHP ne lance pas la commande unix même après avoir mis à jour les sudoers

StackOverflow https://stackoverflow.com/questions/113728

  •  02-07-2019
  •  | 
  •  

Question

En fait, j'essaie de redémarrer un service à partir d'une page Web php.

Voici le code:

<?php
exec ('/usr/bin/sudo /etc/init.d/portmap restart');
?>

Mais, dans / var / log / httpd / error_log , je reçois

  

impossible de passer à sudoers gid: opération non autorisée

et dans / var / log / messages, je reçois

  

22 sept 15:01:56 noyau ri: audit (1222063316.536: 777): avc: nié {getattr} pour pid = 4851 comm = & sh; quot name = " var " dev = dm-0 ino = 114241 scontext = root: system_r: httpd_sys_script_t tcontext = system_u: object_r: var_t tclass = dir
  Sep 22 15:01:56 Noyau ri: audit (1222063316.549: 778): avc: nié {setrlimit} pour pid = 4851 comm = " sudo " scontext = root: system_r: httpd_sys_script_t tcontext = root: system_r: httpd_sys_script_t tclass = process
  Sep 22 15:01:56 Noyau ri: audit (1222063316.565: 779): avc: nié {lu} pour pid = 4851 comm = "sudo". name = " shadow " dev = dm-0 ino = 379669 scontext = racine: system_r: httpd_sys_script_t tcontext = system_u: object_r: shadow_t tclass = fichier
  Sep 22 15:01:56 Noyau ri: audit (1222063316.568: 780): avc: nié {lu} pour pid = 4851 comm = " sudo " name = " shadow " dev = dm-0 ino = 379669 scontext = racine: system_r: httpd_sys_script_t tcontext = system_u: object_r: shadow_t tclass = fichier
  Sep 22 15:01:56 Noyau ri: audit (1222063316.571: 781): avc: nié {setgid} pour pid = 4851 comm = " sudo " possibilité = 6 scontext = racine: système_r: httpd_sys_script_t tcontext = racine: système_r: httpd_sys_script_t tclass = capacité
  Sep 22 15:01:56 Noyau ri: audit (1222063316.574: 782): avc: nié {setuid} pour pid = 4851 comm = " sudo " possibilité = 7 scontext = racine: système_r: httpd_sys_script_t tcontext = racine: système_r: httpd_sys_script_t tclass = capacité
  Sep 22 15:01:56 Noyau ri: audit (1222063316.577: 783): avc: nié {setgid} pour pid = 4851 comm = " sudo " possibilité = 6 scontext = racine: système_r: httpd_sys_script_t tcontext = racine: système_r: httpd_sys_script_t tclass = capacité

Dans mon visudo, j'ai ajouté ces lignes

  

User_Alias ??WWW = apache

     

WWW ALL = (ALL) NOPASSWD: ALL

Pouvez-vous m'aider s'il vous plaît? Est-ce que je fais quelque chose de mal?

Merci de votre aide,

tiBoun

Était-ce utile?

La solution

Le problème ne concerne pas sudo pour le moment, mais bien avec SELinux , qui est (raisonnablement ) défini pour empêcher HTTPD d’obtenir les privilèges root.
Vous devrez soit explicitement autoriser cela (vous pouvez utiliser audit2allow pour cela), ou définir SELinux sur être permissif à la place. Je suggérerais l'ancien.

Autres conseils

L'erreur que vous obtenez semble liée à votre configuration SELinux. Vous pouvez essayer de le désactiver temporairement.

En passant, je vous suggère fortement d’ajuster votre configuration sudo pour qu’elle soit plus restrictive.

User_Alias WWW=apache
Cmnd_Alias WEBCMDS=/etc/init.d/portmap
WWW ALL=NOPASSWD: WEBCMDS

J'ai rencontré le problème récemment et la réponse acceptée ci-dessus a aidé. Cependant, je voudrais poster cette réponse pour élaborer la même chose, afin que la prochaine personne n'ait pas besoin de passer beaucoup de temps, comme moi!

Suivez la section 7 du lien suivant: https://wiki.centos.org/HowTos/SELinux .

Faites grep avec httpd_sys_script_t .

En gros, les étapes sont les suivantes:

# grep httpd_sys_script_t /var/log/audit/audit.log | audit2allow -M httpdallowsudo
# semodule -i httpdallowsudo.pp

Ceci est probablement dû à quelque chose comme essayer d'exécuter sudo dans un shell non interactif.

Si vous faites un grep pour 'sudo' dans le journal de messagerie de vos utilisateurs Apache, vous risquez de rencontrer des problèmes comme celui-ci

  

sudo: désolé, vous devez avoir un tty pour exécuter sudo

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top