2013-10-07 3 views
1

우리는 SELinux 환경에서 우리의 응용 프로그램을 테스트하고 있습니다.SELinux : 재배치 후 세그먼트 prot를 복원 할 수 없습니다 : 허가가 거부되었습니다

지금까지 내가 my searches에서 이해
dlopen failed to load libFoo.so -libFoo.so: cannot restore segment prot after reloc: Permission denied 

, 이것은 공유 라이브러리에 .text 부분에 재배치 관련이 : 이제, 우리는 다음과 같은 오류를 얻고있다. 지금까지 볼 수있는 한, 모든 공유 라이브러리에 이미 -fPIC을 사용하고 있습니다. 가능하면 이러한 공유 라이브러리에도 링크 된 정적 라이브러리가있을 수 있습니다.

이 오류의 원인이되는 재배치/기호를 어떻게 알 수 있습니까? 공유 라이브러리 용 nm 또는 objdump -rR 출력에서 ​​무엇을 검색해야합니까?

아니면 잘못된 정보를 얻고 문제가 공유 라이브러리의 제작 된 재배치가 아닌 다른 곳에 있습니까?

+0

글쎄, 한 시간이 채 안되어서 나는 이것을 발견했다 : http://www.akkadia.org/drepper/textrelocs.html, 기본적으로 'eu-findtextrel'을 사용한다. – wilx

답변

1

나는 대체로 어떤 텍스트 재배포가 있는지 확인하기 위해 eu-findtextrel을 사용하라는 제안으로 이어지는이 사실을 발견했습니다 : http://akkadia.org/drepper/textrelocs.html. 영향을받는 라이브러리를 -fPIC으로 다시 컴파일하면 문제가 해결됩니다.

0

SELinux를 허용 모드로 설정하지 않았기 때문에 이것이 좋은 조언이라고 생각했습니다.

here에서도 가능합니다.

chcon -t texrel_shlib_t <lib> 

그래서 예를

chcon -t texrel_shlib_t libmylib.so 

그러나,이 여전히 -fPIC 있도록 SELinux를 중심으로 점점 위해 할 수있는 방법입니다. 나는 링커 플래그에 -fPIC을 잘못 넣었 기 때문에 몇 가지 문제가있었습니다. -fPIC는 컴파일러 옵션입니다!