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