回答:
ルートユーザーからファイルの属性をチェック
# lsattr
i
(不変)またはa
(追加のみ)に気付いた場合は、それらの属性を削除します。
# man chattr
# chattr -i [filename]
# chattr -a [filename]
rm
ファイルを削除する権限がないと苦情を申し立てる最も一般的な理由は、ディレクトリの権限がファイルの削除を禁止していることです。ファイルを削除するには、ディレクトリへの書き込み権限が必要です。ファイルのアクセス許可は無関係です(読み取り専用ファイルを削除する前に確認rm
を-f
求めるプロンプトは表示されませんが、これは単なる確認であり、制限ではありません)。OSXなどの一部のUnixバリアント(Linuxを除く)では、ファイルのACLにより削除を防ぐことができます。ファイルにACLエントリがあった場合、許可フィールドの最後にls -l
表示さ@
れます。
rootとしてのアクセスは許可をバイパスするため、rootは読み取り専用ディレクトリでもファイルを削除できます。
以下からの出力ls -l
を示し.
許可列の最後に。これは、ファイルにSELinuxセキュリティコンテキストがあることを示しています。基本的な許可やACLとは異なり、ファイルのSELinuxセキュリティコンテキストは、ファイルの削除を許可するユーザーを制御できます。さらに、SELinuxを常にルートでバイパスすることはできません(プロセスをユーザーID 0として実行することはできますが、SELinuxポリシー設計者が選択したのと同じ数の権限しかありません)。SELinuxコンテキストでできることを確認するには、を実行しls -lZ . exam_a
ます。
ファイルの削除を防ぐことができるもう1つのことは、ファイルまたはそのファイルを含むディレクトリに追加専用または不変のLinux属性がある場合です。実行lsattr -d . exam_a
してLinux属性を表示します。a
またはi
属性がオンの場合、それを削除する必要があります(chattr -a -i . exam_a
ファイルを削除するには削除する)。ルートだけがそれを行うことができます。ルートはこれらの属性をバイパスしてファイルを削除することはできません。最初に属性をオフにする必要があります。
ファイルが削除されないようにするもう1つのことは、ファイルシステムが読み取り専用でマウントされている場合ですが、その場合は別のエラーメッセージが表示されます。
ls -la
、.
(ディレクトリ)のパーミッションを確認できるようにしてください。