# [Apache] ProblÃ¨me de droits [presque résolu en fait !]

## MaKKrO

Salut a tous,

Voila, ayant plusieurs servers (plus ou moins loins) a gÃ©rer, j'ai fait une petite interface web en php pour rebooter le server...

ProblÃ¨me, l'utilisateur apache n'a pas les droits... j'ai vu que avec sudo ca pouvait le faire, mais j'arrive pas a le faire marchÃ© !

Ca me fait toujours 

```
sudo(pam_unix)[5979]: authentification failure; logname= uid=0 euid=0 tty= ruser= rhost= user=apache
```

Si vous pouvez m'aider... Merci

----------

## netfab

Salut,

Un peu plus de détails ne serait pas de refus  :Wink: 

Fais voir ta configuration de sudo.

Pour apprendre à le configurer, çà se passe ici.

----------

## MaKKrO

Ouai je veux bien... mais quoi ???

Je peux mettre le pti script php 

```

if ($_POST[choice]=="yes")

{

$cmd='sudo /sbin/halt';

system($cmd);

//echo "yes";

}

else

include "adminTail.php";

?>

```

Ca fait rien de bien mechant, je suis en train d essayer de me depatouiller avec sudo.

Merci pour le lien   :Wink: 

----------

## arnouf

As tu ajouter l'utilisateur apache dans le groupe "wheel", qui permet d'utiliser sudo ?

----------

## MaKKrO

Je n'ai pas le groupe WHEEL, j'ai juste mis ca :

```

~ # cat /etc/sudoers

User_Alias      USER = apache, flo

Cmnd_Alias      CMD = /sbin/halt

USER localhost = CMD

Cmnd_Alias HALT = /sbin/halt

root ALL=(ALL) ALL

```

Maintenant si je test avec le user 'flo', je peux stopper le serveur, il me demande son password et ca marche... mais toujours pas moyen avec apache !

J'ai suivi cette doc la aussi

----------

## _droop_

 *MaKKrO wrote:*   

> il me demande son password et ca marche... mais toujours pas moyen avec apache !
> 
> 

 

Bonjour,

Apache risque d'être embété pour mettre son password...

Peut être que "USER localhost = NOPASSWD: CMD" serait mieu.

Sinon, il faut que tu testes la commande en étant apache (avec su - apache dans un shell (en passant par root si nécéssaire)).

Bonne journée.

----------

## MaKKrO

 *_droop_ wrote:*   

> il faut que tu testes la commande en étant apache (avec su - apache dans un shell (en passant par root si nécéssaire)).

 

```
su - apache
```

```
# whoami

root
```

LoL !

C'est bizarre, si je passe du user 'flo' a apache ca me donne ca :

```

LW2000 ~ # su flo

flo@LW2000 /root $

```

```
flo@LW2000 /root $ su apache

Password:

su: Permission denied

Sorry.

```

Y'a peut etre un pb autre part alors... 

Pourquoi le user 'flo' ne peut pas passer a un autre user, en specifiant son password ? il faut des droits pour ca ?

merci

----------

## MaKKrO

Personne ne pourrait m'aider ???

je galère !

----------

## boozo

'alute

je bien m'y coller si je peux    :Wink: 

tu as qui dans le goupe wheel stp ?

----------

## MaKKrO

 *boozo wrote:*   

> 'alute
> 
> je bien m'y coller si je peux    

 

Merci d'essayer au moins !   :Crying or Very sad: 

 *boozo wrote:*   

> 
> 
> tu as qui dans le goupe wheel stp ?

 

```
 ~ # cat /etc/group |grep wheel

wheel:x:10:root,apache
```

J'ai rajouter le user apache dans ce groupe... je ne sais pas si j'ai bien fait !

C'est obligatoirement le groupe wheel ??? Ou alors c'est celui que je specifie dans le /etc/sudoers ?

ou ptetre les 2...   :Confused: 

