@ Карта сайта News Автора!

Bog BOS: rsh и r*-команды: принципы работы, использование и настройка

Последние изменения:
2009.09.30: sysadmin: Zabbix - распределённая система мониторинга

Последнее изменение файла: 2007.02.08
Скопировано с www.bog.pp.ru: 2010.03.19

Bog BOS: rsh и r*-команды: принципы работы, использование и настройка

Обеспечивают возможность удаленного выполнения команд (rsh, rexec (устарел), rlogin) и копирования файлов (rcp). Надстроенные над базовым уровнем rsh/rcp команды rsync и rdist позволяют синхронизировать состояние файлов/директорий на нескольких компьютерах.

В современных условиях запуск rsh-сервера представляется чистым безумием с точки зрения безопасности, так что рекомендую обратить внимение на SSH. Но если сервер запущен кем-то другим ;), то воспользоваться им можно. К тому же команды rsync и rdist позволяют использовать в качестве транспортного уровня SSH вместо rsh.

Принципы работы

Стандарты: RFC-1258 (устарел), RFC-1282. Протокол использует 513 порт TCP (login), 514 порт TCP (выполнение команды shell) и обеспечивает поддержку виртуального терминала на удаленном хосте. В отличие от протокола telnet предполагается, что на обоих хостах установлена ОС Unix и нет нужды договариваться о параметрах соединения. В результате, реализация протокола получается более простой. При инициализации соединения клиентская программа посылает имя пользователя на локальном хосте, имя пользователя на удаленном хосте и тип терминала. Имена пользователя используются для аутентификации (пароль может запрашиваться или не запрашиваться в зависимости от настройки сервера).

Для синхронизации вывода используются символы DC3/DC1 (Cntr-S, Cntrl-Q). Поддерживает режим "raw", в котором все байты передаются на сервер "как есть". Поддерживается возможность динамического изменения размера окна виртуального терминала (в пикселях и колонках/строках).

rlogin

Позволяет входить в удаленную систему с виртуального терминала.

Синтаксис:
rlogin [-8E] [-e escape-символ] [-l имя-пользователя] удаленный-хост

Ключи:

escape-последовательности (распознаются только в начале строки, escape-символ можно задавать ключом -e):

rsh

Позволяет выполнять команду на удаленном хосте (514/TCP). Стандартный ввод rsh передается на стандартный ввод удаленной команды. Стандартный вывод удаленной команды передается на стандартный вывод rsh. stderr удаленной команды передается на stderr rsh по дополнительному каналу. Сигналы INT, HANG, TERM передаются удаленной команде.

Синтаксис:
rsh [-n] [-l имя-пользователя] удаленный-хост [команда]

Ключи:

На клиентской машине необходимо открыть порты 1023/TCP и 1022/TCP (1022 для stderr; это в надежде, что одновременно не может исполняться больше одного rsh ;). Файл /usr/bin/rsh имеет права rws и владельца root, чтобы иметь возможность открыть исходящий порт ниже 1023.

Копирование файлов (rcp)

rcp - копирование файлов между хостами (оба могут быть удаленными). Имя файла записывается в виде: [[user@]host:]file. Если файл назначения является именем директории, то исходный(е) файл(ы) копируются в нее. Относительные имена отсчитываются относительно домашней директории соответствующего пользователя на соответствующем хосте. Имена могут быть защищены (апострофами, кавычками или обратной косой) от локальной интерпретации. Опции:

Сервер in.rshd

Сервер in.rshd запускается из xinetd (/etc/xinetd.d/rsh) и обслуживает запросы 514/tcp (shell, cmd). Исходный порт клиентского запроса должен быть в интервале 512-1023. По IP адресу определяется имя хоста клиента. Имя пользователя (до 16 символов) на удалённом хосте извлекается из потока. Для авторизации используются файлы /etc/hosts.equiv и ~/.rhosts.

Ключи (для /etc/xined.d/rsh надо использовать "server_args = -l"):

Сервер in.rlogind

Сервер in.rlogind запускается из xinetd (/etc/xinetd.d/rsh) и обслуживает запросы 513/tcp (login). Исходный порт клиентского запроса должен быть в интервале 512-1023. Для авторизации используются файлы /etc/hosts.equiv и ~/.rhosts.

