Ъ2fsck specialfile

@ Пользователи sysadmsh выбирают: Filesystems->Checks

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

Замечание
Программа fsck на самом деле является фронтальной - она вы-
полняет лишь предварительную обработку, запуская для каждого ти-
па файловой системы свою версию fsck. Для исправления файловых
систем DOS программа fsck вызывает специальную версию.

Предположим, например, что вы запустили систему после сбоя
питания и находитесь в однопользовательском режиме. Чтобы прове-
рить файловую систему /u, представленную устройством /dev/u,
введите

    fsck

/dev/u

и нажмите <Return>. Программа проверит файловую систему и выдаст
следующие сообщения о ходе своей работы:

+--------------------------------------------------------------
| ** Phase 1 - Check Blocks and Sizes
| ** Phase 2 - Pathnames
| ** Phase 3 - Connectivity
| ** Phase 4 - Reference Counts
| ** Phase 5 - Check Free List
|
Если на одном из этих этапов обнаружится поврежденный файл,
команда спросит, следует ли его исправить или восстановить. Что-
бы исправить запорченный файл, введите y. Всегда разрешайте сис-
теме восстанавливать запорченные файлы, даже если у вас есть в
запасе их копии или вы намерены их удалить.
Заметим, что команда fsck удалит любой файл, который она
сочтет слишком сильно запорченным и не подлежащим восстановле-
нию. Можно задать возможность выбора для fsck - выполнять вос-
становление или нет. Вы можете заставить fsck проигнорировать
нарушение целостности, если вы сочтете проблему настолько серь-
езной, что либо пожелаете разобраться с ней самостоятельно с по-
мощью утилиты fsdb(ADM), либо решите восстановить систему с ре-
зервных копий. Если вы не можете использовать fsdb, вам следует
дать fsck возможность исправлять нарушения целостности, в про-
тивном случае файловая система может оказаться непригодной к ис-
пользованию.
Заметьте, что вам может понадобиться несколько раз выпол-
нить команду fsck, прежде чем вся файловая система будет очище-
на. Полный список сообщений об ошибках можно найти в странице
Руководства, соответствующей fsck(ADM).
.
- 4-20 -

Краткое описание этапов fsck

Команда fsck просматривает и проверяет каждую из вышеупомя-
нутых структур. На каждом этапе выполняется сравнение компонен-
тов и проверка согласованности этих компонентов друг с другом.
На этапе 1 проверяются блоки и размеры. Команда fsck читает
список индексных дескрипторов файлов, чтобы определить размеры и
отыскать блоки, используемые каждым из файлов. Эти дескрипторы
файлов проверяются на действительность (проверка типа и размера
дескриптора, проверка на равенство нулю счетчика связей) и на на-
личие дефектных или дублированных блоков. (Дефектными являются
блоки, значения которых выходят за границы файловой системы.)
Когда fsck спрашивает, следует ли чистить дескриптор файла, это
означает обнуление в нем дефектной информации. В итоге файл или
каталог, соответствующий этому дескриптору, будет удален. Дубли-
рованный блок означает, что два дескриптора указывают один и тот
же блок на диске. Команда fsck пытается определить оригинальный
дескриптор, чтобы скорректировать дубликат на этапе 2.
На этапе 2 проверяются имена путей. Должны быть удалены эле-
менты каталога для файлов, удаленных на этапе 1. На этапе 2 исп-
равляются ошибки, вызванные неправильным состоянием индексных
дескрипторов файлов, выходом указателей этих дескрипторов за пре-
делы диапазона; исправляются каталоги, указывающие на дефектные
дескрипторы файлов, как описано выше. В случае файлов с дублиро-
ванными блоками, обнаруженными на этапе 1, fsck попытается уда-
лить оба файла (это одна из немногих ситуаций, требующих вмеша-
тельства администратора системы).
На этапе 3 проверяются связи. На этапе 2 удалены каталоги,
не указывающие на действительные файлы. На этапе 3 восстанавли-
ваются связи с файлами, которые выпали из структуры каталога.
Все действительные файлы, на которые нет ссылки, помещаются в
специальный каталог под названием lost+found. Поскольку каталог
был отсоединен, имя файла теряется; в каталоге lost+found файлу
присваивается номер.
На этапе 4 проверяются счетчики обращений. Команда fsck про-
веряет счетчик связей для каждого элемента, благополучно прошед-
шего этапы 2 и 3. В некоторых случаях файлы, на которые не было
указателя в структуре каталога, но которые все же обладают ин-
дексными дескрипторами, могут быть вновь связаны с файловой
системой по каталогу lost+found.
На этапе 5 проверяется свободный список. Команда fsck изу-
чает список свободных блоков, составляемый файловой системой, и
разрешает отсутствующие или неназначенные блоки, которые были
ранее назначены или удалены. При обнаружении нарушения целост-
ности fsck выдает приглашение перестроить список.
На этапе 6 восстанавливается свободный список. Система ре-
конструирует список свободных блоков в соответствии с измененной
файловой системой, если это было определено на этапе 5.
.
- 4-21 -

