サーバー内で動作しているアプリが生成したファイルがroot権限でも削除できなかったので、原因と対処方法を調査してみました。(アプリ側で削除しようとすると削除できる)
lsコマンドで調べてみると、
[root@server ~]# ll -a
-rw-r--r-- 1 apply apply 8 7月 1 11:44 2016 sample.txt
と、権限的には問題なし。
けれど、削除やファイル名変更などを行おうとすると、
[root@server ~]# rm sample.txt
rm: remove 通常ファイル `sample.txt'? y
rm: cannot remove `sample.txt': 許可されていない操作です
[root@server ~]# mv sample.txt sample_2.txt
mv: cannot move `sample.txt' to `sample_2.txt': 許可されていない操作です
エラーとなります。(viでファイルを開くとreadonly)
Google先生で調べてみると「ファイル属性が付与されているのでは?」とのこと。
lsattrコマンドで確認できるらしいので確認してみると、
[root@server ~]# lsattr
----i--------e- ./sample.txt
「i」が付与されていました。これは削除や変更をできなくする属性とのこと。
他に「a」(追記のみ許可)「u」(削除禁止)などの属性もある模様です。
chattrコマンドで属性を変更できるらしいので取り払ってみると、
[root@server ~]# chattr -i sample.txt
[root@server ~]# lsattr
-------------e- ./sample.txt
[root@server ~]# rm sample.txt
rm: remove 通常ファイル `sample.txt'? y
無事に削除できました。