checkmodule

package: checkpolicy

title: checkmodule(8)

summary: компилятор модулей политики SELinux

text:
# checkmodule(8)

## ИМЯ
checkmodule - компилятор модулей политики SELinux

## ОБЗОР
checkmodule [-h] [-b] [-C] [-m] [-M] [-U handle_unknown ] [-V] [-o output_file] [input_file]

## ОПИСАНИЕ
Эта страница руководства содержит описание команды checkmodule.

checkmodule - это программа, которая проверяет и компилирует модуль политики безопасности SELinux в двоичное представление. Она может создавать либо базовый модуль политики (по умолчанию), либо небазовый модуль политики (параметр -m); обычно требуется создать небазовый модуль политики для последующего добавления в существующее хранилище модулей, в котором уже есть базовый модуль, предоставленный базовой политикой. Используйте semodule_package, чтобы объединить этот модуль с соответствующим необязательным файлом контекстов файлов и таким образом создать пакет политики, а затем используйте semodule для установки пакета модуля в хранилище модулей и загрузите получившуюся политику.

## ПАРАМЕТРЫ
-b,--binary

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

-C,--cil

Записать файл политики CIL, а не двоичный файл политики.

-h,--help

Вывести справку.

-m

Создать небазовый модуль политики.

-M,--mls

Включить поддержку MLS/MCS при проверке и компиляции модуля политики.

-V,--version

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

-o,--output filename

Записать файл двоичного модуля политики с указанным именем файла. Без указания имени файла checkmodule только проверит синтаксис исходного файла модуля и не будет создавать двоичный модуль.

-U,--handle-unknown <action>

Указать, как ядро должно обрабатывать неизвестные классы или разрешения (запрещать, разрешать или отклонять).

## ПРИМЕР

```
# Собрать небазовый модуль политики с включённой системой безопасности MLS/MCS.
$ checkmodule -M -m httpd.te -o httpd.mod
```

## СМОТРИТЕ ТАКЖЕ
semodule(8), semodule_package(8) Документация SELinux Reference Policy по адресу https://github.com/SELinuxProject/refpolicy/wiki

## АВТОРЫ
Эта страница руководства была скопирована со страницы руководства checkpolicy, написанной Árpád Magosányi <mag@bunuel.tii.matav.hu>, и отредактирована Dan Walsh <dwalsh@redhat.com>. Программа была написана Stephen Smalley <sds@tycho.nsa.gov>. Перевод на русский язык выполнила Олеся Герасименко <gammaray@basealt.ru>.


checkpolicy

title: checkpolicy(8)

summary: компилятор политики SELinux

text:
# checkpolicy(8)

## ИМЯ
checkpolicy - компилятор политики SELinux

## ОБЗОР
checkpolicy [-b[F]] [-C] [-d] [-U handle_unknown (allow,deny,reject)] [-M] [-c policyvers] [-o output_file] [-S] [-t target_platform (selinux,xen)] [-V] [input_file]

## ОПИСАНИЕ
Эта страница руководства содержит описание команды checkpolicy.

checkpolicy - это программа, которая проверяет и компилирует конфигурацию политики безопасности SELinux в двоичное представление, которое можно загрузить в ядро. Если имя входного файла не указано, checkpolicy попытается выполнить чтение из policy.conf или policy (если указан флаг -b).

## ПАРАМЕТРЫ
-b,--binary

Прочитать существующий двоичный файл политики, а не исходный файл policy.conf.

-F,--conf

Записать файл policy.conf, а не двоичный файл политики. Этот параметр можно использовать только при работе с двоичным файлом политики.

-C,--cil

Записать файл политики CIL, а не двоичный файл политики.

-d,--debug

Войти в режим отладки после загрузки политики.

-U,--handle-unknown <action>

Указать, как ядро должно обрабатывать неизвестные классы или разрешения (запрещать, разрешать или отклонять).

-M,--mls

Включить политику MLS при проверке и компиляции политики.

-c policyvers

Указать версию политики (по умолчанию используется последняя).

-o,--output filename

Записать двоичный файл политики с указанным именем файла.

-S,--sort

Сортировать прочие контексты (ocontexts) перед записью двоичной политики. Этот параметр позволяет задать соответствие вывода checkpolicy двоичным политикам, созданным с помощью semanage и secilc.

-t,--target

Указать целевую платформу (selinux или xen).

-V,--version

Показать сведения о версии.

-h,--help

Показать сведения об использовании.

## СМОТРИТЕ ТАКЖЕ
Документация SELinux Reference Policy по адресу https://github.com/SELinuxProject/refpolicy/wiki

## АВТОРЫ
Эта страница руководства была написана Árpád Magosányi <mag@bunuel.tii.matav.hu>, и отредактирована Stephen Smalley <sds@tycho.nsa.gov>. Программа была написана Stephen Smalley <sds@tycho.nsa.gov>. Перевод на русский язык выполнила Олеся Герасименко <gammaray@basealt.ru>.


control

package: control

title: control(8)

summary: управление компонентами системы

text:
# control(8)

## НАЗВАНИЕ
control - управление компонентами системы

## ФОРМАТ ВЫЗОВА
control [ FACILITY [help|list|status|summary|STATUS] ]

## ОПИСАНИЕ
control предоставляет унифицированный интерфейс для управления компонентами системы.

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

При запуске без параметров control выдает список известных компонентов с их существующими и доступными настройками.

При указании названия компонента FACILITY control может вывести информацию о компоненте, а при дополнительном указании команд: list - доступные настройки; help - краткую справку; status - текущее состояние компонента (выполняется по умолчанию), или же изменить это состояние в соответствии с параметром STATUS.

## ФАЙЛЫ

/etc/control.d/facilities/ - каталог со скриптами управления компонентами для control

/etc/control.d/functions - библиотека общих функций для этих скриптов

## ИСТОРИЯ СОЗДАНИЯ
Программа control была разработана для и впервые появилась в Openwall GNU/*/Linux 0.1.

## АВТОР
Solar Designer <solar@owl.openwall.com>

## СМ. ТАКЖЕ
chkconfig(8), control-dump(8)


control-dump

title: control-dump(8)

summary: сохранение и восстановление

text:
# control-dump(8)

## НАЗВАНИЕ
control-dump, control-restore - сохранение и восстановление состояния системных компонентов

## ФОРМАТ ВЫЗОВА
control-dump [FACILITY...]

control-restore [FACILITY...]

## ОПИСАНИЕ
control-dump и control-restore предназначены для использования в предустановочных и постустановочных скриптах дистрибутивных пакетов и позволяют, соответственно, сохранить параметры перед обновлением и восстановить их после обновления.

## ФАЙЛЫ

/var/run/control/* - файлы, создаваемые control-dump для последующего использования control-restore

/etc/control.d/facilities/ - каталог со скриптами управления компонентами для control(8)

/etc/control.d/functions - библиотека общих функций для этих скриптов

## ИСТОРИЯ СОЗДАНИЯ
control-dump и control-restore были разработаны для и впервые появились в ALT Linux Sisyphus и Openwall GNU/*/Linux 1.0

## АВТОРЫ
Dmitry V. Levin <ldv@altlinux.org>

Solar Designer <solar@owl.openwall.com>

## СМ. ТАКЖЕ
chkconfig(8), control(8)


dhcdrop

package: dhcdrop

title: dhcdrop(8)

summary: ��������� ��� ��������� � ������������� ������������������� DHCP

text:
# dhcdrop(8)

## НАЗВАНИЕ
dhcdrop - программа для выявления и нейтрализации несанкционированных DHCP серверов в Ethernet сетях.

## СИНТАКСИС
dhcdrop [ -h ] [ -D ] [ -t ] [ -y ] [ -r ] [ -b ] [ -a ] [ -A ] [ -f ] [ -R ] [ -q ]

[ -m count ] [ -c count ] [ -n hostname ] [ -N clientname ] [ -p port ] [ -P port ] [ -w seconds ]

[ -T timeout ] [ -M max-hosts-scan ] [ -l MAC-address ] [ -L network ] [ -S network/mask ] [ -F from-IP ]

[ -s server-IP ] [ -C children count (2 - 32) ] [ initial-MAC-address ] < -i interface-name|interface-index >

## ОПИСАНИЕ
Подавление DHCP сервера dhcdrop осуществляется при помощи атаки DHCP starvation, либо при помощи флуда DHCPDISCOVER сообщениями. Подробности смотрите ниже. Кроме того, dhcdrop может применяться как средство диагностики и стресс-тестирования при настройке и разработке DHCP серверов.

## ОПЦИИ
-h

показывает help-сообщение, а так же - коды возврата программы.

-D

просмотр списка имён и индексов сетевых интерфейсов. Актуально в ОС Windows - см. пример ниже.

-t

Режим теста. В этом режиме dhcdrop не выполняет подавление сервера. Производится лишь посылка DHCPDISCOVER, если на него приходит ответ от не игнорируемого сервера, то программа заверается возвращаяя код 200 и выводя на экран строку вида

DHCP SRV: 10.7.7.1 (IP-hdr: 10.7.7.1) SRV ether: 00:02:44:75:77:E4, YIP: 10.7.7.205

содержащую содержащую минимум информации о создающем проблему DHCP сервере.

-y

подразумевается ответ "yes" на любой вопрос программы.

-r

отключает рандомизацию MAC адреса источника. Каждый последующий MAC адрес источника отличается от предыдущего на 1.

-b

указывает на необходимость использования флага BROADCAST в отправляемых DHCP пакетах.

-a

всегда ожидать ответа сервера на порт DHCP клиента по умолчанию (68), даже если задано значение номера порта клиента отличное от значения по умолчанию.

-A

всегда ожидать ответа с порта DHCP сервера по умолчанию (67), даже если задано значение номера порта сервера отличное от значения по умолчанию.

-f

режим флуда запросами DHCPDISCOVER. ПРИМЕНЯТЬ С ОСТОРОЖНОСТЬЮ. Удобен для стресс-тестирования сервера. В случае указания опции -r все отправляемые пакеты имеют одинаковый MAC адрес.

-R

отправляет сообщение DHCPRELEASE с MAC адресом источника указанном при запуске программы и IP адресом указанным при помощи опции -F к серверу указанному опцией -s

-q

"тихий" режим работы. Выводится минимум информации.

-m count

максимальное число попыток получения ответа от сервера.

-c count

максимальное число адресов арендуемых у сервера.

-n hostname

значение DHCP опции HostName (по умолчанию - "DHCP-dropper")

-N clientname

значение DHCP опции Vendor-Class (по умолчанию - "DHCP-dropper")

-p port

порт используемый клиентом для отправки DHCP сообщений. По умолчанию - 68

-P port

порт сервера, на который отправляются DHCP сообщения.

-w seconds

задаёт таймаут рестарта процесса получения IP адресов в случае использования агрессивного режима. По умолчанию - 60 секунд.

-T timeout

устанавливает таймаут ожидания ответа сервера (в секундах). По умолчанию - 3 секунды.

-M maximum-hosts

максимально допустимое количество сканируемых хостов в случае использования агрессивного режима.

-l MAC-address

Ethernet адрес сервера который необходимо игнориновать при выполненении поиска ложных DHCP серверов в сети. В этой опции следует указать адрес DHCP сервера ответственного за раздачу адресов в данном участке сети. Может быть указано несколько адресов - каждый должен предворяться ключом -l

-L legal-network

указывает легальную IP подсеть для выбранного интерфейса. Использование этой опции автоматически включает агрессивный режим получения IP адресов. Может быть указано несколько сетей - каждая должна предворяться ключом -L Подробное описание смотрите ниже.

-S network/mask

ARP сканирование сети 'сеть' с использованием сетевой маски 'маска' в CIDR нотации. IP адрес источника задаётся опцией -F Если IP адрес источника не задан - используется случайный адрес из диапазона указанной подсети. Пример использования смотрите ниже.

