su
доступно в большинстве систем Unix и должен работать:
su root -c 'echo "add this line to the code" >> fileName'
Как/etc/hosts соответствует работе?
Это, зависят от /etc/nsswitch.conf
и /etc/host.conf
решить, считать ли информацию в /etc/hosts
Как @msw сказал обработанный libc, библиотекой пространства пользователя, он считал nsswitch.conf и считал Тег "хосты: файлы DNS", затем чтение средств файла /etc/hosts
и средства DNS /etc/resolve.conf
Теперь предположите удар http://www.google.com в Firefox,
nameserver
отметьте, если это не, настраивают затем сопоставитель, отправляют запрос DNS localhost на порте 53, nameserver 8.8.8.8
, затем это отправит запрос в, например. dig google.com @8.8.8.8
. конечно, теперь мы можем получить ответ запроса из лобкового DNS. ОТРЕДАКТИРУЙТЕ 1, Также пользователи могут поддержать свой собственный файл hosts с помощью переменной "HOSTALIASES", таким образом, это сначала проверит этот файл, прежде, чем считать/etc/hosts.
Напр.
echo "fb www.fb.com" >> ~/my_hosts
echo "export HOSTALIASES=~/my_hosts" >> ~/.bashrc
source ~/.bashrc
В соответствии с Linux,/etc/hosts анализируется до соответствия для разрешения записей. Это также, как это было обработано в выпуске 1983 года 4.3 BSD, который был первым широким прокатом современного стека IP Unix.
Важно помнить, что во время 4.3 BSD, весь список Интернета соединился, хосты был сохранен в централизованном Сетевом информационном центре и пронумерован только приблизительно 325. Связанный хост получил бы список каждого хоста в Интернете от NIC, и линейный поиск через несколько сотен строк был достаточно хорош. Примерно в это время IETF понял, что это не выходило на более высокий уровень хорошо, таким образом, предложил Систему доменных имен. После этого, если у Вас было больше чем несколько сотен строк в/etc/hosts, Вы "делали его неправильно".
Обратите внимание также, что/etc/hosts обрабатывается libc, библиотекой пространства пользователя. Ядро понятия не имеет, что что-либо существует кроме a sockaddr
. Таким образом, этот ответ применяется только к обработке/etc/hosts и конкретно игнорирует всеобъемлющие системы определителя имен, которые значительно различаются в их поведениях кэширования и сложностях времени.
2 функции, в которых Вы нуждаетесь, gethostbyname()
и gethostbyaddr()
, описанный в http://linux.die.net/man/3/gethostbyname, Если Вы все еще имеете nslookup
доступный, попытайтесь использовать его на, например. nslookup www.google.com
. Вы видите, что одно имя может привести к различным IP-адресам. Другой путь также нормален, тот же IP-адрес может указать на различные имена хостов. Для проверки этого просто добавьте IP-адреса и имена хостов к/etc/hosts и проверьте его с упомянутыми функциями.