IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Conseils droits utilisateur apache pour exécution d'un script bash depuis PHP


Sujet :

Administration système

  1. #1
    Membre habitué Avatar de ddams
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Points : 148
    Points
    148
    Par défaut Conseils droits utilisateur apache pour exécution d'un script bash depuis PHP
    Bonjour,

    Je souhaiterais pouvoir lancer un script bash depuis un site web PHP (utilisation de la Commande exec). Or j'aurais besoins de conseils sur les droits à donner à mon utilisateur apache pour qu'il puisse lancer un tel script => Je ne souhaite évidemment pas lancer Apache avec l'utilisateur root.

    Utilisateur Apache : webuser
    Script à exec : /usr/local/monScript

    Ce script fait appel à la commande screen pour lancer une appli qu'on appellera monAppli.
    Pour info le script en question est celui décrit dans le dernier post de ce thread :
    http://www.developpez.net/forums/sho...d.php?t=185518

    Quelles seraient vos préconisations ?

    J'ai lu sur certains sites qu'une solution consiterais à éditer mon fichier /etc/sudoers afin de donner à mon user les droits sudo sur certaines commandes. Qu'en pensez-vous ?


    merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    ça parait bien... même si je préfères les cgi-bin "bien faits"

  3. #3
    Membre habitué Avatar de ddams
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Points : 148
    Points
    148
    Par défaut
    Merci pour ta réponse.

    Petite question subsidiaire : J'ai ajouté mon user au fichier sudoers mais lorsque mon user lance une commande sudo, j'obtiens le message "Sorry, sudo must be setuid root."

    Ca dit quelquechose à quelqu'un ?

    Si ça peut aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ls -il /usr/bin/sudo
    23101474 lrwxrwxrwx    1 root     root           19 jun  7 08:26 /usr/bin/sudo -> /usr.nfs/./bin/sudo

    Je ne vois pas ce qui cloche...

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    l'utilisateur ayant droit de faire un sudo doit être dans wheel... si je me souviens bien

  5. #5
    Membre habitué Avatar de ddams
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Points : 148
    Points
    148
    Par défaut
    Citation Envoyé par gorgonite
    l'utilisateur ayant droit de faire un sudo doit être dans wheel... si je me souviens bien
    J'ai aujouté mon utilisateur à ce groupe mais ça ne résoud pas le problème. Quelqu'un aurait-il une idée ?

    merci

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par gorgonite
    l'utilisateur ayant droit de faire un sudo doit être dans wheel... si je me souviens bien
    Non.
    L'intérêt de sudo serait plutôt limité si il fallait faire partie du groupe wheel pour s'en servir.
    Tant qu'à faire, tu aurais dû lui dire de faire tourner apache en tant qu'utilisateur root, cela aurait été plus simple.

    Les utilisateurs ayant le droit de faire un sudo sont ceux pour lesquels cela a été paramétré dans "/etc/sudoers" ("sudoers" voulant dire "ceux qui peuvent faire un sudo"...c'est quand même bien fait, non ?).

    Citation Envoyé par ddams
    J'ai aujouté mon utilisateur à ce groupe mais ça ne résoud pas le problème. Quelqu'un aurait-il une idée ?
    Oui, deux idées même :
    1. tu enlèves ton utilisateur de ce groupe
    2. tu modifies "/etc/sudoers" pour que webuser puisse lancer "/usr/local/monScript start", "/usr/local/monScript stop", "/usr/local/monScript status" ET RIEN D'AUTRE


    Citation Envoyé par ddams
    Petite question subsidiaire : J'ai ajouté mon user au fichier sudoers mais lorsque mon user lance une commande sudo, j'obtiens le message "Sorry, sudo must be setuid root."

    Ca dit quelquechose à quelqu'un ?

    Si ça peut aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ls -il /usr/bin/sudo
    23101474 lrwxrwxrwx    1 root     root           19 jun  7 08:26 /usr/bin/sudo -> /usr.nfs/./bin/sudo

    Je ne vois pas ce qui cloche...
    Alors j'en déduis que tu ne sais pas ce que veut dire "setuid". Dans ce cas, fais une recherche et renseigne-toi sur le sujet, cela ne te fera pas de mal (il faut que tu travailles un peu quand même ).

    Le message "Sorry, sudo must be setuid root." veut dire...ce qu'il dit : sudo est désolé mais pour fonctionner il doit être setuid root.
    Ton "/usr/bin/sudo" étant un lien vers "/usr.nfs/./bin/sudo", c'est un "ls -l /usr.nfs/./bin/sudo" que tu aurais dû faire.
    Si les permissions sur ce dernier ne sont pas "---s--x--x" et/ou si son propriétaire n'est pas root, tu comprendras qu'il y ait un message d'erreur.

    Là, deux options :
    - soit le nom du répertoire n'est pas trompeur et il s'agit d'un partage NFS ;
    - soit il est trompeur et c'est un répertoire local.
    Si il est local, vérifies qu'il s'agit bien de ton sudo et pas d'un sudo ajouté par un pirate puis fais un chown pour qu'il appartienne à root:root puis un chmod pour qu'il soit setuid (avec SEULEMENT des permissions en exécution, SURTOUT PAS en écriture).
    Si il est distant, tu peux essayer de faire de même mais vérifies aussi avec quelles options le partage est monté et notamment si il ne serait pas monté avec l'option "nosuid". Si c'est le cas, remonte-le sans cette option.

    Ok ?

  7. #7
    Membre habitué Avatar de ddams
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Points : 148
    Points
    148
    Par défaut
    Merci pour ta réponse.

    Citation Envoyé par David.Schris
    Non.
    L'intérêt de sudo serait plutôt limité si il fallait faire partie du groupe wheel pour s'en servir.
    Tant qu'à faire, tu aurais dû lui dire de faire tourner apache en tant qu'utilisateur root, cela aurait été plus simple.
    Oui ça aurait effectivement été plus simple mais si demain il y a une grosse faille sur apache, un hacker pas trop maladroit récupère un shell root -> Ya mieux niveau sécurité.

    Citation Envoyé par David.Schris
    Les utilisateurs ayant le droit de faire un sudo sont ceux pour lesquels cela a été paramétré dans "/etc/sudoers" ("sudoers" voulant dire "ceux qui peuvent faire un sudo"...c'est quand même bien fait, non ?).
    Jusque là je suis d'accord

    Citation Envoyé par David.Schris
    Oui, deux idées même :
    1. tu enlèves ton utilisateur de ce groupe
    2. tu modifies "/etc/sudoers" pour que webuser puisse lancer "/usr/local/monScript start", "/usr/local/monScript stop", "/usr/local/monScript status" ET RIEN D'AUTRE
    On est toujours d'accord

    Citation Envoyé par David.Schris
    Alors j'en déduis que tu ne sais pas ce que veut dire "setuid". Dans ce cas, fais une recherche et renseigne-toi sur le sujet, cela ne te fera pas de mal (il faut que tu travailles un peu quand même ).
    Merde je suis découvert : Je fais de mon mieux mais j'avoue c'est encore un concept encore très flou pour moi...

    Citation Envoyé par David.Schris
    Le message "Sorry, sudo must be setuid root." veut dire...ce qu'il dit : sudo est désolé mais pour fonctionner il doit être setuid root.
    Ton "/usr/bin/sudo" étant un lien vers "/usr.nfs/./bin/sudo", c'est un "ls -l /usr.nfs/./bin/sudo" que tu aurais dû faire.
    Si les permissions sur ce dernier ne sont pas "---s--x--x" et/ou si son propriétaire n'est pas root, tu comprendras qu'il y ait un message d'erreur.
    J'ai bien ça :
    ls -l /usr.nfs/./bin/sudo
    ---s--x--x 1 root root 84920 jan 25 2003 /usr.nfs/./bin/sudo

    Citation Envoyé par David.Schris
    Là, deux options :
    - soit le nom du répertoire n'est pas trompeur et il s'agit d'un partage NFS ;
    - soit il est trompeur et c'est un répertoire local.
    Si il est local, vérifies qu'il s'agit bien de ton sudo et pas d'un sudo ajouté par un pirate puis fais un chown pour qu'il appartienne à root:root puis un chmod pour qu'il soit setuid (avec SEULEMENT des permissions en exécution, SURTOUT PAS en écriture).
    Si il est distant, tu peux essayer de faire de même mais vérifies aussi avec quelles options le partage est monté et notamment si il ne serait pas monté avec l'option "nosuid". Si c'est le cas, remonte-le sans cette option.
    Ok ?
    C'est bien du NFS et c'est bien monté en nosuid.
    Je tenterais un remontage demain.

    merci

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par ddams
    Oui ça aurait effectivement été plus simple mais si demain il y a une grosse faille sur apache, un hacker pas trop maladroit récupère un shell root -> Ya mieux niveau sécurité.
    Justement, c'était fortement ironique car mettre l'utilisateur du serveur web dans le groupe wheel, et pour te citer, "Ya mieux niveau sécurité".

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 44
    Points
    44
    Par défaut
    Gorgonite m'avais proposé cette solution il y a quelques temps.
    J'avais besoin de lancer un runscript a partri de php :

    Dans /etc/sudoers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    apache  ALL=NOPASSWD:/etc/init.d/runscript start
    Comme ça, ça limite le fichier à executer et l'utilisateur

    dans php : exec('sudo /etc/init.d/runscript start');

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/05/2015, 19h49
  2. Apache n'exécute plus mes scripts en CGI
    Par bagu dans le forum Apache
    Réponses: 4
    Dernier message: 02/12/2012, 13h37
  3. [Batch] Script pour exécuter un autre script dans une arborescence de repertoires.
    Par jano_dave dans le forum Scripts/Batch
    Réponses: 16
    Dernier message: 02/07/2009, 14h43
  4. Réponses: 3
    Dernier message: 01/09/2008, 15h30
  5. Réponses: 3
    Dernier message: 03/01/2008, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo