В обоих файлах содержатся записи, представленные в одинаковом формате, однако некоторые элементы интерпретируют по-разному. Каждая запись занимает одну строку и описывает узел или группу узлов. Формат записи приведен ниже.
[+|-][
Символ +
или -
, указанный перед именем узла, разрешает или запрещает доступ для конкретного клиента. По умолчанию предполагается, что доступ разрешен, поэтому в большинстве случаев символ +
указывать не обязательно. Символ -
запрещает доступ клиента. Запрещающую запись имеет смысл использовать в том случае, если ей предшествует запись, которая разрешает доступ к серверу для группы клиентов.
Используя символ +
, будьте внимательны. Если в строке указан только этот символ (а имя узла отсутствует), доступ разрешается для всех клиентов. Подобная политика защиты является одним из недостатков r-команд. Если вы по ошибке введете пробел между символом +
и именем узла, система будет интерпретировать имя узла как имя пользователя и предоставит возможность обращаться к серверу со всех компьютеров.
Для идентификации узла может использоваться IP-адрес (например, 192.168.34.56) или имя (например, gingko.threeroomco.com
). В качестве имени может быть указано полное доменное имя, а если и сервер, и клиентская машина принадлежат одному домену, достаточно указать лишь имя самого компьютера, например gingko
. Если перед именем задан символ @,
это имя определяет домен NIS (для работы с NIS ваша система должна быть специальным образом сконфигурирована).
Если вы включите в состав записи имя пользователя, то указанному пользователю будет предоставлен доступ к системе. Запись в файле .rhosts
, содержащая пользовательское имя, означает, что этот пользователь эквивалентен пользователю, в рабочем каталоге которого находится файл .rhosts
. Предположим, например, что в файле .rhosts
, находящемся в рабочем каталоге пользователя julia
, содержится следующая запись:
172.21.13.14 jbrown
В этом случае пользователь jbrown
, который работает на узле с адресом 172.21.13.14, может регистрироваться на сервере под именем julia
и получить при этом все полномочия данного пользователя. (Другими словами, работая на клиентском компьютере, jbrown
может вызывать команду rlogin
, указывая опцию -l julia
.)
Записи в файле /etc/hosts.equiv
распространяются на всю систему. Если в этом файле указано имя пользователя, это означает, что он имеет право регистрироваться на сервере с помощью любой учетной записи, за исключением root
. Если бы запись, рассмотренная ранее в качестве примера, присутствовала в файле /etc/hosts.equiv
, это означало бы, что пользователь jbrown
, работающий на компьютере с адресом 172.21.13.14, имеет право регистрироваться не только под именем julia
, но и под именем любого другого пользователя, кроме root
. Таким образом, указывая имя пользователя в файле /etc/hosts.equiv
, вы создаете угрозу безопасности системы. Исключением являются случаи, когда пользовательское имя указывается в запрещающих записях, которые начинаются с символа -
.
Доступ к rlogind
может ограничиваться не только с помощью записей в файлах ~/.rhosts
и /etc/hosts.equiv
и проверки имени пользователя и пароля. Существуют также другие механизмы, предназначенные для ограничения доступа. Поскольку сервер rlogind
запускается с помощью inetd
или xinetd
, вы можете применять для этой цели TCPWrappers. Блокировать доступ можно также с помощью брандмауэра, указав при его настройке TCP-порт 513 (порт, используемый программой rlogind
).
Настройка Telnet