“error=13, Permission denied”と表示されデプロイできない時の対処法

開発環境は下記。

  • macOS Catalina 10.15.7
  • IntelliJ IDEA Ultimate 2020.2.4
  • Tomcat 8.0.43
  • Apache Maven 3.6.3
  • Java 1.8.0_131

状況としてはTomcatをインストールし、tomcat-users.xmlsettings.xmlpom.xmlの設定を済ませて後はデプロイするだけの状態とする。下記の記事を参照。

この段階で再生ボタン(▶︎)を押すとこのようなエラーが表示されることがある。

Error running ‘Tomcat 8.0.43’:

Cannot run program

“/Application/Eclipse_4.6.3.app/Contents/tomcat/8/bin/c”(in directory

“/Application/Eclipse_4.6.3.app/Contenrs/tomcat/8/bin”)

error=13, Permission denied

このエラー文を見ていたらLinuxを勉強していた時を思い出した。Permission deniedはユーザに対して実行権限が与えられていない時に表示される。なので、単純に上記のパスに権限を与えてあげるだけで良いということだ。ターミナルを開き以下のコマンドを実行する。

% cd /Applications/Eclipse_4.6.3.app/Contents/tomcat/8/bin

% chmod 777 *.sh

説明すると先ずはcdコマンドででエラー文に表示されているフォルダへと移動する。次にchmodコマンドで.shの付くファイルにパーミッションを設定すれば完了。これでデプロイが可能になる。

折角だからchmodコマンドについて振り返っておこう。上記のコマンドでは数値モードによるパーミッションの変更を行った。この数値モードは後ほど触れるシンボルモードとは異なり絶対指定の方法である。一気に権限を変更したい時に便利ね。以下の数字を足し算でする単純な方法。

  • 読み取り(r) -> 4
  • 書き込み(w) -> 2
  • 実行(x) -> 1

7の場合は全ての権限を与えるということ。6は読み取りと書き込みという具合。これらの番号をオーナー、グループ、その他のユーザの順番に並べる。777は全てのユーザに全ての権限を与えるオープンなパーミッションである。

次にシンボルモード。例を挙げるとこのような感じ。

% chmod u+x *.sh

これは相対的に指定する方法でパーミッションの一部だけ変更したい時に使えば便利な方法である。上記の例はオーナーに.shが付くファイル全てに実行権限を追加するということ。

  • u -> オーナー
  • g -> グループ
  • o -> その他のユーザ
  • a -> ugo全て

このオプションで変更したいユーザを指定する。次に下の演算子を使用し、r(読み取り)、w(書き込み)、x(実行)を追加、または削除すればOK。

  • + -> 権限を追加
  • – -> 権限を禁止
  • = -> 指定した権限と等しく

もちろん、GUIでやってもいいがCLIで実行した方が100倍効率的。

To comment

@Contents
閉じる