Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Системное и сетевое администрирование. Учебное пособие
.pdf
программ приложений или директории общего пользования для промежуточного копирования файлов, а также группы пользователей с их
правами доступа (возможно выделение для группы своей директории
или тома) и создать пользователей в системе, приписав их к определенным группам. Для пользователей и групп необходимо спланировать
права доступа. Для директорий и файлов администратор
должен спланировать атрибутную защиту. Атрибутная защита в операционной системе означает присвоение определенных свойств отдельным файлам
и директориям. Каждый атрибут представляется обычно по первой
букве его английского названия.
Далее администратор должен спланировать процедуру регистрации
пользователя на сервере. Фактически выполняются всегда две процедуры – сначала системная (для настройки рабочей среды
всех пользователей), а затем пользовательская (для настройки среды конкретного
пользователя). В системную процедуру могут входить общие приветствия всех пользователей, назначения имен (буквы английского алфавита) сетевым дискам (mount), подключение групп пользователей
к различным серверам (attach). В процедурах пользовательской регистрации инициализируются параметры среды каждого пользователя,
например доступ к данному серверу только
данного пользователя. Конкретные возможности процедур регистрации зависят от реализации
операционной системы [2, 5].
2.6. ЭТАПЫ ЗАГРУЗКИ СИСТЕМЫ
Этапы загрузки системы включают в себя досистемную загрузку,
загрузку операционной системы и останов системы.
Досистемная загрузка не зависит от того, какая операционная система установлена на компьютере, и состоит из работы загрузчика
в ПЗУ, загрузочного
сектора и первого загрузчика, загрузчика ядра.
Сразу после включения компьютера его оперативная память чиста. Для
того чтобы начать работать, процессору необходима хоть какая-то программа. Эта программа автоматически загружается в память из постоянного запоминающего устройства (ROM, read-only memory, ПЗУ).
Распознавать основные устройства, на которых может быть записана
другая – нужная пользователю – программа,
уметь загружать эту программу в память и передавать ей выполнение, а также поддерживать
интерфейс, позволяющий менять настройки в NVRAM, позволяет
набор подпрограмм BIOS (basic input-output system).
21

Размер первичного дискового загрузчика невелик. Это связано
с требованиями универсальности подобного рода программ. Считывать
данные с диска можно секторами, размер которых различается для разных типов дисковых устройств. Поэтому первичный загрузчик занимает обычно не более одного сектора в самом начале диска, в его загрузочном секторе. Его задача заключается в
определении, где на диске
находится «большой» вторичный загрузчик, его загрузке и запуске.
Вторичный загрузчик прост, его место показано на карте размещения,
т. е. области с необходимыми данными в виде списка секторов диска,
которые она занимает.
В задачу вторичного загрузчика входит загрузка и начальная
настройка ядра операционной системы. Как правило, ядро
системы
записывается в файл с определенным именем. Очень часто конфигурация вторичного загрузчика предусматривает несколько вариантов загрузки, начиная от вариантов загрузки одного и того же ядра с разными
настройками и заканчивая вариантами загрузки разных ядер и даже
разных операционных систем.
Первым этапом загрузки операционной системы является старт
виртуального диска и
модулей ядра. Затем осуществляется запуск системных служб. Как правило, системная служба организована следующим образом. Во время начальной загрузки запускается в фоновом
режиме программа, которая все время работы системы находится
в таблице процессов, однако большую часть времени бездействует. Для
работы этой программы используются утилиты, взаимодействующие
с ней по специальному
протоколу, или демоны. Демон – это запускаемая в фоне программа, длительное время пребывающая в таблице процессов. Обычно демон активизируется по запросу пользовательской
программы, по сетевому запросу или по наступлении какого-либо системного события. Для работы системных служб применяются стартовые сценарии.
Стартовый сценарий – программа (обычно написанная на shell),
управляющая включением
или выключением какого-нибудь свойства
системы. Это может быть запуск и остановка HTTP-сервера, активизация и деактивизация сетевых настроек, загрузки модулей и настройка
звуковой подсистемы и т. п. Простейший стартовый сценарий обязан
принимать один параметр, значение которого может быть словом
«start» для запуска (включения) и «stop» для остановки (выключения).
Все стартовые сценарии
служб, которыми может воспользоваться
22

