내용은 다음과 같습니다.
또한 i686 및 x86_64와 같은 32비트 시스템 호출 테이블을 지원하는 시스템에는 다음 규칙이 적용됩니다.
이것이 무엇을 의미하는지 그리고 내 시스템에 이 규칙이 필요한지 확인하는 방법을 알아내려고 노력 중입니다. 그들은 chown
and chown32
command/(아마도 시스템 호출)를 참조하고 계속해서 이에 대한 시스템 아키텍처에 대해 논의합니다. 나는 Linux에만 관심이 있지만 x86에만 관심이 없습니다.
출력에서 lscpu
필드는 CPU op-mode
다음과 같습니다.
CPU op-mode(s): 32-bit, 64-bit
x86_64
이중 아키텍처를 지원하는 프로세서 에 적용 가능합니다 . 32나 64는 상대방의 명령을 해석할 수 없는 시스템에서만 표시될 것 같아요.
내 딜레마는 이 문제가 없는 레거시 시스템에서 프로그래밍 방식으로 이 문제를 해결하는 것이었습니다(결국 Python으로 작성했습니다) lscpu
. 내가 확인했다이 문제그들은 64비트 호환성을 찾는 것에 대해 이야기하지만 반대 사용 사례에서 이를 사용하는 데 어려움을 겪고 있습니다.
이것이 지금까지 문제가 된 이유를 요약하면 다음과 같습니다.
lscpu
기계가 아니다sudo find / -iregex .*lscpu.*
확인 하러 달려갔어
/proc/cpuinfo
플래그로 끝나서 64비트 호환성_lm
(내가 아는 한 32비트 호환성 아님)을 설명합니다.uname
충분하지 않습니다. 주요 아키텍처를 보여주고x86_64
32비트도 의심할 여지 없이 지원된다고 가정하는 것이 안전하지만 알려진 아키텍처를 호환성에 매핑하는 것이 이 특정 문제를 해결하는 가장 안정적이거나 효율적인 방법은 아닌 것 같습니다.hwinfo
기계에는 없어getconf LONG_BIT
64비트 호환성 확인lshw
기계에는 없어
제가 간과하고 있는 부분이 있을 수도 있고, 프로그래머로서 해당 주제에 대해 충분히 알지 못하는 것일 수도 있습니다. 내 시스템이 프로그래밍 방식으로 32비트 호환성을 가지고 있는지 확인하는 방법(예: 정확하거나 구문 분석 가능한 출력을 얻는 방법)을 알아내는 데 누군가 도움을 줄 수 있습니까?
답변1
내 생각엔 당신이 관심을 기울이고 있는 것 같아요RHEL 5 보안 기술 구현 가이드.
"내 Linux 시스템이 32비트 시스템 호출 테이블을 지원합니까?" 이것은 매우 흥미로운 질문이며 Giles가 언급한 것처럼 사이트에서는 아직 이에 대한 결론을 내리지 않았습니다. 이 질문 역시 대답하기 어려운 질문이다.
먼저 STIG 컨텍스트로 단순화했습니다.즉"내 Linux 시스템은 i386 시스템 호출 테이블을 지원합니까?"(이 일반적인 질문은 나중에 다시 다루겠습니다.)실행 중인 커널에서 지원되는 시스템 호출의 명시적인 목록을 얻을 수 없습니다., 하지만 이 경우에는 필요하지 않습니다. 우리가 해야 할 일은 시스템 호출 진입점을 찾는 것뿐입니다. i386 진입점은 편리하게 이름이 지정됩니다. 기본 32비트 호출과 64~32비트 에뮬레이션 계층에서 사용되는 외부에 표시되는 기능은 다음과 같습니다.do_fast_syscall_32
그리고do_int80_syscall_32
. 이를 확인하는 가장 좋은 방법은 그곳에서 찾아보는 것입니다 /proc/kallsyms
(이를 금지하는 다른 STIG 규칙이 없기를 바랍니다...). 존재한다면 현재핵심i386 시스템 호출을 지원하고 lchown32
감사 규칙이 필요합니다.
이 유형의 주제에 대한 다른 답변을 읽으면 실행 중인 시스템에서 시스템 호출 지원을 테스트하는 일반적인 방법이 시스템 호출을 호출하는 것임을 알 수 있습니다. 시스템을 감사할 때 감사 규칙을 트리거해야 하므로 적절하지 않을 수 있습니다. 또한 관련 시스템 호출을 지원하는 커널과 필요한 프레임워크를 제공하는 시스템에 의존하는 경우가 많기 때문에 감사 시 오탐지로 이어질 수도 있습니다.
및 기타 유사한 도구를 사용한 결과는 lscpu
설치된 것으로 보고되기 때문에 오해의 소지가 있을 수 있습니다.CPU시스템의 능력이 아니라 능력이다. 예를 들어, CPU 플래그에 lscpu
하드 코딩된 해당 항목 : lm
또는 32비트 및 64비트 지원이 가능하다고 알리는 것은 CPU의 관점에서는 괜찮지만 나머지 시스템도 지원하는지 알 수 있는 방법이 없습니다 zarch
. (그렇지도 않아야 합니다).sun4[uv]
lscpu
"내 Linux 시스템이 32비트 시스템 호출 테이블을 지원합니까?"라는 보다 일반적인 질문을 다시 살펴보면 대답은 항상 아키텍처에 따라 다릅니다. 답을 결정하기 위해 시스템 호출을 조사하려면 아키텍처의 시스템 호출 기록을 고려해야 합니다. 예를 들어 chown32
32비트 아키텍처는 반드시 피어를 지원하지는 않습니다. 마찬가지로 진입점을 찾는 것도 아키텍처에 따라 다릅니다.
따라서 귀하의 질문에 대한 보편적인 대답은 없다고 생각합니다. 대답은 최소한 대상 아키텍처를 고려해야 합니다.