-F source-ip

указывает IP адрес источника для сканирования сети (опция -S ), либо IP адрес DHCP клиента для отправки сообщения DHCPRELEASE (опция -R ).

-s server-ip-adress

задаёт IP адрес DHCP сервера. Используется с опцией -R

-C count

число порождаемых процессов-потомков. Совместим только с флагом -f Используется для увеличения числа отправляемых пакетов за еденицу времени.

initial-MAC-address

задаёт MAC адрес источника используемый при отправке первого DHCP сообщения, либо используемый постоянно, в случае использования опции -f (flood) вместе с опцией -r Если не указан, то используется случайный MAC адрес источника.

-i interface

имя либо индекс сетевого интерфейса (см. ключ -D ). Не может быть "any"! Единственный обязательный параметр программы.

## ТЕОРЕТИЧЕСКАЯ ОСНОВА
В протоколе DHCP определена опция, которая задает длительность аренды IP адреса (Lease time) - это время на которое DHCP сервер выдаёт IP адрес в пользование клиенту. По истечении этого временного интервала клиент должен выполнить попытку обновить IP адрес с целью продления аренды. Для сервера выдача IP адреса в аренду означает то, что за время аренды данный IP адрес может быть выдан только владельцу аренды и никому кроме него. Идентификация клиентов сервером производится на основании MAC адреса. Обычно, каждый сервер имеет пул динамических IP адресов, т.е. IP адресов которые не закреплены за конкретными MAC адресами и выдаются динамически по запросу любому клиенту. Пул на SOHO маршрутизаторах в конфигурации по умолчанию имеет небольшой размер - от нескольких десятков до двух сотен адресов. В случае использования ПО, выполняющего роль DHCP сервера, величину пула определяет тот, кто настраивает. Если пул адресов исчерпан, то DHCP сервер игнорирует запросы от новых клиентов (возможно документируя это в логах) - т.е., фактически, бездействует.

Таким образом, в случае появления в сети ложных DHCP их можно нейтрализовать достаточно просто - необходимо получить аренду на все доступные на данном сервере IP адреса, каждый раз посылая запросы от уникальных клиентов. Чем больше время аренды в настройках сервера, тем на больший срок DHCP сервер оказывается нейтрализован в случае исчерпания динамического пула. Для большинства SOHO маршрутизаторов Lease Time исчисляется днями, или даже неделями. В случае использования в качестве DHCP сервера WinGate, dhcpd и прочего подобного софта, время зависит от фантазии человека который его настроил.

## ПРИНЦИП РАБОТЫ dhcdrop
Программа открывает указанный в параметрах командной строки интерфейс в promiscuous режиме, формирует DHCP запрос (DHCPDISCOVER), используя случайный исходящий MAC адрес (если в параметрах не задано иное поведение) и отправляет его в интерфейс:

```
01:58:04.681600 00:70:de:3b:b9:05 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800),
length 342: (tos 0x10, ttl 64, id 33964, offset 0, flags [none],
proto UDP (17), length 328)
0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:70:de:3b:b9:05,
length 300, xid 0xcc1cfc5c, Flags [none]

        Client-Ethernet-Address 00:70:de:3b:b9:05

        Vendor-rfc1048 Extensions

        Magic Cookie 0x63825363

        DHCP-Message Option 53, length 1: Discover

        Parameter-Request Option 55, length 3:

        Domain-Name-Server, Default-Gateway, Subnet-Mask

        Hostname Option 12, length 12: "DHCP-dropper"

        Vendor-Class Option 60, length 12: "DHCP-dropper"

        Client-ID Option 61, length 7: ether 00:70:de:3b:b9:05
```

После чего переходит к ожиданию ответа (DHCPOFFER) сервера. Если получен ответ с предложением аренды IP адреса, то в интерфейс отправляется следующий DHCP запрос (DHCPREQUEST) на который сервер отвечает DHCPACK-пакетом подтверждающим возможность использования данного IP адреса клиентом. На этом операция получения аренды, на предложенный сервером IP адрес, завершена. Программа изменяет MAC адрес источника и вновь посылает DHCPDISCOVER, после чего, все вышеуказанные операции по получению аренды нового IP адреса повторяются. Стоит обрать внимание, что программа изменяет не только MAC адрес клиента в DHCP сообщении, но и MAC адрес в заголовке Ethernet-фрейма. Данная возможность максимально приближает работу программы к работе реального DHCP клиента (а так же, позволяет обойти DHCP snooping). Цикл получения IP адресов с сервера завершается, когда получено заданное параметром максимальное число IP адресов, либо в случае исчерпания динамического пула сервера.

## ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
Просмотр списка интерфейсов

Актуально в ОС семейства Windows. Используется ключ -D :

```
C:>dhcdrop -D
Available interfaces:
1:\Device\NPF_GenericDialupAdapter

  descr: Adapter for generic dialup and VPN capture
2:\Device\NPF_{0C796DB5-22D9-46AB-9301-9C7ADC2304AF}

  descr: ZyXEL GN650 1000Base-T Adapter          (Microsoft's Packet Scheduler)

  iaddr: 192.168.1.2/24  bcast: 255.255.255.255

  iaddr: 10.7.7.7/24  bcast: 255.255.255.255
```

В качестве аргумента для ключа программы можно задать либо индекс интерфейса 2, либо его имя: \Device\NPF_{0C796DB5-22D9-46AB-9301-9C7ADC2304AF}

Интерактивный режим

Самый простой вариант использования программы для поиска и выбора подавляемого сервера вручную:

```
$ sudo dhcdrop -i eth1
Using interface: 'eth1'
Got response from server 10.7.7.1 (IP-header 10.7.7.1), server ethernet address: 00:02:44:75:77:E4, lease time: 1.1h (3960s)
Got BOOTREPLY (DHCPOFFER) for client ether: 00:16:09:D8:CF:60 You IP: 10.7.7.201/24
Drop him? [y/n] n
Searching next server...
Got response from server 192.168.1.1 (IP-header 192.168.1.1), server ethernet address: 00:1E:2A:52:C8:CA, lease time: 24h (86400s)
Got BOOTREPLY (DHCPOFFER) for client ether: 00:16:09:D8:CF:60 You IP: 192.168.1.2/24
Drop him? [y/n] y
1. Got BOOTREPLY (DHCPACK) for client ether: 00:16:09:D8:CF:60 You IP: 192.168.1.2/24
2. Got BOOTREPLY (DHCPACK) for client ether: 00:A2:FA:12:41:F7 You IP: 192.168.1.3/24
3. Got BOOTREPLY (DHCPACK) for client ether: 00:56:EA:F8:1C:B0 You IP: 192.168.1.4/24
<пропущено>
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Finished.
```

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

Режим автоматического подавления всех серверов кроме легитимного

В случае, если мы знаем (а обычно мы знаем) MAC адрес легального DHCP сервера в нашей сети, операцию подавления ложных серверов можно упростить:

```
$ sudo dhcdrop -i eth1 -y -l 00:02:44:75:77:E4
Using interface: 'eth1'
Got response from server 192.168.1.1 (IP-header 192.168.1.1), server ethernet address: 00:1E:2A:52:C8:CA, lease time: 24h (86400s)
Got BOOTREPLY (DHCPOFFER) for client ether: 00:37:C5:10:BE:16 You IP: 192.168.1.2/24
1. Got BOOTREPLY (DHCPACK) for client ether: 00:37:C5:10:BE:16 You IP: 192.168.1.2/24
2. Got BOOTREPLY (DHCPACK) for client ether: 00:94:26:88:33:BD You IP: 192.168.1.3/24
3. Got BOOTREPLY (DHCPACK) for client ether: 00:E5:AC:7B:79:BB You IP: 192.168.1.4/24
<пропущено>
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Finished.
```

В подобном варианте использования dhcdrop подавляет любой сервер, кроме указанного опцией -l сервера, не задавая дополнительных вопросов (благодаря использованию опции -y ).

Тестовый режим

Тестовый режим -t удобно использовать для выполнения программы из скриптов, в автоматизированном режиме. Ниже приведён пример простейшего скрипта:

```
00 #!/bin/bash
01 LEGAL_SERVER="00:11:22:33:44:55"
02 DROPPER="/usr/sbin/dhcdrop"
03 IFNAME="eth1"
04 $DROPPER -i $IFNAME -t -l $LEGAL_SERVER -m 3
05 if [ $? = 200 ]
06 then
07    echo Illegal server found Dropping him
08    $DROPPER -i eth1 -l $LEGAL_SERVER -y
09 else
10    echo Illegal server not found.
11 fi
```

В строке 4 выполняется запуск dhcdrop в тестовом режиме, с указанием опции легального для сети DHCP сервера -l , опцией режима тестирования -t и опцией задающей максимальное число попыток отправки DHCPDISCOVER в режиме поиска сервера -m Если ни на один из отправленных запросов не придёт ответа - программа завершается с кодом 0. Если приходит ответ от сервера не заданного опцией -l , программа завершается с кодом 200, что вызывает последующий запуск программы с параметрами определяющими подавление любого DHCP сервера в сети, кроме легального.

Использование агрессивного режима получения адресов

Как можно догадаться из описания протокола DHCP - если клиент уже получил конфигурационный набор данных от нелегального DHCP сервера, то сервер не выдаст повторно этот набор другому клиенту пока не истечёт срок аренды. Следовательно, простое исчерпание пула IP адресов не спасёт клиентов уже получивших неверные конфигурационные данные - сервер будет выдавать эти адреса только изначально запросившим их клиентам и будет игнорировать запросы от dhcdrop. При следующей попытке обновления адреса клиенты вновь получат информацию от нелегального DHCP сервера, и так будет продолжаться пока не отключат нелегальный DHCP сервер. Для решения подобных проблем, в dhcdrop, начиная с версии 0.5, добавлен агрессивный режим получения IP адресов. Включается опцией -L указывающей легитимную IP подсеть для данного Ethernet сегмента сети. Алгоритм его работы следующий: dhcdrop запускает обычный режим подавления и исчерпывает весь пул свободных IP адресов нелегального DHCP сервера. Анализирует первый DHCPOFFER полученный от нелегального DHCP. При помощи сетевой маски и IP адреса клиента выданных сервером получает адрес IP сети обслуживаемой этим сервером. Запускает ARP-сканирование полученной подсети, с целью выявить хосты получившие неправильную конфигурационную информацию. По умолчанию, число сканируемых хостов ограничено числом 512 (можно изменить опцией ) - некоторые сервера выдают конфигурационные наобры с маской /8, что соответствует примерно 16 млн. хостов - сканирование такого адресного диапазона займёт очень большое время. Отправляет DHCP серверу сообщения DHCPRELEASE от каждого из найденных хостов (исключая сам сервер). Ожидает 60 секунд (значение по умолчанию, может быть изменено опцией -w ) после чего перезапускает процесс получения IP адресов.

В качестве примера запустим dhcdrop с теми же параметрами, что и в предыдущем примере, но дополнительно укажем легальную IP сеть 10.7.7.0.

