привести к непредсказуемым и непоправимым последствиям, а поэтому лучше
закрыть глаза и тихонько нажать на клавишу Reset. Во всяком случае, у вас
остается надежда, что программа fsck при повторной загрузке исправит (или
попытается это сделать) ошибки на диске. Если же повреждения оказались
менее серьезными (в SAG под этим подразумевается несколько ударов топором
по клавиатуре), то имеет сысл использовать команду update для того, чтобы
снести содержимое буферов на диск, и только после этого выключать питание.
Среди части системных программистов пользуется популярностью некое сложное
заклинание, состоящее из трех команд sync, между которыми следует дождаться
мигания светодиода доступа к винту, и лишь после этого считается
позволительным выключать питание машины. Если в этот момент у вас нет
никаких активных программ, то этот процесс, вообще-то, полностью
эквивалентен команде 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} <имя файла>