Основы администрирования системы
7.1. Что понимается под администрированием системы
В ОС Linux существует корневая учетная запись root для привилегированного пользователя, которому разрешено делать все: читать, изменять и удалять любые файлы, создавать и разрушать файловые системы, запускать и прекращать выполнение любых программ. Эти привилегии нужны для администрирования системы.
В обязанности системного администратора обычно входит:
♦ управление пользователями: ведение учетных записей пользователей и групп, квотирование дискового пространства;
♦ управление процессами: перераспределение ресурсов с целью повышения производительности системы;
♦ установка и модернизация программного обеспечения;
♦ подключение и конфигурирование аппаратных устройств;
♦ настройка системы: управление общесистемными сервисами, настройка сетевых служб с точки зрения безопасности и производительности, конфигурирование ядра;
♦ резервное копирование и восстановление данных.
Я включил главы, посвященные основам администрирования, в пользовательский раздел, потому что пользователю домашнего компьютера придется большинство администраторских обязанностей взвалить на себя. Помощи ему ждать неоткуда.
В следующем разделе я подробно остановлюсь на настройке различных сетевых служб.
Несколько советов начинающему администратору:
♦ Входить в систему под именем root только тогда, когда это абсолютно необходимо, и завершать сеанс привилегированной работы сразу же после выполнения административной задачи. Чем реже вы работаете под именем root, тем меньше шансов случайно разрушить систему, спутав права пользователя root с правами других пользователей.
♦ Настроить строку приглашения командной оболочки так, чтобы для пользователя root она отличалась от приглашения для обычных пользователей. Как правило, строка приглашения root оканчивается символом #, а для других пользователей — символом $. Если все-таки есть вероятность забыть, под каким именем вы сейчас работаете, пользуйтесь командой whoami.
♦ Для часто выполняемых работ по обслуживанию системы сохранять нужные последовательности команд в файлах сценариев (скриптах), чтобы автоматизировать выполнение этих работ.
7.2. Конфигураторы Linux
Настройка всего программного обеспечения в UNIX-подобных системах сводится к редактированию текстовых файлов, которые программа прочитывает при запуске и которыми руководствуется при выборе режима работы. Каждая прикладная программа или демон, включая демон init, поддерживает отдельный набор этих, называемых конфигурационными, файлов (в отличие, скажем, от MS DOS, где в один файл могут быть объединены секции, управляющие различными подсистемами). Общесистемные службы держат их, как правило, в каталоге
/etc
, а пользовательские приложения — в домашних каталогах пользователей: такое размещение позволяет каждому пользователю настроить приложение в соответствии со своими нуждами.Конфигурационные файлы самодокументированны: любая строка, начинающаяся с символа #, считается комментарием и может содержать любые справочные сведения. Кроме того, если вы вносите мелкую правку — скажем, изменяете значение одного параметра, — вам необязательно сохранять резервную копию старого конфигурационного файла: достаточно закомментировать строку с этим параметром.
Несмотря на удобство настройки путем редактирования текстовых файлов, все еще находятся администраторы, привыкшие к настройке в стиле Windows: через многоуровневые меню и диалоговые окна. Для таких администраторов предусмотрены графические конфигураторы, в разных дистрибутивах называющиеся по-разному. Запускать их нужно с графической консоли, потому что многие из них нуждаются в графическом режиме. В таблицах 7.1, 7.2 и 7.3 перечислены основные конфигураторы, включенные в дистрибутивы Mandrake, RedHat и Fedora Core.
Основные конфигуратора Linux Mandrake Таблица 7.1
Программа Назначение drakconf Основной конфигуратор drakboot Конфигуратор загрузчика LILO/GRUB drakgw Совместное использование интернет-соединения draknet Настройке сети drakfloppy Создание загрузочного диска draksec Определение уровня безопасности drakxservices Автозапуск сервисов diskdrake Программа для работы с разделами диска drakconsole Доступ к консоли draktime Настройка даты и времени diskdrake-fileshare Разрешение совместного использования каталогов adduserdrake Управление учетными записями harddrake2 Средство для настройки оборудования (в Linux Mandrake до версии 9 называется harddrake) keyboarddrake Настройка клавиатуры localedrake Изменение параметров локализации mousedrake Настройка мыши menudrake Настройка системного меню GNOME и KDE printerdrake Настройка принтера netconf Настройка сети Log drake Поиск в файлах протоколов Modemconf Конфигурирование модема Tinyfirewall Параметры брандмауэра XFdrake Настройка сервера X Xdrakres Установка разрешения монитора Xconfigurator Настройка графической системы X Window
Основные конфигураторы Linux Red Hat Таблица 7.2
Программа Назначение Setup Основной конфигуратор control-panel Вспомогательный конфигуратор Modemtool Конфигурирование модема Printertool Настройка принтера Netconf Настройка сети Xconfigurator Настройка X Window Autoconfig Параметры аутентификации redhat-config-securitylevel Установка уровня безопасности (*) redhat-соnfig-language Выбор языка (*) redhat-config-date Установка даты (*) redhat-config-users Управление пользователями (*) redhat-config-packages Работа с пакетами (*) redhat-config-xfree86 Настройка системы X Window (*) redhat-config-printer Конфигуратор принтера (*) Sndconfig Настройка звуковой платы
(*) Данные конфигураторы доступны в версии Red Hat 8.0 и выше
Основные конфигураторы Linux Fedora Core Таблица 7.3
Программа Назначение setup Основной конфигуратор system-config-packages Установка и удаление пакетов system-config-authentication Параметры аутентификации system-config-securitylevel Установка уровня безопасности system-config-securitylevel-tui Настройка брандмауэра без графического режима system-config-users Управление пользователями system-config-network Настройка сети system-control-network Настройка сетевых интерфейсов system-config-network-druid Мастер установки сетевого соединения system-config-services Настройка служб system-config-display Настройка монитора и видеокарты system-config-keyboard Выбор раскладки клавиатуры system-config-mouse Настройка мыши system-config-printer Настройка принтера system-config-soundcard Настройка звуковой платы
Основной конфигуратор (setup или drakconf) обычно используют для первоначальной настройки системы сразу после установки.
7.3. Пользователи и квоты
7.3.1. Учетные записи пользователей
Система учета пользователей опирается на следующие конфигурационные файлы:
♦
/etc/passwd
— учетная информация о пользователе;♦
/etc/shadow
— скрытая информация о пользователях: пароли в зашифрованном виде;♦
/etc/group
— информация о группах;♦
/etc/gshadow
— скрытая информация о группах;♦
/etc/default/useradd
— свойства, назначаемые по умолчанию новым учетным записям;♦
/etc/login.defs
— настройки безопасности пароля (время истечения, минимальная длина);♦
/etc/skel
— каталог, содержащий личные файлы настроек по умолчанию (когда для нового пользователя создается домашний каталог, в него помещаются эти файлы).Файл /etc/passwd — информация о пользователяхУчетная информация о пользователях системы хранится в файле
/etc/passwd
в следующем виде:username:password:UID:GID:full_name:home_dir:login_shell
Где:
♦
Username
— это регистрационное имя пользователя, часто называемое логином. Обычно администраторы присваивают пользователям логины, образованные от их реальных имен. Имя root закреплено за суперпользователем. Кроме реальных пользователей, в системе существуют еще фиктивные (bin, daemon и т.п.), от имени которых запускаются общесистемные службы.♦
Password
— пароль. Обычно используются теневые пароли, и вместо пароля в файле /etc/passwd
стоит знак *, а сам пароль в зашифрованном виде хранится в файле /etc/shadow
.♦
UID
— уникальный числовой идентификатор пользователя из диапазона от 0 до 65534. Суперпользователю присвоен UID, равный 0.♦
GID
— числовой идентификатор первичной группы пользователя. Помимо первичной группы, пользователь может входить или не входить в состав разных групп, но в первичную группу (native group) он входит всегда. Пользователи, входящие в одну группу, могут работать с общими файлами. Первичная группа суперпользователя называется root. Ей присвоен GID, равный 0.♦
Full_name
— обычно представляет собой реальное имя пользователя, например Ivan Ivanov. Может содержать и другие данные: номер телефона и т.п. Эти сведения системой не используются, но доступны по команде finger
.♦
Home_dir
— домашний каталог пользователя. Стандартное место для него — это каталог /home/
(например, /home/den
), и без особых причин изменять такую организацию домашних каталогов не рекомендуется.♦
Login_shell
— командный интерпретатор, запускаемый по умолчанию при входе пользователя в систему.Пример фрагмента файла
/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
den:x:500:500:den:/home/den:/bin/bash
evg:x:501:501::/home/evg:/bin/bash
Применение теневых паролей оправдывает себя с точки зрения безопасности. Обычно к файлу
/etc/passwd
разрешен доступ в режиме «только чтение» всем пользователям. К файлу /etc/shadow
обычный пользователь не имеет даже такого доступа.Системы, использующие TCB (Trusted Computing Base), хранят пароли не в файле
/etc/shadow
, а в файлах /etс/tcb/<имя_пользователя>/shadow
. Считается, что технология TCB более практична с точки зрения безопасности, поскольку доступ к паролям отдельного пользователя не позволит злоумышленнику скомпрометировать сразу всю систему. Для включения поддержки TCB нужно установить пакет tcb. Многие современные дистрибутивы (например, дистрибутивы ALT Linux) поддерживают TCB по умолчанию.В качестве основного алгоритма шифрования используется MD5, превращающий пароль в 32-значное шестнадцатеричное число. Этот алгоритм является самым надежным. Раньше использовались алгоритмы DES и 3DES, но здесь я не буду подробно останавливаться ни на одном из них. При установке системы обычно спрашивается, хотите ли вы использовать теневые пароли (Shadow Passwords) и MD5. Я очень рекомендую вам использовать обе эти возможности.
Информация о группах пользователей. Файл /etc/groupИнформация о группах пользователей хранится в файле /etc/group в следующем формате:
имя_группы:пароль:GID:члены_группы
Пароль используется крайне редко. Пример фрагмента файла
/etc/group
:root:*:0:root
bin:*:1:root,bin,daemon
local:*:100:den,operator,ivan
guest:*:200:
dialup:*:250:victor,evg
В этом примере группа root зарезервирована для пользователя root. Группа с идентификатором 100 используется для локальных пользователей. В ее состав входят пользователи
den
, operator
, ivan
. Группа guest
предназначена для гостевого входа и пользователя guest
. В состав группы dialup
входят пользователи victor
и evg
.Системой определяются группы для фиктивных пользователей:
bin
, sys
, adm
и т.п. Реальные пользователи входить в них не могут. Эти группы используются для системных файлов.Добавить группу вы можете с помощью команды groupadd. Я. как правило, просто добавляю запись в файл
/etc/group
, а если мне нужно удалить группу, то удаляю соответствующую строку.7.3.2. Создание и удаление пользователей и групп
Большинство утилит административного назначения хранится в каталогах /sbin и /usr/sbin. Полный набор утилит для управления пользователями и группами, установленных в вашей системе, вы можете увидеть по команде
# ls {/sbin,/usr/sbin}/*{user,group}*
Выполнив подстановки аргументов, командная оболочка bash превратит эту команду в четыре:
ls /sbin/*user*
ls /sbin/*group*
ls /usr/sbin/*user*
ls /usr/sbin/*group*
Чтобы добавить пользователя, выполните команду
# useradd <имя> ; passwd <имя >
Для удаления учетной записи пользователя служит утилита userdel, а для модификации существующей учетной записи — утилита usermod. Все они снабжены man-страницами.
Чтобы добавить или изменить несколько учетных записей сразу (на больших системах это приходится делать чаше, чем на персональном компьютере), можно воспользоваться утилитой newusers.
Для групп те же функции создания, удаления и модификации выполняют утилиты groupadd, groupdel и groupmod соответственно.
Если вам почему-либо неудобно управлять пользователями из командной строки, можно делать это с помощью графического конфигуратора. На рис. 7.1 показан пример работы system-config-users из дистрибутива Fedora Core 3.
Рис. 7.1. Добавление учетной записи
7.3.3. Квотирование
Что такое квотирование. Особенности квотирования в LinuxКвотирование — мощный механизм ограничения использования дискового пространства, применявшийся еще в самых ранних версиях UNIX, тогда как в состав ОС семейства Windows компания Microsoft включила их только в Windows 2000, естественно, гордо заявив об этом. Этот материал настолько объемен, что ему можно было бы смело посвятить целую главу.
При помощи квот системный администратор принуждает пользователя не расходовать неограниченный объем дискового пространства. Существует два типа ограничений: ограничение на количество файлов (inodes) и ограничение на размер дискового пространства в килобайтах (blocks). Если установлены оба ограничения, то они будут применяться одновременно.
Ограничения на inodes и на blocks могут быть установлены как для пользователя, так и для группы. Если вы входите в группу, которая превысила наложенное на нее ограничение, то вы не сможете использовать дисковое пространство, даже если вы не превысили квоту как пользователь.
Ограничения устанавливаются отдельно для каждого пользователя на каждой файловой системе. Ограничение определяется четырьмя числами:
1. Текущее значение ограничения;
2. «Мягкое» ограничение (softlimit);
3. «Жесткое» ограничение (hardlimit);
4. Период отсрочки: время, по истечении которого «мягкое» ограничение будет интерпретироваться как «жесткое».
«Мягкое» ограничение определяет число блоков, которые пользователь все еще может превысить, «жесткое» ограничение превысить невозможно. При попытке сделать это пользователь получит сообщение об ошибке. По истечении определенного времени (обычно 7 дней) «мягкое» ограничение переходит в «жесткое». За это время пользователь должен удалить ненужные ему файлы.
Ядро и поддержка квотированияВ ядро ОС Linux поддержка квотирования встроена (по некоторым сведениям, она появилась в ядре, начиная с версии 1.3.8), осталось убедиться, что она у вас включена. Если это не так, то ядро придется перекомпилировать.
После установки дистрибутива исходные тексты модулей ядра обычно находятся в каталоге
/lib/modules/<версия_ядра>/build
.ПримечаниеПривыкайте к возможностям подстановки аргументов командной оболочкой bash: перейти в этот каталог можно командой
$ cd /lib/mod*/`uname -r`/build
Там лежит файл
.config
, хранящий текущие настройки ядра (имя файла начинается с точки, поэтому он считается скрытым: чтобы увидеть его по команде ls, пользуйтесь ключом -а). Найдите в нем строку СОNFIG_QUOTA и убедитесь, что значение этого параметра равно «y». Далее обратите внимание на формат квот, строки CONFIG_QFMT_V, где x = 1 или 2. Версия 1 — это старый формат, использовавшийся в ядрах до версии 2.6. Если ваш дистрибутив основан на ядре 2.4, должен быть включен старый формат. Он отличается именами файлов квот.Ту же самую проверку (при необходимости — настройку) можно выполнить и с помощью диалогового конфигуратора. Чтобы запустить его, выполните одну из следующих команд:
♦make menuconfig: работает в консоли, предлагает текстовые меню и кнопки;
♦make config: работает в консоли, задает вопросы;
♦make xconfig: работает в графическом режиме при запущенной системе X Window;
♦make gconfig: то же самое, только для оконной среды GNOME.
На рис. 7.2 показано окно конфигуратора ядра для оконной среды GNOME. Обратите внимание, что квоты поддерживаются только для файловых систем ext2, ext3 и ReiserFS.
Проверьте, установлены ли у вас утилиты квотирования, командой
# ls {/sbin,/usr/sbin,/usr/bin}/*quota*
Скачать пакет этих утилит можно из репозитория Сизиф, поддерживаемого командой разработчиков ALT Linux:
http://alt.linux.kiev.ua/srpm/quota/get
.Рис. 7.2. Графический конфигуратор ядра, меню Filesystems
Назначение и активация квотТеперь нужно определить, использование какой файловой системы вы хотите ограничить. Обычно это
/home
(домашние каталоги пользователей), /usr
(пользователи имеют право записывать информацию в этот каталог) и, возможно, /var
. Чтобы включить квотирование файловой системы, отредактируйте файл /etc/fstab
, добавив ключ usrquota (и/или grpquota для групп) в поле, содержащее слово defaults/dev/hda1 / ext2 defaults
/dev/hda4 /home ext3 defaults,usrquota=/путь/к/файлу/квот
/dev/hda5 /usr ext3 defaults,usrquota,grpquota
Если путь к файлу квот не указан, то используется файл в корневом каталоге квотируемой файловой системы. В версии 2 (ядро 2.6) он называется
aquota.user
(aquota.group
для групп), в версии 1 — quota.user
и quota.group
.Периодически необходимо проверять файлы ограничений и само дисковое пространство, выделенное пользователям, на целостность, особенно после аварийного завершения работы системы. Для этого используется команда quotacheck. Не рекомендуется применять ее к используемой в данный момент, а поэтому подверженной изменениям, файловой системе: сама программа пытается перемонтировать проверяемую файловую систему в режиме «только чтение», но на занятой ФС это невозможно. Рекомендуется также на время проверки отключать квотирование.
Если программа quotacheck не находит файлов ограничений, то создает их.
Для проверки файловых систем на число блоков, которые используются пользователем или группой, выполните команду:
# quotacheck -avug
Ключ -а требует проверки всех смонтированных файловых систем (если его не указывать, то нужно задать точку монтирования), ключ -v требует подробного отчета о работе команды, ключи -ug требуют проверки квот как для пользователей, так и для групп.
Команда
quota <имя> | <имя_группы>
позволяет просмотреть ограничения дискового пространства, наложенные системным администратором на данного пользователя или группу, а команда repquota — сводку ограничений и фактически занятого дискового пространства для всех пользователей данной файловой системы (с ключом -а — всех файловых систем).Только суперпользователь может просматривать квоты других пользователей. Обычный пользователь может просматривать только свои квоты и квоты группы, к которой он принадлежит.
Рис. 7.3. Результат выполнения команды quotacheck -avug
Рис. 7.4. Результат выполнения команды repquota -um
Для задания ограничении предназначена команда edquota. Файлы ограничений при этом должны уже существовать. Создайте их и включите режим подсчета квот командами:
# quotacheck -u <точка_монтирования> # для групп нужно
# выполнить то же
# quotaon -u <точка_монтирования> # самое с ключом -g
Команда edquota -u <имя> создает временный текстовый файл, представляющий собой выдержку из двоичного файла квот, запускает ASCII- редактор, указанный в переменной окружения $EDITOR (по умолчанию это редактор vi), в котором вы можете отредактировать ограничения для данного пользователя, и записывает сохраненный текстовый файл обратно в файл квот.
Текущие показатели занятого дискового пространства приводятся только для справки, редактировать нужно только число, которое следует за словом
hard
или soft
(рис. 7.5). Значение «0» указывает на отсутствие ограничений.Рис. 7.5. Результат выполнения команды edquota -u den
Чтобы изменить период отсрочки, пользуйтесь ключом
-t
:# edquota -t
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda4: block grace period: 50 minutes,
file grace period: 50 minutes
В старой версии формата квот существовало значение периода отсрочки по умолчанию, вкомпилированное в ядро. В версии 2 значения по умолчанию нет, и период отсрочки для каждой файловой системы нужно указывать явно.
В большинстве случаев у вас есть несколько пользователей, на которых нужно наложить одинаковые ограничения. Самым быстрым способом редактирования ограничений в этом случае будет использование прототипа. С помощью команды:
# edquota -u <пользователь_который_станет_прототипом>
можно определить ограничения прототипа, а затем с помощью команды:
# edqouta -p <прототип><пользователь>
создать квоты для всех оставшихся пользователей, применив к ним ограничения прототипа.
Для активации/деактивации подсчета квот на файловой системе, для которой заказано квотирование, предназначены команды quotaon и quotaoff. Команду quotaon нужно включить в сценарий загрузки системы, как и команду quotacheck:
# Смонтированы все файловые системы из /etc/fstab
# Проверка и активация квот
echo "Checking quotas. This may take some time."
/usr/sbin/quotacheck -avug
echo " Done."
echo "Turning on quota."
/usr/sbin/quotaon -avugfi
7.4. Подключение и конфигурирование аппаратных устройств