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



chmod {a,u,g,o} {+|-} {r,w,x} <имя файла>




Первая группа кодов указывает на категорию
пользователей (a-все, u-владелец файла, g-группа, к которой принадлежит
владелец, o-все прочие). Плюс или минус устанавливают или отменяют
атрибут, который кодируется тем же символом, который появляется
при выводе каталога.


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




chmod u+rwx prettysript




chmod g+rx prettyscript
chmod o+x prettyscript



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


Читатель, как всегда оказывается прав. Приведенный
выше синтаксис chmod ориентирован больше на любителя, чем на настоящего
UNIX-оида, который не боится использовать самые разные системы
счисления. Дело в том, что впервые UNIX был реализован на компьютерах
фирмы Digital, в которой в отличие от Intel была принята не шестнадцатиричная,
а восьмиричная система счисления (каждый разряд числа, записанного
в этой системе счисления соответствует не четырем, а трем двочным
разрядам, а при записи чисел вполне хватает цифр от 0 до 7). Обратите
внимание, что права доступа для каждой категории пользователей
могут быть записаны с помощью одного восьмиричного числа. И chmod
поддерживает этот формат.


Вот например, как можно записать приведенную
выше настройку прав доступа с помощью одной строки:




chmod 751 prettyscript




Что означает сие непонятное число? Давайте
расшифруем его биты и, как


говорится, "приведем в соответствие".
Вот что мы имеем:


u7 g5 o1


1 1 1 1 0 1 0 0 1


r w x r w x r w x


В результате, при распечатке каталога мы
получим вот такую запись прав доступа:


  • rwxr-x-x


что в полной мере соответствует нашим ожиданиям.
Кстати, в литературе и документации к системе обычно ссылка на
права доступа дается именно в восьмиричном счислении, поэтому
наткнувшись на предложение типа "установите права доступа
для данного файла 640", не мудрствуйте, а просто выполните
команду chmod 640 <имя файла>.

Кто варежку
потерял?



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


Совершенно верно - к конфузам. Вот типовая
ситуация. Суперпользователь (root), обладает всеми необходимыми
полномочиями, чтобы установить, ну скажем, BBS RoCat (Roman Catacombs-диск
LinuxWare 1.0). И совершенно спокойно создает дерево каталогов
на пару мегабайт. После этого вы садитесь за чтение документации
и с ужасом обнаруживаете, что и имя каталога должно быть вполне
определенное (ну это-то просто, можно использовать либо команду
mv -- чисто DOS-овский подход, либо воспользоваться командой ln,
что предпочтительнее), да и владельцем файлов должен быть системный
оператор с идентификатором BBS из группы BBS.


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


Можно, и без проблем. Для этого вы можете
воспользоваться командой chown, которая позволит изменить идентификатор
владельца любого файла, каталога и даже дерева каталогов. Для
изменения группы владельца файла вы можете использовать команду
chgrp. А UNIX при попытке доступа к файлу сопоставит идентификатор
пользователя и его группу с соответствующими полями в характеристиках
файла и сделает соответствующие выводы.


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

Группы
и пользователи



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


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


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


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


Справочная информация о пользовательских
группах обычно хранится в файле /etc/group, который носит чисто
информационный характер и иногда даже не используется. А вот информация
о пользователях жизненно необходима для нормального функционирования
системы.

Пароли
и профили пользователей



Концепция паролей традиционна для системы
UNIX и поддерживается в практически неизменном виде вот уже более
двух десятков лет. Идея проста-проверить, имеет ли пользователь
право доступа к системе путем сравнения идентификатора и пароля,
введенных пользователем с эталонами, хранящимися в файле паролей
(обычно -- /etc/passwd).


Это обычный ASCII-файл, который вы можете
отредактировать с помощью vi или Emacs. Как и большинство конфигурационных
файлов UNIX, passwd состоит из записей, поля которых разделены
двоеточиями. Вот пример одной из записей:




vovka:Xv75fs1Z521:102:0:Vladimir Vodolazkiy:/home/vovka:/bin/tcsh




