Глава 6. Настройка и администрирование системы

Александр Боковой, Игорь Вергейчик, Олег Власенко, Андрей Горев, Михаил Забалуев, Станислав Иевлев, Георгий Курячий, Дмитрий Левин, Игорь Муратов, Андрей Орлов, Андрей Пашков, Алекс Сергеев, Александр Сутулов, Мэтт Уэлш

Содержание

Основы администрирования
Поддержка аппаратного обеспечения
Настройка загрузки
Настройка консоли
Сеть
Установка и удаление программ (пакетов)
Управление пользователями
Работа с файловыми системами
Подсистема печати (CUPS)
Электронная почта (postfix)
Объединённая служба каталога (LDAP)
Служба FTP
Служба DNS (Bind)
Среда интеграции с Windows (Samba)
Кеширующий прокси-сервер (Squid)
Сервер приложений Zope
Веб-сервер Apache
Что делать в неожиданных ситуациях
Особенности дистрибутива ALT Linux 2.4 Master

Среди пользователей операционной системы по крайней мере один должен заботиться о её работоспособности, обновлять программное обеспечение, подключать и настраивать новое оборудование, не забывать о безопасности. Если же вы — единственный пользователь операционной системы — все эти задачи ложатся на вас. В ALT Linux 2.4 Master многие административные процедуры автоматизированы, и вам может не понадобиться обращаться к материалам этого раздела. Однако мы рекомендуем в любом случае ознакомиться с основами администрирования и системой установки и удаления программ: эти знания могут оказаться необходимыми при решении повседневных пользовательских задач и, возможно, помогут сделать вашу работу с ALT Linux 2.4 Master более эффективной.

Основы администрирования

Георгий Курячий, Дмитрий Левин

Пользователь root

Система Linux делает различия между пользователями. То, как они могут воздействовать друг на друга и на систему, чётко определено. Права доступа (permissions) к файлам устроены так, что рядовой пользователь не сможет стереть или изменить файлы в каталоге, например, /bin или /usr/bin. Большинство пользователей защищают собственные файлы, устанавливая соответствующие права доступа, так что другие пользователи либо не имеют доступа к этим файлам, либо не могут изменить (или стереть) их. Действительно, никто не сделает открытой, например, свою переписку по электронной почте. У каждого зарегистрированного в системе пользователя есть имя и соответствующий каталог (домашний каталог) с данным именем[5]. Кроме того, система заводит специальные имена пользователей, у которых имеются особые привилегии. Наиболее важен пользователь root, в качестве которого в системе работает системный администратор. В большинстве случаев между этими понятиями (пользователь root и человек, исполняющий функции системного администратора) не делается различий.

На действия пользователя root нет никаких ограничений. Он может читать, изменять или удалять любой файл системы, изменять права доступа и принадлежность (ownership) любого файла, запускать любые специальные программы. Например, те, которые создают разделы на жёстком диске или создают файловые системы. Основная идея состоит в том, что лицо, ответственное за функционирование операционной системы, входит в систему как пользователь root и выполняет действия, которые не может выполнить рядовой пользователь. Поскольку пользователю root разрешено делать все, ошибка в его действиях может иметь катастрофические последствия.

Если обычный пользователь по неаккуратности вдруг попробует удалить все файлы в каталоге /etc, то система не позволит ему это сделать. Однако если то же самое попробует сделать пользователь root, то система даже не выдаст никакого предупреждения. Таким образом, работая в качестве пользователя root, легко разрушить операционную систему. Наилучший способ предупредить подобные последствия заключается в следующем.

  • Быть очень внимательным, запуская команду, которая имеет необратимые последствия. Если предполагается вычистить часть файлов из каталога, следует перечитать всю команду и убедиться, что в ней все правильно.

  • Использовать отличающееся от других приглашение (prompt) для пользователя root. В файлах .bashrc или .login для пользователя root должен быть определён специфический вид приглашения командной оболочки, отличающийся от приглашения для остальных пользователей. Во многих случаях для пользователя root используется в качестве приглашения символ#, а для других пользователей — символ $.

  • Входить в систему как пользователь root следует только тогда, когда это абсолютно необходимо. После окончания работы в качестве пользователя root следует выйти из системы. Чем реже для работы используется root, тем меньше вероятность случайно повредить систему и спутать права пользователя root с правами других пользователей.

Работу в качестве пользователя root следует воспринимать как временное обладание своеобразной волшебной палочкой, которая даёт могущество, и это могущество может вызвать огромные разрушения. Очень полезно внимательно следить за тем, какие клавиши нажимают в это время собственные пальцы. Хотя обладание волшебной палочкой даёт особые ощущения, желательно брать её в руки пореже.

Права администратора

Всякая будничная работа под Linux, не являющаяся системным администрированием, может и должна выполняться непривилегированными пользователями. Этому правилу необходимо следовать для того, чтобы вероятность приведения системы в нерабочее состояние из-за вашей случайной ошибки или возможных ошибок в используемых вами программах была сведена к минимуму.

К сожалению, немалая часть программного обеспечения написана безграмотно с точки зрения безопасности. Запуская такие программы непривилегированным пользователем, вы тем самым автоматически уменьшаете риск повреждения системы от сбоя и усложняете процедуру вторжения в вашу систему потенциальных взломщиков.

Административные задачи требуют привилегий пользователя root. Следует учитывать, что настройки для пользователя root определяются спецификой его задач, а потому не приспособлены для повседневной работы и лишь ограниченно локализованы.

