重命名消息但在 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'属性,然后消息可以再次进行日志轮转。

相关内容