Автоматическая проверка файловой системы

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

Исправление файловой системы с помощью команды fsdb

Если после фатального сбоя суперблок файловой системы ока-
зывается настолько поврежден, что fsck не в состоянии его вос-
становить, можно с помощью команды fsdb ("filesystem debugger" -
"отладчик файловой системы") вручную исправить суперблок, наста-
вив "заплат". С большой вероятностью команда fsdb понадобится,
если fsck аварийно прекращается или выдает слишком много ошибок.
Так как fsdb - очень мощное средство, позволяющее не-
посредственно изменять суперблок (который содержит важную инфор-
мацию о файловой системе), использовать его следует с величайшей
осторожностью. Почти во всех случаях, когда требуется применить
fsdb, приходится менять только одну или две ячейки суперблока,
представляющие fsize и isize; им возвращаются значения, обычные
для вашей файловой системы. fsize - общее число блоков в файловой
системе; isize - количество индексных дескрипторов файлов, назна-
ченных файловой системе.
Далее приводятся порядок использования fsdb в целях измене-
ния значений fsize и isize.
1. Получите нормальные значения fsize и isize в вашей файло-
вой системе. Вы должны были записать их согласно инструкции в
конце процедуры установки, описанной в документе Installation
Guide. Если вы этого не сделали, можно получить размер файловой
системы с помощью divvy и оценить число индексных дескрипторов
файлов. Для определения размера файловой системы воспользуйтесь
командой

    divvy -b 1 -c 1



Размеры файловых систем выводятся на экран в виде диапазона но-
меров блоков. Нужно вычесть номер начального блока из номера
последнего, и получится размер файловой системы. Приблизительное
число индексных дескрипторов файлов равно размеру, умноженному на
.125.
2. Убедитесь в том, что fsize и isize вашей файловой систе-
мы запорчены.
3. Найдите fsize и isize в суперблоке.
4. Установите fsize и isize равными их нормальным значениям.
.
- 4-22 -

Все эти шаги подробно описаны в последующих разделах. В
странице Руководства, соответствующей fsdb(ADM), приведено нес-
колько других способов применения fsdb для просмотра и обработки
суперблока; однако эти возможности рекомендуется использовать
только опытным администраторам системы.

Проверка нарушения значений fsize и isize

При проверке файловой системы после фатального сбоя команда
fsck считывает из суперблока размер файловой системы. Если зна-
чения fsize и isize, хранящиеся в этот момент в суперблоке, не
являются нормальными значениями для файловой системы, fsck выда-
ет на экран результаты проверки размера и заканчивает работу,
как показано в следующем примере:

