RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
файл сообщений для текущего языка (См. LANG в environ(5).)
ИСПОЛЬЗОВАНИЕ
rsh копирует свой стандартный входной поток удаленной команде, стандартный выходной поток удаленной команды - в свой стандартный выходной поток, а стандартный поток ошибок удаленной команды - в свой стандартный поток ошибок. Сигналы прерывания, выхода и завершения передаются удаленной команде; rsh обычно завершает работу, когда завершает работу удаленная команда.
Если команда не указана, rsh зарегистрирует вас на удаленном хосте с помощью rlogin(1).
Незаэкранированные метасимволы командного интерпретатора интерпретируются на локальной машине, а заэкранированные метасимволы - на удаленной. См. примеры ниже.
Имя_хоста должно находиться в базе данных хостов, которая может содержаться в файле /etc/hosts, в базе данных доменных имен Internet, или и в обоих местах. Каждый хост имеет одно официальное имя (первое имя в записи базы данных) и, возможно, один или несколько псевдонимов. В качестве имени_хоста можно указывать как официальные имена, так и псевдонимы.
Если имя файла, из которого выполняется rsh, отличается от rsh, rsh использует это имя в качестве аргумента имя_хоста. Это позволяет создать символическую связь с rsh с именем, совпадающим с именем хоста, которая при выполнении вызовет удаленный командный интерпретатор на этом хосте. Создав каталог с символическими связями в виде имен часто используемых хостов и включив его в путь поиска командного интерпретатора, можно запускать rsh просто вводя имя хоста в командном интерпретаторе.
На каждой удаленной машине может быть файл /etc/hosts.equiv, содержащий список имен хостов, обладающих доверием, с которыми она разделяет имена пользователей. Пользователи с одним и тем же именем на локальной и удаленной машине могут выполнять rsh с машин, перечисленных в файле /etc/hosts.equiv удаленной машины, не указывая пароль. Отдельные пользователи могут создать аналогичный личный список эквивалентностей в файле .rhosts в своих начальных каталогах. Каждая строка в этом файле содержит два имени, имя хоста и имя пользователя, разделенных пробелом. Запись в файле .rhosts удаленного пользователя позволяет пользователю с соответствующим именем, зарегистрировавшемуся на указанном хосте, использовать rsh для доступа к удаленной машине в качестве удаленного пользователя без указания пароля. Если имя локального хоста не удается найти в файле /etc/hosts.equiv на удаленной машине, и, кроме того, имя локального пользователя и имя хоста не удается найти в файле .rhosts удаленного пользователя, удаленная машина запросит пароль. В файлах /etc/hosts.equiv и .rhosts необходимо указывать официальные имена хостов, содержащиеся в базе данных хостов; псевдонимы в этих файлах указывать нельзя.
Чтобы предотвратить проблемы защиты, владельцем файла .rhosts должен быть либо удаленный пользователь, либо привилегированный пользователь.
rsh не запросит пароль, если в доступе на удаленную машину отказано, за исключением случая, когда при вызове не указана команда.
Опции
rsh воспринимает следующие опции:
-l имя_пользователя
Использовать имя_пользователя в качестве имени удаленного пользователя вместо локального имени пользователя. Если эта опция не указана, имя удаленного пользователя совпадает с локальным именем пользователя.
-n
Перенаправить ввод rsh в /dev/null. Эта опция иногда необходима, чтобы избежать нежелательных взаимодействий между rsh и командным интерпретатором, из которого она вызвана. Например, если rsh вызвана в фоновом режиме и ее входной поток не перенаправлен с терминала, она заблокирует терминал, даже если удаленная команда ничего не читает. Опция -n предотвращает это.
Тип удаленного командного интерпретатора (sh, ограниченный интерпретатор /usr/lib/rsh или другой) определяется записью пользователя в файле /etc/passwd на удаленной системе.
добавляет удаленный файл lizard.file с машины по имени lizard к файлу example.file на локальной машине, тогда как команда:
rsh lizard cat lizard.file ">>" lizard.file2
добавляет файл lizard.file на машине по имени lizard к файлу lizard.file2, который находится на той же машине lizard.
Предупреждения
Если система указана в hosts.equiv, ее защита должна быть не хуже защиты локальной системы. Указания одной незащищенной системы в файле hosts.equiv достаточно, чтобы свести на нет защиту всей системы.
Текущая локальная среда не передается удаленному командному интерпретатору.
С помощью rsh нельзя запускать интерактивные команды (типа vi(1)). При необходимости, используйте rlogin.
Иногда опция -n необходима по неочевидным причинам. Например, команда:
rsh somehost dd if=/dev/nrmt0 bs=20b | tar xvpBf -
введет ваш командный интерпретатор в странное состояние. Очевидно, tar заканчивает работу раньше, чем rsh. Затем rsh пытается писать в закрытый канал ("broken pipe") и, вместо того, чтобы просто остановиться, продолжает "сражаться" с локальным командным интерпретатором за стандартный входной поток. Вызов rsh с опцией -n предотвращает такие проблемы.
Ошибка происходит только когда rsh находится в начале конвейера и не читает стандартный входной поток. Не используйте -n если rsh действительно должна читать стандартный входной поток. Например,
tar cf - . | rsh sundial dd of=/dev/rmt0 obs=20b
не приводит к ошибке. Если придется использовать -n в подобных случаях, rsh будет ошибочно читать с /dev/null вместо канала.
До Release 4, команда rsh вызывала ограниченный командный интерпретатор. Это программа /usr/lib/rsh и ее можно выполнить, указав полное имя.
Сигналы остановки останавливают только локальный процесс rsh, что определенно неправильно, но это пока трудно исправить по причинам, слишком сложным, чтобы их здесь объяснять.