2016-12-29 9 views
0

CentOS 6.5에서 작업 중입니다. 내 glibc의 버전은 2.14이며 실수로 /lib64/libc.so.6를 이전 glibc (libc-2.12.so)에 연결합니다.su 또는 sudo에 대해 LD_PRELOAD를 설정하는 방법은 무엇입니까?

그런 다음 export LD_PRELOAD=/lib64/libc-2.14.so을 실행하고 대부분의 명령은 susudo을 제외하고 실행할 수 있습니다. su을 실행하면 "세그먼트 오류"이 발생합니다. sudo을 실행하면 "su : /lib64/libc.so.6 : 버전 GLIBC_2.14 '을 찾을 수 없습니다 (/lib64/libcrypt.so.1에서 필요)".

susudo에 대해 LD_PRELOAD을 설정하는 방법 또는 glibc를 복구하려면 어떻게해야합니까?

+1

'LD_PRELOAD =/lib64에/libc-2.14.so sudo를 -i' 트릭을 할해야 맞죠? – hek2mgl

+0

Stack Overflow는 프로그래밍 및 개발 관련 질문을위한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제와는 거리가 먼 것처럼 보입니다. 도움말 센터에서 [여기에서 내가 질문 할 수있는 항목은 무엇입니까?] (http://stackoverflow.com/help/on-topic)를 참조하십시오. 아마도 [Super User] (http://superuser.com/) 나 [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/)가 더 나은 곳이 될 것입니다. 또한 [Dev Ops에 관한 질문은 어디에 게시합니까?] (http://meta.stackexchange.com/q/134306) – jww

+0

이 질문에 혼란 스럽습니다. libc.so.6 심볼릭 링크를 2.14 glibc로 바꾸는 방법을 묻고 있습니까? 이것은 ln으로 쉽게 할 수 있습니다. 패키지를 다시 설치하는 것이 좋습니다. su/sudo 비트를 따르지 않습니다.이 프로그램은 setuid이며 로더는 권한이없는 사용자에 의해 실행되는 경우 env var을 무시합니다. 즉 실제 문제를 해결해야합니다. –

답변

1

의도적으로 설계된 방법은 없습니다. LD_PRELOAD를 설정하면 임의의 코드가 실행 파일 내에서 실행될 수 있습니다. 그것은 민감한 prvileged SUID 프로그램을 실행하는 동안 그것을 허용하는 것은 현명하지 않을 것입니다.

+0

correct - glibc는 내부적으로 (ldso에서) 보안 문제를 방지하기 위해 set * id 프로그램 (예 : su 또는 sudo)이 실행될 때마다'LD_PRELOAD' 및 유사한 환경을 지 웁니다. 이것을 답으로 표시해야합니다;). –

1

glibc를 복구하려면 어떻게해야합니까?

은 저기 serverfault에 더 적합한 시스템 관리자 질문이지만, 복구 할 수있는 한 가지 방법은 다음과 같습니다 복구 CD 에
  • 마운트 루트 파티션을/mnt
  • 심볼릭 링크를 수정에서

    1. 부트
    2. 재부팅