사용자 별 호스트 파일


16

/etc/hosts사용자별로 (예 : 파일) 호스트 별명을 정의하는 방법이 /home/user/.hosts있습니까?

저의 주요 목표는 소규모 LAN의 컴퓨터간에 rsync를 통해 호스트 별칭을 쉽게 공유하는 것입니다. 항상 안정적으로 연결되는 시스템이 없기 때문에 DNS 서버는 옵션이 아닙니다 (맞습니까?).

감사합니다.


2
오 와우. 나는이 같은 질문을 게시하려고했지만 당신이 가지고있는 것을 봅니다. 그것은 나에게 의미가 있지만, Linux에는 존재하지 않습니다. 필자의 경우 Samsung Galaxy Tab 장치에 Android OS가있는 감옥 형태의 Linux가 있고 웹 개발로 인해 종종 / etc / hosts를 편집해야합니다. jailed Linux에서는 / etc / hosts를 편집 할 수 없습니다. 따라서 ~ / .hosts는 정말 멋질 것입니다!
ServerChecker

결국 어떤 해결책을 찾았습니까?
quamis

불행히도. 보안 위협이기 때문에 가능하지 않을 수도 있습니다.
mrucci

1
SSH의 경우 부분 해결 방법으로 별칭을 사용할 수 있습니다. alias ssh="ssh ".bashrc (별칭 끝의 마지막 공백을 확인하십시오)를 함께 넣으면 alias myhost="me@real-name-of-my-host.com"말할 수 있습니다 ssh myhost.
노아 서스 먼

해결을위한 더 좋은 방법은 당신의 항목을 넣어하는 것입니다 ~/.ssh/config당신이 줄을 추가 여기서 Host my-hostHostname 10.0.0.xxx<- 기계의 IP. 좋은 점은 또한 사용자 이름, 포트 등을 사용할 키를 지정할 수 있다는 것입니다.
Ciprian Tomoiagă

답변:


8

더 나은 솔루션은 Avahi 및 libnss-mdns를 설치 한 다음 HOSTNAME.local주소 를 사용 하는 것입니다.

이러한 이름은 사용자 별이 아니지만 LAN을 통해 모든 시스템에 대해 공통 이름을 갖는 목표를 해결합니다.


HOSTNAMES.local을 / etc / avahi / hosts가 아닌 로컬 파일 (사용자 별)로 지정하는 방법이 있습니까?
mrucci

Teddy는 각 기계가 Avahi가 발견 할 수있는 이름을 가질 것이라고 생각합니다. 기계 대 이름 맵핑은 실제로 사용자마다 다릅니 까?
pjc50

아니요. 사용자별로 다를 수 없습니다. ping hostnameAlias루트 권한없이 호스트 별칭을 공유 할 수있는 방법이 필요합니다 . 기계 $ HOSTNAME을 별명으로 사용할 수 있기 때문에 Avahi는 거의 올바른 작업을 수행합니다. 호기심을 위해서만 :이 매핑이 수행되는 곳은 어디입니까?
mrucci 2009

3

요청한 내용을 정확하게 수행하는 방법 은 https://github.com/figiel/hosts 를 참조 하십시오 .

이 라이브러리는 LD_PRELOAD를 통해로드되며 gethostbyname () 및 프로그램이 DNS 확인에 사용하는 몇 가지 관련 함수를 재정의하는 작은 라이브러리입니다. 그것은 나를 위해 잘 작동합니다. 내가 찾은 유일한 경고는 Chrome 웹 브라우저는 기본 DNS 확인을 사용하지 않고 자체 DNS 클라이언트를 구현한다는 것입니다. 이 문제를 해결하려면 Chrome의 DNS 클라이언트비활성화 해야합니다 .


2

리눅스 glibc 구현은 그렇게 할 수 없습니다.

그러나 가능한 nss 라이브러리로 확장 할 수 있습니다. nss_files 디렉토리에있는 libc의 관련 부분을 제거 할 수 있으므로 작성하기 쉽습니다.

http://ftp.gnu.org/gnu/glibc/glibc-2.5.tar.bz2

예를 들어

그러나 이것은 다소 이상한 비표준 일입니다.



0

이 페이지의 다른 답변에서 설명 하듯이 유사한 기능을 수행하는 방법이 있지만

아닙니다 /etc/hosts. GNU / 리눅스에서 권한이없는 사용자로 기본 이름 확인을 무시하는 "사용자 별"파일 이나 다른 방법 은 없습니다 .


-1

어느 호스트가 작동하는지 알아 낸 다음 다음 rsync 명령에 호스트 이름을 설정하는 스크립트를 작성하는 것이 훨씬 쉬워 보입니다. 이 같은

#! / usr / bin / sh

HOST = "없음"
TESTFILE = / tmp / testfile. $$
$ TESTFILE을 터치합니다
hosta hostb hostc olivia의 i의 경우
하다
    scp $ TESTFILE $ i : / tmp
    만약 [$? -eq 0]
    그때
        호스트 = $ i
    fi
끝난
rm $ TESTFILE

[$ HOST! = "none"] 인 경우
그때
    echo $ HOST가 가동 중입니다
    rsync -av --rsh = ssh 파일 $ HOST : / dest
그밖에
    echo "호스트를 찾을 수 없습니다"
    1 번 출구
fi

이것은 테스트되지 않았으며 가정이 있으므로 적합하도록 수정해야합니다.


답변을 주셔서 감사하지만 나는 또 다른 문제를 해결하려고 노력했습니다 : 호스트 이름 목록 (hosta hostb hostc olivia)을 사용자 홈 폴더에 저장하고 공유하는 방법rsync src olivia:/dst
mrucci
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.