Command PhaseScriptExecution failed with a nonzero exit code
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 - 17 oct. 2024 à 13:41
- Command PhaseScriptExecution failed with a nonzero exit code
- Code ascii de a - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
2 réponses
15 oct. 2024 à 18:10
Bonjour,
Le message d'erreur est un peu vague (il signifie en gros : le programme a planté sans plus d'information). Il faudrait plus de détails, par exemple comme dans cette discussion où visiblement le script invoqué n'a pas le droit d'être exécuté par l'utilisateur courant. Dans ton cas, rien ne permet de savoir à ce stade si tu es dans la même situation ou pas.
Bonne chance
17 oct. 2024 à 13:41
Bonjour,
Le problème de fond, c'est que ton utilisateur courant (ayoub) n'a pas la permission d'exécuter ce script shell.
Diagnostic
Ci-dessous, je pars du principe que MacOs fonctionne grosso modo comme Linux ce qui doit être à 99% correct dans le cas qui nous intéresse.
As-tu regardé les permissions associées à ce fichier ? Est-ce que les droits en exécution sont activés ? Dans un terminal :
ls -l "/chemin/vers/le/fichier.sh"
Quel est ton login (ayoub je suppose vu le message d'erreur) ? À quel groupes est-il rattaché ? À quel groupe appartient ton utilisateur ?
whoami groups
Comprendre comment marchent les permissions
Pour expliquer le système de permissions, créons un script shell dans le dossier de ton choix (disons /Users/ayoub) avec l'éditeur de ton choix (hormis un logiciel de traitement de texte) et appelons-le toto.sh (donc son chemin absolu est /Users/ayoub/toto.sh). Dans ce fichier écrivons :
#!/bin/sh
echo "Hello world"
On sauve et quitte.
À présent dans un terminal allons dans ce dossier :
cd /Users/ayoub ls -l toto.sh
Sous Linux on verra quelque chose comme ceci :
-rw-rw-r-- 1 ayoub ayoub 30 17 oct. 12:53 toto.sh
Ce résultat montre que le fichier appartient à l'utilisateur ayoub, au groupe ayoub. De plus on voit que l'utilisateur ayoub a des droits en lecture et écriture mais pas exécution (premier triplet rw-) et les membres du groupes ayoub ont également des droits en lecture et écriture mais pas exécution (second triplet rw-). Et tout profil qui n'est ni l'utilisateur ayoub, ni membre du groupe ayoub n'a que des droits en lecture (tripet r--). On voit ici que personne n'a de droits en exécution, et si on tente d'exécuter ce script :
/Users/ayoub/toto.sh
... on aura une erreur:
bash: /Users/ayoub/toto.sh: Permission non accordée
Ici on peut modifier légitimement les droits pour accorder à ce script des droits en exécution (voir section suivante)
chmod u+x toto.sh ls -l toto.sh
Résultat :
-rwxrw-r-- 1 ayoub ayoub 30 17 oct. 12:53 toto.sh
On voit que l'utilisateur ayoub a désormais des droits en exécution (triplet rwx). Les autres droits restent intacts. Si maintenant je tente d'exécuter le script en tant que root ou en tant qu'utilisateur propriétaire, il est bien exécuté.
/Users/ayoub/toto.sh
Hello world
Comment bien gérer les permissions
Avant d'exécuter un programme il faut s'assurer un minimum qu'on a confiance dans ce qu'il fait (source ou éditeur sûrs, etc.)
- De manière générale, relâcher les permission d'un fichier (e.g., avec chmod) est une mauvaise idée, en particulier quand il s'agit des fichiers associés au système (car on ouvre potentiellement des trous de sécurité). Ici ce n'est pas le cas, c'est un fichier qu'on a créé nous-même et on sait qu'il n'est pas malveillant.
- Si le groupe propriétaire a des permissions suffisantes, il faut simplement ajouter l'utilisateur courant dans le groupe propriétaire.
- Sinon, l'exécutable doit être lancé en tant que root (éventuellement via sudo).
Bonne chance
16 oct. 2024 à 00:14
Merci pour ta réponse et ton temps. En effet, c'est exactement la même situation où le script invoqué n'a pas les droits d'exécution pour l'utilisateur actuel. Je vais donc suivre tes recommandations pour vérifier et ajuster les permissions d'exécution.
16 oct. 2024 à 15:30