Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Всем сестрам по терминалу

Автор: Виктор Вагнер, vitus@45.free.net
Опубликовано: 2.12.2002


© 2002, Издательский дом "КОМПЬЮТЕРРА" | http://www.computerra.ru/
Журнал "Домашний компьютер" | http://www.homepc.ru/
Этот материал Вы всегда сможете найти по его постоянному адресу: http://www.homepc.ru/doityourself/22240/

≈ Я скажу тебе то, что Бенедикту давно следовало
сообщить тебе в первую очередь. Никогда не доверяй родственникам.
Это куда хуже, чем доверять незнакомцу.
Роджер Желязны

Часто домашний компьютер - существенно более многопользовательский, чем офисный. Организация, как правило, может себе позволить купить по отдельному компьютеру на каждое рабочее место, а дома пользоваться компьютером желают все, и заводить его каждому невыгодно, поскольку компьютер требует не только денег на приобретение и апгрейд, но и времени на поддержание в рабочем состоянии. А чем меньше у вас проблем с деньгами, тем дороже вы цените свое время.

В офисе обычно есть специальный человек, он и занимается поддержанием компьютеров в работоспособном состоянии (может и не на полную ставку, но ему за это деньги платят), а дома бороться со всеми неприятностями, которые могут возникнуть с компьютером ≈ вирусами, сбоями программ, потерянными данными ≈ придется самостоятельно. Поэтому домашний компьютер должен быть существенно более надежным, чем офисный. Он вам не для того, чтобы операционную систему на нем переставлять, он для того, чтобы письмо написать, фильм посмотреть, в игру поиграть.

Распределение полномочий

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

Первое, что следует сделать, установив операционную систему на домашнем компьютере ≈ это завести на нем каждого из членов семьи как пользователя. Это позволяют сделать все современные операционные системы, и даже многие несовременные ≈ те, в названии которых присутствует какой-то год из прошлого столетия. Но поскольку темой данного номера являются свободные программы, мы эти несовременные системы и их более современные аналоги рассматривать не будем.

В открытых ОС (в частности, в свободных Линукс и BSD), заведение пользователя ≈ действие, имеющее очень много последствий.
Во-первых, пользователю создается домашний каталог, который становится текущим при входе в систему. Во-вторых, в этот каталог автоматически копируются файлы конфигурации многих программ, и в дальнейшем пользователь может настроить эти программы под себя, совершенно не мешая другим, у которых будут другие настройки.

В-третьих, все файлы, созданные от имени этого пользователя, создаются так, что их может изменять и удалять только этот пользователь. (О том, как решить обратную задачу ≈ позволить нескольким пользователям совместно работать над некоторой группой файлов, мы поговорим чуть позже).

В некоторых системах по умолчанию домашние каталоги пользователей недоступны для других даже на чтение или при установке задается вопрос ≈ а нужно ли запрещать другим пользователям доступ к домашним директориям. Для домашних систем и небольших компаний, где сотрудники между собой знакомы лично, я рекомендую на этот вопрос отвечать "нет". Гораздо проще сказать человеку: "Возьми у меня в домашней директории такой-то файл", ≈ чем входить в систему самому и перекладывать этот файл в общедоступное место. А если у вас есть информация, которую вы действительно хотите скрыть от родных (например, переписка с любимой девушкой, а сней вы еще не готовы познакомить родителей), никто не мешает вам создать у себя в домашнем каталоге подкаталог, и только вы будете иметь к нему доступ. Пользователь с правами системного администратора туда доберется, если захочет, но морально это действие примерно того же плана, что и взлом запертого ящика письменного стола.

В-четвертых, каждому пользователю создается почтовый ящик электронной почты.

Домашняя почта


Многие владельцы компьютеров дома, пользующиеся Интернет, думают, что электронная почта это что-то обязательно глобальное и требующее услуг, обычно платных, со стороны провайдера. Это не так. Интернет ≈ всего лишь совокупность таких же точно машин, как ваша домашняя, соединенных разнообразными линиями связи, именно за ее услуги вы преимущественно и платите провайдеру.

Но электронной почтой можно пользоваться и для обмена записками между собой. Если вы все равно ее регулярно читаете, это значительно удобнее, чем приклеивать записки на холодильник или даже на монитор.

Поэтому имеет смысл разворачивать на домашней машине полноценную почтовую систему. А чтобы внешняя почта, приходящая в почтовый ящик на сервере провайдера, в эту систему попадала, удобно использовать программу fetchmail.

Если с компьютером работают несколько человек, это имеет то дополнительное удобство, что первый же член семьи, которому понадобилось интернет-соединение, незаметно для себя выкачает почту для всех, и остальным не потребуется тратить деньги и время на это. Можно будет просто сесть и прочитать.

