10 апреля 2010 г.

Файловая система /proc/sys. Часть II


(продолжение, начало тут)

 

/proc/sys/kernel/

Эта директория содержит различные конфигурационные файлы, которые непосредственно влияют на работу ядра. Некоторые наиболее важные файлы:

  • acct - контроллирует процесс ведения журнала на основе учета доли свободного места в файловой системе, содержащей журнал. По умолчанию, файл выглядит следующим образом:  4 2 30
Первое значение определяет процент свободного пространства, необходимого для продолжения процесса ведения журнала, второе значение устанавливает порог в процентах, по достижении которого процесс ведения журнала приостанавливается. Третье значение задает интервал в секундах, через который ядро опрашивает файловую систему для проверки необходимости приостановки или возобновления ведения журнала.  
  
  • ctrl-alt-del - определяет будет ли комбинация Ctrl - Alt - Delete перезагружать компьютер (1) или нет (0). 
  • domainname - отвечает за доменное имя системы, такое как example.com
  • exec-shield - отвечает за функцию ExecShield ядра (не все дистрибутивы поддерживают эту возможность - прим. перев.), которая обеспечивает защиту от некоторых видов атак переполнения буфера. Для данного виртуального файла возможны два значения: 0 - отключить Exec Shield, 1 - Включает Exec Shield (значение по умолчанию).

Важно! 

Если в системе работают приложения, которым важна высокая безопасность и которые были запущены при отключенной защите Exec Shield, то после включения Exec Shield они должны быть перезапущены. 
  • exec-shield-randomize - Включает дополнительную рандомизацию размещения различных объектов в памяти. Это серьезно затрудняет возможность поиска атакующим местонахождения программ и демонов в памяти. Каждый раз, когда программа или демон запускается, она помещается каждый раз в новое место в памяти. Для данного файла имеются следующие возможные значения: 0 - возможность отключена (полезно для отладки приложений), 1 - возможность включена (это значение по умолчанию) 

Примечание: 
Параметр exec-shield также должен быть установлен в 1 для того, чтоб exec-shield-randomize мог работать

  • hostname - определяет имя хоста. 

  • hotplug - определяет утилиту, которая будет использоваться при "горячем" подключении устройств для их конфигурировании. Чаще всего это используется для работы с USB и Cardbus PCI. Значение по умолчанию /sbin/hotplug должно изменяться только в том случае, если вы тестируете новую программу для данной роли. 

  • modprobe - устанавливает местонахождение программы, используемой для загрузки модулей ядра, которую вызывает kmod. Значение по умолчанию: /sbin/modprobe. 
  • msgmax - Устанавливает максимальный размер любого сообщения, отправляемого одним процессом другому. Значение по умолчанию 8192 байта. Будьте осторожны при повышении этого значения, поскольку очередь сообщений между процессами хранится в памяти ядра, которая не может быть помещена в раздел подкачки. Любое увеличение msgmax повышает требования к наличию оперативной памяти в системе. 
  • msgmnb - устанавливает максимальное количество байтов в одной очереди сообщений. По умолчанию равно 16384. 
  • msgmni - устанавливает максимальное количество идентификаторов очереди сообщений. По умолчанию равно 16. 
  • osrelease - показывает номер версии загруженного ядра Linux. Этот файл может быть изменен только путем изменения исходного кода ядра и его пересборки.  
  • ostype - отображает тип операционной системы. По умолчанию его значение - Linux и оно может быть изменено только путем изменения исходного кода ядра и его пересборки. 
  • overflowgid and overflowuid - Определяет фиксированные идентификаторы группы и пользователя для использования системными вызовами на архитектурах, которые поддерживают только 16-битные идентификаторы групп и пользователей. 
  • panic - Определяет количество секунд, которые ядро ждет до перезагрузки после kernel panic По умолчанию имеет значение 0, которое отключает автоматическую перезагрузку. 
  • printk - Этот файл определяет различные настройки, связанные с выдачей сообщений или ведением лог-файлов об ошибках. Каждое сообщение об ошибке, имеет идентификатор (LogLevel), отражающий уровень ее серьезности. Эти идентификаторы имеют следующие значения (меньшее значение - бОльшая серьезность): 

0 - (kernel emergency) - аварийное состояние, система больше не функционирует. 
1 - (kernel alert) - тревожное сообщение. Немедленно должны быть приняты меры по устранению ситуации. 
2 - (kernel critical) - сообщение о критическом состоянии ядра. 
3 - (kernel error) - сообщение об ошибке в ядре. 
4 - (kernel warning) - предупреждение ядра. 
5 - (kernel notice) - уведомление ядра о нормальном, но важном состоянии. 
6 - (kernel info) - информационное сообщение ядра. 
7 - (kernel debug-level messages). - сообщения отладки ядра.

В данном файле находятся четыре значения:

6 4 1 7
Каждое из этих значений определяет различные правила, относящиеся к сообщениям об ошибках. Первое значение называется console loglevel и определяет наименьший приоритет сообщений выводимых на консоль системы (т. е. сообщения с более высоким приоритетом (и меньшим числом LogLevel будут попадать на консоль - прим. перев.). Второе значение (default_message­_level) устанавливает значение по умолчанию для сообщений, LogLevel которых явно не указан. The third value sets the lowest possible loglevel configuration for the console loglevel. Третье значение (minimum_console_loglevel) определяет минимально возможный LogLevel для консоли. Последнее значение (default_console_loglevel) представляет собой величину по умолчанию для первого параметра. 

  • random/ - данная директория содержит ряд параметров, относящихся к процессу генерации ядром случайных чисел 
  • rtsig-max - определяет максимальное число POSIX-сигналов реального времени (POSIX real-time signals), которые могут находится в очереди в данное время. Значение по умолчанию 1024. 
  • rtsig-nr - содержит текущее количество POSIX-сигналов реального времени, находящихся в очереди ядра.  
  • sem - определяет параметры семафора в ядре системы. Семафор - это объект межпроцессного взаимодействия UNIX System V (System V IPC object), который используется для контроля конкретного процесса. 
  • shmall - устанавливает общий объем разделяемой памяти, который может быть использоваться в системе в данное время (в байтах). По умолчанию его значение равно 2097152. 
  • shmmax - устанавливает максимально возможное значение сегмента разделяемой памяти размером, который позволяет использовать ядро (в байтах). По умолчанию, это значение 33554432. Тем не менее, ядро поддерживает гораздо большее значение, чем указанное.
  • shmmni - устанавливает максимальное число сегментов разделяемой памяти для всей системы, в байтах. По умолчанию это значение равно 4096. 
  • sysrq - активирует «магические» сочетания клавиш System Request Key, если эта величина имеет значение, отличное от нуля 0 (по умолчанию отключено). Данные сочетания позволяют посылать сигналы ядру системы без ввода какого-либо пароля. Например, они позволяют немедленно выключить или перезагрузить систему, синхронизировать все смонтированные файловые системы или вывести важную информацию на консоль. Более подробно об этих сочетаниях клавиш написано ниже в конце данного поста.

Предупреждение!

Включение данной возможности представляет угрозу безопасности системе, поскольку предоставляет злоумышленнику полный доступ к системе. По этой причине по умолчанию она отключена. За дополнительной информацией обратитесь к файлу /usr/share/doc/kernel-doc-/Documentation/sysrq.txt 

  • sysrq-key - определяет код клавиши для системы System Request Key (84 по умолчанию). 
  • sysrq-sticky - определяет как будет система «магических клавиш» реагировать на нажатие комбинации клавиш. Допускаются следующие значения:
0 - Alt + SysRq + <код запроса> должны быть нажаты одновременно. Это значение по умолчанию. 1 - Alt + SysRq должны быть нажаты одновременно, но системный код запроса может быть нажат в течение времени (в секундах), указанных в файле /proc/sys/kernel/sysrq-timer (значение по умолчанию 10). 
  • tainted - показывает количество загруженных модулей ядра с лицензией, отличающейся от GPL. Возможные значения (приведены не все возможные значения, полный их список можно найти в файле /usr/src/linux/Documentation/sysctl/kernel.txt - прим. перев.): 
0 - модули с лицензией отличной от GPL не загружены. 
1 - загружен по крайней мере один модуль с не-GPL лицензией (в том числе модули без каких-либо лицензий). 
2 - по крайней мере один модуль загружен командой insmod -f . 
threads-max - устанавливает максимальное количество потоков (нитей), используемых ядром, значение по умолчанию 2048. 
version - отображает дату и время, когда последней компиляции ядра. Первое поле в этом файле, например, #3 указывает сколько раз ядро собиралось из исходников.
 

«Магические» клавиши Alt + SysRq +
(самая свежая информация по данному вопросу находится в файле /usr/src/linux/Documentation/sysrq.txt - прим. перев.)
Чтобы послать соответствующий сигнал ядру, необходимо нажать Alt + SysRq + . представляет собой одну из следующих клавиш: 
  • r - отключение «сырого» режима работы клавиатуры и переключение его XLATE (ограниченный режим работы клавиатуры, игнорирующий наличие клавиш-модификаторов таких как Alt, Ctrl или Shift). 
  • k - убивает все активные процессы в данной виртуальной консоли. Данный сигнал также называется Secure Access Key (SAK) и часто используется для дополнительной проверки того, что приглашение для ввода пароля является подлинным, а не представляет собой троянскую программу предназначенную для сбора логинов и паролей. 
  • b - инициирует перезагрузку компьютера ядром системы без попытки предварительного размонтирования файловых систем и/или синхронизации дискового кэша (по сути это равносильно тому, что вы нажимаете reset, только выполняется это «софтовым» способом - прим. перев.). 
  • o - то же, что и предыдущее, но с выключением компьютера. 
  • c - инициирует «поломку системы» (system crash). 
  • s - попытаться синхронизировать диски, подключенные к системе. 
  • u - попытаться и размонтировать всех файловых систем или перемонтировать их в режим «только-чтение» 
  • p - выводит все флаги и регистры на консоль. 
  • t - выводит список процессов на консоль.
  • m - выводит на консоль статистику использования памяти.
  • 0-9 - устанавливает уровень ведения журнала для консоли. 
  • e - посылает всем процессам, за исключением init, сигнал SIGTERM. 
  • i - посылает всем процессам, за исключением init, сигнал SIGKILL. 
  • l (малая L)- уничтожает все процессы (включая init) c использованием SIGKILL. После использования данной комбинации клавиш система больше не работоспособна. 
  • f - вызовет oom_killer, для процессов чрезмерно потребляющих память - дополнение перев. 
  • h - отображает текст подсказку по использованию «магических клавиш» (в принципе, любая из клавиш, за исключением вышеперечисленных вызывает выдачу справочной информации, но h проще запомнить - прим. перев.).

(продолжение следует)

3 комментария:

  1. Отличная документация! Так держать!

    ОтветитьУдалить
  2. Спасибо.
    Пока "так держать" не совсем получается, потому что нагрузка по основной работе большая ;).

    ОтветитьУдалить
  3. Про ctrl-alt-del совершенно неправильно. 0 это graceful restart, а больше 0 немедленная перезагрузка.

    sowgag(sowgag@гуглпочта)

    ОтветитьУдалить