```
$ sudo dhcdrop -i eth1 -y -l 00:02:44:75:77:E4 -L 10.7.7.0
Using interface: 'eth1'
Got response from server 192.168.1.1 (IP-header 192.168.1.1), server ethernet address: 00:1E:2A:52:C8:CA, lease time: 24h (86400s)
Got BOOTREPLY (DHCPOFFER) for client ether: 00:BC:BF:D6:39:2E You IP: 192.168.1.5/24
1. Got BOOTREPLY (DHCPACK) for client ether: 00:BC:BF:D6:39:2E You IP: 192.168.1.5/24
2. Got BOOTREPLY (DHCPACK) for client ether: 00:FB:E7:A4:19:EC You IP: 192.168.1.6/24
3. Got BOOTREPLY (DHCPACK) for client ether: 00:CB:44:F9:A8:6F You IP: 192.168.1.7/24
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Trying to use agressive mode.
Starting ARP scanning network in range: 192.168.1.0 - 192.168.1.255...
Illegal DHCP server perhaps assigned IP adresses to the following hosts:
1. Received ARP-reply from: 00:1e:2a:52:c8:ca (192.168.1.1) - itself DHCP server.
2. Received ARP-reply from: 00:03:ff:15:52:90 (192.168.1.3)
3. Received ARP-reply from: 00:03:ff:14:52:90 (192.168.1.4)
4. Received ARP-reply from: 00:a0:c5:30:52:90 (192.168.1.200)
Sending DHCPRELEASE for invalid clients:
Send DHCPRELEASE for host 00:03:ff:15:52:90 (192.168.1.3).
Send DHCPRELEASE for host 00:03:ff:14:52:90 (192.168.1.4).
Send DHCPRELEASE for host 00:a0:c5:30:52:90 (192.168.1.200).
Restart dropping DHCP server after 60 seconds timeout...
1. Got BOOTREPLY (DHCPACK) for client ether: 00:BC:BF:D6:39:2E You IP: 192.168.1.5/24
2. Got BOOTREPLY (DHCPACK) for client ether: 00:F1:32:14:60:A3 You IP: 192.168.1.3/24
3. Got BOOTREPLY (DHCPACK) for client ether: 00:2D:1C:80:ED:12 You IP: 192.168.1.4/24
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
WARNING: Failed to take away all the IP addresses assigned by DHCP server.
Perhaps DHCP server checks availability of IP addresses by sending ARP-request
before assigning them. Try to restart dhcpdrop later. If it doesn't help
try to disconnect problem hosts temporarily, then send manually DHCPRELEASE
from address of this hosts (use option -R) and restart dhcdrop.
Finished.
```

Пояснения к результатам работы программы. После вывода надписи "Trying to use agressive mode." начинается ARP сканирование подсети обслуживаемой нелегальным DHCP сервером в указанном диапазоне. В результате найдено 4 хоста, включая сам DHCP сервер (1й хост). Затем, dhcdrop посылает серверу 192.168.1.1 сообщения DHCPRELEASE от адресов (Ethernet & IP) всех хостов найденных в подсети кроме самого DHCP сервера и останавливает выполнение на 60 секунд. Таймаут необходим потому, что некоторые DHCP сервера удерживают выдачу IP адреса новому клиенту в течение небольшого времени после получения сообщения DHCPRELEASE от предыдущего клиента. В случае необходмости значение таймаута можно изменить опцией -w. По истечении таймаута, dhcdrop запускает процесс получения освободившихся IP адресов. Успешно удалось получить IP адреса 192.168.1.5 (был получен изначально, при старте программы), 192.168.1.3 и 192.168.1.4. Последние два адреса были успешно особождены сервером после получения сообщений DHCPRELEASE сгенерированных dhcdrop. Не удалось получить адрес 192.168.1.200 несмотря на присутствие этого хоста в сети, и то, что от его адреса было отправлено сообщение DHCPRELEASE. Одна из причин неудачи описана в предупреждении, в конце вывода программы - DHCP сервер перед выдачей адресов может проверять присутствует ли в сети хост с запрашиваемым IP адресом и только после этого - выдавать адрес, если таковой хост в сети отсутствует. В противном случае - новая аренда на этот адрес выдана не будет. В этой ситуации может помочь отключение проблемных хостов от сети вручную и отправка сообщений DHCPRELEASE от адреса этих хостов серверу (см. пример ниже), после чего необходимо снова запустить процесс получения IP адресов. Но в нашем случае проблема кроется не в этом - хост 192.168.1.200 имеет статически установленный адрес и потому никогда не запрашивал конфигурации у DHCP сервера. Сама необходимость указания легальной сети для запуска агрессивного режима необходима что бы проверить - не пересекается ли адресный диапазон выдаваемый нелегальным DHCP сервером с адресным пространством подсети в которой он обнаружен. Если адресные пространства пересекаются - ARP сканирование будет проведено по хостам имеющим правильную конфигурацию и выведет ошибочную информацию. Потому в случае обнаружения пересечения диапазонов адресов агрессивный режим не запускается.

Отправка сообщения DHCPRELEASE

Возможно у вас возникнет необходимость отправки сообщений DHCPRELEASE в ручном режиме. Например по причине указанной в предыдущем примере. Сделать это можно при помощи опции -R :

```
$ sudo dhcdrop -i eth1 -R -s 192.168.1.1 -F 192.168.1.4 00:2D:1C:80:ED:12
Using interface: 'eth1'
Send DHCPRELEASE from 00:2D:1C:80:ED:12 client IP 192.168.1.4 to DHCP server 192.168.1.1
Finished.
```

Опция -s задаёт IP адрес сервера, -F - IP адрес DHCP клиента, 00:2D:1C:80:ED:12 - Ethernet адрес клиента. В результате в сеть отправлен пакет вида:

```
16:13:43.887735 00:2d:1c:80:ed:12 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342:
(tos 0x10, ttl 64, id 29807, offset 0, flags [none], proto UDP (17), length 328)
0.0.0.0.68 > 192.168.1.1.67: BOOTP/DHCP, Request from 00:2d:1c:80:ed:12,
length 300, xid 0xb2f04a28, Flags [none]

    Client-IP 192.168.1.4

    Client-Ethernet-Address 00:2d:1c:80:ed:12

    Vendor-rfc1048 Extensions

    Magic Cookie 0x63825363

    DHCP-Message Option 53, length 1: Release

    Server-ID Option 54, length 4: 192.168.1.1

    Client-ID Option 61, length 7: ether 00:2d:1c:80:ed:12
```

Сканирование сегмента сети

Вы можете использовать ARP сканирование сети для поиска клиентов получивших неверную конфигурационную информацию. Осуществляется подобное при помощи опции -S :

```
$ dhcdrop -i eth1 -S 192.168.1.0/24
Using interface: 'eth1'
Starting ARP-scanning for subnet 192.168.1.0/24.
IP address range 192.168.1.0 - 192.168.1.255.
WARNING: Source IP is not set (use option -F).
Using random value for source IP address: 192.168.1.195
1. Received ARP-reply from: 00:1e:2a:52:c8:ca (192.168.1.1).
2. Received ARP-reply from: 00:a0:c5:30:52:90 (192.168.1.200).
Finished.
```

Как следует из предупреждения напечатанного программой - при запуске не был задан IP адрес источника, потому dhcdrop выбирает случайный IP адрес из диапазона адресов указанной подсети. Если вам нужно указать адрес источника - используйте опцию -F Для данного типа сканирования не важны фактические настройки маршрутизации в вашей сети. Всегда будет использоваться интерфейс заданный опцией -i из расчёта что хосты указанной подсети находятся в одном Ethernet сегменте с хостом на котором запущен dhcdrop. Так же, данная опция позволяет обнаружить дублирование IP адресов в одном сегменте сети, даже если сканирование производится с хоста чей IP адрес дублируется другим хостом.

## АВТОР
Эта программа была написана Roman Chebotarev <roma@ultranet.ru>, Какие-либо замечания/предложения/пожелания по поводу данной программы, сообщайте по адресу <roma@ultranet.ru>.

## MAN ФАЙЛ
Страница руководства создана Andrew Clark <andyc@altlinux.org>, на основе статьи автора програмы по адресу - http://www.netpatch.ru/dhcdrop.html


booleans

package: libselinux

title: booleans(8)

text:
# booleans(8)

## ИМЯ
booleans - логические переключатели политики позволяют настраивать политику SELinux в среде выполнения

## ОПИСАНИЕ
Эта страница руководства описывает логические переключатели политики SELinux. Политика SELinux может включать условные правила, которое включены или отключены в зависимости от текущих значений набора логических переключателей политики. Эти логические переключатели политики позволяют изменять политику безопасности в среде выполнения без загрузки новой политики.

Например, логический переключатель httpd_enable_cgi (если он включён) позволяет управляющей программе httpd запускать сценарии cgi. Если администратору требуется запретить исполнение сценариев cgi, можно просто установить соответствующее значение этого переключателя.

Политика определяет значение по умолчанию для каждого логического переключателя, обычно это false. Эти значения по умолчанию можно переопределить через локальные параметры, созданные с помощью утилиты setsebool(8) , используя -P для сохранения параметра после перезагрузок. Средство system-config-securitylevel предоставляет графический интерфейс для изменения параметров. Программа load_policy(8) по умолчанию сохранит текущие параметры логических переключателей после перезагрузки политики по умолчанию. При необходимости также можно сбросить значения логических переключателей на их значения по умолчанию при загрузке, для этого используется параметр -b.

Для получения и вывода списка логических значений служит утилита getsebool(8) с параметром -a.

Логические значения также можно изменить во время выполнения с помощью утилиты setsebool(8) или утилиты togglesebool(8). По умолчанию эти утилиты изменяют только текущее логическое значение и не влияют на постоянные параметры, если в setsebool не используется параметр -P.

## СМОТРИТЕ ТАКЖЕ
getsebool(8), setsebool(8), selinux(8), togglesebool(8)

## АВТОРЫ
Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>. Поддержка условной политики SELinux была разработана Tresys Technology. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.


selinux

title: selinux(8)

text:
# selinux(8)

## ИМЯ
SELinux - Linux с улучшенной безопасностью от NSA (SELinux)

## ОПИСАНИЕ
Linux с улучшенной безопасностью от NSA - это реализация гибкой архитектуры мандатного управления доступом в операционной системе Linux. Архитектура SELinux предоставляет общую поддержку использования различных видов политик мандатного управления доступом, включая основанные на концепциях Type Enforcement® (принудительное присвоение типов), Role-Based Access Control (управление доступом на основе ролей) и Multi-Level Security (многоуровневая безопасность). Дополнительная информация и техническая документация по SELinux доступна по адресу https://github.com/SELinuxProject.

Файл конфигурации /etc/selinux/config позволяет управлять включением и отключением SELinux и, если SELinux включён, устанавливать режим его работы - разрешительный или принудительный. Переменной SELINUX можно задать значение отключённой, разрешительной или принудительной, чтобы выбрать один из этих вариантов. Если выбрать отключение режима, код ядра и приложения SELinux будет полностью отключён, система будет работать без какой-либо защиты SELinux. При установке разрешительного режима код SELinux включён, но не выполняет отказы в доступе, а только журналирует те действия, которые были бы запрещены при принудительном режиме. При установке принудительного режима код SELinux включён, выполняет отказы в доступе и журналирует соответствующие попытки доступа. Набор отказов в доступе в разрешительном режиме может отличаться от этого набора в принудительном режиме как по причине того, что принудительный режим предотвращает дальнейшее выполнение операции после первого отказа, так и из-за того, что после получения отказа в доступе часть кода приложения вернётся к работе в менее привилегированном режиме.

Файл конфигурации /etc/selinux/config также управляет тем, какая политика активна в системе. SELinux позволяет установить в системе несколько политик, но одновременно можно использовать только одну из них. В настоящее время имеется несколько видов политики SELinux, например, целевая политика (targeted), политика многоуровневой безопасности (mls). Целевая политика позволяет большинству процессов пользователя выполняться без ограничений, помещая в отдельные домены безопасности, ограниченные политикой, только отдельные службы. Например, процессы пользователя выполняются в никак не ограниченном домене, в то время как именованная управляющая программа или управляющая программа apache будет выполняться в отдельном специально настроенном домене. Если используется политика MLS (Multi-Level Security), все процессы будут разделены по детально настроенным доменам безопасности и ограничены политикой. MLS также поддерживает модель Белла — Лападулы, в которой процессы ограничиваются не только по типу, но и по уровню данных.