Первое поле-vovka, содержит идентификатор
пользователя. За ним следует пароль, который хранится в зашифрованном
виде. Дело в том, что обычно файл /etc/passwd открыт на чтение
всем категориям пользователей, поскольку позволяет в удобной форме
получить информацию о том, кто и как работает в системе. И нужно
это прежде всего не для людей, а для программ-демонов, выполняющих
автоматическую обработку информации. Дабы максимально затруднить
злоумышленнику взлом пароля в качестве ключа шифрования используется
сам пароль. Поэтому при загрузке системы система шифрует введенный
пользователем пароль и проверяет, совпадает ли полученная строка
с содержанием поля в /etc/passwd. После чего и решает-пускать
пользователя в систему или нет. Вся информация, которая содержится
в оставшихся полях, по большому счету относится к профилю пользователя
и используется при загрузке системы, о чем мы уже писали ранее.

Несколько
полезных советов



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

Как добавить
пользователя?



Для этого вы должны выполнить несколько действий.
Во-первых, необходимо создать регистрационную запись в /etc/passwd.
Проще всего воспользоваться утилитой adduser, которая автоматически
сформирует и добавит запись в файл /etc/passwd. Но при желании
вы можете выполнить эту поерацию и вручную. Во-вторых, для того,
чтобы пользователь мог войти в систему, необходимо, чтобы его
"домашний каталог" был ему доступен (то есть, чтобы
на момент регистрации соответствующий диск был смонтирован!).
Если вы использовали упоминавшуюся выше программу, то можете
не волноваться-каталог будет создан автоматически. Далее, вы должны
позаботиться о том, чтобы в системе была установлена та оболочка,
с которой будет работать пользователь. Если вы не уверены, поместите
в это поле /bin/sh-уж эта-то программа найдется на диске всегда!

Как создать группу?



Для этого предназначена команда groupadd.
Ее следует вызывать раньше, чем вы начнете создавать регистрационные
записи пользователей. В противном случае вам придется в команде
adduser вводить числовые идентификаторы GID (group ID). А вот
если группа уже заведена, то вы можете на соответствующий вопрос
команды adduser просто набрать на клавиатуре название группы,
к которой хотите отнести нового пользователя.

Обязательно ли
нужно грузить одну из оболочек?



Ну зачем же? Если ваш пользователь должен
работать только с одной и той же прикладной программой (клиентской
частью какой-нибудь мощной многопользовательской системы) укажите
полное имя этой программы вместо оболочки! И при завершении работы
с программой пользователь автоматически отключится от системы,
а кроме того, физически не сможет поиграть в тетрис в рабочее
время!

Как запретить
регистрацию пользователя в системе, не изгоняя его из списков
пользователей?



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

Как создать "гостевой
вход" в систему, не требующий ввода пароля?



Для этого достаточно не указывать никакого
пароля при добавлении пользователя с помощью adduser, или стереть
пароль, сдела это поле пустым: vovka::102... Имейте в виду,
что с системным пользователем (root) этот номер не пройдет!

"Ежовые
рукавицы" или "свободная любовь"?



Конечно же, немаловажную роль в обеспечении
эффективности системы защиты от несанкционированного доступа играет
и политика системного администратора. Будете ли вы тираном, маленькоим,
но свирепым, или же позволите пользователям своей системы "пожирать"
друг друга, взирая на их мышиную возню с олимпийских высот привилегий
суперпользователя - зависит только от вас. Но вот что вам необходимо
сделать в любом случае, так это по крайней мере объяснить конечным
пользователям, для чего в системы введена система паролей, если
вы не пытаетесь противостоять козням ЦРУ.


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

1. Выбор пароля.



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


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


Прежде всего необходимо указать, что не следует
использовать в качестве пароля:


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




Вообще говоря, хороший пароль представляет
собой смесь из нескольких слов со случайной сменой регистра символов.
Примером продуманного подхода к подбору паролей может служить
АО РелКом, предоставляющая пользователям своей системы достаточно
эффективные пароли, например MYxND34MN. Использование цифр в
произвольных позициях пароля только повышает его устойчивость
к подбору.


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

