Linux -сборник рецептов

         

в том, как ее найти.


Документация к программам Linux существует в избытке — вопрос только в том, как ее найти. Не ищите стопки красивых, глянцевых печатных описаний: большинство Linux-программ не продается в блестящих коробках, а распространяется через Интернет.
Существует и другая сложность: в соответствии с великими традициями Unix, многие задачи в Linux решаются совместной работой множества мелких специализированных программ, поэтому любой дистрибутив Linux состоит из огромного количества отдельных программ. Дистрибутивы общего назначения типа Mandrake или SuSE содержат тысячи программ, а в архивах Debian хранятся свыше 12 000 пакетов. Организация и сопровождение печатной библиотеки в таких условиях создали бы немало трудностей, но к счастью, все программы документированы. Какой бы вопрос у вас ни возник, на него всегда можно найти ответ.


В наши дни установка дистрибутива Linux производится без особых проблем. Вставьте диск CD-ROM в дисковод, задайте несколько конфигурационных параметров и отправляйтесь пить чай, пока идет установка. Современные версии Linux превосходно распознают оборудование, быстро устанавливаются (обычно за 30 минут и менее) и требуют не более одной промежуточной перезагрузки.

Содержание раздела









Несмотря на многочисленные системы управления пакетами и разрешения зависимостей, в некоторых случаях вариант с построением программы по исходным текстам оказывается предпочтительным. Например, нужная вам программа может не существовать в виде пакета, или вы хотите изменить состав ее встроенных функций, или оптимизировать ее для архитектуры своего процессора. Многие опытные администраторы рекомендуют строить программы, критические с точки зрения безопасности (например, ssh и все серверы), по исходным текстам.
При построении программы по исходным текстам обязательно ознакомьтесь со всеми инструкциями. Хотя процедура configure-make-make install стала относительно стандартной, существует множество исключений, зависящих от прихоти автора программы. Нередко в процессе построения необходимо указывать различные параметры конфигурации, и информацию о них можно найти только в документации.
Если вы предпочитаете использовать пакеты, в вашем распоряжении все программы для самостоятельного построения пакетов RPM и .deb. Впрочем, на освоение этих программ потребуются немалые усилия. Существует третий вариант: CheckInstall — превосходная утилита, упрощающая построение пакетов RPM, Debian или Slackware по исходным текстам.


Содержание раздела







В Linux имеются хорошие утилиты для получения подробной информации о внутренних устройствах компьютера. Даже если сесть за совершенно незнакомый компьютер, через считанные минуты вы получите полный список всех его компонентов.
Такие утилиты не только избавляют вас от необходимости снимать кожух и копаться во «внутренностях» компьютера, но и помогают найти драйверы или узнать, поддерживается ли вообще данное устройство в Linux. Мы живем в дурацком Windows-центрическом мире: чтобы проверить, существуют ли для модема, сетевой или видеокарты драйверы Linux, обычно необходимо знать чипсет, использованный в устройстве. Количество чипсетов не так уж велико, но они делятся на множество торговых марок и моделей. Некоторые фирмы-производители меняют чипсеты, не изменяя номер модели, так что на номер модели рассчитывать не стоит. Зная чипсет, можно найти драйверы.

Содержание раздела