Чтобы определить, какая политика будет выполняться, следует установить переменную среды SELINUXTYPE в /etc/selinux/config. Чтобы применить к системе изменение типа политики, необходимо перезагрузить систему и, возможно, повторно проставить метки. В каталогах /etc/selinux/{SELINUXTYPE}/ необходимо установить для каждой такой политики соответствующую конфигурацию.

Дальнейшую настройку отдельной политики SELinux можно выполнить с помощью набора настраиваемых при компиляции параметров и набора логических переключателей среды выполнения политики. system-config-selinux позволяет настроить эти логические переключатели и настраиваемые параметры.

Многие домены, которые защищены SELinux, также содержат man-страницы SELinux с информацией о настройке соответствующей политики.

## ПРОСТАВЛЕНИЕ МЕТОК ДЛЯ ФАЙЛОВ
Всем файлам, каталогам, устройствам ... назначены контексты безопасности/метки. Эти контексты хранятся в расширенных атрибутах файловой системы. Проблемы с SELinux часто возникают из-за неправильного проставления меток в файловой системе. Это может быть вызвано загрузкой компьютера с ядром, отличным от SELinux. Появление сообщения об ошибке, содержащего file_t, обычно означает серьёзную проблему с проставлением меток в файловой системе.

Лучшим способом повторного проставления меток в файловой системе является создание файла флага /.autorelabel и последующая перезагрузка. system-config-selinux также имеет эту функциональность. Кроме того, для повторного проставления меток для файлов можно использовать команды restorecon/fixfiles.

## ФАЙЛЫ
/etc/selinux/config

## СМОТРИТЕ ТАКЖЕ
booleans(8), setsebool(8), sepolicy(8), system-config-selinux(8), togglesebool(8), restorecon(8), fixfiles(8), setfiles(8), semanage(8), sepolicy(8)

Для каждой ограниченной службы в системе имеется man-cтраница следующего формата:

<servicename>_selinux(8)

Например, для службы httpd имеется страница httpd_selinux(8).

man -k selinux

Выведет список всех man-страниц SELinux.

## АВТОРЫ
Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.


avcstat

package: libselinux-utils

title: avcstat(8)

text:
# avcstat(8)

## ИМЯ
avcstat - показать статистику AVC (Access Vector Cache, кэш вектора доступа) SELinux

## ОБЗОР
avcstat [-c] [-f status_file] [interval]

## ОПИСАНИЕ
Показать статистику AVC SELinux. Если указан параметр interval , программа будет выполняться циклами, показывая обновлённую статистику каждые interval секунд. По умолчанию показываются относительные значения.

## ПАРАМЕТРЫ
-c

Показать совокупные значения.

-f

Указывает расположение файла статистики AVC, по умолчанию это /sys/fs/selinux/avc/cache_stats.

## СМОТРИТЕ ТАКЖЕ
selinux(8)

## АВТОРЫ
Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>. Программа была написана James Morris <jmorris@redhat.com>. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.


getenforce

title: getenforce(8)

summary: получить текущий режим SELinux

text:
# getenforce(8)

## ИМЯ
getenforce - получить текущий режим SELinux

## ОБЗОР
getenforce

## ОПИСАНИЕ
getenforce сообщает, в каком режиме работает SELinux (принудительный, разрешительный, отключённый).

## СМОТРИТЕ ТАКЖЕ
selinux(8), setenforce(8), selinuxenabled(8)

## АВТОРЫ
Dan Walsh, <dwalsh@redhat.com>. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.


getsebool

title: getsebool(8)

summary: получить логические значения SELinux

text:
# getsebool(8)

## ИМЯ
getsebool - получить логические значения SELinux

## ОБЗОР
getsebool [-a] [boolean]

## ОПИСАНИЕ
getsebool сообщает, где включён или отключён конкретный логический переключатель или все логические переключатели SELinux. В некоторых ситуациях для логического переключателя может существовать ожидающее изменение (переход из одного состояние в другое) - getsebool сообщит об этом. Ожидающее значение - то значение, которое будет применено при следующей фиксации логического переключателя.

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

## ПАРАМЕТРЫ
-a

Показать все логические переключатели SELinux.

## СМОТРИТЕ ТАКЖЕ
selinux(8), setsebool(8), booleans(8)

## АВТОРЫ
Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>. Программа была написана Tresys Technology. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.


matchpathcon

title: matchpathcon(8)

text:
# matchpathcon(8)

## ИМЯ
matchpathcon - получить текущий контекст безопасности SELinux для указанного пути из конфигурации контекстов файлов

## ОБЗОР
matchpathcon [-V] [-N] [-n] [-m type] [-f file_contexts_file] [-p prefix] [-P policy_root_path] filepath...

## ОПИСАНИЕ
matchpathcon опрашивает системную политику и выводит контекст безопасности по умолчанию, связанный с путём к файлу.

Примечание: Одинаковые пути могут иметь разные контексты безопасности в зависимости от типа файла (обычный файл, каталог, файл связи, файл знаков ...).

matchpathcon также будет учитывать тип файла при определении контекста безопасности по умолчанию (если файл существует). Если файл не существует, сопоставление по типу файла не будет выполнено.

## ПАРАМЕТРЫ
-m type

Принудительно указать тип файла для поиска. Действительные типы: file, dir, pipe, chr_file, blk_file, lnk_file, sock_file.

-n

Не показывать путь.

-N

Не использовать преобразования.

-f file_context_file

Использовать альтернативный файл file_context

-p prefix

Использовать префикс для ускорения преобразований

-P policy_root_path

Использовать альтернативный корневой путь к политике

-V

Проверить контекст файла на диске на соответствие параметрам по умолчанию

## СМОТРИТЕ ТАКЖЕ
selinux(8), matchpathcon(3)

## АВТОРЫ
Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.


title: sefcontext_compile(8)

text:
# sefcontext_compile(8)

## ИМЯ
sefcontext_compile - скомпилировать файлы регулярных выражений контекстов файлов

## ОБЗОР
sefcontext_compile [-o outputfile] [-p policyfile] inputfile

## ОПИСАНИЕ
sefcontext_compile используется для компиляции регулярных выражений контекстов файлов в формат pcre(3).

Скомпилированный файл используется функциями проставления меток файлов libselinux.

По умолчанию sefcontext_compile записывает скомпилированный файл pcre с суффиксом .bin в конце (например, inputfile.bin).

## ПАРАМЕТРЫ
-o

Указать outputfile - должно быть полным именем файла, так как суффикс .bin не добавляется автоматически.

-p

Указать двоичный policyfile для использования при проверке записей контекста в inputfile

Если найден недействительный контекст, запись файла в формате pcre не будет выполнена и появится сообщение об ошибке.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При ошибке возвращается -1. При успешном завершении возвращается 0.

## ПРИМЕРЫ
Пример 1:

sefcontext_compile /etc/selinux/targeted/contexts/files/file_contexts

В результате создаётся следующий файл:

/etc/selinux/targeted/contexts/files/file_contexts.bin

Пример 2:

sefcontext_compile -o new_fc.bin /etc/selinux/targeted/contexts/files/file_contexts

В результате в текущем рабочем каталоге создаётся следующий файл:

new_fc.bin

## СМОТРИТЕ ТАКЖЕ
selinux(8), semanage(8)

## АВТОРЫ
Dan Walsh, <dwalsh@redhat.com>. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.


selinuxenabled

title: selinuxenabled(8)

text:
# selinuxenabled(8)

## ИМЯ
selinuxenabled - утилита для использования внутри сценариев оболочки, которая позволяет определить, включён ли selinux

## ОБЗОР
selinuxenabled

## ОПИСАНИЕ
Показывает, включён или отключён SELinux.

## СОСТОЯНИЕ ВЫХОДА
Выход с состоянием 0, если SELinux включён, и 1, если он отключён.

## СМОТРИТЕ ТАКЖЕ
selinux(8), setenforce(8), getenforce(8)

## АВТОРЫ
Dan Walsh, <dwalsh@redhat.com>. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.


selinuxexeccon

title: selinuxexeccon(8)

text:
# selinuxexeccon(8)

## ИМЯ
selinuxexeccon - сообщить контекст SELinux, который используется для этого исполняемого файла

## ОБЗОР
selinuxexeccon command [fromcon]

## ОПИСАНИЕ
selinuxexeccon сообщает контекст SELinux для указанной команды из указанного контекста или текущего контекста.

## ПРИМЕР

```
# selinuxexeccon /usr/bin/passwd
staff_u:staff_r:passwd_t:s0-s0:c0.c1023
# selinuxexeccon /usr/sbin/sendmail system_u:system_r:httpd_t:s0
system_u:system_r:system_mail_t:s0
```

## СМОТРИТЕ ТАКЖЕ
secon(8)

## АВТОРЫ
Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.


setenforce

title: setenforce(8)

text:
# setenforce(8)

## ИМЯ
setenforce - изменить режим, в котором выполняется SELinux

## ОБЗОР
setenforce [Enforcing|Permissive|1|0]

## ОПИСАНИЕ
Используйте Enforcing или 1 для установки SELinux в принудительный режим.

Используйте Permissive или 0 для установки SELinux в разрешительный режим.

Если SELinux отключён и требуется его включить (или если SELinux включён и требуется его отключить), обратитесь к странице руководства selinux(8).

## СМОТРИТЕ ТАКЖЕ
selinux(8), getenforce(8), selinuxenabled(8)

## АВТОРЫ
Dan Walsh, <dwalsh@redhat.com>. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.


togglesebool

title: togglesebool(8)

text:
# togglesebool(8)

## ИМЯ
togglesebool - переключить текущее значение логического переключателя SELinux

## ОБЗОР
togglesebool boolean...

## ОПИСАНИЕ
togglesebool переключает текущее значение списка логических переключателей. Если текущее значение 1, то оно будет заменено на 0, и наоборот. Меняются только "находящиеся в памяти" значения; параметры загрузки остаются без изменений.

## СМОТРИТЕ ТАКЖЕ
selinux(8), booleans(8), getsebool(8), setsebool(8)

## АВТОРЫ
Эта страница руководства была написана Steve Grubb <sgrubb@redhat.com>. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.


chkcon

package: libsepol-utils

title: chkcon(8)

text:
# chkcon(8)

## ИМЯ
chkcon - определить, является ли контекст безопасности действительным для конкретной двоичной политики

## ОБЗОР
chkcon policy_file context

## ОПИСАНИЕ
Эта утилита проверяет контекст безопасности (его строковое представление), заданный аргументом context, относительно данных конфигурации, прочтённых из файла двоичного представления базы данных политик, заданного аргументом policy_file.

## ФАЙЛЫ
policy file

## АВТОРЫ
Эта страница руководства (и только она) была написана Manoj Srivastava <srivasta@debian.org>. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.


accessdb

package: man-db

title: accessdb(8)

summary: сбрасывает содержимое базы данных man\-db в понятный человеку

text:
# accessdb(8)

## НАЗВАНИЕ
accessdb - сбрасывает содержимое базы данных man-db в понятный человеку формат

## СИНТАКСИС
/usr/sbin/accessdb [-d?V] [<index-файл>]

## ОПИСАНИЕ
accessdb выводит данные, содержащиеся внутри базы данных man-db в понятном человеку формате. По умолчанию, данные выводятся из файла /var/cache/man/index.<db-type>, где <db-type> зависит от используемой библиотеки базы данных.

Передача accessdb параметра заменяет это значение по умолчанию.

## ПАРАМЕТРЫ
-d, --debug

Показывать отладочную информацию.

-?, --help

Показать справочное сообщение и закончить работу.

--usage

Показать короткое сообщение об использовании и завершить работу.

-V, --version

Показать информацию о версии.

## АВТОР

```
Wilf. (G.Wilford@ee.surrey.ac.uk).
Fabrizio Polacco (fpolacco@debian.org).
Colin Watson (cjwatson@debian.org).
```


catman

title: catman(8)

text:
# catman(8)

