コンピュータのメンテナンス
 Computer >> コンピューター >  >> トラブルシューティング >> コンピュータのメンテナンス

Macのターミナルで「Permission Denied(権限がありません)」エラーを解決する方法

Macターミナルの「Permission Denied」エラーとは?

macOSでファイルを開くのはとても簡単です。ファイルをダブルクリックするだけで、すぐに開きます。通常、Macでファイルを開くのに時間はかかりません。

もうひとつの方法がターミナルを使うやり方です。コマンドを実行してファイルの保存先ディレクトリを指定すれば、手間なくファイルを開けます。

ところが、必ずしもそうとは限りません。ターミナルでファイルを開こうとした際に「permission denied(権限がありません)」エラーが発生することがあります。単純なコマンドでこのエラーが出るということは、ファイル側かmacOS自体に何らかの問題があることを意味します。

「Permission Denied」エラーの表示例

Windowsの権限エラーと同様に、Macの「permission denied」エラーもさまざまなメッセージ形式で表示されます。代表的な例は以下の通りです。

  • zsh: permission denied: ./foo.rb
  • bash: ./foo.rb: /usr/local/bin: bad interpreter: Permission denied
  • aftheers-MacBook-Air:scripts root# ./ArduinoWifiShield_upgrade.sh
  • -sh: ./ArduinoWifiShield_upgrade.sh: Permission denied

プロのヒント: システムの不具合や動作の遅さを引き起こすパフォーマンス問題、ジャンクファイル、有害なアプリ、セキュリティ上の脅威がないか、Macを定期的にスキャンしておきましょう。

このエラーは昔からMacユーザーを悩ませてきた定番のトラブルです。最近では、macOS CatalinaやBig Surにアップグレードした後に「permission denied」エラーが発生したという報告が多数寄せられています。

ターミナルでコマンドを実行する際にはさまざまな要因で失敗する可能性があるため、このエラーに遭遇すること自体は珍しくありません。それでも、他にファイルを開く手段がない場合には非常に厄介な問題です。

たとえば、関連付けられたアプリがないファイルや、クリックしても反応しないファイルを開きたいケースが挙げられます。

ここからは、MacでZshの「permission denied」エラーに直面したときの対処法を詳しく見ていきましょう。まずは基本用語から確認します。

macOSのターミナルとは?

Macのターミナルアプリでは多様な操作が可能ですが、最も広く使われているのは、各種コマンドを使ってデバイスを制御する用途です。

ターミナルはMacのコマンドラインインターフェースです。取っつきにくいと感じる人もいますが、慣れれば作業効率が格段に向上します。基本的な機能とコマンドを覚えて、コマンドラインに入力するだけで使い始められます。

基本をマスターしたら、より高度なコマンドを学び、複雑なタスクにも挑戦してみましょう。

Macでターミナルを起動する方法

Macでターミナルを起動する方法は主に2つあります。

アプリケーションフォルダから起動する

ターミナルはアプリケーションフォルダ内のユーティリティフォルダにあります。アプリケーションフォルダを開いてユーティリティを選択し、ターミナルをダブルクリックしてください。

Spotlightから起動する

もうひとつの方法は、Commandキーとスペースバーを同時に押してSpotlightを起動することです。「terminal」と入力し、検索結果をダブルクリックすれば起動します。

ターミナルのカスタマイズ

初回起動時には、白背景の小さなウィンドウが表示されます。タイトルバーにはユーザー名が表示され、「bash」の文字やアクティブウィンドウのピクセルサイズも確認できます。

ウィンドウを大きくしたい場合は、右下隅をクリックして外側へドラッグするだけで拡張できます。

背景色やフォントの色を変更したい場合は、「シェル」メニューから「新規ウィンドウ」を選択し、一覧から好みのスタイルを選びましょう。

覚えておきたいMacの基本コマンド

ターミナルに慣れる最短の近道は、実際に使ってみることです。その前に、コマンドの入力方法を理解しておきましょう。といっても難しくありません。コマンドラインにコマンドを入力してReturnキーを押すだけで実行できます。

各コマンドは3つの要素で構成されています。実行する「コマンド」本体、対象となるリソースを指定する「引数」、そして出力を調整するための「オプション」です。

たとえば、システムファイルをあるフォルダから別のフォルダへ移動したい場合は、移動コマンド「mv」を使い、移動先の場所を入力します。

ターミナルで使える応用コマンドの例

ここでは、少し高度なターミナルコマンドの例をいくつか紹介します。

フォルダ間でファイルをコピーする

あるディレクトリから別のディレクトリへファイルをコピーするには、以下の手順に従います。

  1. コマンドラインにditto [folder1] [folder2]と入力します。folder1にはコピー元のフォルダを、folder2にはコピー先のフォルダを指定してください。
  2. コピー中のファイルを表示したい場合は、コマンドの末尾に-vを追加します。

