Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/07/2012, à 20:17

Turold

[Resolu] Probleme d'exécution d'un script sous ubuntu 12.04

Bonjour,

Je suis récemment passé de Ubuntu 11.10 à Ubuntu 12.04, et j'ai un problème avec uns cript qui fonctionnait très bien sous 11.10
Ci-dessous les permissions du script :
cedric@painkiller:/application/scripts$ ls -lrt
total 4
-rwxr-xr-x 1 cedric maison 923 juil. 12 19:55 serviio
Il est donc bien exécutable.

- 1er problème : quand j'essaye de l'exécuter, j'ai l'erreur suivante :
cedric@painkiller:/application/scripts$ ./serviio -start
bash: ./serviio: Permission non accordée
Pour l'exécuter, je suis obligé d'utiliser la commande sh ...

- 2ième problème : je fais le test suivant dans le script :
DAEMON="/application/bin_app/serviio/bin/serviio.sh"   
echo $DAEMON
........
if  [ ! -x $DAEMON ]
then  echo "executable introuvable"
exit 1
fi

Si je fais un ls :
cedric@painkiller:/application/bin_app/serviio/bin$ ls -l
total 8
-rwxrwxr-x 1 cedric maison 2084 janv. 31 20:39 serviio-console.sh
-rwxrwxrwx 1 cedric maison 2023 janv. 31 20:39 serviio.sh
=> le fichier serviio.sh est bien présent et exécutable, pourtant le script me retourne :
cedric@painkiller:/application/scripts$ sh ./serviio -start
/application/bin_app/serviio/bin/serviio.sh
executable introuvable

Auriez vous une explication ?
Merci.

Dernière modification par Turold (Le 15/07/2012, à 15:11)

Hors ligne

#2 Le 12/07/2012, à 20:57

darunia_goron

Re : [Resolu] Probleme d'exécution d'un script sous ubuntu 12.04

Tout d'abord, utilise la balise code pour mettre en forme les résultats du terminal et les fichiers ; par exemple :

$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...

C'est plus présentable, n'est-ce pas ?

Pour le premier problème, je ne vois pas ce qui coince. Le fichier est exécutable et de plus tu en es le propriétaire. Poste le script en entier (en utilisant les balises codes) pour que l'on y voit plus clair.

Le second problème est trivial. (EDIT : en fait non, cf. posts infra)

if  [ ! -x $DAEMON ]
  …
fi

« -x » sert a vérifier si le fichier est exécutable. « ! » est la négation. En gros ton test équivaut à « si $DAEMON n'est pas un exécutable… »

Dernière modification par darunia_goron (Le 12/07/2012, à 22:51)

Hors ligne

#3 Le 12/07/2012, à 21:51

Turold

Re : [Resolu] Probleme d'exécution d'un script sous ubuntu 12.04

Merci pour cette réponse rapide.
Pour mon test, c'est effectivement ce que je veux : SI le fichier .../Serviio.sh est absent/pas exécutable ALORS j'affiche le message d'erreur et je sors du script avec un code retour différent de 0.
Je pense que ce problème a la même cause que le premier, je ne peux pas exécuter le script serviio.sh directement, je suis obligé de passer par la commande sh, comme si il n'était pas exécutable (alors que les permissions sont bien positionnées).

Voici le script complet :

#!/bin/bash

NAME="Serviio Media Server"
DAEMON="/application/bin_app/serviio/bin/serviio.sh"    ## Update this to point at serviio_root/bin/serviio.sh
SERVICE_ACCOUNT="cedric" ## DON'T RUN UNDER ROOT!
PIDFILE="/application/bin_app/serviio/log/serviiod.pid"
DAEMON_STOP=" -stop"

#if [ $(mount -l | grep APPLICATION -c) = 0 ]
#then mount /media/APPLICATION
#fi
echo $DAEMON
if  [ ! -x $DAEMON ]
then  echo "executable introuvable"
 exit 1
fi

if [ $1 = '-start' ]
then
        echo 'start'
        start-stop-daemon --start -b -p $PIDFILE -m -c $SERVICE_ACCOUNT -x $DAEMON
        echo $?
        if [ $? != 0 ]
        then echo 'erreur au lancement'
        fi
fi

if [ $1 = '-stop' ]
then
        echo 'stop'
        ${DAEMON} -stop
        echo $?
fi

Merci.

Hors ligne

#4 Le 12/07/2012, à 22:42

darunia_goron

Re : [Resolu] Probleme d'exécution d'un script sous ubuntu 12.04

Autant pour moi. J'ai lu ton premier post en diagonale. Ton test était en effet correct.

Ton script me semble correct. Je l'ai testé chez moi. J'ai remplacé DAEMON="/application/bin_app/serviio/bin/serviio.sh" par DAEMON="/bin/ls" pour le test, et je n'ai rencontré aucun de tes problèmes.
J'ai testé sous Ubuntu 11.04 et 12.04.

Aussi, à l'exécution, j'ai une erreur sur les comparaisons de chaîne de caractère :