sudo — это программа, разработанная в помощь системному администратору и позволяющая делегировать те или иные привилегированные ресурсы пользователям с ведением протокола работы. Основная идея — дать пользователям как можно меньше прав, но при этом ровно столько, сколько необходимо для решения поставленных задач.

Команда sudo предоставляет возможность пользователям выполнять команды от имени root либо других пользователей. Правила, используемые sudo для принятия решения о предоставлении доступа, находятся в файле /etc/sudoers; язык их написания и примеры использования подробно изложены в sudoers(5). Кроме того, пример правил, предоставляющих непривилегированным пользователям возможность устанавливать, обновлять и удалять пакеты в системе[6], приведён в файле /usr/share/doc/sudo-<версия>/rpm.sudoers.

Для редактирования файла /etc/sudoers следует использовать программу visudo, которая проверяет синтаксис и тем самым позволяет избежать ошибок в правилах.

В большинстве случаев грамотная настройка sudo делает работу от имени суперпользователя ненужной.

Что происходит в системе?

Человеку, отвечающему за работоспособность системы, очень важно всегда отчётливо представлять, что с нею творится. Теоретически, никакое происшествие не должно ускользнуть от его внимания. Однако компьютерные системы столь сложны, что отслеживать все события в них — выше человеческих возможностей. Для того, чтобы довести поток служебной информации до разумного объёма, её надо просеять (выкинуть незначащие данные), классифицировать (разделить на несколько групп сообразно тематике) и журнализировать (сохранить в доступном виде для дальнейшего анализа).

В Linux эта задача решается с помощью механизма централизованной журнализации, который реализован демоном (системной службой) syslogd. Все части системы (включая ядро и системные службы) рапортуют syslogd о происходящих в них событиях. В этот рапорт включается имя службы, категория (facility) и важность (priority) произошедшего события. Демон, сообразно настройкам, классифицирует все эти рапорты в несколько выходных потоков. Классификация и отсев данных всякого выходного потока происходит так: для каждой категории событий определяется наименьшая важность, которой событие должно обладать, чтобы попасть в этот выходной поток. Например, легко определить поток «ошибки», в который будут попадать только важные рапорты любых категорий, или поток «безопасность», в который будут попадать все рапорты категории «безопасность» и те рапорты других категорий, важность которых заставляет подозревать угрозу безопасности системы (например, рапорт категории «демон» об аварийном завершении работы системной службы).

Главное место хранения уже классифицированного syslogd потока событий — системный журнал (т. н. log-файл). Системный журнал — текстовый файл, содержащий рапорты одного потока. Обычно syslogd хранит системные журналы в каталоге /var/log и его подкаталогах. Именно в системные журналы, прежде всего в /var/log/messages, /var/log/maillog и /var/log/dmesg, необходимо заглядывать администратору, который хочет знать что происходит в системе. Поток рапортов о важных событиях syslogd направляет и на системную консоль — выделенное терминальное устройство. В ALT Linux роль системной консоли выполняет 12-я виртуальная консоль, доступная по сочетанию клавиш Alt-F12 или Alt-Ctrl-F12. Стоит заметить, что некоторые службы (например, WWW-сервер apache) самостоятельно, в обход syslogd, ведут журнализацию своих событий, поэтому информацию о количестве и местоположении их журналов можно почерпнуть из их файлов настроек (обычно, тем не менее, журналы хранятся в /var/log).

Новые рапорты, поступающие в системный журнал, наиболее актуальны, а предыдущие, по мере их устаревания, эту актуальность утрачивают. Если самые старые данные в журнале не удалять, файловая система, рано или поздно, окажется переполненной. В Linux организован механизм устаревания журналов, которым занимается служба logrotate. Запускаясь раз в день, logrotate проверяет, какие из файлов следует признать устаревшими. Файл объявляется устаревшим раз в определённый промежуток времени (например, раз в неделю), или если он достиг определённого размера.

Процедура устаревания такова. Для каждого журнала, как, например, для /var/log/syslog/alert, logrotate держит в том же каталоге очередь устаревших копий — файлы с именами от alert.0.bz2 (предыдущая копия) до alert.4.bz2 (самая старая копия). Очередь alert в нашем примере состоит из пяти упакованных с помощью bzip2 файлов. В момент устаревания alert.3.bz2 переименовывается в alert.4.bz2 (старые данные теряются), копия с номером 2 превращается в третью, первая — во вторую, нулевая в первую. Наконец, сам журнал упаковывается и переименовывается в alert.0.bz2, а на его мечте заводится новый — пустой. Таким образом, администратор всегда имеет доступ к свежему журналу и к нескольким его копиям за определённое время.

Некоторые файлы в /var/log — нетекстовые, они не являются полноценными журналами, а представляются собой «свалку событий» для служб авторизации и учёта. Текстовую информацию о входе пользователей в систему и выходе оттуда можно получить по команде last, а узнать о тех, кто в данный момент пользуется системой помогут команды w и who.

Множество важной информации может дать анализ загруженности системы — в плане процессорного времени и потребления оперативной памяти (ps, top, vmstat), в плане использования дискового пространства (du, df, lsof) и в плане работы сетевых устройств (netstat).



[5] В английском языке используется слово account, которое обозначает ресурс, включающий имя и домашний каталог (home directory) для этого имени.

[6] Пользователи при этом должны входить в группу rpm. Подробнее о группах пользователей см. раздел Управление пользователями в данной главе.