Mac'te "İzin reddedildi" komut isteminde komut dosyasını çalıştırın


83

Mac'te terminal komutuna aşina olmadığım için yeniyim, dvtcolorconvert.rbdosyayı birimimin kök dizinine koyuyorum , bu ruby ​​betiği xcode 3 temalarını xcode 4 temaları biçimine, yani xxxxxxxx.dvtcolorthemeformata dönüştürebilir.

Daha sonra komut dosyasını /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolorthemeterminalde çalıştırın , ancak her zaman " İzin reddedildi " mesajı görüntülenir .

bunun nesi var? Bu sorunu çözmeme yardım edebilecek biri var mı? Teşekkürler.

Yanıtlar:


72

Lütfen koşmaya çalışmadan önce cevabın tamamını okuyun sudo

Koşmayı dene sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

Sudo komutu, onu takip eden komutları 'süper kullanıcı' veya 'kök' ayrıcalıklarıyla yürütür. Bu, komut satırından neredeyse her şeyi yürütmenize izin vermelidir. Bu, BUNU YAPMAYIN dedi ! Bilgisayarınızda bir komut dosyası çalıştırıyorsanız ve işletim sisteminizin temel bileşenlerine erişmek için ihtiyacınız yoksa (betiği ana dizininizdeki (~ /) bir şeyde çalıştırdığınız için çalışmadığınızı tahmin ediyorum), o zaman ana dizininizden çalışıyor olmalıdır, yani:

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

~ / Veya bir alt dizine taşıyın ve oradan çalıştırın. Orada asla izin sorunlarınız olmamalı ve işletim sisteminiz için kritik olan herhangi bir şeye erişme veya değiştirme riski olmayacaktır.

Hala sorun yaşıyorsanız ls -l, ruby ​​betiği ile aynı dizinde çalışarak dosya üzerindeki izinleri kontrol edebilirsiniz . Bunun gibi bir şey alacaksın:

$ 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

Readme.txt dosyasının -rw-r--r--solda yazdığını fark edeceksiniz . Bu, söz konusu dosyanın izinlerini gösterir. Sağdan 9 karakter 3 karakterlik 'rwx' (okuma, yazma, yürütme) gruplarına ayrılabilir. Bu dosyaya yürütme hakları eklemek istersem yürütürüm chmod 755 readme.txtve bu izinler kısmı olur rwxr-xr-x. İstersem şimdi bu dosyayı çalıştırabilirim ./readme.txt(./ bash'a $ PATH değişkenini aramak yerine istenen komut için geçerli dizine bakmasını söyler).

schluchc chmod için man sayfasına bakmayı ima ediyor, bunu çalıştırarak yapın man chmod. Belirli bir komutla ilgili belgeleri almanın en iyi yolu budur,man <command>


Teşekkürler! Ama ev dizini (~ /) nerede? Masaüstü anlamına mı geliyor?
Andy_24

Kabuk size bunu echo ~tipik olarak söyleyebilir /Users/$USER. Masaüstü, bunun altındaki bir dizindir. Unix GUI'leri ana dizini görünümden gizler, ancak hala oradadır.
Henk Langeveld

1
Çalıştırarak ana dizininizin yolunu alabilirsiniz echo $HOME. Büyük olasılıkla / Kullanıcılar / <kullanıcı adı> veya muhtemelen / Kullanıcılar / <iTunes kullanıcı adı>
sean_m

@sean_m Ayrıntılı açıklamanız için teşekkürler, bunu zaten biliyorum.
Andy_24

Harika yanıt için teşekkürler
Faris Rayhan

247

Senaryoyu yürütme haklarını kendinize verdiniz mi?

Süper kullanıcı olarak aşağıdaki komut bunu sizin için yapacaktır:

sudo chmod 755 'filename'

Ayrıntılar için chmod'un man sayfasını okumalısınız.


4
Kabul edilen cevap bu olmalıdır. Açık, öz ve sadece işe yarıyor.
2016

3
Kullandım: sudo chmod 777 'filename'
Hemant Kaushik

@HemantKaushik tabii, ikisi de işe yarıyor ama farkı biliyor musunuz?
hally9k

3
@ hally9k 777, herkesin dosyanızı değiştirmesine izin verir. 755 ile, dosyayı yalnızca siz ve kök kullanıcı değiştirebilir, bu da dosyayı daha güvenli tutar.
Steve Breese

4

Benim durumumda, shebang'da aptalca bir yazım hatası yapmıştım.

Öyleyse, üzerinde şişman parmakları olan bir başkası bu soruya rastlarsa:

Hata: #!/usr/local/bin ruby

Yazmak istedim: #!/usr/bin/env ruby

ZSH'nin verdiği belirsiz hata beni yanlış yola gönderdi:

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

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


3

Komut dosyasını 'süper kullanıcı' olarak çalıştırmanız, komutun önüne 'sudo' eklemeniz ve istendiğinde şifrenizi yazmanız yeterlidir.

O zaman dene:

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

Bu işe yaramazsa, izinleri değiştirmeyi deneyin:

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

2
Oooh, değil ille bir şey vermenize sürece öneririm lanetlemek emin komut olamaz yaralı şey.
paxdiablo


1

Ruby betiğinizdeki izinleri (yürütme izniniz olmayabilir), tema dosyanızı ve dizini (temayı okuyamaması veya orada başka temalar oluşturmaya çalışması durumunda) ve çalıştırdığınızda içinde olduğunuz dizini kontrol edin komut dosyası (geçerli dizinde geçici dosyalar oluşturması durumunda /tmp).

Bunlardan herhangi biri seni üzüyor olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.