----------

## boozo

pour utiliser sudo oui celà dit comme _droop_ te l'as fait remarqué c'est pas gagné pour qu'il colle son passwd   :Laughing:   donc je ne sais pas trop... probablement en virant la demande de passwd pour ALL... mais...   :Evil or Very Mad: 

vais rechercher voir si je trouve qqch d'acceptable...

----------

## letoff

Hello tout le monde, je viens mettre mon petit grain de sel.   :Cool: 

Premièrement mettre le user Apache dans le groupe wheel c'est comme cacher la clé de son coffre-fort sous le paillasson. Bonjour la sécurité...  :Mad: 

Alors comme les developpeurs d'Apache ont tout prévu, ils ont justement créé un module pour exécuter des scripts avec des droits autres que ceux de l'utilisateur Apache (qui devrait en avoir le minimum). Le module s'appelle mod_suexec. Vérifies qu'il est bien chargé dans ta config.

Ensuite il te suffit de mettre un simple script bash comme celui-là:

```
#!/bin/bash

shutdown -r 0 
```

dans un répertoire approprié (attention à ce qu'il soit protégé par une authentification forte hein!) en rajoutant dans la config d'Apache ce qu'il faut pour que ce script s'exécute sous root:

```
SuexecUserGroup root root
```

Ca ne me semble pas plus compliqué que celà mais si tu veux + d'infos n'hésites pas.   :Cool: 

----------

## boozo

A adapter pour ton cas et en accord avec la synthaxe de sudoers :

 *Quote:*   

> Granting Access Without Needing Passwords
> 
> This example allows all users in the group operator to execute all the commands in the /sbin directory without the need for entering a password. This has the added advantage of being more convenient to the user:
> 
> %operator ALL= NOPASSWD: /sbin/

 

mais je ne crois pas que ce soit bien secure ce que tu cherches à faire là    :Rolling Eyes: 

en espérant que celà t'aide

[Edit] ça confirme bien ce que je disais   :Laughing:   merci pour l'info letoff je ne connaissait pas ce mod_   :Wink: 

comme quoi un qui sait...   :Mr. Green: 

----------

## MaKKrO

Sache que ton grain de sel est le bienvenu, surtout que grace a et ca marche !!!!!

Que faire pour te remercier ? un bisous ?   :Embarassed: 

 *letoff wrote:*   

> 
> 
> ```
> SuexecUserGroup root root
> ```
> ...

 

En fait je connaissai le module, mais c'est tout, je ne connaissai pas ca.

En tout cas merci beaucoup, je peux maintenant enlever la clé de sous le paillasson !

Merci a toi aussi boozo !   :Wink: 

----------

## letoff

 *MaKKrO wrote:*   

> Sache que ton grain de sel est le bienvenu, surtout que grace a toi ca marche !!!!!

 

Et bien tu m'en vois ravi.

 *MaKKrO wrote:*   

> Que faire pour te remercier ? un bisous ?   

 

Si ça ne t'ennuies pas je préfèrerait que nous envoies un peu de soleil parce que pour les bisous j'ai une bande de gremlins à la maison qui s'en chargent très bien. Par contre il fait un temps pourri ici.   :Confused: 

[edit] tiens c'est mon 100ème message en pile-poil 2 ans.   :Razz: 

----------

## MaKKrO

 *letoff wrote:*   

> 
> 
> Si ça ne t'ennuies pas je préfèrerait que nous envoies un peu de soleil [...]
> 
> 

 

Ba du soleil, je pourrai je le ferai... y'en a revendre ici !

Je suis même pas a Dubai comme c'est marqué, mais a Djeddah, la ou notre bon président est depuis 2 jours !!!

Mais je repars a Dubai dans 4 jours...

voila, apres un post mouvementé sur Apache, ca part en sucette !!!   :Laughing: 

----------

## MaKKrO

Bon ba c'est pas encore ca !!!!

En fait, j'ai chillispot (redirection) qui tourne et la page de redirection est un .cgi et la catastrophe !!!

Dans le httpd.conf, il y a écrit :

 *Quote:*   

> 
> 
> This 'suexec' modules provides the ability to execute CGI scripts under a different user than apache is run

 

Un petit log... et voila ! :

```
 cat /var/log/apache2/suexec_log

[2006-03-09 02:39:29]: uid: (0/root) gid: (0/0) cmd: hotspotlogin.cgi

[2006-03-09 02:39:29]: cannot run as forbidden uid (0/hotspotlogin.cgi)

```

Donc je ne sais pas trop quoi faire, parce que ca doit changer les permissions, du coup je me tape un beau "Internal Server Error" !

Si je vire le SuexecUserGroup root root, ca marche nikel !

Est ce que quelqu'un aurait une idée ? je dois laissé tomber le module suexec ?

Merci

----------

## letoff

[edit] Au temps pour moi. suexec ne permet pas à root d'exécuter des cgi, c'est dans la doc officielle. Je te conseillerai donc de regarder comment fait webmin pour redémarrer le serveur. Je pense que leur solution doit être éprouvée. <g>

 *MaKKrO wrote:*   

> Bon ba c'est pas encore ca !!!!
> 
> En fait, j'ai chillispot (redirection) qui tourne et la page de redirection est un .cgi et la catastrophe !!!

 

Je commence à être paumé dans ta config! Chillispot c'est pas une émulation des scripts asp de Ms? Sinon je croyais que tes pages étaient en php?

Et que te donne un 

```
suexec2 -V
```

 et un 

```
ls -la `which suexec2`
```

Autrement tu trouveras toute la doc  de suexec ici.

----------

## MaKKrO

 *letoff wrote:*   

> Je commence à être paumé dans ta config! Chillispot c'est pas une émulation des scripts asp de Ms? Sinon je croyais que tes pages étaient en php?
> 
> 

 

Je te comprend bien, c'est pas simple sur du "papier" !

En fait, en gros, j'ai un srv radius sur lequel les clients que se connecte sont rediriger grace a chilli !

Ou ca :

 *Quote:*   

> ChilliSpot is an open source captive portal or wireless LAN access point controller. It is used for authenticating users of a wireless LAN.

 

Les clients son donc rediriger sur le hotspotlogin.cgi.

Apres ca, j ai toute l'interface php pour adminitrer la BDD mysql ou sont stocker tous les clients. (username - Password et tt le blabla)

Le php marche nikel, mais le cgi part en steak si j'ajoute cette ligne !

 *letoff wrote:*   

> 
> 
> Et que te donne un 
> 
> ```
> ...

 

```
suexec2 -V

 -D AP_DOC_ROOT="/var/www"

 -D AP_GID_MIN=100

 -D AP_HTTPD_USER="apache"

 -D AP_LOG_EXEC="/var/log/apache2/suexec_log"

 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"

 -D AP_SUEXEC_UMASK=077

 -D AP_UID_MIN=1000

 -D AP_USERDIR_SUFFIX="public_html"

```

le ls -la 'whichi suexec2' ne fonctionne pas, par contre j'ai ca...

```
which suexec

which: no suexec in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/3.4.5)