## НАЗВАНИЕ
catman - создаёт или обновляет уже отформатированные справочные страницы

## СИНТАКСИС
catman [-d?V] [-M путь] [-C файл] [раздел] ...

## ОПИСАНИЕ
catman используется для создания новейших отформатированных справочных страниц, называемых cat страницами. Cat страницы, обычно, намного быстрее отображаются, чем исходные справочные страницы, но для их хранения требуется дополнительное место. Решение о существовании определённых cat страниц принимает локальный администратор, который должен предоставить подходящие каталоги для их хранения.

В параметрах catman задаются иерархии справочных страниц и разделы, которые должны быть отформатированы заранее. Иерархиями по умолчанию считаются системные иерархии, указанные в файле настроек man-db, а разделы по умолчанию берутся из значения переменной окружения $MANSECT (список значений через двоеточие) или из значения, заданного при компиляции man, если переменная окружения $MANSECT не установлена. При указании catman списка имён разделов через пробельный символ, он заменит оба эти значения по умолчанию.

При определении файлов для форматирования по каждой иерархии catman использует кэш базы данных index.

## ПАРАМЕТРЫ
-d, --debug

Показывать отладочную информацию.

-M путь, --manpath=путь

Задаёт альтернативный путь поиска иерархии справочных страниц (указываются через двоеточие). По умолчанию, используются все пути, отмеченные как системные иерархии в файле настроек man-db.

-C файл, --config-file=файл

Использовать указанный пользовательский файл настройки вместо значения по умолчанию ~/.manpath.

-?, --help

Показать справочное сообщение и закончить работу.

--usage

Показать короткое сообщение об использовании и завершить работу.

-V, --version

Показать информацию о версии.

## ОКРУЖЕНИЕ
MANSECT

Если установлена переменная окружения $MANSECT, то её значением является список разделов, указанных через двоеточие, и она используется для задания разделов справочных страниц, в которых будет производится поиск и в каком порядке. Значением по умолчанию является «1 1p 8 2 3 3p 4 5 6 7 9 0p n l p o 1x 2x 3x 4x 5x 6x 7x 8x», если оно не заменено директивой SECTION в /etc/man_db.conf.

MANPATH

Если установлена переменная окружения $MANPATH, то она рассматривается как набор каталогов (через двоеточие) иерархии справочных страниц для использования при поиске.

## ФАЙЛЫ
/etc/man_db.conf

Файл настройки man-db.

/usr/man/index.(bt|db|dir|pag)

Традиционный кэш глобальной базы данных index.

/var/catman/index.(bt|db|dir|pag)

Альтернативный или соответствующий FSSTND, глобальный кэш базы данных index.

## СМОТРИТЕ ТАКЖЕ
man(1), manpath(5), mandb(8)

## АВТОР

```
Wilf. (G.Wilford@ee.surrey.ac.uk).
Fabrizio Polacco (fpolacco@debian.org).
Colin Watson (cjwatson@debian.org).
```


mandb

title: mandb(8)

text:
# mandb(8)

## НАЗВАНИЕ
mandb - создаёт или обновляет кэши index справочных страниц

## СИНТАКСИС
mandb [-dqsucpt?V] [-C файл] [manpath]

mandb [-dqsut] [-C файл] -f имя_файла ...

## ОПИСАНИЕ
mandb используется для инициализации или ручного обновления кэшей базы данных index. В кэшах содержится информация о текущем состоянии системы справочных страниц, а хранящаяся в них информация используется утилитами man-db для повышения скорости работы и функциональности.

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

Указываемые при запуске mandb необязательные пути (через двоеточие) заменят внутренний путь поиска иерархии системных справочных страниц, определённый из файла настроек man-db.

## КЭШИ БАЗЫ ДАННЫХ
mandb может быть собрана с поддержкой одного из следующих типов баз данных:

Название

Тип

Асинхронность

Имя файла

Berkeley db

двоичное дерево

Да

index.bt

GNU gdbm

Хэш

Да

index.db

UNIX ndbm

Хэш

Нет

index.(dir|pag)

Типы баз данных, которые поддерживают асинхронные обновления, предоставляют лучшее отношение скорости к возможности повреждения в случае неожиданного прерывания работы. Если это происходит, может потребоваться перезапустить mandb с параметром -c, чтобы пересоздать базы данных с нуля.

## ПАРАМЕТРЫ
-d, --debug

Показывать отладочную информацию.

-q, --quiet

Не выдавать предупреждения.

-s, --no-straycats

Не тратить время на поиск или добавление информации в базы данных по stray cats.

-p, --no-purge

Не тратить время на проверку удалённых справочных страниц или их вычистку из баз данных.

-c, --create

По умолчанию, mandb пытается обновить любые ранее созданные базы данных. Если база данных не существует, то она будет создана. Этот параметр заставляет mandb удалить имеющиеся базы данных и пересоздать их с нуля, и заключает в себе --no-purge. Это может быть необходимо при повреждении базы данных, или если в будущем будет использоваться новая схема хранения базы данных.

-u, --user-db

Создать только пользовательские базы данных, даже имея права на запись, необходимые для создания системных баз данных.

-t, --test

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

-f, --filename

Обновить записи только для заданного файла. Этот параметр не для повседневного использования; он используется для служебных целей man, когда она собрана с параметром MAN_DB_UPDATES и обнаруживает, что страница устарела. Это подразумевает -p и выключает -c и -s.

-C файл, --config-file=файл

Использовать указанный пользовательский файл настройки вместо значения по умолчанию ~/.manpath.

-?, --help

Показать это справочное сообщение и закончить работу.

--usage

Показать короткое сообщение об использовании и завершить работу.

-V, --version

Показать версию и закончить работу.

## КОД ВЫХОДА
0

Успешное выполнение программы.

1

Ошибка при использовании, в синтаксисе или файле настроек.

2

Ошибка при работе.

3

Работа процесса-потомка завершилась неудачно.

## ДИАГНОСТИКА
Во время создания базы данных могут появляться следующие предупреждения.

<имя файла>: ошибка анализа страниц(ы) программой whatis

Программа whatis пыталась извлечь строки из указанного <файла>, но это не удалось. Обычно, эта ошибка возникает, если справочная страница плохо написана, а если таких сообщений возникает много, то, скорее всего, в системе содержатся нестандартные справочные страницы, несовместимые с анализатором man-db whatis. Более подробное описание смотрите в разделе ЧТО АНАЛИЗИРУЕТСЯ на странице lexgrog(1).

<имя файла>: повисшая символическая ссылка

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

