Купить
 
 
Жанр: Учеба

Путь к Linux

страница №6

тельным выключать питание машины. Если в этот момент у вас нет
никаких активных программ, то этот процесс, вообще-то, полностью
эквивалентен команде shutdown. Но, поскольку вы не размонтировали файловые
системы, то флажок clean filesystem для наиболее распространенной системы
ext2fs (смотри [1]) сброшен не будет, что приведет к недовольному ворчанию
fsck при повторном запуске программы.

Поэтому пользоваться подобными "открытиями" не стоит.

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

Демоны и фоновые процессы

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

Демон (от английского demon или daemon-встречаются обе транскрипции!)
представляет собой программу выполняющуюся в фоновом режиме, незаметно для
пользователя и дополняющую операционную систему каким либо специальным
сервисом. Происхождение названия не имеет ничего общего с ужасами
потустороннего мира или игрой DOOM, и представляет собой акроним от "Disk
And Execution MONitor". Основная идея, положенная в основу демонов, состоит
в том, что эта программа не вызывается пользователем в явной форме, а
спокойно ожидает в памяти какого-либо определенного события. Инициатор
генерации события может и не подозревать, что в дебрях оперативной памяти
его подстерегает голодный демон (а иногда программа может выдать квитанцию
о выполнении той или иной операции только в том случае, если она передала
информацию соответствующему демону). Характерный пример - работа с
принтером, при котором программа LPR передает данные демону управления
печатью LPD. При постановке задачи в очередь на печать LPR даже не
интересуется наличием в памяти демона печати, а только помещает печатаемый
файл в каталог спулинга.

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

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

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

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

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


Более подробно о загрузчиках системы

LILO - Linux Loader

LOADLIN

Права доступа и регистрация в системе

Регистрация в системе

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

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

uugetty - стандартная программа регистрации на консоли (виртуальной линии);

uugetty_ps - программа, позволяющая зарегистрироваться, подключившись к
последовательному порту через нуль-модем или (как бы его получше назвать)
не-нуль-модем;

mgetty - программа регистрации, распознающая приходящие факсы.

Любая из этих программ выдает на ваш терминал подсказку

login:

ведущую свое происхождение от двух слов LOG IN (один из переводов -
"шлагбаум на вьезде"). В ответ на подсказку вы должны ввести свой
идентификатор, и, если это потребутся, пароль. В случае, если идентификатор
пользователя и пароль присутствуют в файле /etc/passwd вы будете допущены в
систему.

Если программа getty обнаружит файл /etc/nologin (совершенно неважно, что в
нем находится) то регистрация в системе будет запрещена! Создается этот
файл обычно программой shutdown или ее аналогами. Смысл мероприятия
довольно прозрачен - не допустить внесения изменений в систему после
завершения разгрузки. При запуске системы это файл должен автоматически
ликвидироваться и проблем у вас возникать не должно. За исключением того
случая, когда вы вручную создадите этот файл во время работы. Так что
будьте бдительны!

Права доступа к файлам в системе UNIX

Основным понятием, определяющим все отношение к "правам и обязанностям
пользователей" являются атрибуты файла. Напомню, что атрибуты файла,
принятые в MS-DOS заимствованы из CP/M, а туда попали из UNIX. Насколько
удачным оказалось использование "испорченного телефона" можно судить по
большому количеству признаков, одним из которых является, например,
количество вирусов. В этой области Microsoft есть чем гордиться - MS-DOS и
впрямь впереди планеты всей. Но давайте вернемся к правам доступа. Начнем
со знакомой вам (если вы уже установили Linux) программы распечатки
каталогов ls. Обычно программа не балует пользователя избытком информации,
но если вы воспользуетесь ключом -l, то получите следующее:
---------------------------------------------------------------------------

rw-rw-rw- 1 vovka root 4067 Nov 5 13:12 caterpillar.tar.z

---------------------------------------------------------------------------

Что же нам сообщила система? Первая, непонятная на первый взгляд,
последовательность символов как раз и представляет собой права доступа к
этому файлов со стороны различных категорий пользователей. Затем (1)
выводится количество синонимов, под которыми данный файл известен системе.
Далее вам сообщается имя владельца файла (vovka), то есть идентификатор
лица его создавшего, и группа, к которой он принадлежит (root). Ну а затем
все как обычно - длина файла в байтах, дата и время его создания и
собственно имя файла. Надеюсь, что пользователи DOS обратят внимание на тот
факт, что в UNIX точка в имени файла лишена своего таинственного ореола-у
файла может быть несколько расширений (Это не блажь. Несколько расширений
используется для обозначения последовательности операций, которым
подвергалась информация, записанная в файле. Так, в нашем примере,
.tar-расширение устанавливаемое одноименной программой архивации, а .z
добавляется программой упаковки gzip. В результате для распаковки архива
вам потребуется вначале распаковать файл с помощью gunzip, а уже затем
разархивировать с помощью tar. А вот если вам встретится архивный файл с
расширением .tgz-придется воспользоваться программой tar и ее встроенным
распаковщиком-прим.ред.).


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

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

Наряду с защитой от несанкционированного доступа к файлам, каталогам и
устройствам (без каких-либо проблем вы можете ограничить доступ к каталогам
или устройствам, которые являются так называемыми специальными файлами
UNIX) механизм прав доступа используется и для контроля целостности
программного обеспечения системы. Как вы знаете, немалую часть системных
программ составляют скрипт-файлы, написанные на языке оболочек (shell). Но
как отличить обычный текстовый файл от исполняемого скрипт-файла? Здесь на
помощь приходит атрибут x из записи прав доступа. Если этот атрибут
установлен, вы можете исполнять файл как обычную UNIX-программу, если же
нет...

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

ksh myscript

---------------------------------------------------------------------------

на мой взгляд, просто неприлично. К счастью, вы можете разрешить системе
интерпретировать любой файл как исполняемый (естественно, назначение этого
атрибута файлу с текстами анекдотов не заставит ваш компьютер хохотать до
упаду!). Для этого вы можете воспользоваться командой 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. О сохранности пароля

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

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

Закладка в соц.сетях

Купить

☏ Заказ рекламы: +380504468872

© Ассоциация электронных библиотек Украины

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