Ключи (при использовании PAM ключи -h, -l и -L не действуют, см. /etc/pam.conf и README.pam_rhosts):

Формат /etc/hosts.equiv и ~/.rhosts

Файлы /etc/hosts.equiv и .rhosts в домашнем каталоге содержат список хостов и имён пользователей, которым разрешено и запрещено иметь доступ к сервисам rlogind и rshd без пароля. Каждая запись на отдельной строке. Строки, начинающиеся с '#', являются комментариями. Первое поле строки описывает хост, с которого приходит запрос. Второе поле, если оно указано, описывает имя пользователя на удалённом хосте. Если перед именем хоста стоит знак '-', то запросы с данного хоста отвергаются. Если перед именем удалённого пользователя стоит знак '-', то запросы от этого пользователя отвергаются. Перед именем хоста или пользователя может стоять знак '+' (по умолчанию). Если строка стоит только из знака '+', то принимаются запросы с любого хоста и от имени любого пользователя.

При использовании NIS можно использовать сетевые группы (@имя-группы).

Файл должен быть обычным файлом, принадлежать root или пользователю и закрыт на запись другим пользователям.

Сервер in.rexecd

Сервер in.execd запускается из xinetd (/etc/xinetd.d/rsh) и обслуживает запросы 512/tcp (exec). Для аутентификации используется имя (до 16 символов) и незашифрованный пароль (до 16 символов). Для stderr используется дополнительный канал (см. rsh).

Синхронизация файлов на удаленных хостах (rsync)

Аналогично rcp позволяет копировать файлы между хостами, но ускоряет процесс т.к. передает только измененные части (хитрый алгоритм на основе сравнения контрольных сумм). Позволяет копировать ссылки (links), специальные устройства (device), владельца и группу файла, права доступа. Позволяет использовать в качестве транспорта как rsh, так и ssh. Включает сервер rsyncd (доступ анонимный или с аутентификацией), порт 873/TCP. Я сервер не использую (не люблю, когда пароли лежат в открытом виде) и потому не описываю. Имя файла записывается в виде: [[user@]host:]file. Если файл назначения является именем директории, то исходные файлы копируются в нее. Если имя исходной директории завершается обычной косой чертой, то копируется содержимое директории, а не сама директория (почувствуйте разницу ;). Относительные имена отсчитываются относительно домашней директории соответствующего пользователя на соответствующем хосте. Если в качестве параметров указано только имя удаленного файла/директории, то выдается листинг. Нельзя копировать с одного удаленного хоста на другой. rsync должен быть установлен на обоих концах. Опции:

Синтаксис шаблона (и не лениво людям придумывать свои правила описания шаблонов?):

Переменные окружения:

Типичный пример использования:

Страница проекта

rdist

Позволяет осуществить массовую автоматическую рассылку файлов с локального хоста на несколько сотен хостов с проверкой наличия места, рассылкой извещений о проблемах, исполнением завершающих процедур и т.п.. Сохраняет имя владельца, имя группы, права доступа и время модификации файла. Самый подходящий инструмент, если необходимо автоматизировать обновление пакетов на нескольких сотнях компьютеров. В качестве транспорта позволяет использовать rcmd(3) с помощью демона rdistd (не рассматриваю из-за проблем с безопасностью), rsh (не рассматриваю по тем же причинам) и ssh (не забудьте снять setuid). Канал передачи используется неэффективно в отличие от rsync

Опции:

Опции журнализации.

Формат конфигурационного файла.

rsh в IOS

Смотри в описании Cisco IOS (немного подумав, я остановил этот сервис, чего и вам советую).

Ссылки

@ Карта сайта News Автора!

Bog BOS: rsh и r*-команды: принципы работы, использование и настройка

Последние изменения:
2009.09.30: sysadmin: Zabbix - распределённая система мониторинга

TopList
Не получаеться освоиться в технических моментах? Наши трубоукладчики легко помогут вам.. Компания Продвигаем - поисковая оптимизация seo, раскрутка и продвижение сайтов, контекстная реклама
Copyright © 1996-2009 Sergey E. Bogomolov; www.bog.pp.ru (КГБ знает все, даже то что у Вас на диске ;)