А если вам удастся договориться с провайдером о предоставлении виртуального почтового домена, еще удобнее. Виртуальный почтовый домен ≈ это когда почта на все адреса вида user@your-machine.provider.ru складывается у провайдера в один единственный почтовый ящик your-machine@provider.ru, откуда ее забирает fetchmail, и разбирается, а какому, собственно, пользователю локальной машины она предназначена. То есть, вы платите за один почтовый ящик, а пользуетесь столькими, сколько надо, причем в любой момент можете завести новый, не говоря ничего провайдеру, а только заведя нового пользователя или почтовый алиас на вашей локальной машине.

Многие провайдеры предоставляют такую услугу бесплатно, потому что она от них не требует никакого труда.

Я не буду подробно расписывать все необходимые настройки почтовой системы (Mail Transport Agent, MTA) и fetchmail, необходимые для организации локальной электронной почты на домашней машины. Если вы захотите это сделать, разберетесь сами. Важно, что теперь вы знаете, что так можно.

Предложенная система разграничения прав пользователей имеет и свои недостатки. Ограничив возможности пользователей вмешиваться в данные друг друга, мы одновременно ограничили их возможности менять конфигурацию системы. С одной стороны, это хорошо ≈ вы можете быть уверенными, что ваши дети, играя, не приведут ее в такое состояние, что когда вам потребуется написать срочное письмо, придется потратить пару часов на восстановление. С другой стороны, многие очевидные и простые действия, которые хочется иметь возможность совершать, не "становясь" системным администратором ≈ прочитать дискету или компакт-диск, установить соединение с провайдером, корректно выключить машину, наконец, почему-то требуют прав суперпользователя.

Чуть ниже, когда мы начнем разбираться с тем, как несколько человек могут работать на машине одновременно, вы поймете, что эти ограничения вызваны не только историческими причинами. Пока же мы ограничимся тем, что скажем: системный администратор (вы сами, когда занимаетесь настройкой машины) всегда может делегировать права на совершение таких действий простому пользователю (в частности, вам же самим, когда вы этой машиной просто пользуетесь).

Есть универсальный метод делегирования прав ≈ команда sudo, а есть частные методы, предназначенные для разрешения конкретных, наиболее распространенных действий ≈ опция user в файле /etc/fstab для монтирования компакт-дисков и дискет, соответствующие опции в настройке pppd для соединения с Интернетом и так далее.

Всегда, если есть возможность, стоит пользоваться частным решением. Оно получается более удобным для пользователя и более безопасным для системы.
А еще есть возможность поручить управление такими действиями какому-нибудь демону (системному процессу), который будет анализировать запросы от пользователей и их выполнять. Это особенно удобно в тех случаях, когда на машине работают несколько пользователей одновременно.

Существуют разнообразные демоны автомонтирования, а pppd, который используется для установления соединения с Интернетом, может работать в режиме demand (соединения по запросу). В этом режиме он постоянно висит в памяти и ждет, когда кому-нибудь понадобится доступ к ресурсу (веб-сайту, почтовому ящику) за пределами вашей машины. Тогда он начинает автоматически устанавливать соединение. Если же он замечает, что установленное соединение в течение указанного времени не использовалось, он его обрывает.

Существует и отдельная программа diald, допускающая гораздо более гибкое управление соединением (впрочем, пока я еще пользовался dial-up соединениями, мне всегда хватало возможностей самого pppd).
Пожалуй, единственная операция, которую неудобно поручать демону, это выключение машины. И то, если у вас есть источник бесперебойного питания, можно запустить демона, и он будет выключать машину, в случае, если ИБП сообщил о пропаже напряжения в сети. Тогда можно будет безопасно выключать машину с помощью выдергивания вилки ИБП из розетки.

Для выключения машины воспользуйтесь и той особенностью, что пользователь локальной консоли, то есть монитора и клавиатуры, подключенных непосредственно к системному блоку машины, считается в какой-то степени привилегированным. Например, в Linux нажатие Ctrl-Alt-Del на локальной клавиатуре (не в X window) приводит к выполнению команды, прописанной в /etc/inittab независимо от того, зарегистрирован ли вообще в системе пользователь. Конечно, существуют механизмы, позволяющие ограничить возможности пользователей по останову системы, но для домашней машины их лучше выключить. Если кто-то из членов семьи решил выключить компьютер, наверное, он знает, что делает. Вдруг он собрался вывернуть пробки.