2. О сохранности
пароля



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


Пользователь не обязан никому сообщать свой
пароль, вне зависимости от обстоятельств.


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


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


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

3. Файлы и каталоги



Каждый пользователь должен позаботиться об
установке корректных прав доступа к личному каталогу и его поддеревьям.
Рекомендуется использовать шаблоны 700, 711 или 755. В любом случае
необходимо запретить посторонним возможность записи в личный каталог!
В противном случае вы предоставляете неизвестным лицам возможность
создания или уничтожения файлов в вашем каталоге по своему, а
не вашему. усмотрению.


Для самых важных файлов рекомендуется устанавливать
права - 644 или 600. И только в редких случаях стоит использовать
шаблон 666, позволяющий всему миру читать и записывать информацию
в данном файле.

4. Особые файлы
пользовательского каталога



Практически в каждом личном каталоге имеются
специальные файлы, имена которых начинаются с точки, и называются
по иностранному - дот-файлами. Эти файлы являются аналогами CONFIG.SYS
и AUTOEXEC.BAT из мира DOS, но являются не общими для всей системы,
а ориентированы только на конкретного пользователя. Это как раз
те данные, для которых права доступа должны устанавливаться в
соответствии с шаблоном 600. Вот их список:


.login, .logout, .cshrc, .bashrc, .kshrc,
.xinitrc, .exrc, .dbxinit,


.profile, .sunview, .mwmrc, .twmrc.


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

5. Физическая
безопасность



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

6. Предоставление
счета в распоряжение третьих лиц



Жизнь, как известно, всегда вносит коррективы
в наши планы. Поэтому, время от времени возникает необходимость
предоставления доступа к вашему счету некоторых третьих лиц. Тем
не менее, и в этом случае не следует забывать о мерах безопасности.
Довольно часто идут по пути минимального сопротивления, передавая
"соратникам" пароль или устанавливая для всех своих
файлов шаблон доступа 777. Нужно ли говорить к каким пагубным
последствиям все это может привести! Попытайтесь либо ограничить
диапазон предоставляемых возможностей оластью рабочей группы,
либо просто скопировать необходимые для вашего партнера файлы.
Не оставляйте счет в системе без контроля.


Конечно, приведенных в данном приложении
данных явно недостаточно для того, чтобы освоить все тонкости
системного администрирования в UNIX. Однако этого материала должно
хватить для того, чтобы сделать первые шаги от DOS к UNIX. Которые,
как правило, оказываются самыми трудными. Но как только вы установите
систему и зарегистрируетесь в ней, то к вашим услугам окажется
огромнуый кладезь информации, который уже будет находиться на
вуашем диске-это система man (контекстная подсказка), пакет info
(описание основных пакетов программ и языков программирования),
а также многочисленные текстовые файлы FAQ, содержащие методические
рекомендации по установке различного периферийного оборудования
или служебных программ UNIX.

Системные
средства обеспечения безопасности системы


Программа
поиска уязвимых мест в защите - CRACK


"Теневые
пароли"


npasswd
- генератор надежных паролей



Подключение
принтера



Компьютер без принтера сегодня представляется
каким-то полуфабрикатом. А резкое падение цен на матричные, струйные
и лазерные принтеры в течение последних двух лет способствуют
массовому распространению технологии "персональной печати".
Конечно, первая мысль, ассоциируемая с принтером сегодня - это
MS Word. Однако, как я постараюсь показать, Linux предоставляет
пользователю более широкие возможности по управлению ресурсами
принтера, чем мы привыкли видеть в Windows.

Первое
подключение устройства печати



Прежде всего нам необходимо убедиться, что
Linux видит ваш принтер. Как правило, принтер подключается к единственному
параллельному порту компьютера, который размещается либо на плате
устройств ввода/вывода, либо непосредственно на материнской плате
компьютера. Но "по теории" IBM PC может поддерживать
до четырех параллельных портов, и в Linux им соответствуют символьные
устройства /dev/lp0 - /dev/lp3.


