こんにちは、フルスタックエンジニアのryuです。
今回の記事では、Linuxでディレクトリやファイルを削除するときに”permission denied.”のエラーが出る時の対処方法を解説します。ファイルやディレクトリが削除できなくてお困りの方はぜひ参考にしてください。
目次
ディレクトリやファイルを削除するときになぜエラーが出るのか?
permission deniedとはどのような意味?
permission deniedとは、日本語に直訳すると「許可が拒否されました」となります。今回の場合だと、コマンドの削除が拒否された場合に表示されます。
以下のようにrmコマンドを使ってディレクトリを削除するコマンドを実行した際に、「rm: failed to remove ‘/test’: Permission denied」というエラーが発生します。
rm -r /test
→rm: cannot remove '/test': Permission denied
※rmdirでもディレクトリは削除可能ですが、ディレクトリ内にファイルが存在すると削除できません。今回は、Permission deniedのエラーの対処方法のため、”rm -r”コマンドを使って、ディレクトリやファイルを削除する前提としております。
ファイルやディレクトリが削除できない原因は?
ファイルやディレクトリが削除できない原因は以下のようなものが挙げられます。
- アクセス権限の不足: ディレクトリを削除するためには、そのディレクトリに対する適切なアクセス権が必要です。ディレクトリが所有者や所属グループに対して書き込み権限がない場合、削除は許可されません。
- 他のプロセスが使用中: ディレクトリ内に他のプロセスがアクセス中である場合、削除は許可されないことがあります。特にシステムの一部や他のユーザーがそのディレクトリを使用している可能性があります。
- ルート権限が必要: 特定のディレクトリやファイルを削除するには、ルート(スーパーユーザー)権限が必要な場合があります。一般ユーザーとしては削除できないようなディレクトリがあるかもしれません。
- セーフモードや読み取り専用ファイルシステム: システムがセーフモードで動作している場合や、ディレクトリが読み取り専用のファイルシステムに存在する場合、削除は制限される可能性があります。
次に、これらの対処方法を解説します。
“permission denied.”のエラーが出る時の対処方法
“-f”オプションで強制的に削除する
“-f”オプションは強制的にディレクトリを削除するオプションです。以下のように実行しましょう。
rm -rf /directory
/directory
は削除したいディレクトリのパスを指定しましょう。
rmコマンドのオプションなどについては、こちらの記事で解説しております。
関連:【linux】rmコマンドの使い方解説!【ファイル削除するコマンドを使ってみよう】
管理者権限を使用
sudo
コマンドを使用して、管理者権限でディレクトリを削除してみてください。
sudo rm -r /directory
このコマンドを使用することで、root権限でディレクトリを削除することができます。
ただし、注意して操作してください。誤って重要なデータを削除しないようにしてください。
sudoコマンドの使い方に関しては、こちらの記事で解説しております。
関連:【Linux】sudoコマンドの使い方を解説!管理者権限でコマンドを実行してみよう
所有者を変更する
ディレクトリの所有者を変更して、削除しようとしているユーザーがアクセス権限を持つようにします。
sudo chown -R [自分のユーザー名] /directory
[自分のユーザー名]には、現在ログインしているユーザー名を指定しましょう。指定したユーザーにディレクトリを削除する権限を与えます。
chownコマンドの使い方はこちらの記事で解説しております。
関連:【Linux】chownコマンドでファイルの所有者や所有グループを変更する方法を解説
アクセス権限を変更する
chmod
コマンドを使用してアクセス権限を変更することで、ディレクトリを削除できるようになるかもしれません。
sudo chmod -R u+w /path/to/directory
このコマンドはディレクトリ内のファイルとサブディレクトリに対して所有者の書き込み権限を付与します。書き込み権限を付与することで、削除することができます。
まとめ
今回の記事では、Linuxでディレクトリやファイルを削除するときに”permission denied.”のエラーが出る時の対処方法を解説しました。権限を変更したり、オプションを加えたりすると、削除ができるようになります。ぜひ参考にしてください。
さらにLinuxのコマンドの学習をしたい人に向けて、InfraAcademyというインフラ学習サービスのご紹介です。
「Linuxの実践的な内容を学習したい」、「コマンドを打ちながらLinuxを学習したい」
そのようなご要望にお応えして、Linuxやネットワークが学習できるサイト「InfraAcademy」をリリースしました!
入門から中級まで初心者でもわかりやすく学習を進めることができます。
- 【Linux入門講座1】ディレクトリと相対パス、絶対パス
- 【Linux入門講座2】ファイルの操作方法
- 【Linux入門講座3】ファイルのアクセス権限
- 【Linux入門講座4】ファイルの編集~vimの使い方をマスターする~
- 【Linux入門講座5】ユーザーとグループ
- 【Linux入門講座6】ネットワーク
↓InfraAcademyの講座の一部です。
上記以外にも、DNSサーバーの構築方法や、Dockerの設定方法などさまざまな講座があります。
インフラエンジニアに必要な知識が学習できます。
参考:Linuxのコマンド練習用サイトのInfraAcademyを作成しました。【Linuxのコマンドをブラウザで練習しよう】