Освоение текстового редактора — важный навык для каждого, кто хочет быть грамотным, достойным пользователем Linux. Проблема выбора редактора сама по себе интересна, так как в мире Linux существует много текстовых ASCII-редакторов. Это объясняется двумя причинами. Во-первых, создание текстового редактора является хорошим (и достаточно типовым) проектом для программиста-новичка; во-вторых, текстовый редактор — сугубо личный инструмент. Гуру Linux часто пишут или изменяют текстовые редакторы, руководствуясь своими капризами... то есть специфическими требованиями.
Пользователи Linux частенько ввязываются в перепалки по поводу текстовых редакторов (особенно «Emacs против Vim»). Занятие веселое, но бессмысленное. Найдите тот редактор, который лучше всего подходит для ваших потребностей и темперамента. Красота Linux (и концепции свободно распространяемого программного обеспечения вообще) заключается в богатстве выбора пользователя.
В этой главе мы рассмотрим JOE (Joe's Own Editor) и Vim, который является потомком vi. Почему не Emacs? Emacs — замечательная программа; большая, сложная, с бесконечными возможностями настройки и расширения. Это не простой текстовый редактор, а скорее интегрированная среда. В Emacs пользователи могут читать почту и конференции Usenet, писать программы, играть в игры, создавать собственные макросы и комбинации клавиш, имитировать оконные среды при отсутствии X Window и даже консультироваться с психиатром (М-х doctor). Emacs может сделать что угодно... если вы знаете, как этого добиться. Но для тех, кому нужно просто отредактировать текстовый файл, этого многовато. Emacs «весит» более 22 Мбайт, тогда как JOE и Vim помещаются на одной дискете, да еще остается свободное место.
JOE и Vim хорошо подходят для повседневной работы по редактированию конфигурационных файлов. Конечно, они также могут использоваться для написания любых текстов — статей, веб-страниц, программ и т. д. Чем лучше вы печатаете, тем производительнее будет ваша работа. В идеальном случае руки не должны отрываться от клавиатуры, а глаза — от экрана.


Содержание раздела







Существует множество способов запуска и остановки системы Linux. Также не стоит забывать о сценариях инициализации, управляющих запуском различных процессов, и о различных уровнях выполнения системы (runlevels), в каждом из которых может работать свой набор процессов. Выполните следующую команду:
$ ps axfl
Найдите процесс с номером 1 (вывод сокращен, в вашей системе выходные данные команды будут содержать больше столбцов и строк):
UID PID PPID STAT TTY TIME COMMAND 0 1 0 S ? 0:03 init
Это init, предок всех процессов в системе Linux. Обратите внимание: идентификатор родительского процеса PPID (Parent Process ID) равен 0, потому что init является первым процессом, стартующим после запуска ядра.
Процесс загрузки Linux проходит примерно так:
  1. BIOS инициализирует оборудование и читает загрузочный сектор.
  2. Главная загрузочная запись (MBR, Master Boot Record) запускает загрузчик операционной системы, который передает управление ядру.
  3. Ядро инициализирует периферийные устройства, загружает драйверы, монтирует корневую файловую систему и вызывает /sbin/init.
  4. Программа /sbin/init запускает все процессы пользовательского уровня. Она читает /etc/inittab и переходит к активизации дополнительных сценариев, указанных в /etc/inittab.
  5. Дальнейшие действия зависят от дистрибутива. В Debian следующим выполняется сценарий /etc/init.d/rcS, который передает управление в каталог /etc/rc*.d, указанный в /etc/inittab. По умолчанию Debian работает на уровне 2, поэтому выполняются все сценарии из каталога /etc/rc2.d (запуск в стиле SysV).


Содержание раздела






В системе Linux как «живым» пользователям, так и системным процессам назначаются учетные записи (accounts), необходимые для управления привилегиями и правилами доступа.
Запомните два важнейших принципа безопасности Linux.
  1. Всегда используйте минимальный уровень привилегий, необходимый для выполнения работы.
  2. Используйте сильные пароли.
Соблюдение этих двух принципов избавит вас от многочисленных огорчений и неудач.
В Linux входит набор утилит для выполнения операций с пользователями и группами: useradd, groupadd, userdel, groupdel, usermod, groupmod, passwd, chfn и chsh. Они входят в семейство «Shadow Suite», разработанное Джулианом Фрэнсисом Хо (Julianne Frances Haugh) для улучшения защиты паролей и упрощения операций управления учетными записями. Когда-то все файлы приходилось редактировать по отдельности, а шифрованные пароли хранились в файле /etc/passwd. Но поскольку файл /etc/passwd должен оставаться доступным для чтения, хранение паролей в нем, пусть даже в зашифрованном виде, чревато потенциальными неприятностями. Скопировав этот файл, любой желающий теоретически сможет вычислить пароли. Перемещение зашифрованных паролей в файл /etc/shadow, доступный только для привилегированного пользователя root, создает полезный дополнительный уровень защиты.
Команда useradd по-разному работает в разных системах. Традиционно она включала всех новых пользователей в одну группу users(100). Все домашние каталоги становились общедоступными, потому что все пользователи принадлежали к одной группе. В Red Hat эта схема была заменена схемой «User Privacy Group». Команда useradd в Red Hat создает для каждого нового пользователя приватную группу, идентификатор которой (GID) совпадает с идентификатором пользователя (UID). Разумеется, разные пользователи обладают разными потребностями; некоторые из них могут предпочесть, чтобы их каталоги были открытыми. Фун-
8.2. Отделение обычных пользователей от системных даментальный принцип безопасности гласит: «сначала все запретить, потом разрешать по мере необходимости».
adduser и addgroup, сценарные Perl-обертки для команд useradd и groupadd, появились относительно недавно. Эти сценарии полностью руководят вашими действиями при создании нового пользователя. Они очень удобны для создания отдельных учетных записей, но не для серийных (batch) операций (разве что если вы самостоятельно внесете изменения в сценарии adduser и addgroup).
В разделе 8.17 приведен сценарий для серийного создания новых пользователей и изменения паролей.


Содержание раздела







Хорошее понимание основных принципов работы файловых систем абсолютно необходимо для понимания того, как работает Linux. В системе все объекты интерпретируются как файлы — файлы данных, разделы, каналы (pipes), сокеты и устройства. Каталог также представляет собой файл, содержащий информацию о других файлах.
Спецификация иерархии файловых систем (FHS, Filesystem Hierarchy Standard) была разработана как «добровольный стандарт», соблюдаемый в большинстве версий Linux. Далее перечислены обязательные элементы корневой файловой системы Linux:
/ — корневой каталог;
/bin — важнейшие системные команды; /boot — файлы статического загрузчика; /dev — файлы устройств; /etc — системные конфигурационные файлы, специфические для хоста; /lib — общие библиотеки, необходимые для работы локальной системы; /mnt — временные точки монтировки; /opt — дополнительные программные пакеты (в Linux используются мало); /proc — текущая информация о конфигурации и состоянии ядра; /sbin — команды администрирования системы; /tmp — временные файлы (в нормальных системах они уничтожаются между перезапусками); /usr — общие файлы, данные только для чтения и двоичные файлы; /var — файлы переменного размера (такие, как почтовые ящики и журналы).

Следующие каталоги считаются необязательными, потому что они могут находиться в любом месте сети, тогда как обязательные каталоги должны присутствовать для нормальной работы компьютера:
/home личные файлы пользователя;
/root личные файлы суперпользователя.


Содержание раздела






Установка заплаток, настройка и обновления ядра Linux — весьма полезные операции, и ничего страшного в них нет. Они принадлежат к числу немногочисленных операций администрирования, требующих перезагрузки, и это обстоятельство может огорчить администраторов, гордящихся длительным временем непрерывной работы. В остальном эта процедура ничем не хуже, чем установка заплаток или обновление любых других программ.
Вам потребуются исходные тексты ядра и дсс, компилятор GNU C. Исходные тексты ядра можно получить из двух источников: на сайте вашего дистрибутива Linux или по адресу http://kernel.org. Разные дистрибутивы Linux в разной степени модифицируют ядро. Red Hat, SuSE и Mandrake вносят значительные изменения, Debian и Slackware ограничиваются минимальными модификациями. Установка «эталонного» ядра с сайта http://kernel.org может привести к нарушению работы дистрибутивов, использующих модифицированное ядро, поэтому лучше использовать исходные тексты ядра для вашего дистрибутива (в главах 2 и 3 рассказано, где достать и как установить программное обеспечение Linux, а в разделе 4.2 описан процесс сборки).
Как и в большинстве программ Linux, при установке заплатки вы не модифицируете существующее ядро. Заплатка применяется к исходным текстам, по которым затем строится новый двоичный файл, поэтому в итоге вы получаете два ядра. Это хорошо, потому что у вас остается исходное ядро на тот случай, если новое ядро не загрузится. Вы можете установить несколько различных ядер и протестировать последние версии в разных конфигурациях.
Основные причины для модификации ядра:
  • оптимизация ядра для конкретного оборудования;
  • использование новых возможностей;
  • исключение ненужных функций;
  • тестирование новых функций;
  • обновление системы.
10.1. Введение

Содержание раздела






Для системы Linux написано немало программ создания и записи CD/DVD. В настоящее время эта область стремительно развивается, и стандарты CD/DVD еще находятся в хаотическом состоянии. Существует несколько конкурирующих несовместимых стандартов, и на горизонте маячат новые стандарты — крупные компании все стремятся создать «волшебный диск», который можно было бы воспроизводить, но нельзя скопировать. Однако в настоящей главе наше внимание будет сосредоточено не на этой волнующей истории, а на базовых приемах записи дисков CD и DVD с данными. Вам потребуются пакеты cdrtools и dvd+rw-tools.
Для простого создания дисков используйте K3b — графический интерфейс для cdrtools, cdrdao, mkisofs, growisofs и других утилит командной строки. K3b упрощает подготовку дисков и предоставление пользователям привилегий root, необходимых для работы cdrecord и cdrdao. Программа логична и проста в работе; лично я считаю ее лучшим средством записи CD/DVD на всех платформах. Конечно, в мире Linux существует много других альтернатив, в том числе GCombust, X-CD-Roast и Gnome Toaster. Все эти программы просты в использовании, поэтому в настоящей главе будут использоваться средства командной строки. Хорошее владение ими также упростит работу с графическими программами, потому что вы будете понимать их команды и экзотическую терминологию.
Главное новшество ядра 2.6 заключается в том, что для дисков CD/DVD больше не требуется эмуляция SCSI. Вместо того чтобы определять адреса шины SCSI командой cdrecord -scanbus, просто укажите имя устройства:
# cdrecord dev=/dev/hdc <команды>
ВНИМАНИЕ Если вы обновили ядро 2.4 до ядра 2.6, а для работы с дисководами CD/DVD ранее использовался интерфейс IDE-SCSI, проследите за тем, чтобы записи IDE-SCSI были удалены из загрузчика. В противном случае загрузка будет сопровождаться странными ошибками. 11.1. Введение

Содержание раздела






Содержание раздела