система, принято хранить в каталоге /etc/rc.d/init.d. Запустить или
остановить службу можно, просто вызвав соответствующий сценарий
с параметром «start» или «stop». Часто ту же самую задачу выполняет
и специальная команда service – она проверяет, есть ли указанный
стартовый сценарий, и запускает его [3].
В Linux предусмотрено несколько вариантов начальной загрузки,
называемых уровнями выполнения (run levels). Они нумеруются от 0
до 9. Уровень 1 соответствует
однопользовательскому режиму загрузки
системы. При загрузке на уровень 1 не запускается никаких служб,
и даже системная консоль, как правило, бывает доступна только одна,
поэтому в системе может работать не более одного пользователя. В однопользовательском режиме изредка работает администратор – исправляет неполадки системы, изменяет ключевые настройки, обслуживает файловые системы.
Уровень 2
соответствует многопользовательскому режиму загрузки
системы с отключенной сетью. В этом режиме не запускаются никакие
сетевые службы, что, с одной стороны, соответствует строгим требованиям безопасности, а с другой – позволяет запускать службы и настраивать сеть вручную.
Уровень 3 соответствует многопользовательскому сетевому режиму
загрузки системы. Сеть при загрузке на этот уровень настроена, все
необходимые сетевые службы запущены. На этом уровне обычно работают компьютеры-серверы.
Уровень 5 соответствует многопользовательскому графическому
режиму загрузки системы. На этом уровне обычно работают рабочие
станции, предоставляя пользователям возможность работать с графической подсистемой X11. Сеть на этом уровне настроена, а список запущенных сетевых служб может быть меньше, так как
рабочая станция
не всегда выполняет серверные функции.
Уровни 0 и 6 – специальные. Они соответствуют останову и перезагрузке системы. В случае останова даже электропитание можно отключать программно, если аппаратура позволяет, а в случае перезагрузки
система идет на повторную загрузку.
Остальные уровни никак специально в Linux не описаны, однако
администратор может использовать и их
, определяя особый профиль
работы системы. Переход с уровня на уровень происходит очень просто: по команде init номер_уровня.
Останов системы – это операция, обратная загрузке системы
и устроенная в Linux как специальный уровень выполнения: 0 (если
23

требуется выключить систему) и 6 (если требуется перезагрузка).
Останов системы может занимать больше времени, чем загрузка:
например, процессы, выполняющие системный вызов, не завершаются
по сигналу TERM сразу, а получив его, могут некоторое время заниматься обработкой (дописыванием в файл и др.). Остановка службы,
особенно сетевой, тоже может длиться долго – например, когда требуется
сообщить о закрытии сервиса каждому клиенту. Однако только
в этом случае можно быть уверенным, что все процессы завершились
корректно и что после перезагрузки они продолжат нормально работать. Для останова или перезагрузки системы можно выполнять команды init 0 и init 6. Они вполне справятся с оповещением и остановкой активных в системе программ,
что займет минуту-две. Нажатие
Ctrl+Alt+Del или кнопки выключения питания (в системах, где эта
кнопка ничего не выключает, а лишь посылает соответствующий
аппаратный сигнал) приводит к запуску именно shutdown -r или
shutdown -h.
2.7. КОМАНДНАЯ ОБОЛОЧКА
Основная среда взаимодействия с Linux – командная строка. Суть
ее в том, что каждая строка, передаваемая пользователем системе, – это
команда, которую
та должна выполнить. Пока не нажат Enter, строку
можно редактировать, затем она отсылается системе. В большинстве
случаев при разборе командной строки первое слово считается именем команды, а остальные – ее параметрами. Таким образом, правила
разбора командной строки – это правила, действующие именно в командном интерпретаторе: пользователь вводит с терминала строку,
shell считывает
ее, иногда преобразует по определенным правилам,
получившуюся строку разбивает на команду и параметры, а затем
выполняет команду, передавая ей эти параметры. Команда, в свою
очередь, анализирует параметры, выделяет среди них ключи и выполняет действия, попутно выводя на терминал данные для пользователя,
после чего завершается. По завершении команды возобновляется работа
«отступившего на задний план» командного интерпретатора, он
снова считывает командную строку, разбирает ее, вызывает команду.
Так продолжается до тех пор, пока пользователь не скомандует оболочке завершиться самой (с помощью logout или управляющего символа D).
24

