Uruchom skrypt w monicie Maca „Odmowa uprawnień”


83

Jestem nowy na Macu i nie znam poleceń terminala, umieszczam dvtcolorconvert.rbplik w katalogu głównym mojego woluminu, ten skrypt Ruby może konwertować motywy xcode 3 na format motywów xcode 4, który jest xxxxxxxx.dvtcolorthemeformatem.

Następnie uruchom skrypt /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolorthemena terminalu, ale zawsze wyświetla monit „ Odmowa uprawnień ”.

co w tym złego? Czy ktoś może mi pomóc rozwiązać ten problem? Dzięki.

Odpowiedzi:


72

Przeczytaj całą odpowiedź, zanim zaczniesz biegać sudo

Spróbuj biegać sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

Polecenie sudo wykonuje polecenia, które następują po nim z uprawnieniami „superużytkownika” lub „roota”. Powinno to umożliwić wykonanie prawie wszystkiego z wiersza poleceń. To powiedziawszy, NIE RÓB TEGO! Jeśli uruchamiasz skrypt na swoim komputerze i nie potrzebujesz go, aby uzyskać dostęp do podstawowych komponentów systemu operacyjnego (zgaduję, że nie jesteś, ponieważ wywołujesz skrypt na czymś w twoim katalogu domowym (~ /)), to powinien być uruchomiony z twojego katalogu domowego, tj .:

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

Przenieś go do ~ / lub podkatalogu i wykonaj stamtąd. Nigdy nie powinieneś mieć tam problemów z uprawnieniami i nie będzie ryzyka, że ​​uzyska dostęp lub zmodyfikuje coś krytycznego dla twojego systemu operacyjnego.

Jeśli nadal masz problemy, możesz sprawdzić uprawnienia do pliku, uruchamiając go ls -lw tym samym katalogu, co skrypt ruby. Otrzymasz coś takiego:

$ 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

Zauważysz, że plik readme.txt mówi -rw-r--r--po lewej stronie. Pokazuje uprawnienia do tego pliku. 9 znaków z prawej strony można podzielić na grupy po 3 znaki „rwx” (odczyt, zapis, wykonanie). Jeśli chcę dodać prawa wykonywania do tego pliku, wykonałbym chmod 755 readme.txti ta część uprawnień stałaby się rwxr-xr-x. Mogę teraz uruchomić ten plik, jeśli chcę, uruchamiając ./readme.txt(./ mówi bashowi, aby szukał w bieżącym katalogu żądanego polecenia, zamiast przeszukiwać zmienną $ PATH).

schluchc nawiązuje do przeglądania strony podręcznika man dla chmod, zrób to uruchamiając man chmod. To najlepszy sposób na uzyskanie dokumentacji dotyczącej danego polecenia,man <command>


Dzięki! Ale gdzie jest katalog domowy (~ /)? To znaczy pulpit?
Andy_24,

Powłoka może ci to powiedzieć echo ~, zazwyczaj za pomocą /Users/$USER. Pulpit to tylko katalog poniżej. Unixowe GUI ukrywają katalog domowy, ale nadal tam jest.
Henk Langeveld,

1
Możesz uzyskać ścieżkę do katalogu domowego, uruchamiając echo $HOME. Prawdopodobnie będzie wyglądać tak, jak / Users / <nazwa użytkownika> lub prawdopodobnie / Users / <nazwa użytkownika iTunes>
sean_m

@sean_m Dzięki za szczegółowe wyjaśnienie, już to wiem.
Andy_24

Dzięki za niesamowitą odpowiedź
Faris Rayhan

247

Czy przyznałeś sobie prawa do wykonania skryptu?

Następujące polecenie jako superużytkownik zrobi to za Ciebie:

sudo chmod 755 'filename'

Aby uzyskać szczegółowe informacje, przeczytaj stronę podręcznika systemowego chmod.


4
To powinna być akceptowana odpowiedź. Jasne, zwięzłe i po prostu działa.
dialeks

3
Użyłem: sudo chmod 777 'filename'
Hemant Kaushik

@HemantKaushik jasne, oba działają, ale czy znasz różnicę?
hally9k

3
@ hally9k 777 umożliwia każdemu modyfikowanie pliku. W przypadku 755 tylko Ty i użytkownik root możecie modyfikować plik, dzięki czemu będzie on bezpieczniejszy.
Steve Breese

4

W moim przypadku popełniłem głupią literówkę w shebangu.

Na wypadek, gdyby ktoś inny z grubymi palcami natknął się na to pytanie:

Ups: #!/usr/local/bin ruby

Chciałem napisać: #!/usr/bin/env ruby

Nieokreślony błąd, który podaje ZSH, skierował mnie na złą ścieżkę:

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

Grzmotnąć: bash: ./foo.rb: /usr/local/bin: bad interpreter: Permission denied


3

Powinieneś uruchomić skrypt jako „superużytkownik”, po prostu dodaj „sudo” przed poleceniem i wpisz swoje hasło po wyświetleniu monitu.

Więc spróbuj:

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

Jeśli to nie zadziała, spróbuj dostosować uprawnienia:

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

2
Oooh, niekoniecznie coś, co bym zasugerował, chyba że jesteś cholernie pewien, że scenariusz niczego nie zaszkodzi.
paxdiablo


1

Sprawdź uprawnienia do swojego skryptu Ruby (może nie mieć uprawnień do wykonywania), pliku i katalogu motywu (na wypadek, gdyby nie mógł odczytać motywu lub próbował utworzyć w nim inne motywy) oraz katalog, w którym się znajdujesz po uruchomieniu skrypt (na wypadek, gdyby zamiast tego tworzył pliki tymczasowe w bieżącym katalogu/tmp ).

Każdy z nich może sprawiać Ci żal.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.