Рейтинговые книги
Читем онлайн Linux: Полное руководство - Денис Колисниченко

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 111 112 113 114 115 116 117 118 119 ... 158

iptables -A INPUT --mac-source 11:12:13:14:15:16 -j ...

Потом вы уже сами определите действие после опции -j. Если же нам нужно выделить все пакеты, кроме тех, которые присылает узел с этим MAC-адресом, то нужно использовать символ инверсии «!».

IPTables позволяет указывать несколько портов (не больше 15) через запятую, например:

iptables -A INPUT -p tcp -m multiport --sport 22,53,80,110 -j ...

Вместо портов источника вы можете указать порты назначения, используя опцию --dport.

Если вы хотите одновременно указать как порты источника, так и порты назначения, используйте опцию --port:

iptables -A INPUT -p tcp -m multiport --port 22,53,80,110

19.6.6. Фильтрация по отдельным пользователям

Если IPChains умел отфильтровывать только пакеты, исходящие от определенного компьютера, то теперь мы можем выделять пакеты отдельных пользователей. Для этого предназначены следующие критерии, которые могут использоваться только для исходящих пакетов в цепочке OUTPUT:

♦ --uid-owner UID — отбор пакетов по UID пользователя;

♦ --gid-owner GID — отбор по группе (GID);

♦ --pid-owner PID — отбор по идентификатору процесса;

♦ --sid-owner SID — отбор по идентификатору сеанса.

Например, выделить все пакеты, исходящие от пользователя с UID 500, можно так:

iptables -A OUTPUT -m owner --uid-owner 500

Аналогично мы можем ограничивать исходящие пакеты группы или процесса:

iptables -A OUTPUT -m owner --gid-owner 0

iptables -A OUTPUT -m owner --pid-owner 78

Естественно, мы можем сделать это только для исходящих пакетов, поскольку мы не знаем, какой UID имеет пользователь другой системы: информация об этом не передается по протоколу TCP.

Глава 20

Настройка ядра

20.1. Многообразие ядер Linux

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

2.6.x

Это главная ветка ядер Linux на настоящий момент, которую принято считать официальной и которая поддерживается самим Линусом Торвальдсом. Политика этой ветки более либеральна по сравнению с политикой ветки 2.4: в нее включаются не только исправления багов, но и такие изменения, для которых раньше заводили отдельную, экспериментальную, ветку. Все ядра этой ветки можно найти на сайте www.kernel.org.

2.4.x

В свое время ядра 2.4.x были основными — они встраивались во все дистрибутивы. Однако им на смену пришли ядра 2.6.x, и о ядрах классической ветки не стоило бы говорить, если бы не их исключительная стабильность (по сравнению с ядрами 2.6.x). И хотя они не обладают многими достоинствами и качествами 2.6.x, для тех, кому важна стабильность — они еще служат хорошую службу.

Более того, даже в некоторые современные дистрибутивы еще встраивается эти ядра (например, в Slackware 10.1). На сегодняшний момент эта ветка по прежнему очень активно поддерживается, а руководит данным процессом Марсело Тосатти, очень молодой программист бразильской компании Conectiva.

В качестве обновлений выступают исправления обнаруженных ошибок, ну и периодически — новые драйвера.

Так же как и ядра 2.6.x, ядра ветки 2.4.x. можно получить на сайте www.kernel.org.

2.6.x.у

Выше было сказано, что ядра ветки 2.6.x не отличаются особой стабильностью по сравнению с теми же 2.4.x. Даже были намерения сменить схему именования новых ядер. Однако этого не произошло, просто создали дополнительную ветку, которая выступает под грифом «stable» (то бишь стабильная), и которая известна под именем 2.6.x.у.

Ведут ветку -stable товарищи по имени Грег Кроа-Хартман и Крис Райт. В ней появляются только те обновления, которые непосредственно касаются повышения стабильности ядра и решают конкретные проблемы. Никакие обновления с новыми функциональными возможностями и т.п. в ядра этой ветки не вносятся.

2.6.x-mm

Если в предыдущем разделе мы рассмотрели наиболее стабильную ветку ядер Linux поколения 2.6, ветку 2.6.x-mm можно считать наименее стабильной. Она включает в себя все возможные патчи ядра, которые были выпущены.