Webからファイルをダウンロードする

ターミナルを使ってWebからファイルをダウンロードするには、以下のように操作します。

  1. ターミナルを開き、cd ~/Downloads/コマンドを入力します。
  2. 続けて、curl -O [ダウンロードしたいファイルのURL]と入力します。

スクリーンショットの保存先を変更する

スクリーンショットのデフォルトの保存場所を変更したい場合は、以下の手順を実行します。

  1. コマンドラインにdefaults write com.apple.screencapture location [保存先フォルダのパス]と入力します。
  2. Returnキーを押します。
  3. 次に、killall SystemUIServerと入力します。
  4. 再度Returnキーを押します。

スクリーンショットのファイル形式を変更する

スクリーンショットを.jpg形式で保存したい場合は、以下のように操作します。

  1. Macのスクリーンショットはデフォルトで.png形式で保存されます。これを.jpgに変更するには、defaults write com.apple.screencapture type JPGと入力します。
  2. Returnキーを押します。
  3. 続けて、killall SystemUIServerと入力します。
  4. 再度Returnキーを押します。

ディレクトリ内の全ファイルを削除する

ディレクトリ内のフォルダやサブフォルダを削除するには、以下のコマンドを使用します。

  1. ディレクトリ内のすべてのファイルを削除するには、rm -R directorynameと入力します。
  2. 削除前に確認したい場合は、rm -iR directorynameコマンドを使用します。

Zsh(Zシェル)とは?

Zシェル(Zsh)は、macOSのデフォルトシェルであるbashをベースに設計・構築されたUnixシェルです。プラグインやテーマの設定がbashよりはるかに簡単なことから、専門家の間でもZshが推奨されています。テーマの見栄えも美しく整っています。さらに、厳格なユーザー権限を必要としない点も大きなメリットです。

ターミナルでファイルを開くときの「Permission Denied」エラーとは?

名前の通り、これはMacユーザーがコマンドでファイルを開こうとした際に発生する権限エラーです。sudoコマンドでもbashコマンドでも発生する可能性があります。複数の報告によると、root権限でファイルを開いている場合でもこのエラーが起こることがあります。

多くの報告では、インストーラーファイルをターミナル経由で開こうとしたときにエラーが表示されるとしています。ファイルをターミナルウィンドウにドラッグ&ドロップすると「Permission Denied」エラーがポップアップ表示されるのです。ただし、インストーラー以外のファイルでも同様の事象は起こり得ます。

Macで「Permission Denied」エラーが発生する理由

Zshの「permission denied」エラーが発生する原因はいくつか考えられます。最も一般的なものは以下の通りです。

ファイルがロックされている

ロックされたプログラムをインストールしようとしたり、ロックされたファイルを変更しようとしたりすると、「Permission Denied」エラーに遭遇する可能性が高くなります。管理者権限を持っていないか、ファイルの作成者がchmodでファイルをロックしていることが原因です。

このエラーは、自分のユーザーアカウントが所有していないディレクトリに書き込もうとしていることを示しています。

ファイルの権限が不足している

対象ファイルの権限を確認するには、ターミナルにls -l file.extと入力します。「file.ext」の部分は、開こうとしているファイル名と拡張子に置き換えてください。また、管理者権限が必要なコマンドを「sudo」で強制的に実行してみるのも有効です。

chmod xやシステムコマンドの入力ミス

このエラーのもうひとつの原因は、chmod xなどのコマンドを誤って入力している可能性です。

構文に誤りがないか確認し、正しいコマンドを使おうとしているかチェックしましょう。アプリケーションを実行しようとしている場合は、そのプログラムのコマンドが有効で、コンピュータにインストールされていることも確認してください。

Macの「Permission Denied」エラーの修正手順

このエラーが表示されたら、まず通常の方法でファイルを開けるか試してみてください。ファイルをダブルクリックして開けるかどうかを確認します。開けない場合は、以下の解決策を試してみましょう。

その前に、関連するファイルのコピーを作成しておくことをおすすめします。後でトラブルが起きたときに備えたバックアップになります。無理にコマンドを通そうとすると、システムに悪影響を及ぼし、さらなる問題を引き起こす恐れがあります。事前の準備が大切です。

また、Mac修復アプリを使ってMacを最適化しておくと、他の問題の発生を防ぎ、システムをクリーンな状態に保てます。完了したらMacを再起動し、以下のトラブルシューティングガイドに進みましょう。

ステップ1:権限を確認する