+--------------------------------------------------------------
| # fsck /dev/root
| /dev/root
| /dev/root File System: / Volume: root
| Size check: fsize 0 isize 0
| #
|
Сравните значения fsize и isize, выданные командой fsck
нашем примере - 0), с нормальными значениями вашей файловой сис-
темы. Если они отличаются, придется выполнить fsdb, чтобы заме-
нить значения в суперблоке на нормальные значения файловой сис-
темы.
Иногда неправильной оказывается только одна из этих вели-
чин, хотя информация, выданная fsck, показывает нарушение обоих
значений. При выполнении fsdb вы увидите фактические значения
fsize и isize, записанные в суперблоке, и поймете, сколько зна-
чений вам придется менять - одно или оба. Для выполнения fsdb
введите следующую команду, задав в качестве filesystem имя фай-
ловой системы:

Ъ2fsdb /dev/filesystem

Полученный в результате вывод будет аналогичен приведенно-
му в следующем примере:

+--------------------------------------------------------------
| # fsdb /dev/root
| /dev/root(/): 1K byte Block File System
| FSIZE = 1895959976, ISIZE = 7216
|
В данном примере fsdb показывает, что некорректно только
значение fsize (хотя fsck выдала некорректность обоих). fsdb
всегда работает аккуратнее.
.
- 4-23 -

Поиск fsize и isize в суперблоке

Чтобы заново установить значения fsize и/или isize, нужно
уметь отыскивать эти значения в суперблоке. Это можно сделать,
перейдя к первому адресу суперблока и проверив первые два значе-
ния, которые и есть суть fsize и isize. В файловых системах UNIX
суперблок начинается по адресу 512, а в файловых системах XENIX
- по адресу 1024. Вот пример для файловой системы UNIX:

+--------------------------------------------------------------
| # fsdb /dev/root
| /dev/root(/): 1K byte Block File System
| FSIZE = 28890, ISIZE = 7216
| 512
| 001000: 000705 (453)
| <Return>
| 001002: 000000 (0)
| <Return>
| 001004: 070332 (28890)
|

(Клавиша <Return> используется для перехода от одного значения в
суперблоке к другому.) Выводятся следующие величины: адрес (в
восьмеричном виде), записанное по этому адресу значение (также в
восьмеричном виде) и его десятичный эквивалент (в скобках). Убе-
диться в том, что вы находитесь в нужном месте суперблока, можно
следующим образом: третья выведенная на экран величина (после
второго нажатия клавиши <Return>) - fsize - должна совпадать со
значением, выведенным командой fsdb при ее запуске (FSIZE). За-
метим, что fsdb выдает значения в блоках по 1К. Если вы возьмете
размер файловой системы у команды df, то он окажется ровно вдвое
больше размера, сообщаемого командой fsdb. Это связано с тем,
что df выдает ответы в 512-байтных блоках. Если вам нужно изме-
нить значение FSIZE, имея размер, выданный командой df, его сле-
дует разделить на два. Если же вы использовали номер из команды
divvy, его преобразовывать не надо, так как divvy, как и fsdb,
пользуется блоками 1К.
Со значением ISIZE дело обстоит иначе. Это значение, выдан-
ное командой fsdb, нужно преобразовать, прежде чем сравнивать со
значением первой величины в суперблоке (isize).
Значение isize, записанное в суперблоке, является адресом
первого блока, расположенного после блоков, которые выделены для
индексных дескрипторов файлов. Чтобы сделать значение isize более
выразительным, fsdb преобразует этот адрес в число назначенных
индексный дескрипторов файлов (ISIZE). Это число нужно преобразо-
вать обратно в адрес блока путем деления ISIZE на 16 (число деск-
рипторов в блоке) и сложения с 2 (для учета первых блоков файло-
вой системы, которые используются для других целей: блок началь-
ной загрузки и суперблок). Результат (isize) должен равняться
числу, выведенному на экран в качестве первого адреса в супербло-
ке.
.
- 4-24 -