Я, правда, меняю действие по умолчанию при нажатии клавиш Ctrl-Alt-Del с перезагрузки на останов. В тех редких случаях, когда Linux-систему необходимо перезагрузить ≈ (например, при замене ядра операционной системы), оболочка с правами суперпользователя под рукой все равно есть. А вот остановить систему может понадобиться внезапно и кому угодно из членов семьи. Скажем, пришли электрики и сказали, что сейчас обесточат весь подъезд.

Система подключаемых модулей аутентификации (PAM), используемая в большинстве современных открытых систем, позволяет настроить привилегии локального пользователя еще более гибко. Например, отдать пользователю консоли в безраздельное пользование флоппи-дисковод или звуковую карту.

Компьютеры и терминалы

Как только вы настроите свою систему, чтобы все члены семьи на ней могли работать, не портя данные друг друга, вы моментально столкнетесь с ситуацией жесткой конкуренция за место у клавиатуры. Сыну хочется поиграть, вам нужно срочно доделать какую-то работу, а жена засела в чате и обсуждает с подругами кулинарные рецепты.

Если подобные ситуации возникают у вас в доме с удручающей регулярностью, значит, вы созрели для того, чтобы в полной мере воспользоваться возможностями многопользовательской работы, предоставляемыми современными открытыми системами. Ведь современный персональный компьютер очень редко работает на полную мощность. Девяносто процентов времени он проводит в ожидании нажатия клавиши или прихода байта из сети.

Вот если бы можно было подключить к нему три монитора, и три клавиатуры┘
Такое решение технически возможно, но хочу сразу предупредить: оно требует нетривиальных знаний1. К тому же, ограничения на длину кабеля, соединяющего монитор с видеокартой, достаточно жесткие, поэтому дополнительный монитор вряд ли удастся вынести в соседнюю комнату.

Лучше приделать ко второму монитору и клавиатуре ма-а-ленький процессор, он и будет общаться с основной машиной по обычной компьютерной сети. Благо в систему X-Window, используемой в Linux и *BSD для реализации пользовательского интерфейса, такая возможность встроена изначально.
Есть три причины, по которым терминал лучше компьютера2:

1. Его не надо администрировать. У него нет своего жесткого диска, своих файлов конфигурации (та конфигурация, которая есть на основной машине).
2. Его не надо апгрейдить. Единожды собрав X-терминал, вы будете его использовать три-пять лет без малейшего желания обновить. На нем выполняется одна единственная программа ≈ X сервер (ну, пусть еще audio-сервер) и требования к процессору и объему памяти не меняются заметно на протяжении нескольких релизов операционной системы. У меня дома сейчас работает парочка аппаратных терминалов примерно десятилетней давности ≈ у одного процессор Motorolla 68020 и 4 мегабайта памяти, у другого ≈ Intel 960 и 12 мегабайт. И со своими задачами они прекрасно справляются.
3. Все данные, программы и вся процессорная мощность главной машины доступны с любого рабочего места.

Серийно выпускаемые X-терминалы (последнее время производители предпочитают термин "тонкий клиент", хотя смысл остается тот же самый), к сожалению, купить не так-то просто: они явно не являются пока продуктом массового спроса. Поэтому наиболее доступный способ обзавестись X-терминалом≈ его сборка из общедоступных комплектующих персонального компьютера.

Для того чтобы собрать X-терминал потребуются:

1) материнская плата с процессором. Процессор слабее, чем нужно, вы вряд ли сегодня найдете ≈ Pentium мегагерц на 120 самое то. Годится и i486, но лучше, чтобы материнская плата имела шину PCI. Ведь вам понадобится более-менее приличная видеокарта;
2) мегабайт 12√16 памяти;
3) видеокарта. Учитывая, что для 3D-графики производительности сети скорее всего не хватит, хорошая PCI-видеокарта с 4√8 Мбайтами видеопамяти ≈ самое то;
4) сетевая карта. Лучше покупать сетевую карту Intel или 3com, на которой уже установлен BIOS для загрузки по сети с использованием стандарта PXE. Другие варианты стоит пробовать, только если у вас под рукой есть программатор для ROM;
5) клавиатура, монитор и мышь;
6) звуковая карта. Вещь необязательная, но полезная;
7) floppy-дисковод. Тоже необязателен, и даже скорее не нужен, но, поскольку mtools умеют работать с удаленными дисководами, вы можете устроить так, чтобы с каждого рабочего места читать дискеты;
8) корпус с блоком питания.

Скорее всего, практически все вышеперечисленное можно собрать по пыльным чуланам в виде остатков от апгрейда. Исключение составляет, пожалуй, только монитор. Работать с X Window с разрешением меньше 1024x768 неудобно3, поэтому четырнадцатидюймовый монитор пятилетней давности вас вряд ли устроит.

