직장에서 애플리케이션을 테스트하고 있었는데 SELinux 지원 시스템에서 설치가 계속 실패했습니다. 우리가 게시한 해결 방법에는 오류 센터의 라이브러리 파일에 chcon 명령을 실행하는 것이 포함됩니다.
chcon -t textrel_shlib_t /usr/lib/ourfile.so.1.0.20
RHEL5에서는 이 기능이 작동하며 SELinux를 완전히 비활성화하지 않고도 애플리케이션을 정상적으로 실행할 수 있습니다.
RHEL6에서 chcon 명령은 오류를 제공하지 않지만 애플리케이션이 데몬으로 시작되면 다음을 통해 여전히 동일한 오류가 표시됩니다./etc/init.d/ourapp
저의 주요 관심사는 업데이트에 대한 해결 방법을 찾는 것입니다(문제의 애플리케이션 라이브러리는 외부 인증 프로세스에 제출되었으며 6개월 동안 변경할 수 없습니다). 그러나 이것이 RHEL5에서 RHEL6으로 의도적으로 변경되었음을 나타내는 것인지도 궁금합니다. .
답변1
비공식 SELinux FAQ 기여이 솔루션.
이는 Linux라는 확장 프로그램으로 인해 발생합니다.집행 방패. 프로그램이 스택에서 코드를 실행하는 것을 방지하여 문제를 완화합니다.스택 스매싱 공격.
대부분의 공유 라이브러리에는 실행 가능 스택이 필요하지 않으므로 다음을 수행하여 라이브러리에 실행 가능 스택이 필요하지 않음을 표시해야 합니다.
execstack -c /usr/lib/ourfile.so.1.0.20
사용 후실행 스택, 프로그램을 테스트하여 계속 실행되는지 확인하세요. 실제로 스택에서 코드를 실행하려고 시도하는 잘못된 코드가 있으면 충돌이 발생합니다.