
- •1Изучение unix® (Linux)
- •1.1Человеко-машинные системы
- •1.2Процедурные системы
- •1.3Проективные системы
- •1.4Открытые технологии
- •1.4.1История развития gnu/Linux
- •1.4.2Архитектура и философия unix®.
- •2Компоненты unix®
- •2.1Ядро
- •2.2Управление памятью
- •2.3Управление процессами
- •2.4Демоны
- •2.5Понятие файла в Linux
- •2.6Организация хранения файлов
- •2.6.1Что такое файловая система?
- •2.7Файловые системы Linux
- •2.8Утилиты
- •2.9Типы программ
- •3Процедура загрузки ос Linux
- •3.1Основные конфигурационные файлы
- •3.2Загрузка в однопользовательском режиме
- •3.3Настройка общесистемных сервисов
- •3.3.1Редактирование файла /etc/fstab
- •3.4Файлы и разделы подкачки
- •3.5Запуск демонов
- •3.6Процессы
- •3.7Управление процессами
- •3.7.1Команда ps
- •3.7.2Команда top
- •3.7.3Приоритеты
- •3.7.4Сигналы и команда kill
- •3.7.5Перевод процесса в фоновый режим
- •3.8Gnu grub загрузчик
- •3.8.1Что такое grub?
- •3.8.2Компиляция и инсталляция программного пакета grub
- •3.8.3Инсталляция загрузчика grub
- •3.8.4Конфигурация grub
- •4Справочная система Linux
- •4.1Руководство (man)
- •4.1.1Утилита man
- •4.2Утилиты whatis и apropos
- •4.3Работа с man
- •4.3.1Система info
- •4.3.3Howto файлы
- •4.3.4Ресурсы в Интеренете.
- •5Оболочка, Shell, командный интерпетатор.
- •5.1Начало работы с Shell
- •5.2Программы
- •5.2.1Выполнение команд
- •5.3Команды Shell
- •5.3.1Опции
- •5.3.2Аргументы
- •5.3.3Исключения
- •5.4Виртуальные консоли
- •5.5Псевдонимы и переменные
- •5.6Навигация и редактирование
- •5.7История команд
- •5.8Простые регулярные выражения
- •5.9Запуск команды на выполнение
- •5.10Стандартный ввод/вывод
- •5.11Фильтры
- •6Shell как язык программирования
- •6.1Сценарий
- •6.2Запуск сценария
- •6.3Встроенные переменные
- •6.4Условия проверки
- •6.4.1Сложные условия поиска:
- •6.4.2Условный оператор "if"
- •6.4.3Конструкции
- •6.4.4Оператор вызова ("case")
- •6.4.5Пустой оператор
- •6.5Функции в shell
- •6.6Популярные команды
- •6.6.1Поиск файлов.
- •6.6.2Поиск внутри файла
- •7Управление пользователями
- •7.1Структура файла /etc/passwd
- •7.2Структура файла /etc/group
- •7.3Псевдопользователи
- •7.4Команды работы с учетными записями пользователей
- •8Установка программного обеспечения
- •8.1Утилита rpm
- •8.2Утилита Apt
- •8.2.1Использование apt
- •8.2.2Установка или обновление пакетов.
- •8.2.3Удаление установленного пакета.
- •8.2.4Обновление всех установленных пакетов
- •8.2.5Поиск в репозитарии
- •9Сборка по из исходных кодов
- •9.1.1Необходимые сведения о программировании на языке Си
- •9.1.2Инсталляция из исходных текстов
- •10Файловая система
- •10.1Основы работы файловых стистем
- •10.1.1Файлы
- •10.1.2Каталоги
- •10.1.3Типы файлов
- •10.1.4Файлы физических устройств
- •10.1.5Именованные каналы (pipes)
- •10.1.6Сокеты (sockets)
- •10.1.7Символические ссылки
- •10.1.8Права доступа к файлам и каталогам
- •10.1.9Расширенные атрибуты доступа
- •10.2Управление файловой системой
- •10.2.1Разбиение диска на разделы, fdisk
- •10.2.2Создание и монтирование файловых систем
- •10.2.3Команды для работы с файлами
- •10.3Команда find и символы шаблонов для имен файлов
- •10.4Команда split — разбиваем файл на несколько частей
- •10.5Сравнение файлов и команда patch
- •10.6Команды архивирования файлов
- •10.6.1Программа tar
- •10.6.2Программа gzip
- •10.6.3Программа bzip2
- •10.6.4Примеры применения tar
- •11Сетевая файловая система (nfs)
- •11.1Запуск nfs
- •11.2Монтирование тома nfs
- •11.4Файл exports
- •12Популярные приложения
- •12.1Эффективная работа с vim
- •12.2Эффективно передвигаемся по файлу
- •12.3Вставка
- •12.4.1Использование mc
- •12.4.2Встроенный ftp-клиент
- •12.4.3Переименование групп файлов
- •13Сетевые средства Linux
- •13.1Общие сведения о сетях
- •13.1.1Стек tcp/ip
- •13.1.2Адресация Internet
- •13.1.3Система имен доменов (dns - Domain Name System)
- •13.1.4Модель Клиент-Сервер
- •13.1.5Адреса tcp/ip
- •13.1.6Преобразование адресов
- •13.2Конфигурация сетевых интерфесов
- •13.2.1Адрес сети
- •13.2.2Широковещательный адрес
- •13.2.3Адрес шлюза
- •13.2.4Адрес сервера имен
- •13.2.5Маска сети
- •13.3Файлы конфигурации tcp/ip
- •13.3.1Файл /etc/hosts
- •13.3.2Файл /etc/networks
- •13.3.3Файл /etc/init.D/network
- •13.3.4Параметры dns
- •13.3.5Файл host.Conf
- •13.3.6Файл /etc/resolv.Conf
- •13.4Команда ifconfig
- •13.5Маршрутизация
- •14Контроль состояния сети
- •14.3Команда lsof
- •14.4Проверка arp-таблиц
- •15Управление работой межсетевого экрана (брандмауэра) netfilter
- •15.1Настройка межсетевого экрана Iptables
- •15.2Порядок прохождения таблиц и цепочек
- •15.2.1Общие положения
- •15.3Как строить правила - основы
- •15.3.1Команды
- •15.3.2Критерии
- •15.3.3Общие критерии
- •15.4Неявные критерии
- •15.4.1Tcp критерии
- •15.4.2Udp критерии
- •15.4.3Критерий mac
- •16Shorewall: iptables с человеческим лицом
- •16.1Базовая настройка
- •16.2Фильтрация трафика
- •16.3Дополнительные возможности
- •16.3.1Вместо заключения
- •16.4Приложение. Устанавливаем Shorewall
- •17Управление ядром
- •17.1Версия ядра
- •17.2Причины для пересборки ядра
- •17.3Подготовка
- •17.4Компиляция (Make)
- •17.5Установка заплат
- •17.6Сборка единичного модуля
- •18Мониторинг системы
- •18.1Система ведения логов
- •18.2Демон Syslogd
- •18.2.1Параметры запуска
- •18.2.2Сигналы
- •18.2.3Файл конфигурации
- •18.2.4Советы по настройке syslog
- •18.3Logger - утилита записи в журнал
- •18.4Logrotate или "что делать со старыми журналами?"
- •18.5Logwatch или "как извлечь полезную информация из кучи мусора?"
- •19Cron - планирование заданий
- •19.1Настройка задач Cron
- •19.2Запуск и остановка службы
- •19.3Системное время
- •20Резервное копирование в Linux
- •20.1Использование серверов резервного копирования
- •20.2Аппаратные средства, предназначенные для создания резервных копий
- •20.3Способы резервного копирования
- •20.3.1Резервное копирование, инициируемое клиентом
- •20.3.2Резервное копирование, инициируемое сервером
- •20.4Использование tar
- •20.4.1Возможности tar
- •20.4.2Список команд tar:
- •20.4.3Использование smbtar
- •20.4.4Создание разделяемых объектов резервного копирования
- •20.5Обзор и установка системы резервного копирования BackupPc
- •20.5.1Введение
- •20.5.2Требования к установке
- •20.5.3Настройка BackupPc
- •20.5.4Интерфейс
- •21Основы безопасности Linux
- •21.1Меры предосторожности
- •21.2Принципы защиты
- •21.3Идентификаторы пользователя и группы пользователей
- •21.4.1Безопасность файлов
- •21.5Важные системные файлы
- •21.6Проблемы защиты /etc/passwd и /etc/shadow
- •21.6.1Скрытые пароли
- •21.6.2Устаревание паролей
10.2.2Создание и монтирование файловых систем
В предыдущих разделах мы кратко рассмотрели основные команды для работы с уже сформированной файловой системой. Теперь надо остановиться на вопросе о том, как создать файловую систему и модифицировать ее.
Общее дерево файлов и каталогов системы Linux формируется из отдельных "ветвей", соответствующих различным физическим носителям. Часто говорят, что оно формируется из отдельных файловых систем. Говорить так позволяет тот факт, что в UNIX® нет понятия "форматирования диска" (и команды форматирования), а используется понятие "создание файловой системы". Когда мы получаем новый носитель, например, жесткий диск, мы должны создать на нем файловую систему. То есть каждому носителю ставится в соответствие отдельная файловая система. Чтобы эту файловую систему использовать для записи в нее файлов, надо ее вначале подключить в общее дерево каталогов ("смонтировать"). Вот и получается, что можно говорить о монтировании файловых систем или о монтировании носителей (с созданными на них файловыми системами).
Можно еще в виде предисловия отметить, что обычно жесткий диск предварительно разбивается на разделы (особенно современные диски, имеющие емкость, исчисляемую десятками гигабайт). Создание разделов облегчает выполнение резервного копирования, решение задач разграничения полномочий, повышает производительность и ограничивает потенциальный ущерб, наносимый вышедшими из-под контроля программами. Поэтому в дальнейшем будем говорить о создании файловой структуры в одном разделе (диск, не имеющий разделов, можно тоже рассматривать как один раздел).
Еще один момент, существенный в контексте этого раздела, связан с тем, что Linux может работать с разными типами файловых систем. "Родной" файловой системой для него в настоящее время является "вторая расширенная файловая система" (second extended filesystem) ext2fs. Ho в Linux можно работать и с 16-разрядной файловой системой FAT, создаваемой в MS-DOS, и с 32-разрядной FAT32, разработанной для MS Windows 95, и с файловой системой ISO9660, используемой для записи информации на CD-ROM, и с другими типами файловых систем (в число которых пока, правда, не входит NFTS). То есть, при рассмотрении вопросов создания и монтирования файловых систем надо постоянно помнить о том, что типы файловых систем на разных носителях могут различаться.
Итак, вначале рассмотрим случай, когда требуется создать в каком-то разделе диска файловую систему. Будем предполагать, что создается файловая система типа ext2fs (создание файловых систем других типов — тема для книг, посвященных другим операционным системам). Создание файловой системы типа ext2fs подразумевает создание в данном разделе на диске суперблока, таблицы индексных дескрипторов и совокупности блоков данных. Делается все это все с помощью команды mkfs. В простейшем случае достаточно дать эту команду в следующем формате:
[root]# mkfs -t ext2 /dev/hda5,
где /dev/hda5 надо, естественно, заменить указанием на соответствующее устройство или раздел. Например, если вы хотите создать файловую систему на дискете, то команда примет вид:
[root]# mkfs -t ext2 /dev/fd0
(Можно сказать, что мы "отформатировали дискету", но учтите, что в DOS или Windows такие дискеты не читаются. Для создания под Linux дискет, которые бы читались в DOS или Windows, служат специальные утилиты.)
После выполнения команды mkfs в указанном разделе будет создана файловая система ext2fs (еще раз повторю, что подробнее об этом вы узнаете в гл. 16). В новой файловой системе автоматически создается один каталог с именем lost+found. Он используется в экстренных случаях программой fsck, поэтому не удаляйте его. Для того, чтобы начать работать с новой файловой системой (например, переписать какие-то файлы на новый носитель), необходимо подключить ее в общее дерево каталогов, что делается с помощью команды mount.
В качестве параметров команде mount надо, как минимум, указать устройство и "точку монтирования". Точкой монтирования называется тот каталог в уже существующем и известном системе дереве каталогов, который будет теперь служить корневым каталогом для подключаемой файловой системы. Пример: команда
[root]# mount /dev/hdb1 /mnt/disk2
подсоединяет файловую систему первого раздела на втором жестком диске к каталогу /mnt/disk2 (этот каталог должен существовать!).
Отметим, что после монтирования файловой системы в каталог /mnt/disk2 прежнее содержимое этого каталога станет для вас недоступно (так же, как информация о прежнем владельце и правах доступа к этому каталогу) до тех пор, пока вы не размонтируете вновь подключенную файловую систему. Прежнее содержимое не уничтожается, а просто становится временно недоступным. Поэтому в качестве точек монтирования лучше использовать пустые каталоги (заранее заготовленные).
В той простейшей форме, которую мы использовали в приведенном выше примере, команда mount будет работать только при условии, что все недостающие ей для выполнения параметры она найдет в файле /etc/fstab. Если же такого файла не существует, или он не содержит необходимых данных, надо применять более полную форму команды mount:
[root]# mount -t type device path
где type задает тип файловой системы, device указывает, на каком устройстве (в каком разделе) она находится, а path задает точку монтирования.
Конфигурационный файл /etc/fstab используется в основном для того, чтобы обеспечить автоматическое монтирование файловых систем в процессе загрузки. Каждая строка этого файла содержит описание одной файловой системы и состоит из 6 полей, разделяемых пробелами (для удобочитаемости поля обычно выравнивают, но делать это не обязательно):
имя устройства. В качестве имени может использоваться как имя локального устройства, например, /dev/hda5, так и путевое имя сетевой файловой системы NFS, например, pc21:/home/jim, что указывает на каталог /home/jim на машине с именем pc21;
точка монтирования (полное имя каталога, в который будет монтироваться файловая система);
тип файловой системы;
опции монтирования (по умолчанию подразумевается rw — чтение, запись);
уровень дампа. Это поле используется программой dump, предназначенной для создания резервных копий. Если файловая система должна участвовать в процессе резервного копирования, то здесь должно стоять число 1, если нет — 0. Возможны и другие значения (см. руководство к программе dump);
порядок (приоритет) проверки файловых систем программой fsck. Системы с меньшими значениями этого поля проверяются раньше. Системы с одинаковыми номерами проверяются, если это возможно, параллельно.
В настоящее время Linux поддерживает следующие типы файловых систем (см. страницу man fs, где дано их краткое описание): minix, ext, ext2, xia, msdos, umsdos, vfat, proc, nfs, iso9660, hpfs, sysv, smb, ncpfs. Вместо типа файловой системы в поле "тип файловой системы" (и в опции -t команды mount) можно задать значение auto. В таком случае команда mount попытается самостоятельно определить тип монтируемой файловой системы. Однако это во многих случаях приводит к ошибкам, поэтому лучше указать тип явно. Можно перечислить несколько типов (через запятую). В команде mount можно также вначале задать список типов файловых систем, которые не надо монтировать. Этот список задается с помощью флага no. Такая возможность может оказаться полезной в том случае, когда используется команда mount с аргументом -a. По этой команде производится монтирование всех файловых систем, перечисленных в файле /etc/fstab. С помощью дополнительного аргумента -t type в этом случае можно ограничиться монтированием файловых систем только определенного типа, а с помощью флага no можно указать типы, которые не надо монтировать. Например, команда
[root]# mount -a -t nomsdos,ext
монтирует все файловые системы, за исключением тех, которые относятся к типам msdos и ext.
Когда монтируется файловая система, упомянутая в файле /etc/fstab, то в команде монтирования достаточно указать только один аргумент — либо имя устройства, либо точку монтирования. Все остальные параметры команда mount возьмет из файла /etc/fstab.
Обычно монтировать файловые системы может только суперпользователь, но если в поле опций монтирования файла /etc/fstab указать опцию user, то соответствующую файловую систему смогут смонтировать все пользователи. Так, если в /etc/fstab имеется строка
/dev/cdrom /cd iso9660 ro,user,noauto,unhide,
то любой пользователь сможет смонтировать файловую систему на своем CDROM, используя команду
[user]$ mount /dev/cdrom
или
[user]$ mount /cd
В Таблица 11 .6 приведены еще некоторые опции, которые могут использоваться в команде mount
и в файле /etc/fstab
Команды mount и umount (см. ниже) поддерживают в актуальном состоянии таблицу (или перечень) смонтированных файловых систем. Этот перечень сохраняется на диске в виде файла /etc/mtab. Этот файл можно просмотреть непосредственно, или вывести на экран командой mount без аргументов.
Если вы хотите монтировать какую-то систему только для чтения из нее, то в соответствующей строке файла /etc/fstab надо либо указать опцию r (read only, по умолчанию подразумевается rw, т. е. и чтение, и запись), либо использовать команду mount с параметром -r.
Перед тем как отключить от компьютера носитель, на котором расположена файловая система, (чаще всего это требуется делать с дискетами в дисководе, но иногда и с носителями других типов), необходимо "размонтировать" файловую систему (другими словами, "размонтировать носитель"). Эта операция выполняется с помощью команды umount (замечание для тех, кто знает английский язык: имя команды не является
Таблица 11.6 Основные опции команды mount
Опция |
Значение |
async |
Весь ввод-вывод в файловую систему должен производиться асинхронно |
auto |
Файловая система может монтироваться командой mount c опцией -a |
defaults |
Использовать набор опций, задаваемый по умолчанию: rw, suid, dev, exec, auto, nouser, async |
dev |
Файлы байт-ориентированных и блок-ориентированных устройств в файловой системе интерпретируются как специальные файлы |
noauto |
Файловая система может монтироваться только явно. Опция -a не приведет к монтированию файловой системы |
exec |
Разрешает выполнение двоичных файлов |
remount |
Позволяет перемонтировать уже смонтированную файловую систему. Обычно используется для изменения опций монтирования файловой системы, особенно для того, чтобы расширить права доступа (вместо прав только на чтение установить права на чтение/запись) |
ro |
онтирует файловую систему только на чтение |
rw |
Монтирует файловую систему для чтения и записи |
suid |
Позволяет задействовать биты смены идентификатора пользователя и смены идентификатора группы |
sync |
Весь ввод-вывод в файловую систему должен производиться синхронно |
user |
Позволяет непривилегированному пользователю монтировать файловую систему. Для таких пользователей монтирование всегда выполняется с опциями noexec, nosuid, nodev |
nodev |
Файлы байт-ориентированных и блок-ориентированных устройств в файловой системе не интерпретируются как специальные файлы |
nosuid |
Не позволяет задействовать биты смены идентификатора пользователя и смены идентификатора группы |
nouser |
Запрещает непривилегированному пользователю монтировать файловую систему |
правильным английским словом, так что не вставляйте в него лишнюю букву "n"). В качестве аргумента команде umount надо дать либо имя устройства, либо точку монтирования.
Демонтировать файловую систему может только тот пользователь, который ее смонтировал (и суперпользователь, конечно). Для того, чтобы операцию демонтирования мог выполнить любой пользователь, в поле параметров соответствующей строки файла /etc/fstab надо указать опцию users (вместо user).
Демонтирование файловой системы возможно только тогда, когда в ней нет открытых файлов (в частности, не должно быть запущено программ, файлы которых расположены в данной системе) и в системе нет процессов, использующих эту файловую систему (т. е. демонтируемая файловая система не должна быть занятой).
Надо признать, что, в сравнении с DOS или Windows, работа с дискетами и другими сменными носителями (CD-ROM, Iomega Zip и т.п.) в ОС типа UNIX® менее удобна. Для того, чтобы обратиться к дискете, вы должны вначале смонтировать ее в какой-то каталог в файловой структуре. А для смены дискеты требуется вначале размонтировать предыдущую дискету, а затем смонтировать новую. То же самое с другими сменными носителями. Поскольку с дискетами и другими сменными носителями так или иначе приходиться работать, лучше сразу заготовить в файловой структуре стандартные каталоги для монтирования всех имеющихся в вашем распоряжении типов сменных носителей. Например, создать каталог /mnt, а в нем подкаталоги floppy, cdrom, zip и т. д.
Пожалуй, это все, что нужно знать начинающему пользователю системы Linux о файловых системах. Еще раз повторю, что здесь была рассмотрена только одна сторона файловой системы ext2fs, обращенная к пользователям, т. е. в основном, логика построения структуры каталогов и файлов. Обратная сторона файловой системы, ее внутреннее устройство, а также различные типы файловых систем, в настоящем разделе только упоминались по мере необходимости.