Iop tous,
J'aimerais lançer une commande par php qui nécessite les droits root.
Apache est donc chrooté.
J'ai donc copié sudo et mon programme dans /var/www/usr/bin
J'ai modifié le fichier sudoers pour autoriser les utilisateurs du groupe 'www' à exécuter mon programme.
%www ALL=NOPASSWD: /usr/local/sbin/mons2c -l
Et voici le code php qui execute la commande :
<?php
echo exec("/usr/bin/sudo /usr/local/sbin/mons2c -l"); ?>
Et ça ne marche pas. Dans les logs d'apache j'ai comme erreur :
Sudo: must be setuid root
J'ai googlisé pendant des heures sans réussir à me sortir de cette mer...
Please help,
Merci
Bon week end..
Davy
# +s
Posté par kolter (site web personnel, Mastodon) . Évalué à 2.
M.
[^] # Re: +s
Posté par kolter (site web personnel, Mastodon) . Évalué à 2.
M.
# setuid root
Posté par Florent Bayle (site web personnel) . Évalué à 1.
florent@pluton:~$ ls /usr/bin/sudo -l
-rwsr-xr-x 1 root root 97912 2005-04-27 12:13 /usr/bin/sudo
florent@pluton:~$
Remarque bien que :
- le programme appartient à root/root
- il y a un 's' à la place du 'x' habituel pour les permissions pour le propriétaire.
Cela signifie que toute personne lançant sudo le lancera en temps que root (ce qui est nécessaire pour qu'il puisse lancer ta commande en temps que root).
C'est ce que l'on appelle un programme "setuid root".
# Je vais être méchant.
Posté par Jerome Herman . Évalué à 3.
Premièrement tu dis que ton apache est chrooté, j'en déduis que pf, snort, snort2c et mons2c sont dans les chroot avec lui non ?
Existe-t-il un autre pf qui tourne en non chrooté ? Sur la même interface ? Mêmes questions pour snort ?
Deuxièmement sudo c'est mal. On a maintenant des ACL sous linux et sous BSD. Sudo devrait donc disparaitre. Garde le owner de pf/snort etc. à root, créé un groupe "netsecure" et fait un chwon de netsecure sur les programmes dont tu as besoins (de préférence avec des droits limités genre juste en execution quand c'est possible). Enuite lance ton programme en php si tu veux.
La solution du parano consisterait plutot à dire que php est un nid à bug et à failles de sécurité (c'est pas tout à fait vrai ). Dans ce cas là la solution est de faire un check de sécurité du repertoire de chroot via tripewire qui si il est valide lance la commande.
[^] # Re: Je vais être méchant.
Posté par tango73 . Évalué à 1.
et tu vas encore plus me tuer quand je vais dire que pour résoudre le problème j'ai decider de faire tourner apache en non chrooté.
ça me demanderais beaucoup de temps de tout chrooter (pf, snort, snort2c, mons2c) donc c'est la seul solution "realiste" que j'ai trouvé. En tout cas merci pour les infos, c'est toujours bon à prendre, style l'histoire des acl.
merci,
++
[^] # Re: Je vais être méchant.
Posté par tango73 . Évalué à 1.
et tu vas encore plus me tuer quand je vais dire que pour résoudre le problème j'ai decider de faire tourner apache en non chrooté.
ça me demanderais beaucoup de temps de tout chrooter (pf, snort, snort2c, mons2c) donc c'est la seul solution "realiste" que j'ai trouvé. En tout cas merci pour les infos, c'est toujours bon à prendre, style l'histoire des acl.
merci,
++
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.