Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Системное и сетевое администрирование. Учебное пособие

.pdf
Скачиваний:
2
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
программ приложений или директории общего пользования для про­межуточного копирования файлов, а также группы пользователей с их правами доступа (возможно выделение для группы своей директории или тома) и создать пользователей в системе, приписав их к опреде­ленным группам. Для пользователей и групп необходимо спланировать права доступа. Для директорий и файлов администратор
должен спла­нировать атрибутную защиту. Атрибутная защита в операционной си­стеме означает присвоение определенных свойств отдельным файлам и директориям. Каждый атрибут представляется обычно по первой букве его английского названия.
Далее администратор должен спланировать процедуру регистрации пользователя на сервере. Фактически выполняются всегда две проце­дуры – сначала системная (для настройки рабочей среды
всех пользо­вателей), а затем пользовательская (для настройки среды конкретного пользователя). В системную процедуру могут входить общие привет­ствия всех пользователей, назначения имен (буквы английского алфа­вита) сетевым дискам (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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]