Установка нормальных значений для fsize и isize

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

Замечание
Прежде чем пользоваться командой fsdb, убедитесь в том, что
файловая система демонтирована.

Чтобы перейти к первому адресу суперблока, введите команду
абсолютного адреса, который фиксирован для файловой системы (512
для файловых систем UNIX и 1024 для файловых систем XENIX). В
следующем примере проверяется файловая система UNIX:

+--------------------------------------------------------------
| 512
| 001000: 000173 (123)
|

По умолчанию fsdb считывает адреса, вводимые вами в виде деся-
тичных слов (512), а выводит адреса восьмеричными байтами
(001000). Значение, хранящееся по заданному адресу, также выво-
дится в восьмеричном виде (в скобках дается десятичный эквива-
лент).
Введя адрес в виде слова, можете нажимать <Return>, чтобы
продвигаться в суперблоке каждый раз на одно слово.

+--------------------------------------------------------------
| 002000: 000173 (123)
| <Return>
| 002002: 000000 (0)
| <Return>
| 002004: 007461 (3889)
|

В файловых системах UNIX для достижения значения fsize нужно
дважды нажать <Return>, а в файловых системах XENIX - только
один раз. (Это связано со способом хранения значений в супербло-
ке для файловых систем UNIX.)
.
- 4-25 -

Замечание
Если при вводе начального адреса на экране появится следую-
щее сообщение об ошибке:

block out of range (блок вне диапазона)

то это значит, что запорченное значение fsize настолько мало,
что программа fsdb решила, что вы не сможете продвинуться в су-
перблоке так далеко. Чтобы отключить регистрацию ошибок, введите
заглавную букву O. Теперь можно беспрепятственно вводить адрес.

В любой момент можно нажать клавишу INTERRUPT (DEL) или
<CTL>d, чтобы прекратить вывод адресов на экран.
Предположим, что при переходе ко второму значению в суперб-
локе на экран выдано значение fsize, равное 0 (вместо нормально-
го значения 3889):

+--------------------------------------------------------------
| 002000: 000173 (123)
| <Return>
| 002002: 000000 (0)
| <Return>
| 002004: 000000 (0)
|
Вы можете присвоить новое значение адресу, который вы види-
те в данный момент, с помощью команды присваивания fsdb. (Перед
тем, как вносить какие-либо изменения, убедитесь, что вы знаете,
что вы собираетесь сделать. fsdb сразу пишет прямо на диск, не
ожидая sync.) Введите знак равенства, и за ним - новое значение:

+--------------------------------------------------------------
| 002002: 000000 (0)
| <Return>
| 002004: 000000 (0)
| =3889
| 002004: 007461 (3889)
| q
|
Когда fsdb выдаст подтверждение на запрошенное вами измене-
ние, выйдите из fsdb. Теперь снова можно попробовать выполнить
fsck.
- 4-26 -
Замечание
Перед изменением isize не забудьте выполнить вычисления
(деление на 16 и прибавление 2) для величины ISIZE, выданной ко-
мандой fsdb во время нормальной работы системы. В случае fsize
используйте значение FSIZE, выданное fsdb при нормальной работе
системы, без каких-либо вычислений.
Глава 5
ОБЕСПЕЧЕНИЕ БЕЗОПАСНОСТИ СИСТЕМЫ

Введение 5-1

Что такое надежная система? 5-3
Концепции надежной системы 5-3

Работа надежной системы 5-7
Назначение административных ролей с помощью
авторизаций 5-7
Административное управление подсистемами
с помощью sysadmsh 5-9
Назначение авторизаций ядра 5-9
Использование параметров секретности,
настроенных или принятых по умолчанию 5-11
Управление системным доступом 5-11

