Этот раздел освещает вопросы философии системного администрирования применительно к Red Hat Enterprise Linux.
1.10.1. Автоматизация
Автоматизация часто выполняемых задач в Red Hat Enterprise Linux требует от вас знания нескольких разных технологий. Во-первых, необходимо знать команды, позволяющие назначать время выполнения команд или сценариев. Чаще всего в этой роли используются команды cron и at.
Команда cron реализует простую в понимании, но, тем не менее, очень гибкую систему указания времени, и позволяет назначать выполнение команд или сценариев, повторяющихся с определённой частотой, от минут до месяцев. Команда crontab предназначена для модификации файлов, управляющих демоном cron, который, собственно, и назначает выполнение всех заданий cron.
Команда at (и очень близкая ей команда batch) больше подходит для планирования разового выполнения сценариев или команд. Эти команды реализуют простейшую подсистему пакетных заданий, состоящих из нескольких очередей с различными приоритетами. Эти приоритеты называются также уровнями «любезности» (они задаются командой nice и определяют, насколько «любезна» одна программа по отношению к другим). И at, и batch отлично подходят для задач, которые должны запускаться в заданное время, но время их окончания не имеет большого значения.
Затем идут различные языки сценариев. Это своего рода языки программирования, позволяющие среднему системному администратору автоматизировать операции, выполняемые вручную. Существует множество языков сценариев (и обычно у каждого системного администратора есть свой любимый), но сегодня наиболее распространены следующие:
Командная оболочка bash
Язык сценариев perl
Язык сценариев python
Помимо очевидных отличий между этими языками, самое большое их отличие состоит в том, как эти языки взаимодействуют с другими утилитами в системе Red Hat Enterprise Linux. Сценарии, написанные в оболочке bash, обычно в большей мере используют множество небольших вспомогательных программ (например, для манипуляций с текстовыми строками), тогда как сценарии perl выполняют больше операций такого рода, используя встроенные средства языка. Сценарий, написанный на языке python, может в полной мере использовать объектно-ориентированные возможности, благодаря чему расширять сложные сценарии намного проще.
Это значит, что для того, чтобы действительно научиться писать сценарии оболочки, вы должны владеть многими вспомогательными программами (в частности, grep и sed), включёнными в состав Red Hat Enterprise Linux. Изучение perl (и python), напротив — обычно больше фокусируется на языке. Однако многие конструкции языка perl имеют синтаксис, используемый различными традиционными утилитами UNIX, и следовательно, знакомый системным администраторам Red Hat Enterprise Linux, имеющим опыт написания сценариев оболочки.
1.10.2. Документация и общение
В сферах документации и общения очень мало аспектов, относящихся исключительно к Red Hat Enterprise Linux. Так как процесс документирования и общения может включать что угодно, от добавления комментариев в текстовый файл конфигурации до обновления веб-страницы или рассылки почты, системный администратор Red Hat Enterprise Linux должен иметь доступ к текстовым и HTML-редакторам, а также почтовым клиентам.
Вот небольшая выборка из множества текстовых редакторов, имеющихся в Red Hat Enterprise Linux:
Текстовый редактор gedit
Текстовый редактор Emacs
Текстовый редактор Vim
Текстовый редактор gedit — исключительно графическое приложение (другими словами, он работает только в среде X Window), а vim и Emacs по природе имеют текстовый интерфейс.
Споры о том, какой текстовый редактор лучше всех, не утихают с момента появления компьютеров и никогда не закончатся. Поэтому вам лучше всего перепробовать все редакторы, и использовать тот, что подойдёт больше остальных.
В качестве HTML-редактора администраторы могут использовать функцию Composer (Компоновщик) браузера Mozilla. Несомненно, некоторые системные администраторы предпочтут сделать свой HTML-код руками, и для этого также прекрасно подойдёт обычный текстовый редактор.
Если же говорить об электронной почте, в Red Hat Enterprise Linux включён графический почтовый клиент Evolution, почтовый клиент Mozilla (также графический), и текстовый клиент mutt. Как и с текстовыми редакторами, выбор почтового клиента — лично дело каждого, поэтому лучше также попробовать все клиенты и использовать тот, что вам больше подходит.
1.10.3. Безопасность
Как было сказано в этой главе ранее, о безопасности необходимо думать заранее, и безопасность в Red Hat Enterprise Linux — очень серьёзный вопрос. Средства проверки подлинности и управления доступом являются неотъемлемой составляющей операционной системы и построены с учётом огромного опыта сообщества UNIX.
Для проверки подлинности в Red Hat Enterprise Linux используются подключаемые модули проверки подлинности (Pluggable Authentication Modules, PAM). Модули PAM позволяют точно настроить механизм проверки подлинности, изменяя параметры общих библиотек, которые используются всеми PAM-ориентированными приложениями, и не требуют изменять сами приложения.
Для управления доступом в Red Hat Enterprise Linux используются традиционные в UNIX разрешения (чтение, запись, выполнение), назначаемые пользователю, группе и «всем остальным». Как и в UNIX, в Red Hat Enterprise Linux также используются биты setuid и setgid, позволяющие временно расширить права процесса, запустившего определённую программу, с учётом атрибутов владения файлом программы. Конечно, при этом важно, чтобы программы, запускаемые с привилегиями setuid или setgid, были тщательно проверены на предмет наличия опасных уязвимостей.
В Red Hat Enterprise Linux также включена поддержка списков управления доступом. Список управления доступа (Access Control List, ACL) — это средство, позволяющее очень гибко управлять доступом пользователей или групп к файлам или каталогам. Например, если с помощью обычных разрешений можно запретить доступ всем, кроме владельца файла, то с помощью ACL можно разрешить запись только пользователю bob, а чтение — только группе finance.
Ещё один аспект безопасности — возможность контроля за происходящим в системе. Red Hat Enterprise Linux в полной мере использует возможности ведения журналов, как на уровне ядра, так и на уровне приложений. Правила ведения журналов задаются системным демоном syslogd, который может вести журналы локально (обычно в файлах в каталоге /var/log/) или передавать данные удалённому компьютеру (играющему роль выделенного сервера журналов).
Кроме этого, любому системному администратору Red Hat Enterprise Linux пригодятся системы обнаружения вторжений (Intrusion Detection Systems, IDS). IDS позволяют системному администратору выявить неавторизованные изменения, произведённые в одной или нескольких системах. Общая конструкция операционной системы сама по себе предусматривает функциональность IDS.
Так как Red Hat Enterprise Linux устанавливается с помощью менеджера пакетов RPM (RPM Package Manager, RPM), с помощью RPM можно проверить, были ли изменены пакеты, составляющие операционную систему. Однако, с учётом того, что RPM — в основном средство управления пакетами, его возможности как IDS несколько ограничены. И даже несмотря на это, он может стать хорошим первым шагом к полному контролю за неавторизованными изменениями в Red Hat Enterprise Linux.