```

Merci !

----------

## letoff

 *MaKKrO wrote:*   

> En fait, en gros, j'ai un srv radius sur lequel les clients que se connecte sont rediriger grace a chilli !

 

Honte sur moi j'avais confondu avec Chiliasp...  :Wink: 

 *MaKKrO wrote:*   

> Les clients son donc rediriger sur le hotspotlogin.cgi.
> 
> Apres ca, j ai toute l'interface php pour adminitrer la BDD mysql ou sont stocker tous les clients. (username - Password et tt le blabla)
> 
> Le php marche nikel, mais le cgi part en steak si j'ajoute cette ligne !

 

Ok je comprend mieux maintenant. En fait comme je l'ai indiqué en éditant mon post précédent, suexec ne peut fonctionner avec root. Il est donc normal que tes cgi partent en live avec la directive Apache que je t'avais donné auparavant. Notes bien que dans mon esprit cette directive ne devait s'appliquer qu'à un et un seul script que tu aurais placé dans un répertoire approprié avec la directive placée dans un <Directory>. Bon de toutes façon nous avons fait fausse route puisque root ne peut exécuter de cgi via suexec.

```
suexec2 -V

 -D AP_DOC_ROOT="/var/www"

 -D AP_GID_MIN=100

 -D AP_HTTPD_USER="apache"

 -D AP_LOG_EXEC="/var/log/apache2/suexec_log"

 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"

 -D AP_SUEXEC_UMASK=077

 -D AP_UID_MIN=1000

 -D AP_USERDIR_SUFFIX="public_html"

