# [sudo] Sudo pète les plombs ...

## loopx

Bonjour, 

Désolé, je poste ici, mais c'est pas vraiment pour Gentoo, c'est du Red Hat, mais je pense que ca doit quand même être plus ou moins pareil ...

J'explique le problème ... J'ai un serveur et un utilisateur nomé "jbossconsole" ; cet utilisateur doit être capable d'exécuter, en tant que root, 4 script RC :

- /etc/init.d/jboss-val0109

- /etc/init.d/jboss-val0110

- /etc/init.d/jboss-val0111

- /etc/init.d/jboss-val0112

J'ai donc ajouté ceci dans sudo (via visudo) => /etc/sudoers :

```
# Allow low user "jbossconsole" to access some root command

Cmnd_Alias JBOSSCONSOLE_CMD = /etc/init.d/jboss-*, /usr/local/bin/jbossconsole_deployment, /usr/local/bin/jbossconsole_undeployment

jbossconsole ALL=(root) NOPASSWD: JBOSSCONSOLE_CMD
```

Pour info, voici un petit "ls" du répertoire "/etc/init.d/" pour vous convaincre de ma bonne fois ^^ :

```
[0][root@serveur ~]$ ls -l /etc/init.d/jboss-*

-rwxr-xr-x 1 root root 10621 Sep 11 15:30 /etc/init.d/jboss-init

lrwxrwxrwx 1 root root    10 Sep 11 13:50 /etc/init.d/jboss-val0109 -> jboss-init

lrwxrwxrwx 1 root root    10 Sep 11 13:50 /etc/init.d/jboss-val0110 -> jboss-init

lrwxrwxrwx 1 root root    10 Sep 11 13:50 /etc/init.d/jboss-val0111 -> jboss-init

lrwxrwxrwx 1 root root    10 Sep 11 15:23 /etc/init.d/jboss-val0112 -> jboss-init
```

Petit test via en local (connection root => "su - jbossconsole" => jbossconsole) :

```
[0][jbossconsole@serveur ~]$ sudo /etc/init.d/jboss-val0109 status

val0109 (pid  2490) is running

[0][jbossconsole@serveur ~]$ sudo /etc/init.d/jboss-val0110 status

val0110 (pid  3047) is running

[0][jbossconsole@serveur ~]$ sudo /etc/init.d/jboss-val0111 status

val0111 (pid  3425) is running

[0][jbossconsole@serveur ~]$ sudo /etc/init.d/jboss-val0112 status

Password:
```

Le problème se situe au niveau de ce dernier script RC : sudo demande un mot de passe ... mais pourquoi ?????? On est plusieurs à avoir analysé le problème et personne n'y comprend rien ...

J'ai pourtant trouvé un workaround ... mais c'est totalement illogique, alors qu'un ordinateur est logique :

```
[1][root@serveur ~]$ touch /etc/init.d/jboss-12

[1][jbossconsole@serveur ~]$ sudo /etc/init.d/jboss-val0112 status

val0112 (pid  3858) is running
```

Le workaround, ... il faut créer un fichier bidon "jboss-12" dans /etc/init.d/ ...  et la magie, sudo ne demande plus de mot de passe ... vraiment étrange non !!???!!???!!??

Alors, si quelqu'un sait d'ou vient ce problème ? Est-ce un changement de syntaxe ? Est-ce un bug ? Quel est le rapport entre sudo et le répertoire "/etc/init.d/" ???? car, vraiment, créer un fichier et savoir exécuter "/etc/init.d/jboss-val0112" juste après, je vois pas vraiment le rapport ...

Any ideas ?

----------

## loopx

Bon, j'ai un meilleur workaround .. car il faut savoir que il peut y avoir du "val", du "dev", du "test" et du "prod" ... J'ai ajouté ceci après l'"*" :

```
[0-9][0-9][0-9][0-9]
```

ce qui donne, dans sudoers :

```
# Allow low user "jbossconsole" to access some root command

Cmnd_Alias JBOSSCONSOLE_CMD = /etc/init.d/jboss-*[0-9][0-9][0-9][0-9], /usr/local/bin/jbossconsole_deployment, /usr/local/bin/jbossconsole_undeployment

jbossconsole ALL=(root) NOPASSWD: JBOSSCONSOLE_CMD
```

mais bon .. j'aimerais quand même savoir pourquoi je dois rajouter des trucs après une "*"!! Ce n'est pas logique du tout  :Surprised: 

----------