前述の通り、このエラーはファイルへのアクセス権限が不足している場合に発生しがちです。該当するかどうかは以下の手順で確認できます。

  1. ユーティリティからターミナルを起動します。
  2. 次のコマンドを入力し、最後の文字の後にスペースを1つ入れます。Enterは押さないでくださいls -l
  3. 開きたいファイルをドラッグして、ターミナルウィンドウにドロップします。これにより、既存のコマンドに自動的にファイルの場所が追記されます(ファイル自体が移動するわけではありません)。
  4. ターミナルウィンドウをクリックし、Enterキーを押します。

これで、ファイルへの書き込み・変更権限があるかどうかがわかります。

ステップ2:ディレクトリの所有権を変更する

書き込みを行う前に、chownコマンドでディレクトリの所有権を取得しておきましょう。

ターミナルに次のコマンドを入力してEnterキーを押します:chown -R $USER:$USER /path/to/directory

$USERは現在ログイン中のユーザー名に、/path/to/directoryは書き込み先のパスに置き換えてください。

ステップ3:ターミナルにフルディスクアクセスを許可する

ターミナルにディスクへのフルアクセス権限がなく、コマンドでファイルを開けないケースもあります。これを解決するには、システム環境設定 > セキュリティとプライバシー > プライバシーパネルを開き、コンピュータの制御を許可するアプリのリストにターミナルを追加します。

ステップ4:SUDOコマンドを使う

sudoはシンプルながら強力なコマンドで、管理者権限でコマンドを実行できます。権限の問題で拒否されたコマンドに遭遇した場合は、sudoを活用しましょう。

sudoコマンドは、それに続くコマンドをスーパーユーザー(root)権限で実行します。これにより、ターミナルからほぼすべてのコマンドを実行できるようになります。使い方は簡単で、元のコマンドの前にsudoを付けるだけです。以下はコマンド例です。

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

初めてsudoコマンドを使うときはパスワードの入力を求められますが、以降はsudoコマンドを使うたびに入力する必要はありません。

Zshの「Permission Denied」エラーへのその他の解決策

macOS Catalinaなどでファイルを開こうとしてもZshの「permission denied」エラーが消えない場合は、心配いりません。以下の解決策も試せます。

解決策1:Oh My Zshをダウンロードする

既存のターミナル環境を改善することで、Zshの「permission denied」エラーが解消されることがあります。その手段のひとつがOh My Zshの利用です。

Oh My Zshは、macOS Catalinaをはじめとする各バージョンのmacOSでZshの設定を管理できる、オープンソースでコミュニティ主導のフレームワークです。便利な関数、プラグイン、テーマなどが多数バンドルされています。

このフレームワークをインストールすれば、数百種類の強力なプラグインや洗練されたテーマにアクセスでき、ターミナルをお好みの見た目にカスタマイズできます。

ダウンロードはohmyz.shの公式サイトから行えます。実行ファイルをダウンロードしたら、ターミナルで次のコマンドを実行してインストールしてください:$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

解決策2:.zshrcファイルを設定する

まだZshの「permission denied」エラーが表示される場合は、.zshrcファイルの設定を試してみましょう。このファイルには、新しいzshシェルの起動に必要なスクリプトが含まれています。そのため、このファイルを変更した場合は、変更を反映させるために新しいシェルを起動する必要があります。

open ~/.zshrcコマンドを実行すると、システムのルートフォルダにある.zshrcファイルが開き、ターミナルをカスタマイズできます。

なお、macOS Catalina以降のバージョンでは、同じZshの「permission denied」エラーが引き続き表示されることがあります。その場合は、chmod +x ~/.zshrcコマンドでファイルを開き、権限を設定してください。

解決策3:ターミナルアプリのテーマを変更する

Oh My Zshフレームワークをインストール済みなら、この解決策に進めます。ZSH_THEME="theme_name"コマンドを使って、現在のターミナルアプリのテーマを変更してみましょう。

解決策4:システムのデフォルトシェルを変更する

Zshの「permission denied」エラーを解消するもうひとつの方法が、システムのデフォルトシェルの変更です。以下の手順で実行できます。

  1. Appleメニューからシステム環境設定を選択します。
  2. ユーザとグループに移動します。
  3. アイコンをクリックし、ユーザーアカウント名とパスワードを入力します。
  4. ユーザーリストから自分のアカウント名をControl+クリックします。
  5. 詳細オプションを選択します。
  6. ログインシェルメニューからシェルを選択します。
  7. OKをクリックして変更を適用します。

Macで権限の問題を未然に防ぐ方法

今後の権限トラブルを避けるために、誰がデバイス上のファイルを閲覧・変更できるかを権限設定で定義しておきましょう。以下にその方法を紹介します。

方法1:ユーザーとグループに権限を割り当てる