Мы не будем здесь рассматривать подробности настройки программного обеспечения для X-терминалов4 .Цель данной статьи ≈ показать, как вообще можно организовать многопользовательскую рабочую среду в рамках отдельно взятой квартиры.

Система X-Window позволяет программам, работающим на основном компьютере, рисовать на мониторе терминала свои окошки, и получать ввод с клавиатуры и мыши. Больше она не делает ничего5. Но пользовательский интерфейс современного компьютера не сводится к клавиатуре и экрану. Есть еще колонки, микрофон, принтер и так далее.

Что касается принтера и сканера, и, с некоторой натяжкой, устройств для внешних носителей (CD-ROM, стример, флоппи-дисковод), их надо подключать к основной машине. В конце концов, менять диски в CD-ROM надо не так часто. За этим, равно как и за распечаткой, можно и в соседнюю комнату сходить.
А вот звук желательно обеспечить непосредственно на X-терминале. К сожалению, не существует столь же общепринятого протокола для передачи звука по сети, как X Protocol для графики. Здесь есть несколько конкурирующих протоколов ≈ NAS, eSound, arts, rplay. А многие программы вообще пытаются писать звук напрямую в устройство, чего им позволять в многотерминальной системе ни в коем случае не следует. Представьте себе, что вы пытаетесь сосредоточиться над важным и срочным документом, сидя за монитором, подключенным непосредственно к компьютеру. А в это время в соседней комнате ваш младший брат запускает какой-нибудь Warcraft, и из динамиков начинает раздаваться: "We are under attack!".

К счастью, и для NAS и для eSound имеются утилиты, позволяющие перехватить вывод в /dev/dsp и отправить его по назначению.

Отдельное преимущество использования audio-сервера ≈ возможность нескольким программам издавать звуки одновременно, независимо от того, поддерживает ли это звуковая карточка аппаратно.

Из четырех перечисленных аудио-серверов рекомендую остановиться на NAS, если только вы не являетесь фанатом GNOME (где логичным выбором является родной для GNOME eSound). Если вы используете KDE, заставить его работать через NAS крайне просто. Нужно просто не запускать родной для KDE artsd. После чего вы сможете наслаждаться звуком не только из KDE-шных программ, но и из многих других, поддерживающих NAS, а также из тех, которые пишут в /dev/dsp, с помощью libaudiooss.

К сожалению, не все задачи, для которых в наше время используют компьютеры, а особенно компьютеры домашние, удобно решать с помощью X-терминала. Ведь локальная видеокарта соединена с процессором быстродействующей шиной PCI или AGP, а терминал ≈ в лучшем случае 100-мегабитным Ethernet. Поэтому следует сразу распрощаться с идеей, смотреть на терминале кино, да и трехмерные игры будут работать далеко не все ≈ только те, которые аккуратно используют OpenGL, и поэтому требуют достаточно ограниченной полосы пропускания между программой и X-сервером.

Для проигрывания Flash на X-терминале вам понадобится flash_player не ниже версии 6. К сожалению, мне пока не известно как заставить его работать с Network Audio. Поэтому гулять по сайтам с флэшовой навигацией у вас с терминала получится, а смотреть мультики про Масяню вряд ли. Впрочем, я думаю, усилиями сообщества эта проблема в ближайшее время будет ликвидирована.

Так что терминалы следует рассматривать как рабочие места, а в качестве развлекательного центра использовать локальный дисплей. И если у вас есть общая комната, рекомендую поставить компьютер именно в ней. У меня компьютер стоит в моей комнате (так исторически сложилось), в результате чего сестре приходится частенько прокрадываться на цыпочках по ночам к принтеру, чтобы забрать распечатку очередной своей статьи.


Домашний Компьютер ╧12/2002


1 Интересующийся читатель может познакомиться с отечественной разработкой "Змей Горыныч", созданной и внедренной в Московском государственном педагогическом институте (www.ctc.msiu.ru/zg/index.php), и представляющей собой многотерминальный комплекс на основе IBM PC-совместимого компьютера. ≈ Ред.
2 Четвертая ≈ цена. Стоимость нижеприведенной конфигурации (без монитора) ≈ менее ста долларов. ≈ Ред.
3 Это сильно зависит от используемых графической среды и прикладных программ. ≈ Ред.
4 Если вас заинтересовал этот вопрос, вы можете обратиться к материалам на http://ppg.ice.ru/ppg/xterminals, http://pxes.sf.net, http://netstation.sf.net за более конкретными руководствами. ≈ Авт.
5 Разве что позволяет изображенным на одном экране программам общаться друг с другом, даже если они запущены на разных машинах. Впрочем, нам это пока не важно. ≈ Авт.