Linux. Сборник рецептов.
Итак, вы относитесь к числу относительно неопытных пользователей Linux. Вы установили Linux, вам удалось войти в систему, пошарить в Интернете, отправить и получить электронную почту... а что дальше? Несмотря на успешное выполнение некоторых простейших задач, вы чувствуете себя словно пилот самолета, летящего на автопилоте. В вашем распоряжении масса замечательных возможностей (во всяком случае, так вам сказал ваш знакомый, большой знаток в области Linux), но как ими воспользоваться? Что где находится и как работает? Что это за штуковина под названием grep, о которой так часто говорят? И как наладить работу Samba? Где находится документация?
Мир Linux/Unix отлично документирован. Нет, я серьезно! Вы сможете найти ответ на любой вопрос — нужно только знать, где искать. Man-страницы, info-страницы, файлы README, документация в формате HTML, сами программы... Не нужно быть великим программистом, чтобы отыскать полезную информацию в исходных текстах, потому что все необходимые сведения часто содержатся в комментариях.
Среди тысяч виртуальных сообществ Интернета всегда найдется одно (или несколько) для конкретной программы из вселенной Linux. Почти у каждой программы, какой бы малой она ни была, существует собственный список рассылки.
У каждого дистрибутива Linux имеются свои списки рассылки и форумы пользователей. Я уже не говорю о многочисленных книгах и журналах. Настоящая проблема с документацией Linux — не ее нехватка, а получение нужной информации без долгих и утомительных поисков.
Для кого написана эта книга
Книга предназначена для читателей, которые желают решать практические задачи. Конечно, понимать базовую теорию полезно, но если вам не удается добиться нужного результата, пользы от теории немного. По этой причине я постараюсь включать поменьше теоретических рассуждений и побольше практических советов с подробными, пошаговыми инструкциями. В книге приведены многочисленные ссылки на дополнительные источники информации.
От читателя потребуется некоторый опыт работы в Linux. Быть знатоком не обязательно, но нужно как минимум уметь загружать систему и завершать работу с ней, запускать приложения, работать в Интернете и ориентироваться в файловой системе. Читатель должен знать, как получить доступ к командной строке и использовать её, а также обладать навыками работы в графической среде. Он должен понимать, что Linux является полноценной многопользовательской системой, и что в работе следует по возможности использовать непривилегированную учетную запись, переключаясь на привилегии root только в случае необходимости.
Предполагается, что читатель является администратором отдельного компьютера или локальной сети и может получить привилегии root в случае необходимости. Возможно, вы стремитесь в полной мере управлять работой своего Linux-компьютера, создать свой собственный почтовый или веб-сервер, или построить небольшую сеть. А может, вы — системный администратор Windows, которому неожиданно потребовалось подключить Windows-клиентов к серверам Linux... или включить серверы Linux в существующую сеть... или интегрировать компьютеры с Linux и Windows в одной смешанной сети.
А может, вам вообще нет дела до Windows, и вы просто хотите освоить системное администрирование Linux.
О чём рассказано в книге
Для Linux существуют тысячи программных пакетов. Почти все они делают что-то полезное, поэтому заранее понятно, что рассмотреть все темы (или хотя бы большинство) попросту невозможно. Решения о том, какой материал включить в книгу, а какой оставить за пределами рассмотрения, принимались в соответствии с моими представлениями о базовых навыках администрирования Linux (возможно, у вас они будут другими). В книгу были включены программы, которые я считаю лучшими в своей категории: djbdns, GRUB, Apache 2, vim и Postfix, а также проверенные временем ветераны вроде LILO.
В книге приводятся полезные сценарии для выполнения типовых операций:
- массовое создание учетных записей;
- массовое изменение паролей;
- поиск всей установленной документации к программе;
- поиск «бесхозных» библиотек в системах на базе RPM и их включение в базу данных RPM.
В книгу не вошли настольные и вспомогательные приложения типа OpenOffice, KMail, Firefox, Konqueror, GIMP, GnuCash и т. д. — книга посвящена построению инфраструктуры. Если вы освоите основные принципы администрирования и сопровождения Linux-системы, дальше можно будет двигаться куда угодно.
В мире существуют тысячи дистрибутивов Linux. Свои дистрибутивы создают отдельные компании, кампусы и даже просто группы единомышленников. Тем не менее дистрибутивы делятся (пусть и не очень чётко) на две большие категории: системы на базе RPM, представленные в книге Red Hat и Fedora, и системы на базе apt, представленные Debian. Семейство Debian бурно развивается и пополняется такими представителями, как Knoppix, Xandros, Libranet, Ubuntu и Linspire.
Даже если ваш дистрибутив не принадлежит ни к одной из этих категорий (скажем, Slackware или Gentoo), основные принципы практически не изменяются. Ядро остаётся тем же; программы и утилиты остаются теми же; оконные менеджеры остаются теми же; принципиальные различия существуют только в способе установки программ.
Впрочем, это не означает, что между дистрибутивами Linux нет других отличий. Одна из классических проблем — различия в местонахождении файлов в разных дистрибутивах. Привыкайте, эта проблема никуда не денется. В книге будет показано, как получить информацию о местонахождении конфигурационных, исполняемых файлов и документации для вашего конкретного дистрибутива.
Глава 1. Документация в Linux: man и info
- 1.1. Введение
- 1.2. Общие сведения о man-страницах
- 1.3. Поиск нужной man-страницы
- 1.4. Поиск потерянных man-страниц
- 1.5. Чтение man-страниц без программы просмотра
- 1.6. Настройка путей поиска man-страниц
- 1.7. Использование info-страниц
- 1.8. Печать man-страниц
- 1.9. Печать info-страниц
- 1.10. Печать отдельных man- или info-страниц
- 1.11. Поиск всей документации к программе
Глава 2. Установка и модификация программ в системах на базе RPM
- 2.1. Введение
- 2.2. Установка пакетов
- 2.3. Обновление пакетов
- 2.4. Удаление пакетов
- 2.5. Получение информации об установленных пакетах
- 2.6. Получение информации о пакетах, не установленных в системе
- 2.7. Поиск недавно установленных пакетов
- 2.8. Перестройка базы данных RPM
- 2.9. Отслеживание библиотек, построенных по исходным текстам, в системах на базе RPM
- 2.10. Решение проблем установки RPM
- 2.11. Сборка пакетов по исходным текстам
- 2.12. Настройка параметров сборки SRPM
- 2.13. Установка yum
- 2.14. Настройка yum
- 2.15. Установка и обновление пакетов в yum
- 2.16. Удаление пакетов в yum
- 2.17. Получение информации об установленных пакетах в yum
- 2.18. Сопровождение yum
Глава 3. Установка и сопровождение программного обеспечения в системах на базе Debian
- 3.1. Введение
- 3.2. Поиск программ для Debian
- 3.3. Установка пакетов Debian с диска CD-ROM
- 3.4. Установка пакетов в системе на базе Debian
- 3.5. Удаление пакетов из системы Debian
- 3.6. Установка программ в Debian по исходным текстам
- 3.7. Обновление пакетов в Debian
- 3.8. Обновление системы Debian
- 3.9. Установка обновлённой версии Debian
- 3.10. Создание смешанной системы Debian
- 3.11. Поиск программ, установленных в системе Debian
- 3.12. Операции с кэшем пакетов Debian
- 3.13. Разрешение конфликтов зависимостей в Debian
- 3.14. Создание локального архива Debian
- 3.15. Выбор пакетных зеркал для apt-proxy.conf
- 3.16. Включение существующего кэша пакетов в apt-proxy.conf
Глава 4. Установка программ по исходным текстам
- 4.1. Введение
- 4.2. Подготовка системы к компиляции программ по исходным текстам
- 4.3. Построение списка добавленных файлов для упрощения удаления программ
- 4.4. Установка программ по исходным текстам
- 4.5. Создание пакетов по исходным текстам с применением CheckInstall
Глава 5. Идентификация оборудования
- 5.1. Введение
- 5.2. Идентификация оборудования при помощи lspci
- 5.3. Сбор информации об оборудовании программой dmesg
- 5.4. Получение текущей сводки оборудования с использованием /proc
- 5.5. Просмотр разделов в программе fdisk
Глава 6. Редактирование текстовых файлов в JOE и Vim
- 6.1. Введение
- 6.2. Поиск команд JOE
- 6.3. Настройка JOE
- 6.4. Сохранение личной конфигурации JOE в отдельном файле
- 6.5. Копирование текста между файлами в JOE
- 6.6. Поиск и замена в JOE
- 6.7. Вертикальное выделение текста в JOE
- 6.8. Поиск и открытие файлов в JOE
- 6.9. Быстрое изучение Vim
- 6.10. Создание автотекста в Vim
- 6.11. Привязка команд к клавишам
- 6.12. Настройка Vim
- 6.13. Быстрое перемещение в Vim
- 6.14. Сеансы Vim
- 6.15. Назначение редактора по умолчанию
- 6.16. Определение параметров компиляции Vim
Глава 7. Запуск и завершение работы Linux
- 7.1. Введение
- 7.2. Смена уровня выполнения после загрузки
- 7.3. Смена уровня выполнения по умолчанию
- 7.4. Запуск и остановка X
- 7.5. Управление уровнями выполнения в Debian
- 7.6. Создание уровней выполнения с текстовым и графическим входом в Debian
- 7.7. Управление уровнями выполнения в Red Hat
- 7.8. Ручная настройка служб, запускаемых при загрузке
- 7.9. Ручная остановка и запуск служб
- 7.10. Выключение компьютера или перезагрузка Linux
- 7.11. Запрет или ограничение доступа к Ctrl+Alt+Delete
- 7.12. Автоматическое выключение компьютера
Глава 8. Управление пользователями и группами
- 8.1. Введение
- 8.2. Отделение обычных пользователей от системных
- 8.3. Определение кодов UID и GID
- 8.4. Создание учетной записи пользователя командой useradd
- 8.5. Создание учетной записи пользователя командой adduser
- 8.6. Изменение учетной записи пользователя
- 8.7. Удаление пользователя
- 8.8. Простое завершение процессов
- 8.9. Блокировка учетных записей
- 8.10. Управление паролями
- 8.11. Создание групп командой groupadd
- 8.12. Удаление групп командой groupdel
- 8.13. Создание системного пользователя
- 8.14. Создание системных групп командой addgroup
- 8.15. Изменение принадлежности к группам
- 8.16. Проверка целостности файлов паролей
- 8.17. Серийное добавление новых пользователей
- 8.18. Серийная замена паролей
- 8.19. Серийное включение пользователей в группы
- 8.20. Временное использование привилегий root
- 8.21. Временное предоставление привилегий root командой sudo
- 8.22. Дисковые квоты
Глава 9. Операции с файлами и разделами
- 9.1. Введение
- 9.2. Настройка разрешений в числовом формате chmod
- 9.3. Выполнение массовых операций командой chmod
- 9.4. Настройка разрешений в символьном формате chmod
- 9.5. Назначение владельца файла командой chown
- 9.6. Выполнение массовых операций командой chown
- 9.7. Создание общих каталогов с использованием setgid и бита закрепления
- 9.8. Назначение разрешений по умолчанию с использованием маски umask
- 9.9. Монтирование и демонтирование съемных дисков
- 9.10. Настройка монтирования файловых систем в /etc/fstab
- 9.11. Определение имен устройств для mount и fstab
- 9.12. Создание файлов и каталогов
- 9.13. Удаление файлов и каталогов
- 9.14. Копирование, перемещение и переименование файлов и каталогов
- 9.15. Создание дисковых разделов Linux командой fdisk
- 9.16. Создание файловой системы в новом разделе
Глава 10. Заплатки, настройка и обновление ядра
- 10.1. Введение
- 10.2. Добавление новых возможностей в ядро 2.4
- 10.3. Усечение типового ядра 2.4
- 10.4. Обновление до последней стабильной версии ядра 2.4
- 10.5. Построение ядра 2.6
- 10.6. Добавление новых возможностей в ядро 2.6
- 10.7. Добавление нового загружаемого модуля ядра
- 10.8. Установка заплаток ядра
- 10.9. Удаление заплатки ядра
- 10.10. Создание образа initrd
- 10.11. Создание загрузочного диска в Debian
- 10.12. Создание загрузочного диска в Red Hat
Глава 11. Запись CD и DVD
- 11.1. Введение
- 11.2. Определение адресов SCSI для записывающих дисководов CD и DVD
- 11.3. Включение эмуляции SCSI для устройства записи CD и DVD с интерфейсом IDE/ATAPI
- 11.4. Создание компакт-диска с данными для распространения
- 11.5. Формирование файловых деревьев на компакт-дисках с данными
- 11.6. Копирование диска CD или DVD
- 11.7. Стирание диска CD-RW
- 11.8. Запись многосеансового компакт-диска с данными
- 11.9. Создание загрузочного компакт-диска
- 11.10. Разбиение больших файлов на несколько дисков
- 11.11. Запись дисков DVD с данными
- 11.12. Запись аудиодиска для стандартных проигрывателей
Глава 12. Системный загрузчик и управление загрузкой
- 12.1. Введение
- 12.2. Переход с LILO на GRUB
- 12.3. Установка GRUB без дискеты
- 12.4. Установка GRUB сценарием grub-install
- 12.5. Подготовка системы для альтернативной загрузки Linux
- 12.6. Установка дополнительных экземпляров Linux в системе с альтернативной загрузкой
- 12.7. Определение параметров загрузки в командной консоли GRUB
- 12.8. Настройка загрузочного раздела
- 12.9. Создание меню загрузки в GRUB
- 12.10. Настройка menu.lst
- 12.11. Добавление Windows 95/98/ME в систему Linux
- 12.12. Добавление Windows NT/2000/XP в систему с альтернативной загрузкой
- 12.13. Восстановление GRUB в MBR с использованием диска Knoppix
- 12.14. Защита системных файлов паролем GRUB
- 12.15. Защита отдельных пунктов меню GRUB
- 12.16. Создание заставки GRUB
- 12.17. Загрузка Linux с использованием LILO
- 12.18. Альтернативная загрузка Linux с использованием LILO
- 12.19. Альтернативная загрузка Windows и Linux с использованием LILO
- 12.20. Создание загрузочной дискеты LILO
- 12.21. Защита LILO паролем
- 12.22. Создание резервной копии MBR
Глава 13. Восстановление работоспособности системы на примере Knoppix
- 13.1. Введение
- 13.2. Загрузка Knoppix
- 13.3. Создание загрузочной дискеты Knoppix
- 13.4. Сохранение конфигурации Knoppix на флэш-диске
- 13.5. Создание зашифрованного домашнего каталога Knoppix
- 13.6. Копирование файлов на другой PC с системой Linux
- 13.7. Копирование файлов в общий каталог Samba
- 13.8. Копирование файлов на диск CD-R/RW
- 13.9. Редактирование конфигурационных файлов в Knoppix
- 13.10. Установка программ из Knoppix
- 13.11. Восстановление пароля root
- 13.12. Установка Knoppix на жесткий диск
- 13.13. Запуск антивирусных программ на Windows PC
Глава 14. CUPS
- 14.1. Введение
- 14.2. Подключение принтера к автономному компьютеру с системой Linux
- 14.3. Обслуживание клиентов Linux
- 14.4. Совместный доступ к принтеру без разрешения имён
- 14.5. Обслуживание клиентов Windows без Samba
- 14.6. Совместный доступ к принтерам в смешанной сети с использованием Samba
- 14.7. Создание выделенного сервера печати CUPS
- 14.8. Распределенная печать с использованием классов
- 14.9. Ограничение доступа к принтерам и классам
- 14.10. Диагностика
Глава 15. Настройка видео и X Window
- 15.1. Введение
- 15.2. Одновременное использование X и консолей
- 15.3. Установка нового видеоадаптера
- 15.4. Редактирование файла XF86Config
- 15.5. Включение аппаратного ускорения в XFree86/DRI
- 15.6. Диагностика проблем с ускорением трёхмерной графики
- 15.7. Настройка startx
- 15.8. Смена экранного менеджера
- 15.9. Одновременный запуск разных оконных менеджеров
Глава 16. Архивация и восстановление
- 16.1. Введение
- 16.2. Применение rsync для локальной пересылки и синхронизации файлов
- 16.3. Безопасная пересылка данных с применением ssh
- 16.4. Настройка сервера архивации rsync
- 16.5. Защита модулей rsync
- 16.8. Настройка выбора файлов
- 16.9. Автоматизация архивации rsync на базе ssh
- 16.10. Ограничение загрузки канала при использовании rsync
- 16.14. Создание загрузочного компакт-диска в Mondo Rescue
- 16.15. Проверка архивов Mondo
- 16.16. Создание загрузочного диска DVD
- 16.17. Использование Mondo Rescue для клонирования систем Linux
- 16.18. Использование mindi-kernel
- 16.19. Восстановление системы с диска Mondo
- 16.20. Восстановление отдельных файлов с диска Mondo
Глава 17. Удалённый доступ
- 17.1. Введение
- 17.2. Настройка OpenSSH
- 17.3. Построение новых ключей хостов
- 17.4. Аутентификация с использованием открытых ключей
- 17.5. Использование нескольких пар ключей
- 17.6. Вход без пароля с использованием ssh-agent
- 17.7. Вход без пароля с использованием keychain
- 17.8. Беспарольный вход для заданий cron
- 17.9. Автоматическое завершение ssh-agent при выходе
- 17.10. Настройка приглашения Bash для ssh
- 17.11. Туннелирование X через SSH
- 17.12. Подключение с компьютера с системой Windows
- 17.13. Назначение разрешений для файлов ssh
Глава 18. Управление версиями
- 18.1. Введение
- 18.2. Построение локального репозитория RCS
- 18.3. Выборка старых версий файлов в RCS
- 18.4. Сравнение версий файлов в RCS
- 18.5. Управление системными конфигурационными файлами в RCS
- 18.6. Использование CVS для создания однопользовательских локальных репозиториев
- 18.7. Включение новых файлов в репозиторий CVS
- 18.8. Удаление файлов из репозитория CVS
- 18.9. Создание общего репозитория CVS
- 18.10. Совместное использование репозитория группами пользователей
- 18.11. Обращение к удалённому репозиторию CVS
- 18.12. Обновление рабочих файлов в CVS
- 18.13. Выборка конкретных старых версий из CVS
- 18.14. Построение анонимного репозитория CVS
- 18.15. Настройка среды CVS
- 18.16. Вычисление объёма репозитория CVS
Глава 19. NTP
- 19.1. Введение
- 19.2. Настройка локального сервера времени
- 19.3. Подключение к локальному серверу времени
- 19.4. Управление доступом
- 19.5. Выбор пула NTP
- 19.6. Подключение к серверу времени при непостоянном подключении
- 19.7. Настройка нескольких локальных серверов времени
- 19.8. Аутентификация с использованием ключей NTP
Глава 20. Почтовый сервер Postfix
- 20.1. Введение
- 20.2. Построение почтового сервера POP3
- 20.3. Построение почтового сервера POP3 в Debian
- 20.4. Тестирование почтового сервера SMTP/POP3
- 20.5. Отправка интернет-почты
- 20.6. Прием интернет-почты
- 20.7. Установка Cyrus-SASL
- 20.8. Установка Cyrus-SASL в Debian
- 20.9. Настройка smtp-auth для аутентификации пользователей
- 20.10. Применение smtp-auth для аутентификации Postfix на другом сервере
- 20.11. Настройка полного доменного имени
- 20.12. Построение почтового сервера IMAP
- 20.13. Подключение пользователей
- 20.14. Общий доступ к папкам IMAP
- 20.15. Использование виртуальных доменов Postfix
- 20.16. Создание списка рассылки с применением couriermlm
Глава 21. Борьба со спамом и вредоносными программами
- 21.1. Введение
- 21.2. Первоочередные меры по защите от спама и вредоносных программ
- 21.3. Тестирование средств борьбы со спамом в Postfix
- 21.4. Настройка антиспамовых ограничений в Postfix
- 21.5. Создание белых списков
- 21.6. Использование черных списков DNS
- 21.7. Блокировка сообщений с вложениями
- 21.8. Настройка Clam Anti-Virus на сервере Postfix
- 21.9. Настройка SpamAssassin в Postfix
Глава 22. Веб-сервер Apache
- 22.1. Введение
- 22.2. Apache 1.3 или Apache 2.x?
- 22.3. Установка Apache 2.0 по исходным текстам
- 22.4. Добавление новых модулей после установки
- 22.5. Настройка разрешений и принадлежности файлов Apache
- 22.6. Обращение к локальному руководству Apache
- 22.7. Создание простого веб-сервера
- 22.8. Перенаправление URL в новый каталог
- 22.9. Предоставление пользователям индивидуальных веб-каталогов
- 22.10. Запуск Apache при загрузке системы
- 22.11. Многодоменный хостинг в Apache
- 22.12. Ведение отдельных журналов для виртуальных хостов
- 22.13. Предотвращение доступа к веб-сайтам локальных сетей из Интернета
- 22.14. Парольная защита отдельных каталогов
- 22.15. Настройка файла robots.txt для SEO и защиты сайта
- 22.16. Блокировка нарушителей
- 22.17. Страницы ошибок
- 22.18. Настройка стандартных страниц ошибок Apache
- 22.19. Вывод содержимого каталогов без усечения имен файлов
- 22.20. Использование Content Negotiation для предоставления страниц на разных языках
- 22.21. Использование эмблем
- 22.22. Просмотр журналов обращений Apache с использованием Webalizer
Глава 23. Samba
- 23.1. Введение
- 23.2. Построение простого автономного файлового сервера Samba для Windows
- 23.3. Построение одноранговой сети Windows/Linux
- 23.4. Включение общего доступа к файлам в Windows
- 23.5. Включение аутентификации на сервере Samba
- 23.6. Массовое преобразование системных пользователей
- 23.7. Подключение к Samba из Windows 95/98/ME
- 23.8. Шифрование паролей в Windows
- 23.9. Списки управления доступом (ACL)
- 23.10. Создание общедоступных сетевых каталогов
- 23.11. Работа с домашними каталогами пользователей в Samba
- 23.12. Построение главного контроллера домена
- 23.13. Подключение Windows 95/98/ME к домену Samba
- 23.14. Подключение клиентов Windows NT/2000 к домену Samba
- 23.15. Подключение клиентов Windows XP к домену Samba
- 23.16. Включение перемещаемых профилей
- 23.17. Подключение клиентов Linux к одноранговой сети или файловому серверу Samba
- 23.18. Подключение клиентов Linux к рабочим группам Samba из командной строки
- 23.19. Подключение клиентов Linux к домену Samba из графического обозревателя
- 23.20. Подключение клиентов Linux к домену Samba из командной строки
- 23.21. Синхронизация паролей Samba и Linux
- 23.22. Общий доступ к принтерам Linux из системы Windows
- 23.23. Общий доступ к принтерам Windows из системы Linux
- 23.24. Запуск приложений Windows в Linux
Глава 24. Разрешение имен
- 24.1. Введение
- 24.2. Локальное разрешение имен с использованием файла hosts
- 24.3. Настройка сервера DHCP
- 24.4. Настройка клиентов DHCP
- 24.5. Включение статических хостов в DHCP
- 24.6. Создание общедоступного сервера DNS
- 24.7. Установка djbdns
- 24.8. Перемещение журналов tinydns и dnscache
- 24.9. Создание локального дотирующего сервера имен на базе djbdns
- 24.10. Настройка клиентов Linux и Windows для использования дотирующего сервера DNS
- 24.11. Создание общедоступного сервера DNS с использованием tinydns
- 24.12. Построение частного сервера DNS
- 24.13. Простое распределение нагрузки в tinydns
- 24.14. Синхронизация с другим сервером tinydns