Данная ветка является скорее экспериментальной, нежели имеющей практическое значение. Очень многое к Линусу в его ветку 2.6.x попадает именно через фильтр 2.6.x-mm. В частности сейчас в этих ядрах уже имеется поддержка файловой системы Reiser4, которая с легкостью выигрывает все тесты по производительности, и технологии FUSE (http://fuse.sourceforge.net). реализующей поддержку файловых систем в пользовательском пространстве.

Ведет ветку Эндрю Мортон, а патчи ветки доступны в двух видах:

♦ «все в одном» — единый мегапатч;

♦ «каждый сам по себе» — архив патчей, которые можно применять по отдельности.

Скачать их можно по адресу http://kernel.org/patchtypes/mm.html,

2.6.x-mm-jedi

Ветка 2.6.x-mm-jedi является, как это можно понять из названия, ответвлением 2.6.x-mm. И по сути считается stable-версией последней. Здесь собираются самые критичные исправления по различным версиям ядер 2.6.x-mm.

Доступ к данным патчам можно получить по адресу ftp://ftp.c9x.org/pub/linux-kernel.

2.6.x-pre и 2.6.x-rc

Ядра этих веток представляют собой предварительные версии ядер, которые впоследствии должны стать официальными. При этом принято считать, что ядра -pre являются наиболее «сырыми» и в них могут быть привнесены существенные изменения, а ядра -rc — уже более-менее стабильными.

2.6.x-tiny

Автор и ведущий данной ветки, Мэтт Мэколл, поставил себе задачу минимизировать занимаемые ядром дисковое пространство и объем памяти. Автор утверждает, что его ядро может быть запущено даже на машине с 2 Мб памяти.

Детально ознакомиться с этим направлением и получить само ядро можно на сайте http://selentic.com/tiny.

2.6.x-ac

Эта ветка, ведомая Аланом Коксом, призвана аккумулировать все исправления и патчи, касающиеся в основном драйверов. Кстати говоря именно это ядро используется в дистрибутивах Fedora Core.

Проект доступен по адресу http://kernel.org/patchtypes/ac.html

Прочие

Среди прочих следует также отметить:

♦ 2.6.x-ck — в этой ветке аккумулируются патчи к диспетчерам ввода/вывода, а также направленные на общее повышение отзывчивости системы. Адрес: http://ck.kolivas.org/patches/2.6.

♦ 2.6.x-RT — данная ветка направлена на обеспечение использования Linux в системах реального времени (мягкого и жесткого), насколько это вообще возможно сделать применительно к Linux.

20.2. Зачем настраивать ядро?

В главе 7 я уже говорил о том, что в обязанности ядра ОС Linux входит не только реализация концепций процессов, виртуальной памяти, файловой системы и тому подобных составляющих UNIX, но и организация взаимодействия с оборудованием компьютера. Это взаимодействие осуществляют драйверы устройств, которые в современных (выше 2.0) ядрах могут как встраиваться в ядро статически, так и подключаться в виде модулей.

Хорошо известно, как многочисленно и разнообразно оборудование персональных компьютеров, на которых и работает ОС Linux, Ядро должно уметь адаптироваться к любой аппаратной среде. Этой цели служат параметры ядра — динамические или сообщаемые ему при загрузке — и механизм динамического подключения модулей.

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

В этой главе я рассмотрю три основных способа настройки ядра:

♦ модификация динамических параметров ядра через псевдофайловую систему /proс;

♦ использование загрузчика для передачи ядру параметров на этапе начальной загрузки;

♦ пересборка ядра из исходных кодов.

20.3. Динамические параметры ядра

Файлы в каталоге /proc — это на самом деле информационные каналы, реализующие интерфейс между ядром и прикладными программами. Они разработаны для повышения гибкости ядра, позволяя системному администратору корректировать его поведение «на лету», без перезагрузки. Файловая система procfs называется виртуальной, потому что в действительности это карта работающей системы в иерархическом виде, создаваемая ядром и присоединяемая к обычной файловой системе. Некоторые команды (например, ps) извлекают информацию о состоянии системы, не прибегая к системным вызовам, а читая непосредственно из /proc.

Хотя часть виртуальных файлов содержит текстовые данные, для их просмотра и изменения обычный ASCII-редактор неприменим: ведь они мало того что не существуют физически, так еще и ядро может в любое время внести в них изменения. Читать такие файлы нужно командой cat, а записывать — перенаправляя вывод команды echo. Например, чтобы увидеть максимальное количество файлов, которые можно открыть в одном процессе, введите команду

1 ... 111 112 113 114 115 116 117 118 119 ... 158
На этой странице вы можете бесплатно читать книгу Linux: Полное руководство - Денис Колисниченко бесплатно.
Похожие на Linux: Полное руководство - Денис Колисниченко книги

Оставить комментарий