102 votes

Exécuter script sur mac prompt "Permission refusée".

Je suis nouveau sur Mac et je ne suis pas familier avec les commandes du terminal. dvtcolorconvert.rb sur le répertoire Root de mon volume, ce ruby script peut convertir les thèmes de xcode 3 en format de thèmes de xcode 4, qui est xxxxxxxx.dvtcolortheme format.

Ensuite, exécutez le script /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme sur le terminal, mais il y a toujours une invite " Permission refusée ".

Quel est le problème ? Quelqu'un peut m'aider à résoudre ce problème ? Merci.

293voto

schluchc Points 375

Vous êtes-vous donné les droits d'exécuter le script ?

La commande suivante, en tant que super utilisateur, le fera pour vous :

sudo chmod 755 'filename'

Pour plus de détails, vous devriez lire la page de manuel de chmod.

78voto

sean_m Points 553

Veuillez lire l'intégralité de la réponse avant d'essayer d'exécuter avec sudo

Essayez de courir sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

La commande sudo exécute les commandes qui la suivent avec les privilèges de "superutilisateur" ou de "racine". Cela devrait vous permettre d'exécuter presque tout ce que vous voulez à partir de la ligne de commande. Cela dit, NE FAITES PAS ÇA ! Si vous exécutez un script sur votre ordinateur et que vous n'en avez pas besoin pour accéder aux composants de base de votre système d'exploitation (je suppose que ce n'est pas le cas puisque vous invoquez le script sur quelque chose à l'intérieur de votre répertoire personnel (~/)), alors il devrait être exécuté à partir de votre répertoire personnel, c'est à dire :

~/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

Déplacez-le dans ~/ ou un sous-répertoire et exécutez-le à partir de là. Vous ne devriez jamais avoir de problèmes de permission à cet endroit et il n'y aura pas de risque qu'il accède ou modifie quelque chose de critique pour votre système d'exploitation.

Si vous avez toujours des problèmes, vous pouvez vérifier les permissions sur le fichier en exécutant ls -l tout en étant dans le même répertoire que le ruby script. Vous obtiendrez quelque chose comme ceci :

$ ls -l  
total 13  
drwxr-xr-x    4 or019268 Administ    12288 Apr 10 18:14 TestWizard  
drwxr-xr-x    4 or019268 Administ     4096 Aug 27 12:41 Wizard.Controls  
drwxr-xr-x    5 or019268 Administ     8192 Sep  5 00:03 Wizard.UI  
-rw-r--r--    1 or019268 Administ     1375 Sep  5 00:03 readme.txt

Vous remarquerez que le fichier readme.txt dit que -rw-r--r-- à gauche. Cela montre les permissions pour ce fichier. Les 9 caractères de droite peuvent être divisés en groupes de 3 caractères 'rwx' (read, write, execute). Si je veux ajouter des droits d'exécution à ce fichier, je dois exécuter la commande suivante chmod 755 readme.txt et que la partie des permissions deviendrait rwxr-xr-x . Je peux maintenant exécuter ce fichier si je le souhaite en exécutant ./readme.txt (./ indique au bash de rechercher la commande voulue dans le répertoire courant plutôt que dans la variable $PATH).

schluchc fait allusion à la consultation de la page de manuel de chmod, faites-le en exécutant man chmod . C'est le meilleur moyen d'obtenir de la documentation sur une commande donnée, man <command>

6voto

jbbuckley Points 81

Dans mon cas, j'avais fait une stupide faute de frappe dans le shebang.

Donc, au cas où quelqu'un d'autre, avec ses gros doigts, tomberait sur cette question :

Oups : #!/usr/local/bin ruby

Je voulais écrire : #!/usr/bin/env ruby

La vague erreur que ZSH donne m'a envoyé sur le mauvais chemin :

ZSH : zsh: permission denied: ./foo.rb

Bash : bash: ./foo.rb: /usr/local/bin: bad interpreter: Permission denied

5voto

Vaishnavi Bala Points 1

Pour fonctionner en mode administrateur sous Mac

sudo su

4voto

Jens Points 311

Vous devez exécuter le script en tant que 'superutilisateur', ajoutez simplement 'sudo' devant la commande et tapez votre mot de passe lorsque vous y êtes invité.

Essayez donc :

sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

Si cela ne fonctionne pas, essayez d'adapter les permissions :

sudo chmod 755 /dvtcolorconvert.rb
sudo chmod 755 ~/Themes/ObsidianCode.xccolortheme

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X