ligne 19 : [: = : opérateur unaire attendu
ligne 29 : [: = : opérateur unaire attendu

Remplacer

if [ $1 = '-start' ]

par

if [ "$1" = "-start" ]

résout ce problème (idem pour la ligne 29).



Pour ton problème d'exécutable, je sèche.
Essaye de lancer un script bidon, genre :

#!/bin/bash

if  [ ! -x /bin/ls ]
then  echo "executable introuvable"
 exit 1
fi

pour voir si ton problème se répète.

Hors ligne

#5 Le 12/07/2012, à 23:02

Turold

Re : [Resolu] Probleme d'exécution d'un script sous ubuntu 12.04

Même erreur à l'exécution du script, je suis obligé de passer par sh ...

Hors ligne

#6 Le 13/07/2012, à 00:27

darunia_goron

Re : [Resolu] Probleme d'exécution d'un script sous ubuntu 12.04

Juste pour clarifier les choses, tu as bien fait un « chmod +x nom_du_script » ?

Que donnent :

ls -l /bin/bash

,

/bin/bash

et

[ -x /application/bin_app/serviio/bin/serviio.sh ]; echo $?

?


As-tu souvenir d'une quelconque manipulation de ta part sur ton système qui pourrait être en cause ?

Hors ligne

#7 Le 13/07/2012, à 11:14

Postmortem

Re : [Resolu] Probleme d'exécution d'un script sous ubuntu 12.04

Salut,
Peut-être une problème d'autorisations sur la partition où se trouvent tes scripts... Cette partition ne serait-elle pas montée avec l'option noexec où un truc du genre ?
Tu peux nous donner le résultat de ces 2 commandes :

cat /etc/fstab

mount

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#8 Le 13/07/2012, à 23:10

Turold

Re : [Resolu] Probleme d'exécution d'un script sous ubuntu 12.04

Bonsoir,

Pour répondre à Darunia_goron : j'ai bien fait un chmod +x sur mon script, je ne vois pas de manipulation particulière sur le système que j'aurais pu faire. Pour les commandes, les voici :

cedric@painkiller:~/test_script$ ls -l /bin/bash
-rwxr-xr-x 1 root root 955024 avril  3 17:58 /bin/bash
cedric@painkiller:~/test_script$ /bin/bash
cedric@painkiller:~/test_script$ [ -x /application/bin_app/serviio/serviio.sh ]; echo $?
1
cedric@painkiller:~/test_script$ 

Et pour Postmortem : le fichier fstab (les scripts sont sur la partition application) :

cedric@painkiller:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda2 during installation
UUID=ee22ae7d-95aa-4866-87d6-d6a12ea5164a /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=0A67-E8A9  /boot/efi       vfat    defaults        0       1
# swap was on /dev/sda3 during installation
UUID=a8ba6a6a-b0eb-46fd-9a08-5c1bf25a6447 none            swap    sw              0       0
# partition data
UUID=034db70d-0b82-4c30-afc6-1b13cff73850 /data       ext4   rw,suid,dev,exec,auto,user,async
# parttition application
UUID=256c459b-f434-451b-a0b4-d9cfa10f6dbe /application    ext4   rw,suid,dev,exec,auto,user,async

Pas de noexec, par contre le script serviio copié tel quel sur /home/cedric s'exécute, cela me semble une bonne piste !!!

Pour le mount :

/dev/sda2 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda1 on /boot/efi type vfat (rw)
/dev/sda4 on /data type ext4 (rw,noexec,nosuid,nodev)
/dev/sda5 on /application type ext4 (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/cedric/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=cedric)

Il y a effectivement un noexec sur mes partitions /appication et /data, je ne sais pas d'ou il sort ...
En tout cas, cela semble être la cause de mon problème.

Hors ligne

#9 Le 14/07/2012, à 00:40

Postmortem

Re : [Resolu] Probleme d'exécution d'un script sous ubuntu 12.04

Le fstab dit exec et la partition est montée en noexec... Je crois qu'il faut regarder du coté de udev.
Il me semble que ça agit sur le montage des partitions. Mais je peux pas t'en dire plus...
Mais bon, peut-etre que je m'égare !


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#10 Le 14/07/2012, à 12:01

Postmortem

Re : [Resolu] Probleme d'exécution d'un script sous ubuntu 12.04

Salut,
J'ai trouvé ça dans le man de mount :

man mount a écrit :

user   Allow  an  ordinary  user to mount the filesystem.  The name of the mounting user is written to mtab so
              that he can unmount the filesystem again.  This option implies the options noexec,  nosuid,  and  nodev
              (unless overridden by subsequent options, as in the option line user,exec,dev,suid).

Donc, si j'ai bien compris, dans le fichier fstab, je mettrais exec après user pour le montage sur /application, ce qui donnerait ça dans ton fichier /etc/fstab :

# parttition application
UUID=256c459b-f434-451b-a0b4-d9cfa10f6dbe /application    ext4   rw,suid,dev,auto,user,exec,async

Edit :
Puis tu démontes et remontes /application :

umount /application
mount /application

Dernière modification par Postmortem (Le 14/07/2012, à 12:16)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#11 Le 14/07/2012, à 18:41

darunia_goron

Re : [Resolu] Probleme d'exécution d'un script sous ubuntu 12.04

Je ne connaissais pas tout ça.

Tu devrais en profiter pour placer l'option « user » avant « suid » et « dev » (ou supprimer ces deux options si tu n'en as pas besoin).

# parttition application
UUID=256c459b-f434-451b-a0b4-d9cfa10f6dbe /application    ext4   rw,user,suid,dev,auto,exec,async

Hors ligne

#12 Le 15/07/2012, à 15:10

Turold

Re : [Resolu] Probleme d'exécution d'un script sous ubuntu 12.04

Bonjour,

J'ai donc modifié mon fichier /etc/fstab en mettant le paramètre user en premier, et ça fonctionne, je peux à nouveau exécuter mes scripts directement.
Merci de votre aide.

Hors ligne