Простейшая команда в Linux состоит из одного «слова» – названия
программы, которую необходимо выполнить. Пример команды в Linux
выглядит следующим образом:
[methody@localhost methody]$ whoami
methody
[methody@localhost methody]$
Название этой команды происходит от английского выражения
«Who am I?» («Кто я?»). В ответ на эту команду система выводит толь-
ко одно слово «methody» и завершает свою работу, о чем свидетельствует вновь появившееся приглашение
командной строки. Программа
whoami возвращает название учетной записи того пользователя, от
имени которого она была выполнена. Эта команда полезна в системах,
где работает много разных пользователей, чтобы не воспользоваться по
ошибке чужой учетной записью. Однако в приглашении командной
строки зачастую указывается имя пользователя, поэтому без команды
whoami можно обойтись [6].
2.8. УПРАВЛЕНИЕ ПОЛЬЗОВАТЕЛЯМИ
Процедура регистрации в системе Linux обязательна – работать
в ней, не зарегистрировавшись под тем или иным именем пользователя, просто невозможно. Для каждого пользователя определена сфера
его полномочий в системе: программы, которые он может запускать;
файлы, которые он имеет право просматривать, изменять и удалять.
При попытке сделать что-то, выходящее за рамки полномочий
, пользо-
ватель получит сообщение об ошибке.
Многопользовательская модель позволяет решить ряд задач, актуальных для современных персональных компьютеров и серверов, работающих в локальных и глобальных сетях, и вообще в любых системах,
одновременно выполняющих различные задачи, отвечают за которые
разные люди. В многопользовательской модели выделяют обычных
пользователей и администраторов. В
полномочия обычного пользователя входит все необходимое для выполнения прикладных задач, однако ему запрещено выполнение действий, изменяющих саму систему.
Таким образом можно избежать повреждения системы в результате
ошибки пользователя или ошибки в программе. Полномочия администратора обычно не ограничены. Для персонального компьютера,
25

с которым работают несколько человек, довольно важно обеспечить
каждому независимую рабочую среду. Это снижает вероятность случайного повреждения чужих данных, а также позволяет каждому пользователю настроить внешний вид рабочей среды по своему вкусу. Указанная задача очевидным образом решается в многопользовательской
модели: организуется домашний каталог, где хранятся данные пользователя
, настройки внешнего вида и поведения его системы и т. п. Доступ остальных пользователей к этому каталогу ограничивается. Если
компьютер подключен к глобальной или локальной сети, то вполне вероятно, что какую-то часть хранящихся на нем ресурсов имеет смысл
сделать публичной и доступной по сети. Напротив, часть данных, скорее всего, делать публичными не следует.
В системе должна храниться запись о пользователе с определенным
именем и связанной с ним системной информацией, эти данные называются учетной записью. Именно с учетными записями, а не с самими
пользователями, работает система. В действительности соотношение
учетных записей и пользователей-людей в Linux обычно не является
оди-
наковым: несколько человек могут использовать одну учетную запись.
Учетная запись – это объект системы, при помощи которого Linux
ведет учет работы пользователя в системе. Учетная запись содержит
данные о пользователе, необходимые для регистрации в системе
и дальнейшей работы с ней, она может быть создана во время установки системы или после
нее.
Входное имя – это название учетной записи пользователя, которое
нужно вводить при регистрации пользователя в системе.
Идентификатор пользователя – это уникальное число, однозначно
идентифицирующее учетную запись пользователя в Linux. Таким числом снабжены все процессы Linux и все объекты файловой системы,
оно используется для персонального учета действий пользователя
и определения прав доступа к другим
объектам системы. Linux связывает входное имя c идентификатором пользователя в системе – UID
(User ID) – положительным целым числом, по которому система и отслеживает пользователей. Обычно это число выбирается автоматически при регистрации учетной записи, однако оно не может быть
совершенно произвольным. В Linux есть некоторые соглашения относительно того, каким типам пользователей могут быть выданы
идентификаторы из того или иного диапазона. В частности, UID
от 0 до 100 зарезервированы для псевдопользователей.
26

