사용자 수준에서 /etc/hosts 파일을 재정의하는 방법은 무엇입니까? [복사]

사용자 수준에서 /etc/hosts 파일을 재정의하는 방법은 무엇입니까? [복사]

중복 가능성:
/etc/hosts를 보완하기 위해 사용자별 호스트 파일을 만들 수 있습니까?

간단히 말해서, 나에게 권한 있는 액세스 권한이 없기 때문에 ~/hosts이를 덮어쓸 수 있는 파일을 얻을 수 있는지 궁금합니다 ./etc/hosts

내가 사용하고 있는 컴퓨터에는 올바른 DNS 서버가 구성되어 있는 것 같습니다. 일반 컴퓨터에 ping을 시도할 때이름나는 그것을 사용하고 있으며 실패합니다. 하지만 내가 그들을 통해 핑하려고 할 때IP 주소예상대로 작동합니다.

스크립트 및 기타 변경을 피하고 싶습니다.머슬 메모리 손으로 만든 명령줄™ 기계 구성이 좋지 않아서 만들었습니다. 시스템 관리자에게 연락했지만 다른 할 일이 있었습니다.

어떻게 구현할 수 있나요?

답변1

LD_PRELOAD 트릭에 추가됩니다. 그렇지 않은 경우 간단한 대안은 다음과 같은 자신의 위치에 nscd복사하는 것입니다 .libnss_files.so

mkdir -p -- ~/lib &&
cp /lib/x86_64-linux-gnu/libnss_files.so.2 ~/lib

사본을 바이너리 편집하여 /etc/hosts동일한 길이의 것으로 교체합니다(예 /tmp/hosts: .

perl -pi -e 's:/etc/hosts:/tmp/hosts:g' ~/lib/libnss_files.so.2

/tmp/hosts필수 항목을 추가하려면 편집하세요 . 그리고 사용

export LD_LIBRARY_PATH=~/lib

대신 nss_files보러 오세요 ./tmp/hosts/etc/hosts

대신에 /tmp/hosts, 당신은 그것을 할 수도 있고 /dev/fd//3그런 다음 할 수도 있습니다

exec 3< ~/hosts

예를 들어 , 이렇게 하면 서로 다른 명령이 서로 다른 파일을 사용할 수 있습니다 hosts.

$ cat hosts
1.2.3.4 asdasd
$ LD_LIBRARY_PATH=~/lib getent hosts asdasd 3< ~/hosts
1.2.3.4         asdasd

설치되어 실행 중인 경우 nscd동일한 방법을 사용하여 문제를 해결할 수 있지만 이번에는 libc.so.6nscd 소켓에 대한 경로(예: /var/run/nscd/socket)를 존재하지 않는 경로로 바꿉니다.

관련 정보