web-dev-qa-db-ja.com

Macでスクリプトを実行する「許可が拒否されました」というプロンプト

私は端末コマンドに精通していないMacを初めて使用し、dvtcolorconvert.rbファイルをボリュームのルートディレクトリに置きます。このRubyスクリプトはxcode 3テーマをxcode 4テーマ形式に変換できます。 xxxxxxxx.dvtcolortheme形式です。

次に、端末でスクリプト/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolorthemeを実行しますが、常にプロンプ​​ト「Permission denied "」が表示されます。

これは何が問題なのですか?誰も私がこの問題を解決するのを助けることができますか?ありがとう。

54
Andy_24

Sudoで実行する前に、回答全体をお読みください

Sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolorthemeを実行してみてください

Sudoコマンドは、それに続くコマンドを「スーパーユーザー」または「ルート」特権で実行します。これにより、コマンドラインからほとんどすべてを実行できるようになります。つまり、これをしないでください!コンピューターでスクリプトを実行しており、オペレーティングシステムのコアコンポーネントにアクセスする必要がない場合(ホームディレクトリ(〜/)内の何かでスクリプトを呼び出しているためではないのではないかと推測します)、ホームディレクトリから実行する必要があります。

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

〜/またはサブディレクトリに移動して、そこから実行します。そこに許可の問題が発生することは決してないはずであり、OSにとって重要なものにアクセスしたり変更したりするリスクはありません。

それでも問題が解決しない場合は、Rubyスクリプトと同じディレクトリでls -lを実行して、ファイルのアクセス許可を確認できます。次のようなものが得られます。

$ 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ファイルの左側に-rw-r--r--と書かれていることに気付くでしょう。これは、そのファイルの許可を示しています。右側の9文字は、「rwx」の3文字のグループ(読み取り、書き込み、実行)に分割できます。このファイルに実行権を追加する場合は、chmod 755 readme.txtを実行し、その許可部分はrwxr-xr-xになります。 ./readme.txtを実行することで、必要に応じてこのファイルを実行できるようになりました(./は、$ PATH変数を検索するのではなく、目的のコマンドを現在のディレクトリで検索するようbashに指示します)。

schluchc は、chmodのマニュアルページを参照することを暗示しています。これは、man chmodを実行して行います。これは、特定のコマンドman <command>に関するドキュメントを取得する最良の方法です

56
sean_m

スクリプトを実行する権利を自分に与えましたか?

スーパーユーザーとしての次のコマンドは、これを行います。

Sudo chmod 755 'filename'

詳細については、chmodのmanページをご覧ください。

169
schluchc

スクリプトを「スーパーユーザー」として実行し、コマンドの前に「Sudo」を追加し、プロンプトが表示されたらパスワードを入力するだけです。

だから試してください:

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

これが機能しない場合は、許可を調整してみてください。

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

私の場合、私はシバンで愚かなタイプミスをしていました。

だから、太った指で誰かがこの質問に出くわした場合:

おっと:#!/usr/local/bin Ruby

書くつもりだった:#!/usr/bin/env Ruby

ZSHのあいまいなエラーにより、間違ったパスが表示されます。

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

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

2
jbbuckley

Macで管理者モードで実行するには

Sudo su
1
Vaishnavi Bala

Rubyスクリプト(実行権限がない場合があります)、テーマファイルおよびディレクトリ(テーマを読み取れない場合、またはそこに他のテーマを作成しようとする場合)の権限を確認します。andスクリプトを実行するときのディレクトリ(/tmpではなく現在のディレクトリに一時ファイルを作成する場合)。

それらのいずれかがあなたを悲しませている可能性があります。

1
paxdiablo