- •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Устаревание паролей
21.4.1Безопасность файлов
Надежная операционная система нуждается в надежной файловой системе. В случае Linux это файловыея системы ext2 (EXTended, version 2), ext3,reiserfs, xfs, jfs. Фактически, они аналогичны файловым системам всех UNIX®-подобных ОС. Поддерживаются права доступа (read, write, execute, sticky bit, suid, sgid и так далее), принадлежность (user, group, other) и другие стандартные функции. Поддерживается журналирование и списки контроля доступа (Access Control Lists). Надо отметить, что Linux имеет превосходный программный RAID, поддерживая уровни 0, 1 и 5 очень хорошо (RAID не связан с защитой, но связан со стабильностью). Имеется превосходный HOWTO по файловым системам в Linux на http://www.penguin.cz/~mhi/fs/Filesystems-HOWTO/Filesystems-HOWTO.html.
Основные утилиты для работы с файлами: “ls”, “chown”, “chmod” и “find”. Впрочем, есть еще много других, в том числе ln (создает связи), stat (выдает сведения о файле). Для создания и управления файловыми системами есть “fdisk” (старый добрый fdisk), “mkfs” (MaKe FileSystem, форматирует разделы) и “fsck” (FileSystem ChecK, исправляет ошибки на дисках). Linux может быть легко поставлена под угрозу, если получен доступ к некоторым файлам, например зашифрованным паролям, чтобы использовать против них подбор паролей по словарю. Это общая цель нападающих, приходящих по сети (плохо написанные CGI- скрипты, кажется, любимый способ). Еще хуже, если пользователь получит доступ на запись к системным файлам. Тут можно ждать чего угодно: от захвата управления до случайного стирания половины системы. Одной из дыр является "tmp races", когда setuid-программа (работает с правами root) создает временный файл, обычно в /tmp, и не проверяет существование ссылок. Хакер может создать жесткую ссылку на данный файл, и когда исходный файл будет стерт, добраться по ссылке до нужного файла, например, файла паролей . Как предотвратить такие нападения?
Просто: правильно настроить систему. Есть два каталога, в которые пользователи должны иметь право записи: /tmp и /home, размещение которых на отдельных разделах позволяет избежать заполнения пользователями критичных файловых систем (переполненная система / приводит к очень плохим последствиям). Переполненная система /home приведет к тому, что никто из пользователей в систему зайти не сможет (кроме root: его каталог /root). Разместите на отдельном разделе /tmp и /home, если пользователям предоставлен shell-доступ к серверу, размещение на отдельном разделе /etc, /var и /usr тоже хорошая идея.
Первичные инструментальные средства для получения информации относительно файлов и файловых систем все относительно простые и легки в использовании. “df” (показывает использование дисков) также покажет использование inode: “df –i” (inodes хранит данные о файлах, их расположение на диске, и Вы можете исчерпать их прежде, чем Вы исчерпаете дисковое пространство, если Вы имеете много маленьких файлов. Это кончается сообщением об ошибке "disk full" когда “df” сообщает, что имеется свободное пространство (“df –i” покажет, что все inodes используются). Это подобно записям о файлах в Windows с vfat, которая реально хранит имена в формате 8.3, используя несколько записей для длинных имен с максимумом в 512 записей на каталог. Утилита “du” сообщит Вам размер относительно каталогов, который является очень полезным для выяснения, какой сколько занимает, и куда же делось все место на диске. Команда “du ” отобразит текущий каталог и все его подкаталоги, к которым Вы имеет доступ. Команда “du /dir/name” отобразит то же самое для заданного каталога. Есть опция “-s” для резюме, которое является полезным для каталогов подобных /usr/src/linux. Чтобы получить информацию относительно файлов, первый инструмент ls, “ls” показывает только имена файлов/каталогов, “ls –l ” показывает также размер файлов, их принадлежность, права доступа и еще ряд технических сведений. Команда 'ls -la' также отобразит сведения о каталогах и файлах, имена которых начинаются с точки (“.”), что нормально для файлов настройки (.bash_history, .bash_logout). Утилита “ ls” имеет несколько дюжин параметров для разной сортировки результатов. Подробности можно получить командой “man ls”. Команда “stat ” сообщает всю жизненную статистику относительно данного файла (дата создание, последнее обращение, inode и проччее).
Для управления файлами и каталогами есть утилиты cp, mv, rm (CoPy, MoVe и ReMove), для настройки прав доступа есть chown (задает владельца и группу файла (группа "прочие" значит "прочие", как в Novell или группа 'everyone' в NT), chmod (меняет права доступа к файлу). Основные права: read (чтение), write (заись) и execute (выолнение), дополнительно есть setuid (наследование идентификатора владельца), setguid (наследование группы владельца, бывает нужно для запуска некоторых программ, которые хотят, чтобы их запускал определенный пользователь, обычно root), sticky bit и другие. Используя присоединение пользователей к группам и команды chmod и chown можно имитировать ACL, но гораздо менее гибко, чем рава доступа в Sun/AIX/NT (по слухам, в ext3 появятся полноценные списки доступа). Пожалуйста, будьте особенно осторожны с setuid/setguid- программами, так как любые проблемы в такой программе сильно вырастут по сравнению с обычной!
Очень хороша команда “find”. Она ищет файлы и может фильтровать их на основании прав доступа, владельца, размера, даты, имени и множества других критериев. Вот примеры поиска setuid/guid-программ:
чтобы найти все setuid-программы:
find / -perm +4000
чтобы найти все setgid-программы:
find / -perm +2000
Основой защиты файлов являются права доступа. В Linux файл принадлежит ('owned') пользователю и имеет 3 набора прав доступа для самого пользователя (User), его группы (Group) и все остальных (Other). Вы можете установить кому принадлежит файл (и к какой группе относится) командой:
chown user:group object
здесь object является файлом, каталогом или чем-то еще. Чтобы закрыть выполнение файла кем-либо, надо написать:
chmod x="" object
здесь x принимает значения a|g|u|o (All/User/Group/Other), и устанавливает права доступа в "" (никакого доступа вообще), а object может быть каталогом или файлом. Помните, что root ВСЕГДА может менять права доступа к файлу, и читать/записывать/выполнять его, Linux не обеспечивает защиту root. Также, кто бы ни обладает каталогом, в котором находится
объект, он также может менять права доступа к объекту в данном каталоге (даже если сам объект ему и не принадлежит). Так как root владеет каталогом /, он может менять права доступа к любому объекту в файловой системе.
Безопасное удаление файлов
Одна из вещей, которые обычно забывают, в том, что если файл удаляется, то реально-то он никуда не денется, и если его не уничтожить каким-то способом, то восстановить данные из него в принципе возможно. Есть программы, которые переписывают файл при удалении, что делает гарантированно невозможным восстановление его содержимого.
wipe (durakb@crit2.univ-montp2.fr)
wipe надежно удаляет данные, перезаписывая файл многократно разными образцами. Вы можете использовать wipe для файлов или устройств. В первом случае помните, что имя файла и техническая информация о нем удалена не будет, будет уничтожено только его содержимое, после чего файл будет бесполезен для какого-либо восстановления. Скачать wipe можно с http://gsu.linux.org.tr/wipe.
wipe (thomassr@erols.com)
Еще один удалитель для файлов, но он не поддерживает чистку устройств. Доступен на http://users.erols.com/thomassr/zero/download/wipe.
