/sys/kernel/debug/tracing에 "cd"하면 권한이 변경됩니다.

/sys/kernel/debug/tracing에 "cd"하면 권한이 변경됩니다.

오늘 매우 이상한 문제에 부딪혔는데 이에 대해 제가 할 수 있는 일은 전혀 없습니다.

제가 관리하는 서버 중 일부는 Nagios를 사용하여 모니터링됩니다. 최근에 다음 오류로 인해 디스크 사용량 조사가 실패하는 것을 보았습니다.

디스크 중요 - /sys/kernel/debug/tracing에 액세스할 수 없습니다. 권한이 거부되었습니다.

조사하고 싶었고, 첫 번째 시도는 이 디렉터리 권한을 확인하고 다른 서버(정상적으로 실행 중)와 비교하는 것이었습니다. 이것이 내가 실행한 명령이다작업 서버에서cd디렉토리에 들어가면 권한이 변경되는 것을 볼 수 있습니다 .

# Here we've got 555 for /sys/kernel/debug/tracing
root@vps690079:/home/admin# cd /sys/kernel/debug
root@vps690079:/sys/kernel/debug# ll
total 0
drwx------ 30 root root 0 Jul 19 13:13 ./
drwxr-xr-x 13 root root 0 Jul 19 13:13 ../
dr-xr-xr-x  3 root root 0 Jul 19 13:13 tracing/
drwxr-xr-x  6 root root 0 Jul 19 13:13 usb/
drwxr-xr-x  2 root root 0 Jul 19 13:13 virtio-ports/
-r--r--r--  1 root root 0 Jul 19 13:13 wakeup_sources
drwxr-xr-x  2 root root 0 Jul 19 13:13 x86/
drwxr-xr-x  2 root root 0 Jul 19 13:13 zswap/

# I cd into the folder, and it (./) becomes 700!!
root@vps690079:/sys/kernel/debug# cd tracing/
root@vps690079:/sys/kernel/debug/tracing# ll
total 0
drwx------  8 root root 0 Jul 19 13:13 ./
drwx------ 30 root root 0 Jul 19 13:13 ../
-r--r--r--  1 root root 0 Jul 19 13:13 available_events
-r--r--r--  1 root root 0 Jul 19 13:13 available_filter_functions
-r--r--r--  1 root root 0 Jul 19 13:13 available_tracers

# Next commands are just a dumb test to double-check what I'm seeing
root@vps690079:/sys/kernel/debug/tracing# cd ..
root@vps690079:/sys/kernel/debug# ll
total 0
drwx------ 30 root root 0 Jul 19 13:13 ./
drwxr-xr-x 13 root root 0 Sep 27 10:57 ../
drwx------  8 root root 0 Jul 19 13:13 tracing/
drwxr-xr-x  6 root root 0 Jul 19 13:13 usb/
drwxr-xr-x  2 root root 0 Jul 19 13:13 virtio-ports/
-r--r--r--  1 root root 0 Jul 19 13:13 wakeup_sources
drwxr-xr-x  2 root root 0 Jul 19 13:13 x86/
drwxr-xr-x  2 root root 0 Jul 19 13:13 zswap/

이 동작의 원인이 무엇인지 아십니까?
참고로 chmod를 사용하여 권한을 다시 설정해도 탐지기가 수정되지 않는 것 같습니다.

답변1

/체계

/syssysfs현재 시스템 커널 및 하드웨어 구성을 반영하고 실제 디스크 공간을 소비하지 않는 메모리 내 커널 구조의 완전히 가상화된 보기 입니다 . 새 파일과 디렉터리는 일반적인 방법으로 쓸 수 없습니다.

디스크 공간 모니터링을 적용하면 유용한 정보가 생성되지 않으며 노력 낭비입니다. 내부에는 다음을 포함하여 다른 RAM 기반 가상 파일 시스템에 대한 마운트 지점이 있을 수 있습니다.

/시스템/커널/디버그

/sys/kernel/debugdebugfs다양한 커널 디버깅 및 추적 기능에 사용되는 선택적 가상 파일 시스템에 대한 표준 마운트 지점입니다 .

이는 디버깅 기능을 위한 것이므로 프로덕션 용도로는 필요하지 않습니다(시스템 통계를 향상시키거나 이와 유사한 기능을 향상시키기 위해 일부를 사용하도록 선택할 수도 있음).

will이 제공하는 기능을 사용하는 것은 대부분의 경우 어쨌든 debugfs필요 root하고 주요 목적은 커널 개발자에게 정보를 디버깅하는 쉬운 방법을 제공하는 것이므로 다소 "거칠게" 될 수 있습니다.

커널이 로드되면 커널 추적 하위 시스템의 초기화 루틴이 /sys/kernel/debug/tracing자체 debugfs 액세스 지점으로 등록되어 실제로 처음 액세스될 때까지 추가 초기화를 연기합니다(필요하지 않은 경우를 대비해 추적 하위 시스템의 리소스 사용량을 최소화합니다). 이 지연 초기화는 cd디렉터리에 들어가고 추적 하위 시스템을 사용할 준비가 되면 트리거됩니다. 실제로 원본 버전은 /sys/kernel/debug/tracing실체가 없는 신기루로 시작하여 명령을 통해 액세스할 때만 "진짜"가 됩니다 cd.

debugfs실제 디스크 공간은 전혀 사용되지 않습니다. 커널이 종료되면 포함된 모든 정보가 손실됩니다.

/sys/fs/cgroup

/sys/fs/cgrouptmpfs실행 중인 다양한 프로세스를 그룹화하는 데 사용되는 RAM 기반 파일 시스템 입니다 .대조군. 실제 디스크 공간을 전혀 사용하지 않습니다. 하지만 어떤 이유로 이 파일 시스템이 거의 가득 차면더 심각한이는 단지 디스크 공간 부족이 아니라 다음을 의미할 수도 있습니다.

a) 사용 가능한 RAM이 부족합니다.

b) 일부 루트 소유 프로세스가 가비지를 쓰고 있습니다 /sys/fs/cgroup. 또는

c) 뭔가가 아마도 고전적인 "포크 폭탄" 스타일이지만 systemd이를 기반으로 하거나 유사한 서비스를 사용하여 정말 말도 안되는 수의 제어 그룹을 생성하게 됩니다.

결론

/sys디스크 사용량 조사는 제거 되어야 합니다 ./sys디스크에는 아무것도 저장되지 않기 때문입니다 .

모니터링이 필요한 경우 /sys/fs/cgroup범용 디스크 공간 프로브보다 더 의미 있는 경고를 제공하는 전용 프로브를 제공해야 합니다.

관련 정보