간단히 말해서, 나에게 권한 있는 액세스 권한이 없기 때문에 ~/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.6
nscd 소켓에 대한 경로(예: /var/run/nscd/socket
)를 존재하지 않는 경로로 바꿉니다.