私はCentos 8.0とカーネルバージョン:4.18.0-147.5.1.x86_64を使用しています。
背景:私のホストからのメッセージが長時間回転しておらず、「logrotate -v -f」を使用してメッセージを強制的に回転すると、「メッセージの名前変更:操作は許可されていません」と表示されます。だから私はすぐにメッセージの名前を変更しようとします。
-rw------- 1 root 15464299992 Jul 15 10:12 messages
-rw------- 1 root 11644353 Sep 7 2020 messages-20200907.gz
-rw------- 1 root 8834073 Sep 13 2020 messages-20200913.gz
renaming /var/log/messages to /var/log/messages-20210715
error: failed to rename /var/log/messages to /var/log/messages-20210715: Operation not permitted
私の仕事と端末の出力は次のとおりです。
[root@node-5 log]# mv messages messages-20210715
mv: cannot move ‘messages’ to ‘messages-20210715’: Operation not permitted
[root@node-5 ~]# whoami
root
私もstrace
注意を払って調べてみましたが、その結果は次のとおりです。
stat("messages2", 0x7fff6c37aae0) = -1 ENOENT (No such file or directory)
lstat("messages", {st_mode=S_IFREG|0600, st_size=15464637645, ...}) = 0
lstat("messages2", 0x7fff6c37a790) = -1 ENOENT (No such file or directory)
renameat2(AT_FDCWD, "messages", AT_FDCWD, "messages2", 0) = -1 EPERM (Operation not permitted)
rootとしてログインしましたが、なぜこの問題が引き続き発生するのですか?この問題をどのように解決できますか?
答え1
これで問題が解決しました。 @casのソリューションに感謝します。理由と方法は次のとおりです。
1.lsattr /var/log
ファイル属性が「a」のメッセージを表示するには、次のようにします。
---------------- ./spooler-20200913.gz
---------------- ./maillog-20201004
-----a---------- ./messages
---------------- ./escl-upgrade.log
2. ファイル属性「a」は「追加のみ可能」を意味します。 'a'を持つファイルは書き込みのみ可能で、名前を変更または移動することはできません。
3. chattr -a messages
'a'無効属性を使用すると、メッセージが再度ログ循環される可能性があります。