Использование подсистемы контроля 5-14
Компоненты подсистемы контроля 5-15
Механизм контроля ядра 5-15
Драйвер устройства контроля 5-15
Демон контроля 5-16
Доступ к контролю через sysadmsh 5-17
Методология контроля 5-18
Авторизации контроля 5-18
Источники контрольных записей 5-18
Учитываемость в контроле 5-20
Типы событий контроля 5-21
Эффективный системный контроль 5-23
Административные аспекты 5-23
Процедуры контроля 5-26
Установка схемы сбора данных 5-27
Включение/выключение контроля 5-32
Сопровождение файлов контроля 5-32
Вывод списка контрольных записей 5-33
Дублирование контрольных записей 5-33
Составление контрольных отчетов 5-34
Понятие редукции данных 5-36
Форматы записей для системных вызовов 5-36
Контрольные записи прикладных программ 5-41
Проблемные области подсистемы контроля 5-44
Пространство на диске 5-44
Фатальные сбои системы 5-45
.
Сообщения подсистемы 5-45
Терминология контроля 5-45

Средства защиты файловой системы 5-48
Очистка битов SUID/SGID и sticky-бита при записи 5-48
Sticky-бит и каталоги 5-49
Промены 5-51
Импортирование данных 5-51
Файлы 5-51
Файловые системы 5-52
Шифрование данных 5-53
Установка бита GID каталога 5-53

Проверка целостности системы 5-54
/etc/fsck 5-54
Контрольный журнал 5-54
Порядок проверок после фатального сбоя системы 5-55
Защищенные базы данных 5-55
Проверка базы данных аутентификации 5-57
Проверка целостности системы 5-57

Сообщения об ошибках, связанных с секретностью 5-59
Сообщения об ошибках регистрации в системе 5-59
Условия ошибок контроля 5-60
Проблемы авторизации 5-61

Функционирование демонов в надежной системе 5-62

Включение защиты с помощью кодового пароля 5-64

Разрешение пользователям монтировать файловые системы 5-65

Авторизация использования команд планирования заданий 5-66
Изменение авторизации на планирования заданий,
принятой по умолчанию 5-66
Разрешение/запрещение использования cron
отдельными пользователями 5-67
Просмотр пользовательских разрешений на cron 5-68
Разрешение/запрещение использования at/batch
отдельными пользователями 5-68
Просмотр пользовательских разрешений на at/batch 5-68
Использование файлов среды для команд at/batch 5-69
.
- 5-1 -

ВВЕДЕНИЕ

Каждая компьютерная система нуждается в защите от несанкци-
онированного доступа к компьютеру, дискам и системным файлам.
Средства обеспечения безопасности, имеющиеся в вашей системе,
представляют собой расширение базовых средств обеспечения безо-
пасности операционных систем UNIX. Операционная система спроек-
тирована таким образом, чтобы удовлетворять требованиям класса
надежности C2, согласно "Критерию оценки надежности компьютерных
систем" Министерства обороны (так называемая "Оранжевая книга").
В данной главе показано, как пользоваться средствами обес-
печения безопасности для поддержания надежности системы. Средс-
тва, касающиеся обычного пользователя, описаны в главе "Исполь-
зование надежной системы" в "Руководстве пользователя" (User's
Guide).
Данная глава содержит следующую информацию:
* общий обзор безопасности системы
* описание защищенных подсистем
* как назначать административные роли
* административное управление подсистемами с помощью sysadmsh
* использование подсистемы контроля
* защита файловых систем
* проверка целостности системы
* сообщения об ошибках
* работа демонов в защищенной системе
* включение защиты с помощью кодового пароля
* как пользователи могут монтировать файловые системы
* как пользователи могут планировать задания

- 5-2 -

Замечание
О физической секретности
Средства обеспечения безопасности в операционной системе
будут бесполезны, если аппаратная часть и носители не защищены.
Вы должны защитить от несанкционированного доступа сам компь-
ютер, дистрибутивные дискеты и все носители с резервными копия-
ми. Для этого нужно соблюсти следующие правила:
1. В отсутствие оператора держите систему "под замком".
2. Соберите и заприте все носители с резервными копиями.
.
- 5-3 -