Говоря о правах доступа пользователя к файлам, стоит заметить,
что в действительности манипулирует файлами не сам пользователь,
а запущенный им процесс (например, утилита rm или cat). Поскольку
и файл, и процесс создаются и управляются системой, ей нетрудно
организовать какую угодно политику доступа одних к другим, основываясь на любых свойствах процессов как субъектов
и файлов как объектов системы. В Linux используются не какие угодно свойства, а результат идентификации пользователя – его UID. Каждый процесс
системы обязательно принадлежит какому-нибудь пользователю,
и идентификатор пользователя – обязательное свойство любого процесса Linux. Когда программа login запускает стартовый командный
интерпретатор, она приписывает ему UID, полученный в результате
диалога. Обычный запуск программы (exec())
или порождение нового
процесса (fork()) не изменяют UID процесса, поэтому все процессы,
запущенные пользователем во время терминальной сессии, будут
иметь его идентификатор. Поскольку UID однозначно определяется
входным именем, оно нередко используется вместо идентификатора –
для наглядности. Например, вместо выражения «идентификатор пользователя, соответствующий входному имени methody» используется
«UID methody».
Кроме идентификационного номера пользователя с учетной запи-
сью
связан идентификатор группы. Группы пользователей применяются для организации доступа нескольких пользователей к некоторым
ресурсам. У группы, так же как и у пользователя, есть имя и идентификационный номер – GID (Group ID). В Linux пользователь должен принадлежать как минимум к одной группе – группе по умолчанию. При
создании учетной записи пользователя обычно создается и группа
, имя
которой совпадает с входным именем, именно эта группа будет использоваться как группа по умолчанию для данного пользователя. Пользователь может входить более чем в одну группу, но в учетной записи
указывается только номер группы по умолчанию.
То, что Linux – многопользовательская и многозадачная система,
проявляется не только в разграничении прав
доступа, но и в организации рабочего места. Каждый компьютер, на котором работает Linux,
предоставляет возможность зарегистрироваться и получить доступ
к системе одновременно нескольким пользователям. Даже если в распоряжении всех пользователей есть только один монитор и одна системная клавиатура, эта возможность небесполезна: одновременная
27

регистрация в системе нескольких пользователей позволяет работать
по очереди без необходимости каждый раз завершать все начатые задачи (закрывать все окна, прерывать исполнение всех программ) и затем
возобновлять их. Более того, ничто не препятствует зарегистрироваться
в системе несколько раз под одним и тем же входным именем. Таким
образом можно получить доступ
к одним и тем же ресурсам (своим
файлам) и организовать параллельную работу над несколькими задачами. Еще один характерный для Linux способ организации параллельной работы пользователей – виртуальные консоли, которые представляют собой несколько параллельно выполняемых системой
программ. Эти программы позволяют пользователю зарегистрироваться в системе и получить доступ к командной
строке.
2.9. КОНФИГУРАЦИОННЫЕ ФАЙЛЫ
Конфигурационный файл – это содержащий настройки какойнибудь части системы (утилиты, демона и др.) текстовый файл, который, как правило, считывается ею при запуске. Применение конфигурационных файлов является типичным для Linux способом организации профиля. Помимо глобальных файлов конфигурации также часто
применяются файлы пользовательской конфигурации, позволяющие
определять поведение
системы только для задающего настройки поль-
зователя.
Глобальные файлы конфигурации определяют поведение системы
в целом. Как правило, они располагаются в корневом разделе диска
(/), а доступ к ним требует прав суперпользователя. Большинство
глобальных файлов конфигурации хранится в папке /etc, которая походит на файловую систему с множеством подкаталогов, содержащих
соответствующие конфигурационные файлы.
Список наиболее распространенных каталогов содержит следующие конфигурационные
файлы:
1) /etc/X11/ – конфигурационные файлы xorg;
2) /etc/cups/ – подпапка с конфигурационными данными сервера пе-
чати CUPS (Common UNIX Printing System);
3) /etc/xdg/ – глобальные файлы конфигурации для приложений,
придерживающихся стандартов freedesktop.org;
4) /etc/ssh/ – используется для конфигурации поведения сервера
OpenSSH для всей системы;
28

