메시지 이름을 바꾸었지만 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)

루트로 로그인했는데 왜 이 문제가 계속 발생합니까? 이 문제를 어떻게 해결할 수 있나요?

답변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' 비활성화 속성을 사용하면 메시지가 다시 로그 순환될 수 있습니다.

관련 정보