Linux でファイルを削除しようとした際に、以下のようなエラーが出ることがあります。
rm: cannot remove 'file': Operation not permitted
通常、削除できない場合は「Permission denied」が出ますが、Operation not permitted
は少し特殊です。
これは単に権限不足ではなく、ファイルに「immutable(変更不可)」属性が付与されている可能性があります。
あわせて読みたい


【コマンド詳細】rmの使い方とオプションまとめ
Linuxのrmコマンド:ファイルとディレクトリの削除 rmコマンドは、Linuxでファイルやディレクトリを削除するための基本的なコマンドです。正確に使うことが求められ、特…
目次
主な原因
- immutable 属性が付いている
chattr +i file
が設定されていると、root であっても削除や変更ができません。
- ファイルシステムレベルの制御
- 特殊なファイルシステム(例: NFS, 読み取り専用マウント)で発生する場合があります。
- SELinux / AppArmor による制御
- 特定のディレクトリ・ファイルに対して制限がかかっている可能性があります。
解決方法
1. immutable 属性を確認
まず lsattr
コマンドで属性を確認します。
lsattr file
出力例:
----i--------- file
i
が付いていれば immutable です。
2. immutable 属性を解除
属性を解除するには chattr -i
を実行します。
sudo chattr -i file
解除後、再度削除できます。
rm file
3. ディレクトリ全体に適用されている場合
ディレクトリごと immutable
になっていることもあります。
その場合は再帰的に解除します。
sudo chattr -R -i directory/
4. マウントオプションの確認
削除できない場合は、対象のファイルシステムが 読み取り専用 (read-only) でマウントされていないか確認します。
mount | grep /path/to/mount
必要に応じて再マウントします。
sudo mount -o remount,rw /mountpoint
5. SELinux / AppArmor の影響
audit.log
や dmesg
を確認して、セキュリティ制御が原因になっていないか調べます。
SELinux が原因の場合、一時的に無効化して検証できます。
getenforce
# Enforcing の場合
sudo setenforce 0 # 検証用
(AppArmor も同様にプロファイルを確認)
まとめ
rm: Operation not permitted
は 権限不足ではなく属性・ファイルシステム制御が原因。- 最も多いのは immutable 属性 (
chattr +i
) が設定されているケース。 lsattr
→chattr -i
で解除すれば削除可能。- 読み取り専用マウントや SELinux/AppArmor も併せて確認する。
👉 「Permission denied」と「Operation not permitted」の違いを知っておくと、原因を切り分けやすいです。