Linuxでファイル実行時のpermission deniedエラー対処法

はじめに

この記事では、「Linuxでファイル実行時のpermission deniedエラー対処法」について書いています。

Linuxでファイルを実行しようと思った時に「Permission denied」というエラーが出て、その対処法が分からず調べまわったのが記事を書いたきっかけでした。

自分に向けた備忘録でもありますが、「Linuxでファイル実行時のpermission deniedエラーが出たけど対処したい」な人の一助になれば嬉しいです。

どんなエラーか

Note

試した際の環境は以下の通りです。

Ubuntu上でexecutablefileという名前の実行ファイルを実行しようとbassh上で./executablefileのコマンドを実行した際に以下のようなエラーメッセージが出て実行されませんでした。

-bash: ./executablefile: Permission denied

原因

調べたところ、ファイルの権限の問題のようでした。

ls -lでファイルの属性情報を出力してくれるそうなので、確認してみます。

-rw-r--r-- 1 xxx xxx 4213672 Nov 13 10:29 executablefile

上の出力で見るべき所は、一番左の10文字-rw-r--r--です。これが何を示しているのかというと

  • 1文字目(-の部分): ファイルの種別
  • 2文字目~4文字目(rw-の部分): ファイルの所有者に対する権限
  • 5文字目~7文字目(r--の部分): ファイルの所有グループに対する権限
  • 8文字目~10文字目(r--の部分): その他に対する権限

です。

その中のファイル権限の見方についてですが、

  • r: 読み取りの権限がある
  • w: 書込みの権限がある
  • x: 実行の権限がある

となりますが、どこにも「x: 実行の権限がある」が付与されていません。実行の権限がないためにPermission deniedというエラーが出たようでした。

どう対応したか

Linuxではchmodコマンドで権限を変更できるのでそれにより実行の権限を持たせるよう変更しました。

具体的には下記のコマンドを実行し、改めてexecutablefileを実行したら成功しました。

chmod 777 executablefile

ちなみに、上のコマンド実行後改めてls -lを実行してみます。

-rwxrwxrwx 1 xxx xxx 4213672 Nov 13 10:29 executablefile

3つのグループ全てに対して「r: 読み取りの権限がある」「w: 書込みの権限がある」「x: 実行の権限がある」が付与されています。

Note

今回は個人的な実験でしたのでchmod 777 ...と全ての権限を許す形にしましたが、本来であれば必要な分だけ権限を付与するのがセキュリティ面で好ましいのでご注意ください

おわりに

Linuxでファイル実行時のpermission deniedエラー対処法」について解説しました。

私個人Linuxの知識が浅く初歩的なことで躓くことも多いですが、勉強してLinuxも使いこなせるようになっていきたいです。

さいごに、記事を書く上で参考にしたサイトのリンクを以下に掲載します。合わせて読んでいただくと良いかと思います。

qiita.com