Одно возможное объяснение могло быть iptables + dnsmasq (или другой сервер имен) уведенный жулик.
Обоснование позади этого существа: Вы используете, роют, чтобы диагностировать и сообщить, роют с, опция перейти непосредственно в 8.8.8.8, вырыть должна теперь проигнорировать сервер (серверы) имен, перечисленный в/etc/resolv.conf. Как роют себя, реализует сопоставитель и генерирует, запрашивает себя, затем отправляет его в 8.8.8.8 и анализирует/печатает ответы, это должно устранить что-либо броское в конфигурации сопоставителя libc на поле (который в значительной степени все остальное использует).
Это предположило бы что:
Так, я проверил бы, существует ли что-нибудь в ВЫХОДНОЙ цепочке туземной таблицы, перенаправляющей трафик DNS где-нибудь, это не должно идти? (iptables-t туземный-n-v-L ВЫВОД).
Можно воспроизвести это поведение с чем-то вроде:
$ dnsmasq -p 5353 -A /#/192.168.1.251
$ iptables -t nat -I OUTPUT 1 -p udp --dport 53 -j REDIRECT --to-port 5353
# All locally generated requests outbound on udp port 53 gets sent to
# dnsmasq running on port 5353 which'll answer 192.168.1.251 to pretty much
# everything
$ dig @8.8.8.8 google.co.uk
; <<>> DiG 9.7.1-P2 <<>> @8.8.8.8 google.co.uk
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9993
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.co.uk. IN A
;; ANSWER SECTION:
google.co.uk. 0 IN A 192.168.1.251
;; Query time: 0 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Jan 11 01:09:01 2011
;; MSG SIZE rcvd: 46
Около решений с sudo
, это может быть благоприятно для сценария быть настроенным (никакая дополнительная подсказка пароля для определенных команд) или setuid решения, которые не легко сделать безопасный, я предлагаю использование ssh авторизации с открытым ключом с командой = ограничение.
Для этого необходимо включить вход в систему пароля меньше пользователю root, если еще не сделано (PermitRootLogin without-password
в /etc/ssh/sshd_config
) и добавьте Ваш (или лучше специальное предложение для этого созданного случая) ssh открытый ключ к /root/.ssh/authorized_keys
с командой = аргумент любят описанный в этом ответе.
Вы не должны помещать свой пароль root в сценарий.
suid Ваш сценарий на сервере, и заставляют его читать / исполняемый файл только корнем или Вашей группой пользователей.
chmod 4750 script.sh
chgrp your_group script.sh
Не забывайте присоединяться к своему пользователю в ту группу.
И Вы делаете ssh user@XXXX '/path/to/script.sh'
выполнить сценарий.
Создайте ключ SSH и скопируйте открытый ключ в удаленный сервер. Таким образом, необходимо будет войти в систему как корень, но также и пароль меньше. (Remeber для дешифрования закрытого ключа с openssl)
Очень опасно при потере закрытого ключа.
Решение по сохранению без пользователей root
на клиенте генерирует ssh-key
клиента: ssh-keygen
скопируйте его на сервер
: mkdir ~/.ssh
client: scp ~/.ssh/id_rsa.pub serveruser@server:~/.ssh/authorized_keys
allow sudo without password for your user
server:
visudo
serveruser ALL=(ALL) NOPASSWD: /usr/bin/foo /usr/sbin/bar
теперь вы можете запускать такие команды как этот
клиент: ssh serveruser@server 'sudo foo && bar'
//сколько серверов, для которых требуется ssh -t ...
для использования sudo