|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
Inscription : septembre 2012 Messages : 5 ![]() |
Bonjour à tous, débutant sous linux et php
j'ai créer un système de création de comptes mails sur mon serveur debian. Lorsqu'un utilisateur rempli un formulaire, le script php doit executer un : Code :
J'ai donc créer un fichier createaccount.sh dans /var/createaccount.sh qui contient : Code :
Code :
Code :
Par contre, lorsque j'execute sous ssh directement mon fichier createaccount.sh (en ayant modifié les $data par le vrai utilisateur) et bien cela crée bien les dossier pour les mails. Quelqu'un aurait-il une piste ? Ai-je fait "boulette" quelque part ? Ou alors ai-je loupé une étape ? Merci par avance. |
||||||||
|
|
01
|
|
|
#2 |
|
Membre du Club
![]() Obsessionnellement relire des RFC et des pages de man comme ça pour le plaisir. Inscription : septembre 2012 Messages : 49 ![]() |
A tout hasard, t'as essayé de donner le chemin complet de sudo au lieu de juste "sudo" ? Genre :
Code :
exec('/usr/bin/sudo www-data /var/createaccount.sh ' . $data . ' ' . $mail);
__________________
- "Make me a sandwich." - "No I won't." - "sudo Make me a sandwich." - "Ok." |
|
|
10
|
|
|
#3 |
Inscription : septembre 2012 Messages : 5 ![]() |
Bonjour psikotik,
je viens d'essayer, mais cela ne fonctionne toujours pas. Merci quand même |
|
|
01
|
|
|
#4 |
|
Membre du Club
![]() Obsessionnellement relire des RFC et des pages de man comme ça pour le plaisir. Inscription : septembre 2012 Messages : 49 ![]() |
Ah, et puis, faut pas préciser l'option -u ? Essaye :
Code :
exec('/usr/bin/sudo -u www-data /var/createaccount.sh ' . $data . ' ' . $mail);
__________________
- "Make me a sandwich." - "No I won't." - "sudo Make me a sandwich." - "Ok." |
|
|
01
|
|
|
#5 |
|
Membre du Club
![]() Obsessionnellement relire des RFC et des pages de man comme ça pour le plaisir. Inscription : septembre 2012 Messages : 49 ![]() |
Et puis, je me dis, c'est www-data qui exécute ton script en principe. Donc, tu devrais pouvoir mettre :
Code :
exec('/var/createaccount.sh ' . $data . ' ' . $mail);
__________________
- "Make me a sandwich." - "No I won't." - "sudo Make me a sandwich." - "Ok." |
|
|
01
|
|
|
#6 |
Inscription : septembre 2012 Messages : 5 ![]() |
Merci psikotik,
mais cela ne fonctionne quand meme pas :'( |
|
|
01
|
|
|
#7 |
![]() ![]() Bernard SIAUDEnseignant Inscription : novembre 2003 Messages : 4 659 ![]() |
Si tu fais ces commandes en ligne de commande avec l'utilisateur www-data, ça donne quoi ?
__________________
Modérateur Mandriva Linux Amicalement VOOotre Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org Mes tutoriels |
|
|
10
|
|
|
#8 | |||
![]() ![]() ![]() Idriss NeumannConsultant en SSII et auditeur au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 3 777 ![]() |
Bonjour.
Citation:
Par ailleurs il faut aussi faire gaffe au shell utilisé par www-data qui est parfois un simple sh limité. Voir si avec www-data, on peux utiliser la commande chown, etc par exemple. Mettre à jour les variables d'environnements si nécessaire. Alors la solution la plus simple que je déconseille fortement (une énorme faille de sécurité si ton serveur web est ouvert à tout le monde sur le port HTTP) : 1 - Mettre en NOPASSWD tout les droits pour www-data dans le sudoers (très dangereux) 2 - appeler directement les chown via l'instructionexec() comme tu le faisait au début La meilleure solution selon moi : 1 - ne mettre aucun droits dans le sudoers ; 2 - demander une authentification du compte root via un formulaire en stockant le mot de passe dans une variable ; 3 - exécuter les commande via su -c en complétant avec le mot de passe root saisie, à l'aide d'expect par exemple. Et puis franchement, je préfère faire ça avec un client lourd en étant logué avec mon propre compte que bidouiller avec l'user d'apache mais ça c'est un point de vue. Cordialement, Idriss |
|||
|
11
|
|
|
#9 |
|
Invité régulier
![]() Inscription : avril 2012 Messages : 8 ![]() |
Salut,
Pourquoi n'utilise tu pas la libssh2 ? Perso pour plus de sécurité plutôt que d'utiliser exec j'utilise cette lib et me connecte avec un compte sudoer pour créé des utilisateurs sur la machine. Ca évite d'ajouter des droits à www-data sans savoir ce que quelqu'un pourrait faire avec si une faille dans ton script venait à être découverte. |
|
|
01
|
|
|
#10 |
|
Invité de passage
![]() Étudiant Inscription : juin 2012 Messages : 6 ![]() |
Bonjour,
+ 1 pour la libssh2 ! J'ai longtemps recherché (comme toi actuellement) une méthode permettant d’exécuter des commandes sur un serveur linux (ajout de client, changement de mot de passe, etc) sans forcément donner les droits à www-data ou ALL !!! dans le sudoers. J'ai pu lire qu'il est impossible d’exécuter un script (.sh) via sudoers pour raison de sécurité, il faut absolument un binaire. J'ai failli coder en C toutes mes commandes pour que cela fonctionne de manière sécurisée (suite aux recommandations d'un collègue, codeur fou). Finalement, j'utilise actuellement la bibliothèque Libssh2 associée à une authentification SSH par certificat sur un utilisateur CHROOTé dont les commandes dont maitrisées. En espérant que cela t'es orienté. Bonne continuation. |
|
|
02
|
|
|
#11 | ||
![]() ![]() ![]() Idriss NeumannConsultant en SSII et auditeur au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 3 777 ![]() |
Bonsoir.
Ah bon ? Depuis quand il est impossible d'utiliser sudo pour lancer un .sh quand le compte a les bonnes permissions via sudoers ? Où as-tu lu pareille énormité ? Code :
Du coup faut savoir utiliser expect, c'est peut être moins simple que passer par ssh mais ça évite d'utiliser une connexion ssh. L'avantage que l'on pourrait voir avec ssh, c'est éventuellement l'utilisation des clefs, encore que si on fait les choses proprement avec su ... Idriss |
||
|
10
|
Copyright © 2000-2013 - www.developpez.com