사용자별로 지정하는 방법이 있나요 resolv.conf
?
내가 찾은 것은 사용자별 호스트 파일의 가능성에 대한 모호한 참조이지만 나는 그것에 관심이 없습니다. 실제로는 resolv.conf
다른 이름 서버를 설정하고 싶기 때문에 전체에 관심이 있습니다.
포인트가 테스트되는 이유를 묻는 경우cjdns시스템의 다른 사용자에게 영향을 주고 싶지 않은 다중 사용자 환경의 네임서버.
nsswitch 시스템을 남용하는 것이 가능할까요?
답변1
로컬 파일 시스템 네임스페이스는 친구이지만 설정하려면 루트 권한이 필요합니다.
sudo unshare --mount bash -s <<'EOF'
mount --bind /path/to/your/resolv.conf /etc/resolv.conf
sudo -u username-to-run-as command-to-run-with-alternate-resolv-conf
EOF
업데이트된 resolv.conf를 사용하여 임의의 명령을 실행하는 스크립트를 원하는 경우 다음을 고려하세요.
#!/bin/bash
## usage: with-custom-resolver /path/to/resolv.conf cmd arg1 arg2 ...
## ...note that this requires root.
script=""
add_cmd() {
local cmd_str
printf -v cmd_str '%q ' "$@"
script+="$cmd_str"$'\n'
}
resolv_conf=$1; shift
[[ $EUID = 0 ]] || { echo "Must be run as root" >&2; exit 1; }
[[ -e $resolv_conf ]] || { echo "No file found at: $resolv_conf" >&2; exit 1; }
add_cmd mount --bind "$resolv_conf" /etc/resolv.conf
add_cmd exec "$@"
unshare --mount sh -e -c "$script"
따라서 이는 다음과 같이 사용될 수 있습니다.
with-custom-resolver your-resolv.conf sudo -u someuser some-command arg1
답변2
간단한 대답 -- 아니오....
그러나 각 사용자마다 다른 가상 머신을 설정한다면 원하는 작업을 수행할 수 있는 기회가 있을 수 있습니다.
그러나 조금 무의미해 보입니다.
답변3
DNS 서버를 테스트하기 위해 확인자 구성을 변경할 필요가 없습니다. host
, nslookup
또는 명령 에서 DNS 서버를 변경하기만 하면 됩니다 dig
.
host www.google.com 8.8.8.8
chroot 환경이나 Linux 컨테이너(LXC)를 사용하여 다른 resolv.conf 파일을 가질 수도 있습니다.
답변4
내가 이 문제를 해결할 수 있을지도 몰라NSS에 서비스 추가.