web-dev-qa-db-fra.com

Exécuter le script sur l'invite mac "Autorisation refusée"

Je suis nouveau sur mac avec pas familier sur la commande de terminal, je mets le fichier dvtcolorconvert.rb sur le répertoire racine de mon volume, ce script Ruby peut convertir les thèmes xcode 3 en format de thèmes xcode 4, qui est le format xxxxxxxx.dvtcolortheme.

Ensuite, exécutez le script /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme sur le terminal, mais il s'agit toujours de l'invite "Autorisation refusée".

quel est le problème avec cela? Tout le monde peut m'aider à résoudre ce problème? Merci.

54
Andy_24

Veuillez lire toute la réponse avant d'essayer de courir avec Sudo

Essayez de lancer Sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

La commande Sudo exécute les commandes qui le suivent avec les privilèges 'superutilisateur' ou 'root'. Cela devrait vous permettre d'exécuter presque n'importe quoi depuis la ligne de commande. Cela dit, NE FAITES PAS CELA! Si vous exécutez un script sur votre ordinateur et que vous n'en avez pas besoin pour accéder aux principaux composants de votre système d'exploitation (Je suppose que vous ne l'êtes pas puisque vous appelez le script sur quelque chose dans votre répertoire personnel (~ /)), il devrait alors ê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 d'autorisation là-bas et il n'y aurait pas de risque qu'il accède à ou modifie quoi que ce soit critique pour votre système d'exploitation.

Si vous rencontrez toujours des problèmes, vous pouvez vérifier les autorisations sur le fichier en exécutant ls -l dans le même répertoire que le script Ruby. 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 indique -rw-r--r-- à gauche. Cela montre les autorisations pour ce fichier. Les 9 caractères de droite peuvent être divisés en groupes de 3 caractères de "rwx" (lire, écrire, exécuter). Si je veux ajouter des droits d'exécution à ce fichier, j'exécuterais chmod 755 readme.txt et cette partie des autorisations deviendrait rwxr-xr-x. Je peux maintenant exécuter ce fichier si je le souhaite en exécutant ./readme.txt (./ indique à la bash de rechercher dans le répertoire en cours la commande voulue plutôt que de rechercher la variable $ PATH).

schluchc fait allusion à la page de manuel de chmod. Pour ce faire, exécutez man chmod. C'est le meilleur moyen d'obtenir de la documentation sur une commande donnée, man <command>

56
sean_m

Vous êtes-vous donné le droit 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.

169
schluchc

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é.

Alors essayez:

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

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

Sudo chmod 755 /dvtcolorconvert.rb
Sudo chmod 755 ~/Themes/ObsidianCode.xccolortheme
3
Jens

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

Donc, si quelqu'un d'autre avec de gros doigts trébuche sur cette question:

Oups: #!/usr/local/bin Ruby

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

L'erreur vague que ZSH donne m'a envoyé dans le mauvais chemin:

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

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

2
jbbuckley

Pour exécuter en mode administrateur sous mac

Sudo su
1
Vaishnavi Bala

Vérifiez les autorisations sur votre script Ruby (il se peut que vous n'ayez pas l'autorisation d'exécution), votre fichier de thème et votre répertoire (au cas où il ne peut pas lire le thème ou tente d'y créer d'autres thèmes), et le répertoire dans lequel vous vous trouvez lorsque vous exécutez le script (s'il crée des fichiers temporaires dans le répertoire actuel plutôt que /tmp).

N'importe lequel d'entre eux pourrait vous causer du chagrin.

1
paxdiablo