Kodomo

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

Напутствие администратора

Вводное слово

За это занятие я хочу рассказать о том, как выполнять административные задачи в UNIX, т.е., как сделать так, чтобы UNIX для пользователей вёл себя таким образом, как мы выясняли в течение семестра.

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

Мне доводилось слушать несколько семестровых курсов на тему того, как именно нужно администрировать UNIX или именно Linux – и это были не очень простые курсы. С другой стороны, когда я работал системным администратором в коммерческой фирме, мне в помощники наняли человека, который на тот момент обладал только навыками тыкания мышкой в Windows – и уже через неделю он мог решать большнство частых проблем администратора без особых проблем – впрочем, потому, что в каждой конкретной системе с однообразной нагрузкой случаются достаточно однообразные проблемы.

Я хочу рассказать достаточно о достаточно большой части полезных задач, поэтому стоит сначала определиться с тем, какие задачи мы решаем. На моём опыте, администрирование складывается из четырёх задач:

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

Далее я пойду по этому плану и расскажу понемногу о каждой из этих задач.

Установка системы

FIXME. Самый простой способ – liveCD

FIXME. Промежуточный способ (очень хороший) – liveFlash

Если нам надоело работать с liveCD/liveFlash, то мы запускаем инсталлятор чтобы поставить систему на жёсткий диск. Цель инсталлятора – разбить диск на разделы, установить некоторое количество софта, и выполнить базовую настройку системы – т.е. в первом приближении выполнить все остальные задачи системного администратора.

Например, инсталлятор Debian задаёт такие вопросы:

FIXME: для инсталлятора установка пакетов – это дело, несколько отличное от доустановки пакетов в рабочей системе; tasksel

Настройка системы

FIXME: к ней я отношу в первую очередь настройку сети и управление пользователями; к ней можно относить настройку ядра и загрузку модулей ядра, настройку файрволла и т.п. – но об этом я рассказывать не буду, если железо достаточно стандартное, таких потребностей не возникнет.

FIXME: настройка сети: всю нужную теорию вы знаете; для настройки сети здесь и сейчас в первую очередь нужно ip v2; (иногда нужны всякие сторонние программы: dhclient; l2tpd; ...); для повторения настройки после перезагрузки, её нужно делать каким-то другим способом в зависимости от дистрибутива; в Debian: /etc/network/services Ещё есть NetworkManager, который умеет делать многое из этого через UI и где-то у себя в кишках всё сохраняет – но это то ещё глюкалово.

FIXME: настройка системы – задача достаточно ограниченнная, поэтому к ней часто делают человеческие интерфейсы (например, в Gnome и KDE).

FIXME: на всякий случай, упомяну про настройку модулей ядра (на самом деле, никто не понимает, что это такое, но все умеют этим пользоваться); главное знать: lsmod, insmod, modprobe, rmmod; m-a; linux-image-*

FIXME: полезные группы пользователей: root, adm, dialout (e.g. bluetooth), audio, www-data, src, plugdev (pmount), staff (/usr/local, /var/local), games, fuse

Важные полезности

В UNIX обычные пользователи не имеют достаточно прав для выполнения всех настроек. Поэтому делают разные системы для передачи отдельным процессам повышенных прав.

Наиболее популярных систем на эту тему две: su и sudo.

FIXME: su; основная идея – бинарник с UID=0, set-UID; спрашивает пароль пользователя root и запускает шелл с правами root.

FIXME: дополнительный вариант использования su: su user;

FIXME: ещё одна возможность su: просто запустить одну команду; но это сделано отвратительно и этим крайне неудобно пользоваться

FIXME: sudo; основная идея – есть файл, где сказано, кому что можно; аналогично – бинарник с UID=0, set-UID; спрашивает пароль того пользователя, кто запустил sudo (а не root), и даёт права по умолчанию пользователя root.

FIXME: sudoedit; основная идея: редактировать файлы с правами рута, но для редактирования пользоваться непривелигированным редактором; т.е.: sudo cp ... /tmp/visudo-tmp-...; $EDIT /tmp/visudo-tmp-...; sudo cp /tmp/visudo-tmp-... ...

FIXME: к нему есть UI, которые делают вид, что у некоторых пользователей есть права рута

FIXME: etckeeper; основная идея – хранить настройки в репозитории; ради историии изменений; две главные проблемы: исключать автогенерируемую муть; встраиваться в систему установки пакетов – именно это он и делает

Настройка сервисов

FIXME: здесь самое сложное (ибо новые понятия; настройки через текстовые файлы в /etc – the Unix Way; у каждого файла свой синтаксис; каждый сервис – это своя дыра в безопасности); но вам ничего такого сейчас не нужно, так что я пропускаю эту тему;