<имя файла>: неверная символическая ссылка или ROFF `.so' запрос

<Файл>, или указывает на символическую ссылку, или содержит ROFF include запрос на несуществующий файл.

<имя файла>: игнорируется фиктивное имя файла

<Файл> может (или не может) быть допустимой справочной страницей, но это имя неправильно. Обычно, это происходит со справочными страницами, имеющими раздельческое расширение <x>, но лежащими в разделе <y>.

<маска имени файла>: конкурирующие расширения

Шаблон <маска имени файла> не является уникальным. Обычно, это происходит из-за существования одновременно сжатой и несжатой версии одной и той же справочной страницы. Все страницы кроме самой новой игнорируются.

## ФАЙЛЫ
/etc/man_db.conf

Файл настройки man-db.

/var/cache/man/index.(bt|db|dir|pag)

Соответствующий FHS глобальный кэш базы данных index.

Места, где кэш базы данных находился ранее:

/usr/man/index.(bt|db|dir|pag)

Традиционный кэш глобальной базы данных index.

/var/catman/index.(bt|db|dir|pag)

Альтернативный или соответствующий FSSTND, глобальный кэш базы данных index.

## СМОТРИТЕ ТАКЖЕ
lexgrog(1), man(1), manpath(5), catman(8)

Прежде в этой странице был раздел ЧТО АНАЛИЗИРУЕТСЯ, но теперь он перенесён в lexgrog(1).

## АВТОР

```
Wilf. (G.Wilford@ee.surrey.ac.uk).
Fabrizio Polacco (fpolacco@debian.org).
Colin Watson (cjwatson@debian.org).
```


iconvconfig

package: man-pages-ru

title: iconvconfig(8)

summary: создаёт кэш настроек модуля iconv

text:
# iconvconfig(8)

## ИМЯ
iconvconfig - создаёт кэш настроек модуля iconv

## ОБЗОР
iconvconfig [параметры] [каталог]…

## ОПИСАНИЕ
Функция iconv(3) использует модули gconv для преобразования между наборами символов. Файл настройки используется для определения необходимости модулей для преобразования. Загрузка и обработка такого файла настройки замедляла бы программу, использующую iconv(3), поэтому задействуется кэширующий механизм.

Программа iconvconfig читает файлы настройки модуля iconv и записывает быстро загружаемый файл кэша настроек модуля gconv.

Кроме модулей gconv, предоставляемых системой, пользователь может задавать свои каталоги модулей gconv в переменной окружения GCONV_PATH. Однако кэширование настроек модуля iconv используется только, если переменная окружения GCONV_PATH отсутствует.

## ПАРАМЕТРЫ
--nostdlib

Не искать в системном каталоге gconv по умолчанию, использовать только каталоги, заданные в командной строке.

-o файл_результата, --output=файл_результата

Использовать файл_результата для вывода вместо системного кэша по умолчанию.

--prefix=путь

Задать префикс, который ставится в начало системных путей. Смотрите ФАЙЛЫ далее. По умолчанию префикс отсутствует. Если в качестве префикса указать foo, настройка модуля gconv будет читаться из foo/usr/lib/gconv/gconv-modules, а кэш будет записываться в foo/usr/lib/gconv/gconv-modules.cache.

-?, --help

Показать справку по использованию и завершить работу.

--usage

Показать краткую справку по использованию и завершить работу.

-V, --version

Показать номер версии, лицензию и уведомление о гарантиях для iconv.

## КОД ВЫХОДА
При успешном выполнении возвращается 0, при ошибках возвращается ненулевое значение.

## ФАЙЛЫ
/usr/lib/gconv

Обычный путь по умолчанию модуля gconv.

/usr/lib/gconv/gconv-modules

Обычный файл настройки по умолчанию модуля gconv.

/usr/lib/gconv/gconv-modules.cache

Обычный путь кэша настроек модуля gconv.

## СМОТРИТЕ ТАКЖЕ
iconv(1), iconv(3)


intro

title: intro(8)

text:
# intro(8)

## ИМЯ
intro - введение в административные и привилегированные команды

## ОПИСАНИЕ
В разделе 8 описываются команды, которые могут быть использованы, либо используются исключительно суперпользователем: например, команды управления системой, службы и команды для управления аппаратурой.

Как и команды, описываемые в разделе 1, команды, описываемые в этом разделе, по завершению возвращают код результата, который указывает, выполнилась ли команда успешно или нет. Подробней смотрите intro(1).

## ЗАМЕЧАНИЯ

### Авторы и условия распространения
Авторы и условия распространения указаны в заголовке исходной справочной страницы. Заметим, что у разных страниц они могут быть разными! Список русских переводчиков для каждой страницы можно найти в .po файле в исходном коде пакета.


ld.so

title: ld.so(8)

summary: динамический компоновщик/загрузчик

text:
# ld.so(8)

## ИМЯ
ld.so, ld-linux.so - динамический компоновщик/загрузчик

## ОБЗОР
Динамический компоновщик может запускаться неявно из динамически скомпонованной программы или общего объекта (в этом случае динамическому компоновщику невозможно передать параметры командной строки, как и в случае с ELF, когда динамический компоновщик хранится в разделе .interp исполняемой программы) или явно с помощью вызова:

/lib/ld-linux.so.* [ПАРАМЕТРЫ] [ПРОГРАММА [АРГУМЕНТЫ]]

## ОПИСАНИЕ
Программы ld.so и ld-linux.so* ищут и загружают общие объекты (общие библиотеки), необходимые программе, а также подготавливают программу к запуску и запускают её.

Для двоичных файлов Linux требуется динамическая компоновка (компоновка во время выполнения), если при сборке программе ld(1) не был передан параметр -static.

Программа ld.so предназначена для обработки двоичных файлов в формате a.out, который используется с давних пор. Программа ld-linux.so* (/lib/ld-linux.so.1, если используется libc5 и /lib/ld-linux.so.2, если glibc2) предназначена для обработки файлов в более современном формате ELF. Обе программы ведут себя одинаково и используют одни и те же файлы поддержки и программы (ldd(1), ldconfig(8) и /etc/ld.so.conf).

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

Если в зависимости общего объекта отсутствует косая черта, то поиск выполняется в следующем порядке:

o

В каталогах, указанных в атрибуте DT_RPATH динамического раздела двоичного файла, если он есть и если атрибут DT_RUNPATH не существует. Использование DT_RPATH не рекомендуется.

o

В переменной окружения LD_LIBRARY_PATH, если исполняемый файл не выполняется в режиме безопасного выполнения (смотрите далее), в котором данная переменная игнорируется.

o

В каталогах, указанных в атрибуте DT_RUNPATH динамического раздела двоичного файла, если он есть. Эти каталоги просматриваются только при поиске объектов, требуемых элементами DT_NEEDED (прямые зависимости) и не применяются к дочерним объектам, которые сами должны иметь свои собственные элементы DT_RUNPATH. В этом отличие от DT_RPATH, которые применяются при поиске для всех потомков в дереве зависимостей.

o

В кэш-файле /etc/ld.so.cache, содержащем скомпилированный список кандидатов общих объектов, которые ранее были найдены по указанным путям расположения библиотек. Однако, если при сборке двоичного файла компоновщику был указан параметр -z nodeflib, то общие объекты в путях по умолчанию будут пропущены. Общие объекты, установленные в каталоги для аппаратных возможностей (см. далее) имеют больший приоритет, чем остальные общие объекты.

o

В каталоге по умолчанию /lib и затем в /usr/lib (на некоторых 64-битных архитектурах путь по умолчанию для 64-битных объектов — /lib64 и затем /usr/lib64). Если при сборке двоичного файла компоновщику был указан параметр -z nodeflib, то этот шаг пропускается.

### Раскрытие токена rpath
Динамический компоновщик распознаёт определённые строковые токены в значении rpath (DT_RPATH или DT_RUNPATH). Эти строки заменяются на:

$ORIGIN (или ${ORIGIN})

Она раскрывается в каталог, содержащий программу или общий объект. Таким образом, приложение, расположенное в somedir/app может компилироваться с

gcc -Wl,-rpath,'$ORIGIN/../lib'

для того, чтобы оно могло найти связанный общий объект в somedir/lib и не важно где в иерархии каталогов будет находиться somedir. Это облегчает создание приложений «под ключ», которые вместо установки в специальные каталоги, можно просто распаковать в любой каталог, и они всё равно найдут свои общие объекты.

$LIB (или ${LIB})

Она раскрывается в lib или lib64, в зависимости от архитектуры (например, на x86-64 она заменяется на lib64, а на x86-32 она заменяется на lib).

$PLATFORM (или ${PLATFORM})

Преобразуется в строку, соответствующую типу процессора узла (например, «x86_64»). На некоторых архитектурах ядро Linux не предоставляет строку платформы динамическому компоновщику. Значение этой строки берётся из значения AT_PLATFORM вспомогательного вектора (смотрите getauxval(3)).

## ПАРАМЕТРЫ
--audit список

Использовать объекты из списка в качестве аудиторов. Объекты в list разделяются двоеточиями.

--inhibit-cache

Не использовать /etc/ld.so.cache.

--library-path путь

Использовать путь вместо значения переменной окружения LD_LIBRARY_PATH (смотрите далее). Имена ORIGIN, LIB и PLATFORM рассматриваются также как переменная окружения LD_LIBRARY_PATH.

--inhibit-rpath список

Игнорировать информацию в RPATH и RUNPATH об именах объектов из списка. Этот параметр игнорируется в режиме безопасного выполнения (смотрите далее). Объекты в list разделяются двоеточиями или пробелами.

--list

Выдать список всех зависимостей и как они удовлетворяются.

--preload list (начиная с glibc 2.30)

Предварительно загружать объекты, указанные в list. Объекты в list разделяются двоеточиями или пробелами. Предварительная загрузка объектов описана далее, в разделе о переменной окружения LD_PRELOAD.

В отличии от LD_PRELOAD, параметр --preload предоставляет способ выполнить предварительную загрузку для одного исполняемого файла не влияя при этом на предварительную загрузку его дочерних процессов, которые запускает новая программа.

--verify

Проверить, что программа является динамически скомпонованной и что компоновщик понимает её формат.

## ОКРУЖЕНИЕ
На поведение динамического компоновщика влияют различные переменные окружения.

### Безопасный режим выполнения
В целях безопасности, если динамический компоновщик определяет, что двоичный файл должен быть запущен в безопасном режиме выполнения, действие некоторых переменных окружения отменяется или изменяется; кроме этого, эти переменные окружения удаляются из окружения, и программа даже не увидит, что они определены. Некоторые из этих переменных окружения влияют на работу самого динамического компоновщика, и они описаны ниже. Другие переменные окружения, учитываемые подобным образом: GCONV_PATH, GETCONF_DIR, HOSTALIASES, LOCALDOMAIN, LOCPATH, MALLOC_TRACE, NIS_PATH, NLSPATH, RESOLV_HOST_CONF, RES_OPTIONS, TMPDIR и TZDIR.

Двоичный файл выполняется в безопасном режиме выполнения, если запись AT_SECURE в вспомогательном векторе (смотрите getauxval(3)) содержит ненулевое значение. Эта запись может иметь ненулевое значение по разным причинам:

- У процесса различаются реальный и эффективный идентификатор пользователя/группы. Обычно, это происходит в результате выполнения программ с установленным битом set-user-ID или set-group-ID.

- Процесс с пользовательским ID не равным root, выполняет файл, который присваивает мандаты процессу.

- Ненулевое значение может установить Linux Security Module.

### Переменные окружения
Среди наиболее важных переменных окружения следует выделить следующие:

LD_ASSUME_KERNEL (начиная с glibc 2.2.3)

Каждый общий объект может сообщать динамическому компоновщику о требуемой минимальной версии ядерного ABI (это требование кодируется в разделе ELF note, который можно просмотреть с помощью readelf -n, под меткой NT_GNU_ABI_TAG). Во время выполнения динамический компоновщик определяет версию ABI запущенного ядра и не будет загружать общие объекты, у которых минимальная версия ABI превышает версию ядра.

LD_ASSUME_KERNEL можно использовать, чтобы заставить динамический компоновщик предполагать, что он работает в системе с другой версией ядра ABI. Например, следующая команда заставляет динамический компоновщик при загрузке общих объектов, требуемых myprog, предполагать, что он запущен на Linux с версией 2.2.5:

```
$ LD_ASSUME_KERNEL=2.2.5 ./myprog

```

В системах, предоставляющих несколько версий общего объекта (в различных каталогах пути поиска) с разными требованиями к минимальной версии ядра ABI, LD_ASSUME_KERNEL может использоваться для выбора версии объекта, которую нужно задействовать (в зависимости от порядка поиска в каталогах).

Исторически, свойство LD_ASSUME_KERNEL наиболее часто использовалось при ручном выборе старых реализаций нитей POSIX LinuxThreads в системах, которые предоставляли и LinuxThreads, и NPTL (в последствии стала базовой в таких системах); смотрите pthreads(7).

LD_BIND_NOW (начиная с glibc 2.1.1)

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

LD_LIBRARY_PATH

Список каталогов, в которых будет производиться поиск библиотек ELF в момент выполнения. Элементы списка разделяются двоеточиями или точками с запятой (экранирование этих разделителей не поддерживается).

Данная переменная игнорируется в режиме безопасного выполнения.

Внутри путей, указанных в LD_LIBRARY_PATH, динамический компоновщик раскрывает токены $ORIGIN, $LIB и $PLATFORM (или версии, использующие фигурные скобки вокруг имён) как описано выше в разделе Раскрытие токена rpath. Таким образом, например, следующее значение заставит искать библиотеку в подкаталогах lib или lib64, находящихся ниже каталога, содержащего исполняемую программу:

```
$ LD_LIBRARY_PATH='$ORIGIN/$LIB' prog

