Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/07/2006, 23h46   #1
Membre habitué
 
Avatar de ddams
 
Inscription : mars 2002
Messages : 148
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2002
Messages : 148
Points : 111
Points : 111
Envoyer un message via MSN à ddams
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
__________________
@+ddams
ddams est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2006, 23h50   #2
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
ça parait bien... même si je préfères les cgi-bin "bien faits"
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2006, 23h59   #3
Membre habitué
 
Avatar de ddams
 
Inscription : mars 2002
Messages : 148
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2002
Messages : 148
Points : 111
Points : 111
Envoyer un message via MSN à ddams
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 :
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...
__________________
@+ddams
ddams est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2006, 00h04   #4
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
l'utilisateur ayant droit de faire un sudo doit être dans wheel... si je me souviens bien
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2006, 13h43   #5
Membre habitué
 
Avatar de ddams
 
Inscription : mars 2002
Messages : 148
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2002
Messages : 148
Points : 111
Points : 111
Envoyer un message via MSN à ddams
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
__________________
@+ddams
ddams est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2006, 22h16   #6
Membre émérite
 
Inscription : août 2003
Messages : 878
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 878
Points : 935
Points : 935
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 :
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 ?
__________________
Un problème bien exposé
est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.
David.Schris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 00h41   #7
Membre habitué
 
Avatar de ddams
 
Inscription : mars 2002
Messages : 148
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2002
Messages : 148
Points : 111
Points : 111
Envoyer un message via MSN à ddams
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
__________________
@+ddams
ddams est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 09h56   #8
Membre émérite
 
Inscription : août 2003
Messages : 878
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 878
Points : 935
Points : 935
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é".
__________________
Un problème bien exposé
est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.
David.Schris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2006, 09h40   #9
Futur Membre du Club
 
Inscription : février 2006
Messages : 55
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : février 2006
Messages : 55
Points : 19
Points : 19
Envoyer un message via MSN à Gloup
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 :
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');
Gloup est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h34.


 
 
 
 
Partenaires

Hébergement Web