FIXME: самая полезная команда на эту тему: sudo /etc/init.d/... restart

FIXME: некоторые дистрибутивы ставят себе задачу частично унифицировать настройку сервисов; в Debian система для этого называется debconf; debconf – это БД + простенький интерфейс для шелл скриптов; некоторые пакеты используют его для того, чтобы задать несколько вопросов и автоматически сгенерировать настройки по шаблонам

FIXME: можно руками запустить перенастройку пакета: dpkg-reconfigure pkg; полезность: dpkg-reconfigure debconf – прироритет вопросов; чем выше приоритет, тем меньше вопросов он задаёт

FIXME: единственный сервис, о котором я что-нибудь хочу сказать: NTP; это синхронизация времени с компьютерами в интернете; ntp двигает время по чуть-чуть пользуясь тем, что в минуте в UNIX может быть от 59 до 61 секунды; на большие сдвиги времени он не соглашается; для этого ntpdate

Установка программ

FIXME: в UNIX древние традиции открытости, поэтому там очень давно есть понятие репозитория всего софта, который написали; на самом деле, софт там не весь, а только тот, который кто-нибудь подготовил таким образом, чтобы он смог автоматически установиться в систему (и удалиться из неё) – это называется пакетом; между пакетами бывают зависимости, например: pymol зависит от наличия в системе питона версии не менее 2.4

FIXME: в Debian пакеты называются dpkg; по сути: архив (ar) + некоторое количество описаний пакета + скрипты для настройки; сделать из программы пакет для Debian – дело не очень простое; сделать его так, чтобы в Debian его приняли (у Debian строгие политики) – убиться можно;

FIXME: в Debian есть полезный механизм alternatives – выбора программы на заданную роль: например, в качестве vi может использоваться nvi, vim, elvis; в качестве /bin/sh может использоваться dash, bash, ...; оно настраивается через update-alternatives – неудобно; есть хороший интерфейс galternatives

FIXME: репозиторий софта в Debian зовётся APT; сейчас он набирает популярность и в дистрибутивах, никак с Debian не связанных; важные понятия: репозиторий – правильным образом оформленная директория на вебе или ftp; кэш – список описаний пакетов в репозитории; apt помечает, какие пакеты установлены вручную, а какие вытянуты по зависимостям; /etc/apt/sources.list – откуда качать пакеты; можно настроить (не в этом файле, а рядом), откуда предпочитать качать

FIXME: я предпочитаю пользоваться не встроенными утилитами APT (apt-get – всё, что связано со скачиванием и модификацией системы) и (apt-cache – чтение кэша), а интерфейсом к ним под названием aptitude; основные операции в нём очень похожи по семантике на apt; aptitude update – обновить кэш; aptitude search – искать среди описаний пакетов – в этом месте есть очень мощный и удобный язык (полезный даже несмотря на то, что мне приходится всегда искать магические слова для него в документации); aptitude install, aptitutde remove – скачать (вместе с зависимости); aptitude full-upgrade / aptitude safe-upgrade – обновить весь дистрибутив;

FIXME: Debian очень бережно относится к ручному труду, поэтому у него очень строгая политика нетрогания настроек; поэтому есть две разные операции: remove – удалить пакет, оставить настройки; purge – удалить пакет и настройки; (если пакет уже удалён, можно сделать purge, чтобы доубрать оставшиеся настройки)

FIXME: в Debian есть три основных репозитория: unstable, testing, stable; в unstable попадает всё новое; в testing копируется пакет из unstable, если он за две недели не выявил новых критичных багов; (на всякий пакет в Debian есть достаточно пользователей, которые найдут и сообщат о багах; полезная утилита: reportbug); иногда (раз в полгода-год) запускается процесс релиза: на это время перестают пропускать в testing новые версии пакетов, кроме критических исправлений, и ждут, пока у всех пакетов не будут исправлены критические баги (или пакеты с критическими багами выкидываются из репозитория) – и тогда testing копируется в stable; testing и stable – это роли репозиториев; для них есть конкретные названия: lenny был testing год назад, сейчас он stable; скоро он станет oldstable; можно держать в sources stable, тогда раз в сколько-нибудь времени все пакеты будут резко обновляться, а можно держать lenny – такая система никогда не будет изменяться

FIXME: в других дистрибутивах и других UNIX бывают совсем другие понятия пакета и репозитория; e.g. yum – похож на apt; portage – основан на скачивании исходников и компиляции прямо на нашей машине

FIXME: к apt есть UI; e.g. synaptics; в каждом дистрибутиве свой (и все они дурацкие)