```

(Обратите внимание на одиночные кавычки, которые не позволяют раскрывать $ORIGIN и $LIB как переменные оболочки!)

LD_PRELOAD

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

Элементы списка разделяются пробелами или двоеточиями, экранирование этих разделителей не поддерживается. Объекты ищутся согласно правилам из ОПИСАНИЯ. Найденные объекты добавляются в карту связей согласно списку, в порядке слева направо.

В режиме безопасного выполнения предварительная загрузка файлов с символами косой черты не выполняется. Кроме того, загружаются общие объекты только из стандартных каталогов поиска и с включённым битом режима set-user-ID (что не типично).

Внутри имён, указанных в списке LD_PRELOAD, динамический компоновщик раскрывает токены $ORIGIN, $LIB и $PLATFORM (или версии, использующие фигурные скобки вокруг имён) как описано выше в разделе Раскрытие токена rpath (также смотрите описание цитирования в LD_LIBRARY_PATH).

Есть несколько методов указания библиотек для предварительной загрузки,они обрабатываются в следующем порядке:

(1)

Переменная окружения LD_PRELOAD.

(2)

Параметр командной строки --preload, при непосредственном вызове динамического компоновщика.

(3)

Файл /etc/ld.so.preload (смотрите ниже).

LD_TRACE_LOADED_OBJECTS

Если установлена (любое значение), то вместо нормального запуска программы будут выданы её динамические зависимости, как если бы она была запущена ldd(1).

Также существует большое количество более или менее полезных переменных, многие из которых устарели или предназначены только для внутреннего использования.

LD_AUDIT (начиная с glibc 2.4)

Определяемый пользователем список общих объектов ELF, которые будут загружены раньше всех остальных в отдельное пространство имён компоновщика (т. е., они не внедряются вместо обычных привязываемых символов, которые могли бы быть в этом процессе). Эти объекты можно использовать для контрольной проверки операций динамического компоновщика. Элементы в списке разделяются двоеточиями и двоеточия нельзя экранировать.

Переменная LD_AUDIT игнорируется в режиме безопасного выполнения.

Динамический компоновщик будет уведомлять общие объекты контроля в так называемых точках контроля — например, при загрузке нового общего объекта, поиске символа или при вызове символа из другого динамического объекта — вызывая соответствующую функцию из общего объекта контроля. Подробности смотрите в rtld-audit(7). Интерфейс контроля в значительной степени совместим с представленным в Solaris, описан в его Руководстве по компоновщику и библиотекам (Linker and Libraries Guide) в главе Интерфейс контроля компоновщика во время выполнения (Runtime Linker Auditing Interface).

Внутри имён, указанных в списке LD_AUDIT, динамический компоновщик раскрывает токены $ORIGIN, $LIB и $PLATFORM (или версии, использующие фигурные скобки вокруг имён) как описано выше в разделе Раскрытие токена rpath (также смотрите описание цитирования в LD_LIBRARY_PATH).

Начиная с glibc 2.13 в режиме безопасного выполнения имена в списке контрольной проверки, содержащие символы косой черты, игнорируются, и загружаются только общие объекты с включённым битом режима set-user-ID из стандартных каталогов поиска.

LD_BIND_NOT (начиная с glibc 2.1.95)

Если эта переменная окружения не равна пустой строке, то не обновлять GOT (global offset table — таблицу глобальных перемещений) и PLT (procedure linkage table — таблицу компоновки процедур) после определения символа функции. Совместное использовав эту переменную с LD_DEBUG (с категориями bindings и symbols), можно увидеть все привязки функции во время выполнения.

LD_DEBUG (начиная с glibc 2.1)

Выводить подробную отладочную информацию об операции динамического компоновщика. Содержимое этой переменной равно одной или нескольким следующим категориям, разделённым двоеточием, запятой или (если значение в кавычках) пробелом:

help

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

all

Показать всю отладочную информацию (за исключением statistics и unused; смотрите ниже).

bindings

Показать информацию о том, какое определение привязано к каждому символу.

files

Показать ход обработки входного файла.

libs

Показать пути поиска библиотек.

reloc

Показать обработку перемещений.

scopes

Показать информацию об областях.

statistics

Показать статистику по перемещениям.

symbols

Показать пути поиска при нахождении каждого символа.

unused

Определить неиспользуемые DSO.

versions

Показать зависимости от версий.

Начиная с glibc 2.3.4, LD_DEBUG игнорируется в режиме безопасного выполнения, если существует файл /etc/suid-debug (содержимое файла не важно).

LD_DEBUG_OUTPUT (начиная с glibc 2.1)

По умолчанию вывод LD_DEBUG записывается в стандартный поток ошибок. Если LD_DEBUG_OUTPUT определена, то вывод записывается в указанной значением файл с добавлением суффикса «.» (точка) ID процесса.

Переменная LD_DEBUG_OUTPUT игнорируется в режиме безопасного выполнения.

LD_DYNAMIC_WEAK (начиная с glibc 2.1.91)

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

В старых версией glibc (до 2.2) было другое поведение: если компоновщик определяет, что символ слабый, то он запоминает этот символ и продолжает поиск в оставшихся общих библиотеках. Если в последствии находится строгое определение того же символа, то он используется вместо запомненного (если больше символов не нашлось, то динамический компоновщик использует слабый символ, который был найден раньше).

Поведение старой glibc является нестандартным (стандартной практикой является учёт различия слабых и строгих символов только в момент статической компоновки). Текущее поведение динамического компоновщика появилось в glibc 2.2 (такое поведение предоставлялось в то время большинством других реализаций).

Создание переменной окружения LD_DYNAMIC_WEAK (с любым значением) включает старое (нестандартное) поведение glibc, тем самым, слабые символы одной общей библиотеки могут заменяться строгими символами, обнаруженными в другой библиотеке (заметим, что даже когда эта переменная установлена, строгие символы общей библиотеки не заменят слабые определения того же символа в основной программе).

Начиная с glibc 2.3.4, LD_DYNAMIC_WEAK игнорируется в режиме безопасного выполнения.

LD_HWCAP_MASK (начиная с glibc 2.1)

Маска для совместимости с аппаратными возможностями.

LD_ORIGIN_PATH (начиная с glibc 2.1)

Путь, где находится двоичный файл.

Начиная с glibc 2.4, LD_ORIGIN_PATH игнорируется в режиме безопасного выполнения.

LD_POINTER_GUARD (в glibc с 2.4 по 2.22)

Значение 0 отключает защиту указателя. Любое другое значение включает защиту указателя, что является действием по умолчанию. Защита указателя — это механизм безопасности, в результате которого некоторые указатели на код, хранящийся в перезаписываемой памяти программы (адреса возврата, сохраняемые setjmp(3) или указатели на функцию, используемые различными внутренними функциями glibc), искажаются полупроизвольным образом, что затрудняет атакующему подбор указателей для проведения атак переполнения буфера или срыва стека. Начиная с glibc 2.23, LD_POINTER_GUARD можно больше не использовать для отключения защиты указателя, так как теперь она всегда включена.

LD_PROFILE (начиная с glibc 2.1)

В переменной задаётся имя динамического объекта (одного) для профилирования, в виде пути или имени so. Результат профилирования записывается в файл с именем: «$LD_PROFILE_OUTPUT/$LD_PROFILE».

Начиная с glibc 2.2.5, LD_PROFILE игнорируется в режиме безопасного выполнения.

LD_PROFILE_OUTPUT (начиная с glibc 2.1)

Каталог, куда будет сохраняться результат работы с LD_PROFILE. Если эта переменная не определена или её значение равно пустой строке, то по умолчанию результат будет сохранён в каталог /var/tmp.

Переменная LD_PROFILE_OUTPUT игнорируется в режиме безопасного выполнения; вместо неё всегда используется /var/profile (это относится только к glibc до версии 2.2.5, так как в более новых версиях LD_PROFILE также игнорируется в режиме безопасного выполнения).

LD_SHOW_AUXV (начиная с glibc 2.1)

Если эта переменная окружения определена (с любым значением), то показывается вспомогательный массив, переданный из ядра (смотрите также getauxval(3)).

Начиная с glibc 2.3.4, LD_SHOW_AUXV игнорируется в режиме безопасного выполнения.

LD_TRACE_PRELINKING (начиная с glibc 2.4)

Если эта переменная окружения определена, то выполнять трассировку объекта предварительной компоновки, чьё имя указано в этой переменной окружения (для получения списка трассируемых объектов используйте ldd(1)). Если имя объекта не распознано, то трассируется все действия предварительной компоновки (prelinking activity).

LD_USE_LOAD_BIAS (начиная с glibc 2.3.3)

По умолчанию (т. е., если переменная не определена) исполняемые и предварительно скомпонованные объекты учитывают базовые адреса общих объектов, от которых они зависят, а (предварительно не скомпонованные) перемещаемые исполняемые (PIE) и другие общие объекты не учитывают их. Если переменной LD_USE_LOAD_BIAS присвоено значение 1, то и исполняемые файлы, и PIE учитывают базовые адреса. Если значение переменной LD_USE_LOAD_BIAS равно 0, то ни исполняемые файлы ни PIE не учитывают базовые адреса.

Начиная с glibc 2.3.3, данная переменная игнорируется в режиме безопасного выполнения.

LD_VERBOSE (начиная с glibc 2.1)

Если значение равно непустой строке, то выводится информация о символах программы (если также установлена переменная окружения LD_TRACE_LOADED_OBJECTS).

LD_WARN (начиная с glibc 2.1.3)

Если значение равно непустой строке, то выдаются предупреждения о ненайденных символах.

LD_PREFER_MAP_32BIT_EXEC (только для x86-64; начиная с glibc 2.23)

Согласно руководству по оптимизации ПО Intel Silvermont для 64-битных приложений, выполнение предсказания ветвления может отразиться негативным образом, если цель ветви находится дальше чем 4 ГБ от ветви. Если эта переменная окружения установлена (любое значение), то динамический компоновщик сначала попытается отобразить исполняемые страницы с помощью mmap(2) с флагом MAP_32BIT и, если это не удастся, то выполнит отображение без флага. Примечание: с флагом MAP_32BIT отображение выполняется в нижние 2 ГБ (не 4 ГБ) адресного пространства.

Так как при MAP_32BIT сокращается адресный диапазон, доступный для случайного выравнивания адресного пространства (ASLR), то LD_PREFER_MAP_32BIT_EXEC всегда отключается в режиме безопасного выполнения.

## ФАЙЛЫ
/lib/ld.so

динамический компоновщик/загрузчик a.out

/lib/ld-linux.so.{1,2}

динамический компоновщик/загрузчик ELF

/etc/ld.so.cache

Файл с скомпилированным списком каталогов, в которых производится поиск общих объектов и сортированный список общих объектов-кандидатов. Смотрите ldconfig(8).

/etc/ld.so.preload

Файл со списком общих объектов ELF (через пробел), которые будут загружены перед программой. Смотрите описание LD_PRELOAD выше. Если одновременно существуют LD_PRELOAD и /etc/ld.so.preload, то библиотеки, указанные в LD_PRELOAD, загружаются первыми. Файл /etc/ld.so.preload влияет на всю систему, вызывая предварительную загрузку указанных библиотек для всех программ, выполняемых в системе (обычно, это нежелательно и используется как спасательное средство, например, для временного обхода проблемы неправильно настроенных библиотек).

lib*.so*

общие объекты

## ЗАМЕЧАНИЯ

### Аппаратные возможности
Некоторые общие объекты скомпилированы с использованием специальных аппаратных инструкций, которые существуют не в каждом ЦП. Такие объекты должны быть установлены в каталоги, чью имена (например, /usr/lib/sse2/) определяют требования к аппаратным возможностям. Динамический компоновщик проверяет эти каталоги учитывая аппаратуру машины и выбирает наиболее подходящую версию требуемого общего объекта. Каталоги аппаратных возможностей могут каскадироваться для объединения свойств ЦП. Список имён поддерживаемых аппаратных возможностей зависит от ЦП. В настоящее время распознаются следующие имена:

Alpha

ev4, ev5, ev56, ev6, ev67

MIPS

loongson2e, loongson2f, octeon, octeon2

PowerPC

4xxmac, altivec, arch_2_05, arch_2_06, booke, cellbe, dfp, efpdouble, efpsingle, fpu, ic_snoop, mmu, notb, pa6t, power4, power5, power5+, power6x, ppc32, ppc601, ppc64, smt, spe, ucache, vsx

SPARC

flush, muldiv, stbar, swap, ultra3, v9, v9v, v9v2

s390

dfp, eimm, esan3, etf3enh, g5, highgprs, hpage, ldisp, msa, stfle, z900, z990, z9-109, z10, zarch

x86 (только 32-битные)

acpi, apic, clflush, cmov, cx8, dts, fxsr, ht, i386, i486, i586, i686, mca, mmx, mtrr, pat, pbe, pge, pn, pse36, sep, ss, sse, sse2, tm

## СМОТРИТЕ ТАКЖЕ
ld(1), ldd(1), pldd(1), sprof(1), dlopen(3), getauxval(3), elf(5), capabilities(7), rtld-audit(7), ldconfig(8), sln(8)


ldconfig

title: ldconfig(8)

text:
# ldconfig(8)

## ИМЯ
ldconfig - настройка связывания времени выполнения в динамическом компоновщике

## ОБЗОР
/sbin/ldconfig [-nNvXV] [-f conf] [-C кэш] [-r корень] каталог…

/sbin/ldconfig -l [-v] библиотека…

/sbin/ldconfig -p

## ОПИСАНИЕ
Программа ldconfig создаёт необходимые ссылки и кэш для самых новых общих библиотек, найденных в каталогах, которые указаны в командной строке, в файле /etc/ld.so.conf и в доверенные каталогах /lib и /usr/lib (на некоторых 64-битных архитектурах, таких как x86-64, /lib и /usr/lib являются доверительными каталогами для 32-битных библиотек, а каталоги /lib64 и /usr/lib64 используются для 64-битных библиотек).

Кэш используется компоновщиком времени выполнения, ld.so или ld-linux.so. ldconfig проверяет заголовок и имена файлов встречающихся библиотек, при определении для каких версий нужно обновить ссылки.

ldconfig будет пытаться вывести заключение о типе библиотек ELF (т.е. libc5 или libc6/glibc), основанных на библиотеках языка C и о том какая библиотека должна быть связана.

Некоторые существующие библиотеки не содержат необходимую информацию для определения их типа. В виду этого, задать ожидаемый тип можно через файл /etc/ld.so.conf. Эта возможность используется только для тех библиотек ELF, с которыми иначе невозможно работать. Формат выглядит как «каталог=ТИП», где ТИП может принимать значение libc4, libc5 или libc6 (данный синтаксис работает также и в командной строке). Пробелы не разрешаются. Также смотрите параметр -p. Программа ldconfig обычно должна запускаться суперпользователем, так как выполнение может требовать прав на запись в некоторые каталоги и файлы, владельцем которых является root.

## ПАРАМЕТРЫ
-c fmt, --format=fmt

(начиная с glibc 2.2) Используемые форматы кэша: old, new или compat (по умолчанию).

-C кэш

Использовать кэш вместо /etc/ld.so.cache.

-f conf

Использовать conf вместо /etc/ld.so.conf.

-i, --ignore-aux-cache

(начиная с glibc 2.7) Игнорировать вспомогательный файл кэша.

-l

(начиная с glibc 2.2) Библиотечный режим. Компоновать отдельные библиотеки вручную. Предназначен только для экспертов.

-n

Обрабатывать только каталоги, заданные в командной строке. Не обрабатывать доверенные каталоги и заданные в /etc/ld.so.conf. Неявно включает -N.

-N

Не перестраивать кэш. Если также не указан -X, то ссылки по-прежнему обновляются.

-p, --print-cache

Выдать список каталогов и библиотек-кандидатов, хранящихся в текущем кэше.

-r корень

Сменить каталог и использовать корень в качестве корневого каталога.

-v, --verbose

Режим детализации. Выдаётся номер текущей версии, имя каждого каталога, который сканируется, и все создаваемые символьные ссылки. Выключает режим молчания.

-V, --version

Показать версию программы.

-X

Не обновлять ссылки. Если также не указан -N, кэш по-прежнему перестраивается.

## ФАЙЛЫ
/lib/ld.so

Компоновщик/загрузчик времени выполнения.

/etc/ld.so.conf

Файл, содержащий список каталогов (по одному на строку), в которых производится поиск библиотек.

/etc/ld.so.cache

Файл, содержащий сортированный список библиотек, найденных в каталогах, заданных в /etc/ld.so.conf, а также в доверительных каталогах.

## СМОТРИТЕ ТАКЖЕ
ldd(1), ld.so(8)


nscd

title: nscd(8)

summary: программа кэширования службы имён

text:
# nscd(8)

## ИМЯ
nscd - программа кэширования службы имён

## ОПИСАНИЕ
nscd — это служба, которая кэширует наиболее частые запросы службы имён. По умолчанию, поведение службы кэша определяет файл с настройками /etc/nscd.conf. Смотрите nscd.conf(5).

nscd предоставляет кэшированный доступ к базам данных passwd(5), group(5), hosts(5), services(5) и netgroup через стандартные интерфейсы libc, такие как getpwnam(3), getpwuid(3), getgrnam(3), getgrgid(3), gethostbyname(3) и другие.

Для каждой базы есть два кэша: попаданий (для найденных элементов) и промахов (для ненайденных элементов). Каждый кэш имеет для своих данных отдельное TTL (time-to-live — время жизни). Заметим, что файл теневых паролей (shadow) специально не кэшируется. Вызовы getspnam(3) оставляют результат некэшированным.

## ПАРАМЕТРЫ
--help

показать список всех параметров и для чего они предназначены.

## ЗАМЕЧАНИЯ
Служба пытается отслеживать изменения в файлах настройки для каждой базы данных (например /etc/passwd для базы данных passwd или /etc/hosts и /etc/resolv.conf базы данных hosts), и очищает кэш при наличии изменений. Однако это происходит только после короткой задержки (если недоступен механизм inotify(7) и glibc 2.9 или новее), и данное автоматическое слежение не распространяется на файлы настройки нестандартных модулей NSS, если они указаны в /etc/nsswitch.conf. В этом случае, вам нужно запустить следующую команду после изменения файла настройки базы данных для того, чтобы nscd засчитал свой кэш недействительным:

```
$ nscd -i <база данных>
```

## СМОТРИТЕ ТАКЖЕ
nscd.conf(5), nsswitch.conf(5)


sln

title: sln(8)

summary: создаёт символьные ссылки

text:
# sln(8)

## ИМЯ
sln - создаёт символьные ссылки

## ОБЗОР
sln source dest

sln filelist

## ОПИСАНИЕ
Программа sln создаёт символьные ссылки. В отличие от программы ln(1) она собрана статически. Это означает, что если по какой-то причине динамический компоновщик не работает, sln можно использовать для создания символьных ссылок на динамические библиотеки.

Из командной строки есть два способа вызова. С помощью первого создаётся dest как символьная ссылка на source.

Во втором filelist — список пар путей через пробел; работает так, как если бы sln вызывался несколько раз с двумя путями в качестве аргументов.

У программы sln нет параметров командной строки.

## СМОТРИТЕ ТАКЖЕ
ln(1), ld.so(8), ldconfig(8)


tzselect

title: tzselect(8)

summary: выбор часового пояса

text:
# tzselect(8)

## ИМЯ
tzselect - выбор часового пояса

## ОБЗОР
tzselect

## ОПИСАНИЕ
Программа tzselect запрашивает у пользователя его текущее местоположение и выводит описание часового пояса на устройство стандартного вывода. Это описание можно использовать в качестве значения переменной окружения TZ.

Взаимодействие с пользователем происходит через устройства стандартного ввода и стандартных ошибок.

## КОД РЕЗУЛЬТАТА
Возвращаемое значение равно нулю, если пользователь правильно ввёл информацию о часовом поясе; в противном случае возвращаемое значение не равно нулю.

## ОКРУЖЕНИЕ
AWK

Имя POSIX-совместимой программы awk (по умолчанию awk).

TZDIR

Имя каталога, содержащего файлы с описаниями часовых поясов (по умолчанию /usr/share/zoneinfo).

## ФАЙЛЫ
TZDIR/iso3166.tab

Таблица двухсимвольных кодов стран и их названий, согласно стандарту ISO 3166.

TZDIR/zone.tab

Таблица кодов стран, широты и долготы, значений переменной TZ и описаний.

TZDIR/TZ

Файл, содержащий описание часового пояса TZ.

## СМОТРИТЕ ТАКЖЕ
tzfile(5), zdump(8), zic(8)


zdump

title: zdump(8)

summary: информация о часовом поясе

text:
# zdump(8)

## ИМЯ
zdump - информация о часовом поясе

## ОБЗОР
zdump [ параметр … ] [ часовой пояс … ]

## ОПИСАНИЕ
Программа zdump выводит текущее время для каждого часового пояса, указанного в командной строке.

## ПАРАМЕТРЫ
--version

Вывод информации о версии и выход из программы.

--help

Вывод короткого сообщения об использовании и выход из программы.

-i

Вывод описания интервалов времени. Для каждого часового пояса из командной строки выводится описание часового пояса в формате интервала. Смотрите “ФОРМАТ ИНТЕРВАЛА” ниже.

-v

Для каждого часового пояса указанного в командной строке, выводится наименьшее возможное время, время через день после наименьшего возможного времени, время за одну секунду до и точное время обнаруженных временных разрывов, время за день до максимально возможного времени и максимально возможное время. Каждая строка заканчивается isdst=D, где D положительное, ноль или отрицательное значение в зависимости от времени: летнее время, стандартное время или неизвестное, соответственно. Также, каждая строка заканчивается gmtoff=N, если выводимое локальное время на N секунд восточнее Гринвича.

-V

Как -v, но не выводятся времена, которые относительны крайних значений времени. Генерируемый вывод проще сравнивать с реализациями с другим представлением времени.

-c [lначальный_год,]конечный_год

Обрезает вывод интервала до заданного года(ов). Обрезаемые времена вычисляются по Григорианскому календарю с нулевым годом и универсальным временем (UT) без високосных секунд. Нижняя граница не включается, а верхняя включается; например, вывод с начальным годом равным 1970 не включает перевод, произошедший 1970-01-01 00:00:00 UTC, а с конечным годом 1970 этот перевод включается. По умолчанию года обрезки равны -500,2500.

-t [начальное_время,]конечное_время

Обрезает вывод интервала заданным временем, выраженным в десятичных секундах, начало отсчёта 1970-01-01 00:00:00 по всемирному координированному времени (UTC). Часовой пояс определяет будут ли учитываться високосные секунды. Параметр -c, задаёт, что нижняя граница не будет включена в результат, а верхняя будет.

## ФОРМАТ ИНТЕРВАЛА
Формат интервала это сжатое текстовое представление, понятное человеку и машине. Он состоит из пустой строки, далее следует строка “TZ=строка” где строка — строка в двойных кавычках, задающая часовой пояс, вторая строка “- - interval” описывающая временной интервал до первого перевода, если есть и ноль или более следующих строк “дата время интервал ,” по одной строке на каждый перевод времени и следующий интервал. Поля разделяются одиночным символом табуляции.

Даты описываются в формате гггг-мм-дд, а время — в 24-часовом формате чч:мм:сс, где чч<24. Времена указываются в локальном времени сразу после перевода. Описание временного интервала состоит из смещения UT в формате ±ччммсс со знаком, аббревиатуры часового пояса и флага isdst. Аббревиатура, равная смещению UT, пропускается; другие аббревиатуры представляют собой строки в двойных кавычках, если они состоят из одного или более алфавитных символов. Флаг isdst не указывается для стандартного времени, в противном случае это десятичное целое без знака и положительное (обычно, 1) для летнего времени и отрицательное, если это неизвестно.

Во временах и смещениях UT с абсолютным значением меньшим 100 часам, секунды не указываются, если их значение ноль, а минуты также не указываются, если их значение также нулевое. Положительные смещения UT указываются в востоке от Гринвича. Смещение UT -00 является заполнителем UT для областей, где действующее смещение не указано; по соглашению, это происходит, когда смещение UT равно нулю и аббревиатура часового пояса начинается с “-” или “zzz”

В строках в двойных кавычках, экранирующие последовательности представляют необычные символы. Экранирующие последовательности: \s — пробел, а \", \\, \f, \n, \r, \t и \v — как в языке программирования C. Например, строка в двойных кавычках “"CET\s\"\\"” представляет последовательность символов “CET "\”.

Вот пример результата, начальная пустая строка не показана (здесь используется несколько табуляций между столбцами для выравнивания).

```
TZ="Pacific/Honolulu"
-	-	-10:31:26	LMT
1896-01-13	12:01:26	-10:30	HST
1933-04-30	03	-09:30	HDT	1
1933-05-21	11	-10:30	HST
1942-02-09	03	-09:30	HDT	1
1945-09-30	01	-10:30	HST
1947-06-08	02:30	-10	HST
```

Здесь локальное время начинается в 10 часов, 31 минуту и 26 секунд западнее UT, и это стандартное время с аббревиатурой LMT. Сразу после первого перевода дата равна 1896-01-13 и время 12:01:26, и следующий временной интервал 10.5 часов западнее UT, стандартное время с аббревиатурой HST. Сразу после второго перевода дата равна 1933-04-30 и время 03:00:00, а затем следует временной интервал 9.5 часов западнее UT, имеет аббревиатуру HDT и это летнее время. Сразу после последнего перевода дата равна 1947-06-08 и время 02:30:00, и следующий временной интервал 0 часов западнее UT, стандартное время с аббревиатурой HST. Вот кусочек другого примера:

```
TZ="Europe/Astrakhan"
-	-	+03:12:12	LMT
1924-04-30	23:47:48	+03
1930-06-21	01	+04
1981-04-01	01	+05		1
1981-09-30	23	+04
...
2014-10-26	01	+03
2016-03-27	03	+04
```

Этот часовой пояс восточнее UT, поэтому смещения UT положительные. Также его многие аббревиатуры часовых поясов не указаны, так как они повторяют текст смещения UT.

## ОГРАНИЧЕНИЯ
Обнаружены разрывы во времени в выборке результата, полученном от localtime на 12 часовых интервалах. Это работает во всех мировых случаях; можно создать искусственные часовые пояса, в которых будет эта ошибка.

В выводе -v и -V “UT” означает, что значение получено от gmtime(3), которая использует UTC для современных временных меток и несколько другую разновидность UT для временных меток, которые использовались до появления UTC. В настоящее время не предпринимается попыток использовать “UTC” для новых и “UT” для старых временных меток, отчасти потому, что точная дата введения UTC неизвестна.

## СМОТРИТЕ ТАКЖЕ
tzfile(5), zic(8)