Поэтому первый ваш шаг состоит в проверке
- есть ли в вашей системе соответствующие устройства. Если нет,
их придется создать самостоятельно. Для этого учтем, что во-первых,
устройства в UNIX являются просто специальными файлами, которые
можно создать с помощью программы mknod, а во-вторых, за параллельными
портами зарезервированы номера устройств - старшее 6 и младшие
с 0 до 3 и соответствуют номеру устройства.


Вот синтаксис команд mknod для всех параллельных
портов, поддерживаемых Linux (в скобках приведены базовые адреса
портов ввода/вывода):


mknod /dev/lp0 c 6 0 (0x3BC)


mknod /dev/lp1 c 6 1 (0x378)


mknod /dev/lp2 c 6 2 (0x278)


mknod /dev/lp3 c 6 3 (0x......)


Обратите внимание на адреса портов! Как правило,
в составе IBM PC входит порт с адресом 0x378, который соответствует
не /dev/lp0, а /dev/lp1. И если вы по привычке будете соотносить
"первый" порт DOS с "нулевым" портом UNIX,
то искать причину неисправности вам придется довольно долго.
Как же избежать этой ошибки?


Наиболее простой путь состоит в экспериментальной
проверке конфигурации. Во-первых, вы можете воспользоваться утилитами
из DOS типа sysinfo или MSD, а во-вторых, можете просто попытаться
"выбросить на печать" текущий каталог, например:




ls -l > /dev/lp0




Если порта lp0 на вашей машине нет вы получите
сообщение:

? /dev/lp0 unknown device


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




This is 1 line




This is 2 line
This is 3 line



Причина этого явления состоит в том, что
ориентированные для работы в DOS принтеры требуют для завершения
строки два символа - возврата каретки <CR> (0x13) и перевода
строки <LF> (0x10). А вот UNIX традиционно обходится одним
символом - <LF>.


Бороться с этим неприятным эффектом вы можете
двумя способами - либо отключить режим раздельного управления
<CR> и <LF> - в этом случае принтер будет распознавать
приход любого из этих символов как команду перейти к новой
строке. Этот режим поддерживает большинство современных моделей
принтеров, но его целесообразно использовать лишь в том случае,
если вы используете только Linux. Если же вам приходится время
от времени обращаться к старушке DOS, целесообразно использовать
специальные программы-фильтры, о которых речь пойдет ниже. А сейчас,
после того, как мы убедились в работспособности принтера, мы организуем
поддержку системных средств печати, общепринятых для UNIX.

Поддержка
принтера в ядре Linux



Устанавливая систему вы наверняка позаботились
о поддержке принтера. Если нет, то самое

Драйвер
печати


Корректировка
настроек принтера - tunelp


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


lpd


lpq


lprm


lpc


lpr - cnfylfртная пограмма печати


/etc/printcap
- конфигурирование принтера


Фильтры
печати


Борьба
с "лесенкой"



apsfilter
- автоматический распознаватель типа входного файла


Подключение
кириллических шрифтов Postsript




Установка
звуковой платы


Подключение
стримеров с FDD-интерфейсом



В этой главе мы поговорим только о стримерах,
которые подключаются к порту приводов гибких магнитных дисков.
Современные мощные модели, ориентированные на интерфейс SCSI
и обеспечивающие хранение нескольких Гигабайт останутся вне нашего
рассмотрения по двум причинам. Во-первых, это достаточно дорогие
изделия, в комплект которых входят собственные драйеры для UNIX-систем.
А как только вы инициализировали интерфейс SCSI в своем компьютере,
вы всполне можете просто перекомпилировать поставляемый драйвер
под Linux. Вторая причина - большая доступность и распространенность
малогабаритных стримеров с FDD-интерфейсом, и их практическая
невостребованность в мире DOS и Windows. При этом, несмотря на
то, что объем ленты типового стримера - 120-250 МБайт на сегодняшний
день уже заметно уступает емкости винчестеров, использование лент
для ведения архивов оказывается достаточно удобным и доступным
- стоимость стримера не превышает 150$, а лента емкостью до 250