さまざまなユーザーやグループに権限を割り当てることで、macOSデバイスでの権限問題を回避できます。手順は以下の通りです。

  1. Macでフォルダまたはディレクトリを選択します。
  2. ファイルメニューから情報を見るを選択します。
  3. 情報が表示されていない場合は、矢印をクリックして展開します。
  4. ユーザーまたはグループを選択し、ポップアップメニューから権限を選びます。
  5. OKをクリックして変更を保存します。

方法2:すべての項目に権限を適用する

すべての項目に権限を適用すれば、正しい人だけがアクセスできるようになります。以下の手順に従ってください。

  1. ディレクトリを選択し、ファイルメニューを開きます。
  2. 情報を見るをクリックします。
  3. アクションポップアップメニューを確認し、内包している項目に適用を選択します。
  4. OKをクリックして変更を保存します。

方法3:項目のオーナーを変更する

項目の所有者が別のユーザーになっていると、権限の問題が生じます。以下の手順で修正しましょう。

  1. 項目を選択し、ファイル > 情報を見るを開きます。
  2. 新しいオーナーの名前がリストにない場合は、追加ボタンをクリックして新しいオーナーを追加します。
  3. 新しいオーナーを選択し、アクションポップアップメニューをクリックします。
  4. <新しいオーナー>をオーナーにするをクリックします。
  5. 変更を適用して保存します。

方法4:ユーザーまたはグループを追加・削除する

ユーザーやグループの追加・削除でも権限の問題を解決できます。手順は以下の通りです。

  1. 項目を選択します。
  2. ファイルメニューから情報を見るをクリックします。
  3. 共有とアクセス権セクションに移動します。
  4. ユーザーやグループを追加するにはユーザまたはグループを追加を、削除するにはユーザまたはグループを削除を選択します。
  5. 変更を保存します。

まとめ

ファイルにアクセスしようとしてMacで「permission denied」エラーが表示されても、ダブルクリックでそのファイルを開けるのであれば大きな問題ではありません。しかし、ほとんどの場合、このエラーに遭遇したユーザーは従来の方法ではファイルを開けません。

これは権限エラーなので、まずファイルにアクセスする十分な権限を持っているかを確認する必要があります。本記事の手順が、その対処法の指針となるはずです。コマンドやターミナルに不慣れなMacユーザーにとっても役立つ内容です。

MacのZsh「Permission Denied」エラーを解決するには、まずファイルの権限を確認しましょう。現在のユーザーアカウントに、そのファイルへアクセスする権限が不足している可能性があります。

それでも解決しない場合は、chownコマンドを使ってディレクトリの所有権を変更してください。

さらに、ターミナルアプリにディスクへのフルアクセスを許可したり、SUDOコマンドでスーパーユーザー(root)権限を付与したりする方法もあります。

基本的なトラブルシューティングで改善しない場合は、他の解決策に進みましょう。まずはOh My Zshフレームワークのダウンロードを試してみてください。多くのユーザーがこの方法で問題を解決しています。このフレームワークがあれば、ターミナルアプリを自由にカスタマイズできます。

次に、.zshrcファイル自体を設定したり、ターミナルアプリのテーマを変更したりするのも有効です。それでもエラーが続く場合は、システムのデフォルトシェルを変更しましょう。

すべてを試しても解決しない場合は、Macの専門家に相談するのが確実です。プロが代わりに問題を診断してくれるので、ご自身で悩む必要はありません。

あなたは他にどんなMac関連のエラーに遭遇しましたか?ぜひコメント欄でお知らせください。

  1. Macターミナルの「zsh: permission denied」エラーを解決する方法

    macOSのターミナルでファイルやフォルダを開き、変更を加えるコマンドを入力したときに、「zsh: permission denied」や「zsh: command not found」というエラーメッセージが突然表示されることがあります。今まさにこの問題に直面しているなら、この記事が役立つはずです。ここでは、Macで発生する「Zsh permission denied」エラーの解決方法を詳しく解説します。目次:1. Zshとは?2. macOSターミナルにおける「zsh: permission denied」とは?3. ターミナルで権限拒否エラーが発生する理由4. MacでZsh permi

  2. Macのターミナルで「command not found」エラーを修正する方法

    Macのターミナルでコマンドを実行しようとした際に、「command not found」というエラーに遭遇することがあります。AppleはmacOS Catalinaからデフォルトシェルをbashからzshへ変更したため、macOS Catalina以降を使用しているユーザーは「zsh: command not found: brew」といったメッセージを目にする可能性が高いでしょう。一方、macOS Mojave以前のユーザーの場合は「bash: brew: command not found」というエラーが表示されることが多いです。ターミナルに「command not found」と表示