メッセージの名前を変更しましたが、Linuxシステムでは「操作は許可されていません」と表示されます。

メッセージの名前を変更しましたが、Linuxシステムでは「操作は許可されていません」と表示されます。

私は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'無効属性を使用すると、メッセージが再度ログ循環される可能性があります。

関連情報