5) /etc/apparmor.d/ – содержит конфигурационные файлы для систе-
мы AppArmor;
6) /etc/udev/ – настройки, относящиеся к udev.
Папка /etc/opt/ должна содержать глобальные файлы конфигурации
приложений, установленных в /opt/. Однако в Linux это требование не
является обязательным. В результате бывает, что папка /opt/ полна
установленных пользователем программ, а /etc/opt/ остается пустой.
Исторически конфигурационные файлы в папке /etc/default/ содержали настройки сервисов/программ-демонов
для их использования
с системами инициализации, например upstart. Однако с появлением
systemd эта папка стала применяться в основном для настроек приложений пользовательского пространства. Система не перезаписывает
файлы в папке /etc/default/, а значит, после настройки поведения приложений оно не изменится при обновлении системы. К важным глобальным файлам конфигурации относятся следующие:
1)
/etc/resolv.conf – в нем определяется, какой (какие) DNS-сер-
вер(ы) использует система;
2) /etc/bash.bashrc – в нем задают команды для выполнения в мо-
мент запуска командной оболочки bash;
3) /etc/profile – интерактивная командная оболочка выполняет ко-
манды скрипта.profile при запуске;
4) /etc/dhcp/dhclient.conf – там хранятся сетевые данные, которые
запрашивают DHCP-клиенты;
5) /etc/fstab – определяет, где будут смонтированы все доступные
системе разделы диска;
6) /etc/hostname – задает имя хоста для машины;
7) /etc/hosts – файл, соединяющий IP-адреса с именами хостов;
8) /etc/hosts.deny – перечисленные в этом файле удаленные хосты
лишены доступа к машине;
9) /etc/mime.types – содержит MIME-типы данных и соответству-
ющие им расширения файлов;
10) /etc/motd – файл с текстом сообщения, которое выводится при
входе пользователя в
систему;
11) /etc/timezone – задает часовой пояс;
12) /etc/sudoers – файл sudoers контролирует привилегии, относя-
щиеся к команде sudo;
13) /etc/httpd/conf и /etc/httpd.conf.d – конфигурация веб-сервера
Apache;
29

14) /etc/default/grub – содержит конфигурацию, которую использует
команда update-grub для создания файла /boot/grub/grub.cfg;
15) /boot/grub/grub.cfg – команда update-grub генерирует этот файл
автоматически в соответствии с настройками, заданными в файле
/etc/default/grub.
Файлы пользовательской конфигурации расположены в домашней
папке пользователя и не требуют прав суперпользователя для редактирования. Следует иметь в виду, что пользовательские настройки всегда
имеют более высокий
приоритет, чем глобальные. Иными словами,
приложение всегда будет придерживаться пользовательских настроек,
если таковые есть. В части пользовательских настроек приложения соответствуют одному из двух стандартов.
1. Традиционные файлы конфигурации. Как правило, если у при-
ложения всего один файл конфигурации, то его можно найти так:
/home/(username)/.(app_name{rc}). Если конфигурационных файлов
больше, то они
хранятся в папке /home/(username)/.(app_name).
Наглядный пример такого приложения – редактор vim.
2. Конфигурационные файлы, соответствующие стандарту XDG.
Разработчики freedesktop.org решили, что старая система недостаточно
упорядочена, и выработали базовую спецификацию каталогов XDG.
По стандарту XDG все файлы пользовательской конфигурации хранятся в папке $XDG_CONFIG_HOME (обычно в /home/(username)/.config).
Внутри $XDG_CONFIG_HOME каждое приложение создает свои подкаталоги для конфигурационных файлов. Базовой спецификации каталогов
XDG теперь придерживаются редактор NeoVim и многие активно развивающиеся приложения. Для пользователей стандарт тоже
удобен: одной резервной копии папки $XDG_CONFIG_HOME достаточно, чтобы сохранить все настройки.
Среди наиболее часто используемых файлов пользовательской
конфигурации следует перечислить следующие:
1) $HOME/.xinitrc – в нем содержатся указания о запуске менедже-
ра окон при работе с командой startx;
2) $HOME/.vimrc –
конфигурация vim;
3) $HOME/.bashrc – скрипт, который выполняет командная оболоч-
ка bash, когда пользователь запускает командную оболочку без регистрации;
4) $XDG_CONFIG_HOME/nvim/init.vim – конфигурация редактора
neovim;
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