```

Ok, tout celà me semble bon. Mais il va falloir passer à une autre technique.

 *MaKKrO wrote:*   

> le ls -la 'whichi suexec2' ne fonctionne pas, par contre j'ai ca...

 

Attention, il s'agit d'un which entouré de ` et non de '. Si tu préfère tu peux vérifier les droits setuid et guid de suexexc2 comme ceci:

```
ls -la $(which suexec2)
```

Je suis de la vieille école...   :Smile: 

Bon reprenons nos moutons. Tout ce que tu cherches à faire c'est un shutdown de ton serveur n'est-ce pas? Tu peux donc rajouter un user spécial dans /etc/shutdown.allow et faire ton script en bash avec un:

```
/sbin/shutdown -ar 0
```

Ensuite il faudra bien sur que ce script soit exécuté par le user indiqué dans ton fichier d'autorisation en utilisant le mod_suexec. Une autre possibilité serait de modifier ton inittab de façon à ce que les touches ctrl-alt-del fassent un reboot et créer un script qui envoie ces touches vers la console.

Hth.

----------

## MaKKrO

 *letoff wrote:*   

> Tu peux donc rajouter un user spécial dans /etc/shutdown.allow et faire ton script en bash avec un:
> 
> ```
> /sbin/shutdown -ar 0
> ```
> ...

 

LoL... chui perdu la... désolé mais je sature !!!   :Confused: 

Je met quoi dans le shutdown.allow ??? le script ?

Et le fichier d'autorisation, c'est lequel ? httpd.conf ??

Et le user, je le met ou ???

lol, ca me fait rire mais c'est absolument pas drole !!!

Je suis navré, mais j'ai les neurones qui se bousculent la !

----------

## MaKKrO

Adiez moi siou plait... c la misère la !

Merci

----------

## _droop_

 *MaKKrO wrote:*   

> 
> 
> Je met quoi dans le shutdown.allow ??? le script ?
> 
> Et le fichier d'autorisation, c'est lequel ? httpd.conf ??

 

Salut,

A priori, le fichier d'autorisation dont tu parles c'est shutdown.allow et ce fichier doit contenir le nom des utilisateurs autorisés à arreter la machine. man shutdown te donnera plus de détails.

Bon courage.

----------

## MaKKrO

Ok je check ca dès que possible, merci !

----------

## MaKKrO

 *letoff wrote:*   

> Une autre possibilité serait de modifier ton inittab de façon à ce que les touches ctrl-alt-del fassent un reboot et créer un script qui envoie ces touches vers la console.

 

Bon alors je m'y suis enfin mis... Mais maintenant, c'est cette partie la qui me manque...

Comment créer un script qui renvoi ctrl+alt+suppr dans une console...

J'ai checké le /etc/inittab pour le reboot, c'est pas dur... mais ce script me pose quelques problèmes...

Si quelqu'un sait comment faire ca !

Merci

----------

## MaKKrO

Personne ???   :Rolling Eyes: 

----------

