Главная страница
Навигация по странице:

  • 3.2. Загрузка системы

  • 3.2.1. Автозагрузка

  • Control Panel

  • 3.2.2. GRUB

  • 3.2.3. Интересные настройки загрузки

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

  • 3.3.1. Теневые пароли

  • Михаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69


    Скачать 3.69 Mb.
    НазваниеМихаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69
    Дата13.03.2022
    Размер3.69 Mb.
    Формат файлаpdf
    Имя файлаlinux_glazami_xakera_3-e_izd.pdf
    ТипДокументы
    #394477
    страница8 из 35
    1   ...   4   5   6   7   8   9   10   11   ...   35
    3.1.3.
    Ссылки
    В
    вашей системе могут появиться документы для совместного использова- ния
    . Рассмотрим эту ситуацию на примере. Допустим, что файл отчетности
    /home/report должен быть доступен нескольким пользователям. Было бы удобно
    , если копия этого файла находилась бы в домашних директориях этих

    Глава
    3
    70
    пользователей
    . Создавать несколько копий неудобно, потому что затруднится синхронизация изменений. Да и сложно собрать в одно целое модификации из нескольких файлов, особенно, если корректировался один и тот же кусок.
    Кто будет оценивать, чьи изменения необходимо вносить в общий файл?
    Проблема решается с помощью ссылок, которые бывают жесткими (Hard link) и символьными (Symbolic link). Для постижения самой сути ссылок необходимо понимать, что такое файл и какое место ему отводится опера- ционной системой. При создании файла на диске выделяется пространство для хранения данных, а его имени сопоставляется ссылка из директории на участок диска, где физически находится файл. Получается, что можно соз- дать несколько ссылок на одни и те же данные, и ОС Linux позволяет де- лать это.
    Когда мы выполняем команду ls -l
    , то на экране появляется подробная ин- формация о файлах в текущей директории. Напомню ее вид:
    -rw-r--r-- 1 Flenov FlenovG 118 Nov 26 16:10 1.txt
    Если к директиве добавить ключ i
    (выполнить команду ls -il
    ), то к выво- димой информации добавится еще и дескриптор файла:
    913021 -rw-r--r-- 1 Flenov FlenovG 118 Nov 26 16:10 1.txt
    Первое число и есть дескриптор, по которому определяется физическое рас- положение файла.
    Жесткая ссылка указывает непосредственно на данные и имеет такой же де- скриптор
    . Таким образом, файл физически не удаляется из системы, пока не будут уничтожены все жесткие ссылки. По сути, каждое имя файла уже явля- ется жесткой ссылкой на данные.
    Для создания таких ссылок используется команда ln
    , которая имеет следую- щий вид: ln имя_файла имя_ссылки
    В
    ответ на это программа создаст жесткую ссылку с именем имя_ссылки
    , ко- торая будет указывать на те же данные, что и файл имя_файла
    Чтобы на практике проверить все, что утверждается дальше, создайте в своей системе файл 1.txt. Для этого можно выполнить команду: cat > 1.txt
    Нажмите клавишу , введите несколько строк текста и нажмите кла- виши
    +. Теперь у вас есть необходимый файл для тестирования.
    Создайте для файла 1.txt жесткую ссылку. Для этого выполните следующую команду
    : ln 1.txt link.txt

    Добро
    пожаловать
    в
    Linux
    71
    С
    помощью команды cat link.txt выведите на экран содержимое файла link.txt и убедитесь, что оно идентично строкам в 1.txt. Теперь выполните команду ls -il
    , чтобы просмотреть содержимое каталога. В списке файлов должны быть две строки:
    913021 -rw-r--r-- 2 root root 0 Feb 22 12:19 1.txt
    913021 -rw-r--r-- 2 root root 0 Feb 22 12:19 link.txt
    Обратите внимание, что первая колонка, в которой находится дескриптор для обоих файлов, содержит одинаковые значения. В третьей колонке стоит чис- ло
    2, что говорит о наличии двух ссылок на данные.
    Теперь попробуем изменить содержимое любого из этих файлов. Для этого выполним следующие команды: ls > link.txt cat 1.txt
    В
    первой строке мы сохраняем в файле link.txt результат работы команды ls
    (результат отображения содержимого директории), а вторая — отображает документ
    1.txt. Убедитесь, что содержимое обоих файлов изменилось и имеет одинаковые данные.
    Давайте попробуем удалить файл 1.txt и посмотреть на каталог и содержимое файла link.txt. Для этого выполните следующие команды: rm 1.txt ls -il cat link.txt
    Файл
    1.txt будет удачно удален. А вот содержимое жесткой ссылки link.txt никуда не денется. То есть данные на диске не были уничтожены, а исчезло только имя 1.txt. Обратите внимание, что у файла link.txt значение счетчика ссылок в третьей колонке уменьшилось до единицы.
    Символьная ссылка указывает не на данные, а на имя файла. Это дает неко- торые преимущества, но одновременно вызывает большое количество про- блем
    . Для создания символьной ссылки нужно использовать команду ln с
    ключом
    -s
    . Например: ln -s link.txt symbol.txt
    Посмотрим на результат с помощью команды ls -il
    :
    913021 -rw-r--r-- 1 root root 519 Feb 22 12:19 link.txt
    913193 lrwxrwxrwx 1 root root 8 Feb 22 12:40 symbol.txt -> link.txt
    Теперь дескрипторы файлов разные, но для link.txt первый символ сле- дующей колонки равен букве l
    . Как раз она и указывает на то, что мы имеем дело с символьной ссылкой. В третьей колонке стоит единица, а последняя колонка после знака
    ->
    содержит имя файла, на который указывает ссылка.

    Глава
    3
    72
    Попробуем удалить основной файл и после этого просмотреть содержимое ссылки symbol.txt: rm link.txt ls -il cat symbol.txt
    В
    первой строке мы удаляем файл link.txt. Вторая команда отображает спи- сок директорий. Убедитесь, что файла link.txt нет. Если вы используете дист- рибутив
    Red Hat, то команда ls
    , скорей всего, имеет псевдоним, который по- зволяет в зависимости от типа файла отображать его различными цветами.
    Если нет, то замените вторую команду на ls --color=tty -il
    Строка
    , содержащая информацию о ссылке symbol.txt, должна быть красного цвета
    , а текст — мигающий белый. Это говорит о том, что ссылка "битая", то есть указывает на несуществующий файл. Команда cat symbol.txt пытается отобразить содержимое ссылки. Так как файла нет, мы увидим сообщение об ошибке
    Самое интересное, что если попытаться записать какие-либо данные в файл symbol.txt, то файл link.txt будет автоматически создан. Это огромный не- достаток
    , поэтому вы должны следить за символьными ссылками перед удалением файлов, ведь пользователь сможет создать файл, который был удален
    Второй недостаток символьных ссылок кроется в правах доступа, но мы их будем рассматривать в главе 4.
    Еще один минус таится в блокировках. Если открыть на редактирование файл
    , для которого создана символьная или жесткая ссылка, то он блокиру- ется
    . Представим себе, что существует ссылка на файл /etc/passwd или
    /etc/shadow. При блокировке одного из них вход в систему станет невозмож- ным
    Чтобы взломщик не смог воспользоваться блокировками, его права на запись в системные каталоги должны быть ограничены. А пользователь в
    большинстве случаев должен иметь разрешение писать только в свою домашнюю директорию и каталог /tmp. Иногда при разделении файлов может потребоваться работа с чужими каталогами, но все равно доступ ограничивается каталогом /home, где расположены пользовательские ди- ректории
    Глядя на все недостатки ссылок, возникает вопрос, а нужно ли действительно использовать их? Я рекомендую делать это только в крайнем случае, когда все остальные способы решения проблемы еще хуже. Но если нет другого выхода
    , то будьте аккуратны и внимательны.

    Добро
    пожаловать
    в
    Linux
    73
    3.2.
    Загрузка
    системы
    Некоторые администраторы не обращают внимания на то, как стартует сис- тема
    . Для них главное — только работа ОС. Да, прямой зависимости нет.
    Но во время загрузки ОС запускается множество программ, которые отни- мают память, уменьшая тем самым производительность системы.
    Помимо этого, быстрая загрузка позволяет оперативно восстановить работу компьютера после сбоя. Все машины когда-либо приходится перезагружать, чтобы возобновить полноценное функционирование. Это происходит из-за ошибок в программном обеспечении, перебоев с электропитанием и др. Чем скорее вы сможете это сделать, тем меньше будет простой.
    Во время загрузки должны производиться все необходимые настройки, что- бы сразу после старта не приходилось что-то конфигурировать вручную. Это может отнять слишком много времени, к тому же выполнять одни и те же действия каждый раз — очень скучно и неинтересно.
    3.2.1.
    Автозагрузка
    В
    ОС есть множество системных сервисов, которые работают в фоне, отни- мают ресурсы при старте и во время работы, а также влияют на безопасность.
    Для управления сервисами в системе обязательно должна присутствовать утилита
    . Например, в Mandriva 2008 управление происходит из центра управления
    (рис. 3.2). Здесь из раздела Система можно запустить утилиту
    Manage system service by enabling or disabling them (Управление системными сервисами с помощью их включения или выключения). Может, у разработ- чиков не хватило сил, или они не знают, как перевести эту надпись, но в моей версии она осталась на английском.
    Запустите эту утилиту, и перед вами появится окно (рис. 3.3), в котором можно запустить или остановить установленную службу, а также можно по- ставить галочку При запуске, если нужно, чтобы служба запускалась авто- матически
    Если вы устанавливали какой-то демон, который вам необходим в работе, но использовать его будете изредка, то нет смысла запускать его автоматически и
    открывать ворота для хакера. Лучше убрать для него автозапуск и старто- вать только при необходимости, а сразу после работы останавливать сервис.
    Например
    , я иногда отлаживаю на своем сервере WEB-сценарии, требующие
    MySQL. Держать базу данных постоянно загруженной — расточительство памяти и лишняя дверь в систему. Поэтому я запускаю MySQL вручную, ко- гда необходимо, и по окончании отладки прекращаю работу этого демона.

    Глава
    3
    74
    Рис
    . 3.2.
    Центр управления
    Mandriva Linux
    Рис
    . 3.3.
    Настройка служб

    Добро
    пожаловать
    в
    Linux
    75
    В
    некоторых дистрибутивах прямо на рабочем столе есть значок Control
    Panel (Панель управления), при щелчке по которому откроется окно, содер- жащее ссылки на основные программы конфигурирования системы. Нас бу- дет интересовать ярлык Службы.
    В
    Н И МА Н И Е
    !
    Никогда не запускайте службы
    , которыми вы не пользуетесь
    В
    автозапуске должны находиться только те программы
    , которые необходимы вам или поль
    - зователям сервера регулярно
    Если какой
    - либо демон используется редко
    , то не следует его устанавливать в
    автозапуск
    Такие сервисы надо запускать только по мере надобности и
    останавливать сразу после применения
    Ненуж
    - ные службы лучше удалить совсем
    , чтобы не было соблазна их использовать
    3.2.2. GRUB
    ОС
    сама по себе не загружается, когда вы включаете свой компьютер. Ее за- пуск должен быть как-то инициализирован. Около 10 лет назад самым попу- лярным инициализатором этой загрузки была lilo, но за последнее время уже, кажется
    , все дистрибутивы перешли на GRUB (GRand Unified Bootloader, или большой объединенный загрузчик).
    Когда мы включаем компьютер, то первым запускается BIOS. Его загрузка может быть скрыта красивой картинкой с логотипом производителя, но раньше в этот момент мы обязательно видели логотип БИОСа и бежали ци- ферки тестирования оперативной памяти.
    После загрузки БИОСа должен запуститься загрузчик, который и будет отве- чать за загрузку ОС. Если вы установили Linux, то в этом месте у вас скорей всего запустится GRUB. Эта программа загрузчика умеет загружать не толь- ко
    Linux. Если у вас на компьютере установлено несколько систем, появится меню выбора, какую именно систему вы хотите загружать. В качестве не- скольких систем может выступать как несколько установленных различных дистрибутивов
    Linux, так и Windows. Если вы выберете в меню загрузку
    Windows, то GRUB передаст управление загрузчику Windows, а если выбере- те
    Linux, то начнется загрузка этой системы.
    Мощность
    GRUB заключается в том, что он поддерживает различные файло- вые системы и позволяет даже работать с файлами без загрузки ОС. Напри- мер
    , для просмотра содержимого файла можно использовать команду cat
    , которая идентична одноименной команде Linux.
    Все
    , что касается программы загрузчика GRUB, находится в директории
    /boot/grub/. Если у вас несколько ОС, то содержимое меню, которое вы види- те при старте системы, можно увидеть в файле /boot/grub/menu.lst. Редакти- ровать файл можно разными способами. Если вы любите графические про-

    Глава
    3
    76
    граммы
    , то можно воспользоваться программой gedit, выполнив в командной строке следующую команду: sudo gedit /boot/grub/menu.lst
    В
    данном случае sudo необходимо для того, чтобы для доступа к файлу ис- пользовались права администратора, ибо доступ к файлу меню ограничен и
    не разрешен для простого смертного. Любители текстовых режимов могут воспользоваться утилитой vi. Посмотрим, как выглядит этот файл: splashimage=(hd0,0)/boot/grub/themes/mlinux.xpm.gz default 0 timeout 10 title Ubuntu root (hd0,0) kernel /boot/vmlinuz-2.6.27.7-9-pae root=/dev/disk/by-id/heredistid resume=/dev/disk/by-id/heredistid splash=silent showopts vga=0x317 initrd /boot/initrd-2.6.27.7-9-pae title WinXP rootnoverify (hd1,0) makeactive map (hd0) (hd1) map (hd1) (hd0) chainloader +1
    В
    файле /boot/grub/menu.lst можно использовать много различных команд, и
    в данном примере мы можем наблюдать наиболее интересные из них:
    ˆ
    splashimage
    — задает картинку, которая будет отображаться при старте компьютера
    ;
    ˆ
    default
    — система, которая будет загружаться по умолчанию по истече- нии определенного времени;
    ˆ
    timeout
    — время ожидания до начала загрузки системы по умолчанию.
    После этого блоками идут описания ОС, которые установлены на компьюте- ре и будут отображаться в меню. Наиболее интересный пункт — это пара- метр title
    , который задает заголовок для ОС, отображаемый в меню. Этот заголовок вы можете изменять по своему усмотрению абсолютно как угодно.

    Добро
    пожаловать
    в
    Linux
    77
    Для
    ОС Linux очень важным является параметр Kernel, который задает рас- положение ядра. Вы думаете, что он вам не понадобится и можно использо- вать значение по умолчанию? На первых порах это действительно так, но ес- ли вы захотите самостоятельно откомпилировать ядро с оптимизацией именно под ваше железо и включением в него только необходимых функций, то после компиляции у вас будет два ядра в директории загрузки. Возможно, вы захотите добавить еще один пункт в меню, и при загрузке выбирать меж- ду двумя ядрышками, а может захотите просто подправить путь существую- щего на новый. Я бы выбрал первый вариант. Лишнее ядро не будет наклад- ным для жесткого диска с нынешними-то возможностями жестких дисков.
    А
    вот если одно ядро по какой-то причине откажется загружаться (особенно это может произойти со свежескомпилированным), то иметь второй вариант загрузки будет очень полезно.
    3.2.3.
    Интересные
    настройки
    загрузки
    Рассмотрим парочку файлов, которые хоть и незначительно, но влияют на загрузку
    Прежде чем появится приглашение ввести пароль, на экране отображается текстовая информация, пояснение. Чаще всего здесь разработчик пишет имя дистрибутива и его версию. Эта информация хранится в файле /etc/issue, и его можно изменить в любом текстовом редакторе, в том числе и с помощью встроенного редактора в Midnight Commander.
    После входа в систему тоже может выводиться текстовое сообщение, но по умолчанию в большинстве дистрибутивов оно отсутствует. Текст этого со- общения находится в файле /etc/motd, он может содержать новости для поль- зователей системы или каким-либо образом информировать об изменениях.
    Например
    , разумно каждого первого числа месяца напоминать о необходи- мости сменить пароль.
    3.3.
    Регистрация
    в
    системе
    Теперь познакомимся с процессом регистрации пользователя в системе. Это поможет вам лучше понять систему безопасности, которая используется в
    ОС Linux при авторизации.
    ОС
    загружает виртуальные консоли getty. Каждая из них для работы требует авторизации и запрашивает имя пользователя. Для этого на экран выводится окно приглашения. Введенное имя пользователя передается программе login, а
    она в свою очередь запрашивает пароль.

    Глава
    3
    78
    Программа login сравнивает имя пользователя со списком имен в файле
    /etc/passwd, а пароль — с соответствующей записью в файле /etc/shadow. Все пароли в файле хранятся только в зашифрованном виде. Для сопоставления введенный пароль тоже шифруется, и результат сравнивается со значением в
    файле /etc/shadow для указанного имени пользователя.
    Почему проверка происходит так сложно? Просто все пароли в файле
    /etc/shadow зашифрованы необратимым алгоритмом. Это значит, что мате- матическими методами из результата кодирования нельзя получить исход- ный пароль, поэтому возможен только подбор. Для этого существует не- сколько очень простых программ. Чем проще пароль и меньше его длина, тем быстрее программа найдет нужный вариант. Если пароль сложен и его длина более 8 символов, а лучше свыше 16, то подбор отнимет слишком много времени.
    Если идентификация пользователя состоялась, то программа login выполнит все автоматически загружаемые сценарии и запустит оболочку (командную строку
    ), через которую и будет происходить работа с системой. Если провер- ка прошла неудачно, то система вернет управление консоли getty, которая снова запросит ввод имени пользователя.
    Таким образом, пока мы не пройдем авторизацию через программу login, за- пустить оболочку (текстовую или графическую) невозможно, нам останется доступной лишь консоль getty, которая умеет только запрашивать имя поль- зователя и передавать его программе login.
    Теперь обсудим некоторые проблемы, которые могут возникнуть при входе в
    систему, и посмотрим, как они решаются.
    3.3.1.
    Теневые
    пароли
    В
    старых версиях Linux список пользователей и пароли хранились в файле
    /etc/passwd. Это не очень хорошо, потому что данный файл должен быть дос- тупен для чтения всем пользователям, так как имена пользователей требуют- ся очень многими безобидными программами. Например, команда ls
    (про- смотр файлов текущего каталога) при выполнении обращается к списку пользователей для получения имен владельцев файлов. Поскольку файл лег- ко прочитать любому пользователю, то и зашифрованные варианты паролей тоже доступны, а значит, любой хакер сможет запустить подбор паролей и
    ждать заветного часа Х, когда будет найдена нужная комбинация.
    Чтобы защитить пароли, во всех современных версиях linux их прячут в файл
    /etc/shadow, который доступен для чтения только администратору root. Файл
    /etc/passwd остался открытым для всех, но теперь в нем уже нет пароля.

    Добро
    пожаловать
    в
    Linux
    79
    Давайте посмотрим, как выглядит файл /etc/passwd. Для примера я взял толь- ко верхние три строки из своего файла: root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin
    Каждая строка содержит информацию о пользователе — семь аргументов, разделенных двоеточиями. Давайте разберем каждый из них:
    1.
    Имя пользователя — login, который вы вводите.
    2.
    Пароль
    — если вывод затенен, то вместо пароля будет стоять бессмыс- ленный символ x
    3.
    UID — уникальный идентификатор пользователя.
    4.
    GID — уникальный идентификатор группы.
    5.
    Информация о пользователе — здесь может быть полное имя, но чаще всего значение этого параметра идентично имени пользователя.
    6.
    Домашняя директория — каталог, принадлежащий пользователю, с кото- рым он начинает работать при входе в систему.
    7.
    Интерпретатор команд — оболочка, которая будет выполнять команды пользователя
    . Если интерпретатора команд не должно быть, то указывает- ся файл /sbin/nologin.
    Теперь посмотрим на строку для пользователя root. Первый параметр — это имя
    , и, конечно же, тут написано root. Пароля в файле нет, так как вместо него мы видим символ х
    (или
    !!
    ), а сам пароль записан в зашифрованном ви- де в соответствующей записи файла /etc/shadow.
    Следующие два параметра — уникальный идентификатор пользователя (UID) и
    уникальный идентификатор группы (GID). В файле не может быть двух записей с одним и тем же UID. По GID система находит группу, в которую входит пользователь, и, соответственно, определяет права, которые даны этой группе, а значит, и пользователю.
    Информация о пользователе может быть любой, и на работу системы она не влияет
    . Это просто пояснение, которое администратор использует по своему усмотрению
    Далее идет домашняя директория. Это каталог, который становится текущим после входа в систему.
    Последний параметр — это командный интерпретатор, который будет обра- батывать пользовательские запросы. Наиболее распространенным является интерпретатор
    /bin/bash. Если команды пользователя не должны выполняться,

    Глава
    3
    80
    то в качестве этого параметра устанавливается /sbin/nologin. Именно это зна- чение введено для записей bin, daemon и многих других, потому что под ни- ми нельзя входить в систему и они предназначены только для внутреннего обеспечения безопасности определенных программ.
    Теперь посмотрим на файл /etc/shadow, а точнее, возьмем только первые три строки
    . Для примера этого будет достаточно: root:$1$1emP$XMJ3/GrkltC4c4h/:12726:0:99999:7::: bin:*:12726:0:99999:7::: daemon:*:12726:0:99999:7:::
    Здесь также несколько параметров, разделенных двоеточием. Нас будут ин- тересовать первые два: имя пользователя и пароль. По имени пользователя происходит связь записи из файла /etc/shadow с файлом /etc/password. А вот во втором параметре уже находится настоящая зашифрованная версия паро- ля
    . Но если вместо него стоит звездочка, это запрещает соответствующему пользователю интерактивную работу с системой. Например, для пользовате- лей bin и daemon установлены именно звездочки, значит, под этими учетны- ми записями нельзя входить на компьютер.
    1   ...   4   5   6   7   8   9   10   11   ...   35


    написать администратору сайта