Множество полезной документации по ОС UNIX можно найти на сайте
opennet.ru. Там есть даже специальные
разделы по Solaris
и FreeBSD.
Вопросы и ответы (когда будут)
Вопросов действительно нет... Хотя, вчера попросил перевести рассылку в разряд
обычных некоммерческих, т.е. более-менее рекламируемых. А сегодня еще и пару
человек приглашу подписаться лично. Может, после этого вопросы появятся.
файл сообщений для текущего языка
(См. 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, что
определенно неправильно, но это пока трудно исправить по причинам,
слишком сложным, чтобы их здесь объяснять.