ЧТО ТАКОЕ НАДЕЖНАЯ СИСТЕМА?

Поскольку не существует компьютерной системы, в которой
риск сведен к нулю, для систем употребляется термин "надежная"
(trusted) вместо "безопасная" (secure). Здесь имеется в виду то,
что понимается под классом надежности С2. "Надежная" система -
это система, в которой достигается некоторый уровень контроля
над доступом к информации, обеспечивающий механизмы предотвраще-
ния (или по крайней мере фиксирования) несанкционированного дос-
тупа.
Средства секретности операционной системы являются расшире-
нием средств, имеющихся в типичных, менее "надежных" системах
UNIX. Наряду с расширением возможностей защиты пользовательской
и системной информации, обеспечивается полная совместимость с
существующими механизмами UNIX. Большая часть работы администра-
тора системы включает сопровождение и защиту системной информа-
ции, как описано в настоящем разделе.
При установке системы, если включен контроль, система кон-
фигурируется для работы в "надежном" состоянии. В этом состоянии
только назначенный администратор может обращаться к системной
информации и изменять ее. Как только система переходит в нор-
мальный режим работы, надежное состояние системы следует поддер-
живать, если вы намерены полностью использовать средства надеж-
ности. Если вы будете следовать приведенным рекомендациям, сис-
темная информация останется защищенной.
Имеется также возможность приспособить эти требования к
нуждам вашей вычислительной установки. Можно даже установить
конфигурацию вашей системы таким образом, чтобы она работала в
ненадежном режиме, совместимом с другими системами UNIX. Это
описано в разделе "Конфигурация для ведения учета, устанавливае-
мая по умолчанию". Заметим, что если вы решили смягчить требова-
ния, определяющие надежное состояние своей системы, ее нельзя с
достоверностью восстановить на уровень С2.
Ваши действия как администратора являются решающими для
сопровождения надежной системы. Любые упущения в секретном сос-
тоянии чреваты проникновением в систему. Чтобы эффективно вести
административную работу, вы должны понимать, в чем состоит сис-
темная стратегия секретности, как она контролируется системной
информацией (базами данных) и как вносимые вами изменения влияют
на действия пользователя и администратора.

Концепции надежной системы

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

Возможность учета

Говорят, что некоторое действие поддается учету, если его
можно отследить вплоть до источника - реального пользователя. В
безопасной системе все пользователи несут ответственность за
свои действия, и каждое действие можно отследить до пользовате-
ля, ответственного за него. В большинстве систем UNIX отсутству-
ет хорошая учитываемость: некоторые действия нельзя отследить ни
до какого пользователя. Например, псевдо-пользовательские бюдже-
ты, такие как lp или cron, выполняются анонимно; их действия
можно обнаружить только по изменениям в системной информации.
Как будет описано ниже, надежная система UNIX повышает учитывае-
мость за счет сопоставления каждому бюджету реального пользова-
теля, контроля над каждым действием и сопоставления каждого
действия конкретному пользователю в системе.
В типичной системе UNIX у каждого процесса есть реальный и
эффективный идентификаторы пользователя, равно как и реальный и
эффективный идентификаторы группы. Процесс с эффективным иденти-
фикатором пользователя root может устанавливать эти идентифика-
торы для любых пользователей. Концепция идентификации пользова-
теля расширена включением дополнительного идентификатора, назы-
ваемого регистрационным идентификатором пользователя (LUID). Это
нечто вроде нестираемой метки, проставляемой на каждом процессе,
связанном с пользователем. LUID идентифицирует пользователя, от-
ветственного за сессию процесса. LUID процесса, будучи однажды
проставлен, не может быть изменен никем. Дочерние процессы нас-
ледуют родительский LUID.

Дискреционное управление доступом

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