setserial

title: setserial(8)

text:
# setserial(8)

## НАЗВАНИЕ
setserial - получить/установить информацию о последовательном порте в Linux

## СИНТАКСИС
setserial [ -abqvVWz ] устройство [ параметр1 [ аргументы ] ] ...

setserial -g [ -abGv ] устройство1 ...

## ОПИСАНИЕ
Программа setserial разработана для настройки и/или создания отчётов содержащих информацию о конфигурации последовательного интерфейса. Эта информация включает в себя базовый адрес ввода/вывода (I/O port) и линию запроса прерываний (IRQ) для конкретного последовательного порта, и надо или нет интерпретировать разделяющий ключ как электронный ключ безопасности и другую.

Во время обычного процесса загрузки, инициализируются только порты COM 1-4, при этом по умолчанию используются значения базовых адресов ввода/вывода и линий запроса прерываний IRQ, которые приводятся ниже. Для назначения инициализации любых дополнительных последовательных портов, или изменения настроек портов COM 1-4 на нестандартные, используется программа setserial. Обычно она вызывается скриптом rc.serial, который запускается из /etc/rc.local.

Аргумент(ы) устройство устанавливает последовательное устройство, которое будет конфигурироваться или опрашиваться. Обычно, это /dev/cua[0-3].

Если параметры не указаны, то setserial выдаст тип микросхемы порта (например, 8250, 16450, 16550, 16550A, и так далее), аппаратный адрес ввода/вывода (I/O port), линию аппаратного прерывания (IRQ), назначенную частоту изменения состояния сигнала линии в бодах, и некоторые из его операционных флагов.

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

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

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

## ОПЦИИ
Команда setserial принимает следующие опции:

-a

В отчёте о конфигурации последовательного устройства выводить всю доступную информацию.

-b

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

-G

Вывести конфигурационную информацию последовательного порта в форме пригодной для подачи обратно в setserial в качестве аргументов командной строки.

-q

Быть скромнее. Строк в выводе команды setserial будет меньше.

-v

Быть многословнее. Вывод команды setserial будет расширен дополнительной информацией о текущем состоянии.

-V

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

-W

Произвести "дикую" инициализацию и выйти. Эта опция больше не поддерживается в ядрах Linux версии 2.1 и выше.

-z

Обнулить флаги последовательного порта перед их установкой. Эта опция увязывает автоматическое сохранение флагов последовательного порта при использовании опции -G.

## ПАРАМЕТРЫ
Последовательному порту могут быть присвоены следующие параметры.

Предполагается, что значения всех аргументов указаны в десятичной форме, кроме тех, которым предшествует "0x".

port базовый_адрес

Как описано выше, параметр port устанавливает базовый адрес ввода/вывода порта (I/O port).

irq номер_irq

Как и описано выше, параметр irq устанавливает номер линии запроса аппаратного прерывания IRQ.

uart тип_uart

Этот параметр используется для установки типа микросхемы UART. Разрешенные типы: никакой, 8250, 16450, 16550, 16550A, 16650, 16650V2, 16654, 16750, 16850, 16950, и 16954. Использование типа UART никакой, запретит использование порта. Некоторые внутренние модемы заявлены, как имеющие "микросхему 16550A UART с буфером в 1 Кб". Это ложь. В действительности они не имеют 16550A-совместимую микросхему UART; вместо этого у них имеется микросхема UART совместимая на уровне регистров с 16450 с буфером приёма в 1 Кб, для предотвращения переполнения приёмника. Это важно, потому что они не имеют FIFO-буфера передачи. Следовательно, они несовместимы с микросхемами UART 16550A, и процесс автоматической конфигурации будет идентифицировать их правильно, как микросхемы 16450. Если вы попытаетесь переопределить это применяя параметр uart, то сможете наблюдать потерянные символы во время передачи файла. Эти микросхемы UART, обычно имеют и другие проблемы: что делает параметр skip_test для них, часто употребимым.

autoconfig

Когда этот параметр задан, то setserial запросит ядро о попытке автоматической конфигурации последовательного порта. Базовый адрес ввода/вывода должен быть установлен правильно; тогда ядро попытается определить тип микросхемы UART, и если задан параметр auto_irq, то Linux также попробует автоматически определить линию прерываний IRQ. Параметр autoconfig должен указываться после параметров: port, auto_irq, and skip_test.

auto_irq

Попытаться определить линию прерываний IRQ во время выполнения автоматической конфигурации. Данная возможность не гарантирует, что результат её работы будет верным; некоторая аппаратура может обмануть ядро Linux. И в целом безопаснее не использовать возможности auto_irq, предпочтительнее явно указать IRQ с помощью параметра irq.

^auto_irq

Не пытаться определить линию прерываний IRQ во время выполнения автоматической конфигурации.

skip_test

Пропустить проверку микросхемы UART. Некоторые внутренние модемы вместо микросхем UART, совместимых с чипами UART от National Semiconductor, имеют дешёвые имитирующие UART подделки. Некоторые из этих поделий не поддерживают в полном объёме режим обнаружения с применением внутренней "заглушки" (loopback), используемый ядром для уверенного определения типа микросхемы UART доступной по соответствующему адресу, прежде чем попытаться её сконфигурировать. Итак, вам не потребуется указывать этот параметр для надёжных внутренних модемов, ведь Linux может корректно инициализировать микросхемы UART.

^skip_test

Не пропускать проверку микросхемы UART во время выполнения автоматической конфигурации.

baud_base скорость_в_бодах

Этот параметр устанавливает частоту изменения состояния сигнала линии в бодах, которая является опорной частотой внутреннего генератора поделенной счётчиком-делителем на 16. Обычно, это значение равно 115200 бод, это также самая высокая скорость которую может поддерживать микросхема UART.

spd_hi

Использовать 57,6 Кбод, когда приложение запрашивает 38,4 Кбод. Этот параметр может применяться непривилегированным пользователем.

spd_vhi

Использовать 115 Кбод, когда приложение запрашивает 38,4 Кбод. Этот параметр может применяться непривилегированным пользователем.

spd_shi

Использовать 230 Кбод, когда приложение запрашивает 38,4 Кбод. Этот параметр может применяться непривилегированным пользователем.

spd_warp

Использовать 460 Кбод, когда приложение запрашивает 38,4 Кбод. Этот параметр может применяться непривилегированным пользователем.

spd_cust

Использовать пользовательский делитель при установке скорости передачи данных, когда приложение запрашивает 38,4 Кбод. Делитель определяется по формуле D=115200/V, где V - скорость передачи, бит/с. Входная частота синхронизации 1,8432 МГц делится на заданный коэффициент, после чего получается 16-кратная частота передачи данных. Иначе говоря, будет установлена скорость baud_base делённая на divisor. Этот параметр может применяться непривилегированным пользователем.

spd_normal

Использовать 38,4 Кбод, когда приложение запрашивает 38,4 Кбод. Этот параметр может применяться непривилегированным пользователем.

divisor делитель

Этот параметр устанавливает пользовательское деление частоты синхронизации. Данный делитель будет использован, при применении параметра spd_cust и установке приложением скорости передачи данных последовательного порта в 38,4 Кбод. Этот параметр может применяться непривилегированным пользователем.

sak

Установить разделяющий ключ в электронный ключ безопасности.

^sak

Выключить электронный ключ безопасности.

fourport

Сконфигурировать порт как четырёх-портовую карту AST.

^fourport

Выключить настройку четырёх-портовой карты AST.

close_delay задержка

Определить период времени, в сотых долях секунды, в течении которого выход сигнала готовности терминала (компьютера/модема) к обмену данными DTR (Data Terminal Ready) должен быть низким, после которого устройство осуществляющее исходящий звонок будет закрыто, прежде чем, для осуществления дозвона, заблокированное устройство повысит уровень выходного сигнала DTR снова. По умолчанию, значение параметра задержки равно 50, или пол-секунды.

closing_wait задержка

Определить период времени, в сотых долях секунды, в течении которого ядро будет ожидать поступление данных передаваемых из последовательного порта, прежде чем закрыть порт. Если указать "нисколько", то задержка происходить не будет. Если указать "бесконечно", то ожидание ядром передачи буферизованых данных будет неограниченным. По умолчанию значение задержки установлено в 3000 или 30 секунд. Эта стандартное значение подойдёт для большинства устройств. Если выбрана слишком продолжительная задержка, то последовательный порт может "подвиснуть" на долгое время ожидая данные от прерванного соединения. Если выбран слишком короткая задержка, то появляется риск, что некоторые передаваемые данные будут утеряны. В случае, если устройство чрезвычайно медленное, такое как плоттер, потребуется установить большее значение closing_wait.

session_lockout

Блокировать обращения других сеансов к порту исходящих вызовов (/dev/cuaXX). Процесс, однажды открыв порт, не разрешит процессу с другим идентификатором сеанса открыть этот порт, пока первый процесс его не закроет.

^session_lockout

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

pgrp_lockout

Блокировать обращения процессов других групп к порту исходящих вызовов (/dev/cuaXX). Процесс, однажды открыв порт, не разрешит процессам других групп открыть этот порт, пока первый процесс его не закроет.

^pgrp_lockout

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

hup_notify

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

^hup_notify

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

split_termios

Отдельно обрабатывать установки termios для устройства исходящих и для устройства входящих звонков.

^split_termios

Использовать одну и туже структуру termios для хранения настроек устройств и входящих и исходящих звонков.

callout_nohup

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

^callout_nohup

Не игнорировать разрыв терминального соединения когда последовательный порт открыт как устройство исходящих звонков. Конечно же, если разрыв соединения произошёл, флаг HUPCL в termios должен быть включен.

low_latency

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

^low_latency

Оптимизировать обработку последовательных символов в пользу эффективного использования CPU и ценой среднего времени ожидания обработки в 5-10 мс. Данный параметр установлен по умолчанию.

## КОНФИГУРИРОВАНИЕ ПОСЛЕДОВАТЕЛЬНЫХ ПОРТОВ
Управление последовательным портом разделяется на два этапа - предварительное конфигурирование аппаратных средств и текущее (оперативное) переключение режимов работы прикладным и системным ПО. Важно отметить, что setserial не настраивает аппаратное обеспечение, конкретную последовательную микросхему на использование конкретного базового адреса ввода/вывода. Setserial всего лишь говорит ядру Linux где найти для данного последовательного порта, соответствующие ему базовый адрес ввода/вывода (I/O port) и линию аппаратных прерываний IRQ. Аппаратные средства могут настраиваться следующим образом. Порт, расположенный на плате расширения (мультикарте), устанавливаемый в слот расширения PCI (или ISA, ISA+VLB), обычно конфигурируется переключателями на самой плате. Порт, расположенный на системной (материнской) плате, обычно конфигурируется в BIOS, иногда переключением некоторых DIP-переключателей на плате.

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

"Стандартная в MS-DOS" конфигурация портов представлена ниже:

```
/dev/ttys0 (COM1), port 0x3f8, irq 4
/dev/ttys1 (COM2), port 0x2f8, irq 3
/dev/ttys2 (COM3), port 0x3e8, irq 4
/dev/ttys3 (COM4), port 0x2e8, irq 3
```

```

```

Из-за ограничений, накладываемых архитектурой шины AT/ISA, линия запроса прерываний IRQ не может разделяться между двумя или более последовательными портами. Если вы попытаетесь использовать два порта одновременно, то один из них, или сразу оба будут работать ненадёжно. Это ограничение можно преодолеть, используя специальные многопортовые карты, которые разработаны так, чтобы несколько последовательных портов могли разделять одну линию аппаратных прерываний IRQ. Linux поддерживает многопортовые последовательные карты, включая AST FourPort, плату Accent Async, плату Usenet Serial II board, платы Bocaboard BB-1004, BB-1008, и BB-2016, и последовательную плату HUB-6.

Выбор альтернативной линии прерываний IRQ затруднён, так как большинство из них уже занято. В следующей таблице приведён список назначенных линий прерываний IRQ "стандартных для MS-DOS":

```
IRQ 3: COM2
IRQ 4: COM1
IRQ 5: LPT2
IRQ 7: LPT1
```

```

```

Большинство людей находят, что IRQ 5 это хороший выбор, предполагая, что только один параллельный порт компьютера будет задействован. Другой хороший вариант это IRQ 2 (он же IRQ 9); несмотря на то, что эта линия IRQ иногда используется сетевой картой, и реже бывает, что карта VGA сконфигурирована на использование IRQ 2 для прерываний вертикальной развёртки. Если ваша карта VGA настроена именно так, попробуйте отключить это, и тогда вы сможете присвоить эту линию IRQ другой карте. В Linux и большинстве других операционных систем в этом нет необходимости.

Пожалуй, только линии прерываний IRQ 3, 4, и 7 используются последовательными и параллельными портами. (Если ваша последовательная карта имеет 16-битный коннектор, и поддерживает высокие номера прерываний, то также будут доступны IRQ 10, 11, 12, и 15.)

На машинах класса AT, линия IRQ 2 представляется как IRQ 9, и Linux так и будет её интерпретировать.

Иные линии прерываний IRQ, кроме 2 (9), 3, 4, 5, 7, 10, 11, 12, и 15, не должны использоваться, так как присвоены другим аппаратным средствам и, в общем случае, не могут быть изменены. "Стандартно" аппаратные прерывания распределены следующим образом:

```
IRQ  0      Прерывания от таймера
IRQ  1      Прерывания от клавиатуры
IRQ  2      Связь со вторым контроллером прерываний (каскадное прерывание)
IRQ  3      Последовательный порт 2
IRQ  4      Последовательный 1
IRQ  5      Параллельный порт 2 или звуковая карта (в PS/2 свободно)
IRQ  6      Контроллер дисковода
IRQ  7      Параллельный порт 1
IRQ  8      Текущее время
IRQ  9      Свободно или сетевая карта, иногда переназначено на IRQ2
IRQ 10      Свободно
IRQ 11      Свободно, SCSI адаптер или поддержка IRQ для управления PCI
IRQ 12      Свободно или порт мыши Bus Mouse
IRQ 13      Математический сопроцессор
IRQ 14      Контроллер дисковых накопителей (первичный IDE)
IRQ 15      Контроллер дисковых накопителей (вторичный IDE) или свободно
```

```

```

## НАСТРОЙКА МНОГОПОРТОВЫХ ПЛАТ
Некоторые многопортовые последовательные платы разделяют одну линию прерываний IRQ между одним или несколькими портами, обнаруживая ожидает или нет обслуживания любой из портов. Если многопортовая плата поддерживает эти порты, то вам следует использовать их, во избежании появления запертых устройств в случае потери прерывания.

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

Может быть определено до четырёх комбинаций port/mask/match. Первая из этих комбинаций, должна быть определена параметрами port1, mask1, и match1. Вторая комбинация задаётся указанием port2, mask2, и match2, и так далее. Для отключения этой проверки множества портов, значение port1 следует установить в ноль.

Для просмотра многопортовых настроек, в вызове команды setserial укажите параметр get_multiport.

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

```
AST FourPort    port1 0x1BF mask1 0xf match1 0xf
Boca BB-1004/8  port1 0x107 mask1 0xff match1 0
Boca BB-2016    port1 0x107 mask1 0xff match1 0

                port2 0x147 mask2 0xff match2 0
```

```

```

## Конфигурирование Hayes ESP
Также setserial может быть использована для настройки последовательной платы Hayes ESP.

Нижеперечисленные параметры используются для настройки последовательных портов ESP:

rx_trigger

Уровень триггера (в байтах) FIFO-приёмника. Следствием установки большего значения, может быть уменьшение количества прерываний и следовательно повышение производительности; тем не менее, слишком большое значение может привести к потерям данных. Допустимые значения от 1 до 1023.

tx_trigger

Уровень триггера (в байтах) FIFO-передатчика. Следствием установки большего значения, может быть уменьшение количества прерываний и следовательно повышение производительности; тем не менее, слишком большое значение может привести к потерям данных. Допустимые значения от 1 до 1023.

flow_off

Уровень (в байтах), на котором порт ESP "отключит поток" от удалённого передатчика (т.е., сообщит ему о прекращении отправки байтов). Допустимые значения от 1 до 1023. Это значение должно быть больше уровня триггера приёмника и уровня "flow on (включить поток)".

flow_on

Уровень (в байтах), на котором порт ESP "включит поток" от удалённого передатчика (т.е., сообщит ему о продолжении отправки байтов). Допустимые значения от 1 до 1023. Это значение должно быть меньше уровня "flow off (отключить поток)", но больше уровня триггера приёмника.

rx_timeout

Период времени ожидания портом ESP, после получения последнего символа, перед вызовом прерывания. Параметр может принимать значение от 0 до 255. Слишком высокое значение увеличит время реакции, а слишком низкое повлечёт излишние прерывания.

## ПРЕДОСТЕРЕЖЕНИЕ
ПРЕДОСТЕРЕЖЕНИЕ: Настройка последовательного порта для использования неверного базового адреса ввода/вывода может запереть вашу машину.

## FILES
/etc/rc.local /etc/rc.serial

## СМ. ТАКЖЕ
tty(4), ttys(4), kernel/chr_drv/serial.c

## АВТОР
Оригинальная версия setserial была написана Риком Сладким (Rick Sladkey) (jrs@world.std.com), изменения были внесены Майклом К. Джонсоном (Michael K. Johnson) (johnsonm@stolaf.edu).

Эта версия была переписана "с нуля" Тэодором Ц'о (Theodore Ts'o) (tytso@mit.edu) 1/1/93. Исключительная ответственность за любые ошибки и проблемы лежит на нём.

## БЛАГОДАРНОСТИ
В процессе перевода сильно помогли главы 9 и 10 книги Михаила Гука "Аппаратные средства IBM PC. Энциклопедия". С большой признательностью, в часть "КОНФИГУРИРОВАНИЕ ПОСЛЕДОВАТЕЛЬНЫХ ПОРТОВ" включены почти дословно пара предложений из раздела 9.2.7 той же книги.

## ПЕРЕВОД
Василий Коломеец (Vasily Kolomeets) <boojuman@gmail.com>


sftp-server

package: man-pages-ru-extra

title: sftp-server(8)

summary: подсистема сервера SFTP

text:
# sftp-server(8)

## ИМЯ
sftp-server — подсистема сервера SFTP

## ОБЗОР
sftp-server [-f подсистема_журналирования] [-l уровень_журналирования]

## ОПИСАНИЕ
sftp-server это программа обменивается данными с клиентом через стандартный ввод и вывод, используя при этом протокол SFTP. sftp-server не должен вызываться непосредственно. Его должна вызывать программа sshd(8) при соответствующем значении параметра Subsystem.

Ключи командной строки sftp-server следует указывать в директиве Subsystem. См. sshd_config(5).

Допустимые ключи:

-f подсистема_журналирования

Код источника сообщений для sftp-server который следует использовать при взаимодействии с протоколом syslog. Допустимые значения: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. Значение по умолчанию - AUTH.

-l уровень_журналирования

Уровень сообщений для журналирования sftp-server. Допустимыми являются значения: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 и DEBUG3. При значении INFO и VERBOSE в протокол заносятся операции которые sftp-server выполняет относительно клиентов. Значения DEBUG и DEBUG1 эквивалентны. DEBUG2 и DEBUG3 выводят максимум подробностей. Значение по умолчанию: ERROR.

## СМ. ТАКЖЕ
sftp(1), ssh(1), sshd_config(5), sshd(8) T. Ylonen and S. Lehtinen, SSH File Transfer Protocol, draft-ietf-secsh-filexfer-00.txt, January 2001, work in progress material.

## ИСТОРИЯ
sftp-server впервые появился в OpenBSD 2.8.

## АВТОР
Markus Friedl ⟨markus@openbsd.org⟩

Николай Шафоростов <shafff@ukr.net> 2007>


ss

title: ss(8)

text:
# ss(8)

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

## СИНТАКСИС
ss [опции] [ ФИЛЬТР ]

## ОПИСАНИЕ
ss используется для вывода статистики сокета в формате netstat. Эта программа выводит больше информации по TCP чем другие программы.

## ОПЦИИ
Программа придерживается обычной практики синтаксиса опций GNU, когда длинные опции начинаются с двух дефисов (`-'). ss поддерживает следующие опции:

-h, --help

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

-V, --version

Вывести версию программы.

-n, --numeric

Не раскрывать имена служб.

-r, --resolve

Не раскрывать номера адресов/портов.

-a, --all

Показывать все сокеты.

-l, --listening

Показывать слушающие сокеты.

-o, --options

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

-e, --extended

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

-m, --memory

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

-p, --processes

Показывать процесс, использующий сокет.

-i, --info

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

-s, --summary

Выводить сводку. Эта опция не обрабатывает список сокетов, а получает сведения из других источников. Полезно при огромном количестве сокетов, что делает обработку файла /proc/net/tcp слишком долгим.

-4, --ipv4

Показывать только сокеты IP версии 4 (аналогично -f inet).

-6, --ipv6

Показывать только сокеты IP версии 6 (аналогично -f inet6).

-0, --packet

Показывать пакетные сокеты.

-t, --tcp

Показывать только сокеты TCP.

-u, --udp

Показывать только сокеты UDP.

-d, --dccp

Показывать только сокеты DCCP.

-w, --raw

Показывать только сокеты RAW.

-x, --unix

Показывать только сокеты Unix.

-f ТИП, --family=ТИП

Показывать только сокеты указанного ТИПА. Поддерживаются следующие типы: unix, inet, inet6, link, netlink.

-A ЗАПРОС, --query=ЗАПРОС

Список таблиц сокетов, разделенных запятыми. Поддерживаются следующие идентификаторы: all, inet, tcp, udp, raw, unix, packet, netlink, unix_dgram, unix_stream, packet_raw, packet_dgram.

-D ФАЙЛ

Не показывать ничего, вывести необработанные данные о сокетах TCP в ФАЙЛ с учетом фильтров. Если ФАЙЛ указан как -, вывести на стандартный вывод.

-F ФАЙЛ, --filter=ФАЙЛ

Прочитать фильтр из ФАЙЛА. Каждая строка ФАЙЛА интерпретируется как отдельная опция командной строки. Если ФАЙЛ указан как -, получить содержимое из стандартного ввода.

FILTER := [ state ФЛАГ_TCP ] [ ВЫРАЖЕНИЕ ]

Обратитесь к официальной документации (пакет iproute-doc в Debian) для описания фильтров.

## ПРИМЕРЫ
ss -t -a

Показать все сокеты TCP.

ss -u -a

Показать все сокеты UDP.

ss -o state established '( dport = :ssh or sport = :ssh )'

Показать все установленные соединения SSH.

ss -x src

Найти все локальные процессы, подключенные к X-серверу.

ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24

Вывести список всех сокетов TCP, имеющих состояние FIN-WAIT-1, вашего сервера Apache для сети 193.233.7/24 и показать их таймеры.

## СМ. ТАКЖЕ
ip(8), /usr/share/doc/iproute-doc/ss.html (пакет iproute-doc)

## АВТОРЫ
ss написана Алексеем Кузнецовым <kuznet@ms2.inr.ac.ru>.

Страница руководства написана Майклом Прокопом (Michael Prokop) <mika@grml.org> для проекта Debian.

## ПЕРЕВОД
Андрей Черепанов <cas@altlinux.ru> 2007


ssh-keysign

title: ssh-keysign(8)

text:
# ssh-keysign(8)

## ИМЯ
ssh-keysign — - вспомогательная программа ssh для аутентификации по хосту

## ОБЗОР
ssh-keysign

## ОПИСАНИЕ
ssh-keysign используется программой ssh(1) для доступа к локальным ключам хоста и генерирования цифровой подписи, требуемой при аутентификации по хосту (протокол SSH 2).

ssh-keysign изначально отключена. Включить её можно включить только в глобальном файле конфигурации /etc/ssh/ssh_config установив EnableSSHKeysign в “yes”.

ssh-keysign не должна запускаться напрямую. Её должна вызывать ssh(1). См. ssh(1) и sshd(8) про аутентификацию по хосту.

## ФАЙЛЫ
/etc/ssh/ssh_config

Содержит директиву, включающую использование ssh-keysign.

/etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_rsa_key

Файлы с закрытыми компонентами ключей хоста используемых для генерирования цифровых подписей. Должны принадлежать пользователю root, доступны для чтения только root и не быть доступными остальным. Следовательно, для этого потребуется установить бит set-uid root для ssh-keysign.

## СМ. ТАКЖЕ
ssh(1), ssh-keygen(1), ssh_config(5), sshd(8)

## ИСТОРИЯ
ssh-keysign впервые появился в OpenBSD 3.2.

## АВТОР
Markus Friedl ⟨markus@openbsd.org⟩

Николай Шафоростов <shafff@ukr.net> 2007>


ssh-rand-helper

title: ssh-rand-helper(8)

summary: сборщик случайных чисел для OpenSSH

text:
# ssh-rand-helper(8)

## ИМЯ
ssh-rand-helper — сборщик случайных чисел для OpenSSH

## ОБЗОР
ssh-rand-helper [-vxXh] [-b количество_байт]

## ОПИСАНИЕ
ssh-rand-helper это небольшая вспомогательная программа используемая ssh(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), ssh-keyscan(1) и sshd(8) для сбора случайных чисел для использования в шифровании если такая функция недоступна в openssl(4).

ssh-rand-helper генерирует начальное число для генератора псевдослучайных чисел и выдаёт его на стандартный вывод. Если он не перенаправляется, а выводится на экран, то для числа будет использоваться шестнадцатеричный формат, если явно не указано другое.

По умолчанию случайные числа получаются на основе вывода команд перечисленных в /etc/ssh/ssh_prng_cmds. Вывод каждый команды хэшируется и используется для генерирования начального числа для генератора псевдослучайных чисел. ssh-rand-helper также хранит файлы с начальными числами в ~/.ssh/prng_seed между запусками.

При сборке ssh-rand-helper можно включить сбор случайных чисел с сервера EGD/PRNGd через unix-домен или tcp-сокет localhost.

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

-b количество_байт

Количество байт которые следует выводить.

-x

Выводить число в виде текста в шестнадцатеричном виде.

-X

Выводить байты в двоичном виде, даже если вывод осуществляется на экран

-v

Включить отладочные сообщения. Указание нескольких -v увеличит подробность сообщений.

-h

Вывести список доступных ключей.

## АВТОР
Damien Miller <djm@mindrot.org>

## СМ. ТАКЖЕ
ssh(1), ssh-add(1), ssh-keygen(1), sshd(8)

Николай Шафоростов <shafff@ukr.net> 2007>


sshd

title: sshd(8)

summary: OpenSSH, сервер протокола SSH

text:
# sshd(8)

## ИМЯ
sshd — OpenSSH, сервер протокола SSH

## ОБЗОР
sshd [-46Ddeiqt] [-b длина_ключа_1] [-f файл_конфигурации] [-g время_задержки_регистрации] [-h файл_ключа_хоста] [-k частота_генерации_ключа] [-o директива] [-p порт] [-u длина]

## ОПИСАНИЕ
sshd (openSSH Daemon) - это программа-сервер, обслуживающая запросы программы-клиента ssh(1). Вместе эти программы заменяют rlogin и rsh и обеспечивают защищённую и зашифрованную связь между двумя непроверенными компьютерами через незащищённую сеть.

sshd - это служба, принимающая запросы на соединения от клиентов. Обычно она запускается при загрузке системы из /etc/rc. Для каждого нового соединения создаётся (с помощью вызова fork(2)) новый экземпляр службы. Ответвлённый экземпляр обрабатывает обмен ключами, шифрование, аутентификацию, выполнение команд и обмен данными.

Параметры sshd определяются при помощи ключей командной строки или файла конфигурации (по умолчанию - sshd_config(5)). Ключи командной строки имеют больший приоритет, чем значения, указанные в файле конфигурации. При получении сигнала отбоя SIGHUP, sshd перечитывает свой файл конфигурации путём запуска собственной копии с тем же самым именем, с которым был запущен, например, /usr/sbin/sshd.

Доступны следующие ключи:

-4

Использовать только адреса IPv4.

-6

Использовать только адреса IPv6.

-b длина_ключа_1

Определяет число битов в ключе сервера протокола версии 1 (по умолчанию 768).

-D

Не переходить в фоновый режим и не становиться демоном. Это упрощает слежение за экземпляром sshd.

-d

Режим отладки. Сервер посылает расширенную отладочную информацию в файл журнала событий системы и не переходит в фоновый режим работы. Также сервер не создаёт дочерних процессов и обрабатывает только одно соединение. Этот параметр предназначен только для отладки работы сервера. Несколько параметров -d указанных один за другим, повышают уровень отладки. Максимум - это 3.

-e

Направлять вывод в консоль (stderr) вместо механизма журналирования событий системы.

-f файл_конфигурации

Определяет имя файла конфигурации. По умолчанию - это /etc/ssh/sshd_config. sshd отказывается работать, не имея файла конфигурации.

-g время_задержки_регистрации

Определяет период, в течение которого клиент должен себя идентифицировать (по умолчанию - 120 секунд). Если клиент не смог идентифицировать себя в течение этого времени, экземпляр сервера прекращает свою работу. Значение равное нулю отменяет ограничение на время ожидания.

-h файл_ключа_хоста

Определяет файл, из которого будет считан ключ хоста Этот параметр должен быть указан, если sshd запущен не от имени суперпользователя (так как обычно стандартные файлы хоста доступны для чтения только суперпользователю). Стандартное расположение файла - /etc/ssh/ssh_host_key для протокола версии 1, и /etc/ssh/ssh_host_rsa_key и /etc/ssh/ssh_host_dsa_key для протокола версии 2. Можно иметь несколько ключей хоста для разных версий протокола и алгоритмов генерации ключей.

-i

Этот ключ позволяет уведомить программу sshd о том, что она запускается службой inetd(8). Обычно sshd не запускается из inetd, так как требуется генерировать ключ сервера до ответа клиенту, а это может отнять десятки секунд. Клиент будет вынужден ожидать слишком долго, если ключ будет повторно генерироваться каждый раз. Однако, при малых размерах ключа (например, 512), использование sshd

из inetd может быть оправдано.

-k частота_генерации_ключа

Определяет, как часто будет регенерироваться ключ сервера протокола версии 1 (по умолчанию 3600 секунд - один раз в час). Мотивацией для регенерации ключа так часто служит то, что ключ нигде не сохраняется и, по истечении примерно часа, восстановить ключ для прерванных соединений становится невозможно даже если машина была взломана или захвачена физически. Значение ноль означает, что ключ никогда не будет регенерирован.

-o директива

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

-p порт

Порт, на котором сервер будет ожидать соединения (по умолчанию - 22). Возможно указание нескольких ключей с разными портами. Если данный ключ указан, параметр Port файла конфигурации игнорируется, однако порты, указанные в ListenAddress, имеют больший приоритет, чем указанные в командной строке.

-q

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

-t

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

-u длина

Размер поля в структуре utmp, хранящей имя удалённого хоста. Если разрешённое имя хоста превышает указанное значение, то взамен будет использован десятичное представление IP-адреса через точку. Это позволяет уникально идентифицировать машины со слишком длинными именами. Указание -u0 включает использование в файле utmp IP-адресов во всех случаях. При этом sshd будет производить DNS-запросы только если это явно требуется конфигурацией ( from="pattern-list" ) или механизмом аутентификации (либо RhostsRSAAuthentication, либо HostbasedAuthentication ). Использование DNS также обязательно в случае задания параметрам AllowUsers и DenyUsers значения в формате USER@HOST.

## АУТЕНТИФИКАЦИЯ
Служба OpenSSH SSH поддерживает версии протокола SSH 1 и 2. Запретить использование одного из протоколов можно, указав в параметре Protocol файла sshd_config(5). Протокол 2 поддерживает ключи RSA и DSA; протокол 1 поддерживает только ключи RSA. Независимо от протокола, каждый подключающийся хост имеет собственный, обычно 2048-битный идентифицирующий его ключ.

Для протокола версии 1 подтверждение субъекта сервера обеспечивается 768-битным ключом, который генерируется при запуске сервера. Ключ генерируется заново каждый час, при условии его использования, и не хранится на диске. При получении запроса на подключение со стороны клиента служба посылает в ответ свой открытый ключ и свои ключи. Клиент сравнивает ключ хоста RSA со своими данными, чтобы убедиться в том, что это тот же сервер. Затем клиент генерирует 256-битное произвольное число, шифрует его при помощи обоих ключей (своего и сервера) и отправляет результат серверу. Это число становится ключом сеанса, и с его помощью выполняется кодирование всей последующих данных, по согласованному методу - Blowfish или 3DES (клиент выбирает метод из предложенных сервером). В настоящее время по умолчанию используется 3DES.

Для протокола версии 2 подтверждение субъекта сервера обеспечивается по схеме Диффи-Хеллмана, в результате которой также получается общий ключ сеанса. Дальнейший обмен данными шифруется симметричным кодом, 128-битным AES, Blowfish, 3DES, CAST128, Arcfour, 192-битным AES или 256-битным AES, который выбирает клиент из предложенных сервером. Кроме того, целостность передаваемых данных обеспечивается кодом подтверждения подлинности сообщения (hmac-sha1 или hmac-md5).

Далее, сервер и клиент переходят в режим аутентификации. Клиент пытается аутентифицировать себя по своему хосту, открытому ключу, паролю или с помощью безпарольного механизма ("вызов-ответ")

Независимо от типа аутентификации служба проверяет доступность соответствующей учётной записи в системе. Так, она может быть заблокирована посредством добавления её в параметр DenyUsers или её группы в DenyGroups . Механизм общесистемной блокировки учётной записи выполняется разными системами по-разному. Одни системы ведут собственную базу данных учётных записей (AIX), другие вносят соответствующие изменения в поля файла passwd ( ‘*LK*’ - Solaris и UnixWare, ‘*’ - на HP-UX, ‘Nologin’ - Tru64, ‘*LOCKED*’ во FreeBSD и ‘!!’ в GNU/Linux). Для запрета только аутентификации по паролю укажите в файле passwd ‘NP’ или ‘*NP*’.

После успешной аутентификации себя клиентом связь переходит в режим подготовки сеанса. В этот момент клиент может запросить такие вещи, как выделение псевдо-терминала, перенаправление соединения Х11, перенаправление соединения TCP/IP или перенаправление соединения агента аутентификации через защищённый канал.

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

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

## ВХОД В СИСТЕМУ
После успешной аутентификации пользователя sshd выполняет следующие действия:

- Если регистрация в системе произведена на терминале (tty) и не указана никакая команда, то отображается время последнего входа в систему и содержимое файла /etc/motd (если только это не отключено в файле конфигурации или ~/.hushlogin; см. раздел ФАЙЛЫ ).

- Если регистрация в системе произведена на терминале, записывает время регистрации.

- Проверяет /etc/nologin; если он присутствует, выводит его содержимое и завершает работу (исключение - root).

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

- Устанавливает значения основных переменных среды.

- Интерпретирует файл ~/.ssh/environment, если таковой имеется и пользователям разрешено изменять среду. См. параметр PermitUserEnvironment в sshd_config(5).

- Переходит в домашний каталог пользователя.

- Если имеется файл ~/.ssh/rc, выполняет его, а если нет и имеется /etc/ssh/sshrc, то выполняет его, в противном случае выполняет xauth. Файлам “rc” на стандартный ввод передаётся протокол аутентификации Х11 и cookie. См. SSHRC, ниже.

- Запускает оболочку пользователя или выполняет указанную команду.

## SSHRC
Если файл ~/.ssh/rc существует, он будет выполняется после файлов определения переменных среды, но перед запуском оболочки пользователя или команды. Если используется подмена Х11, то на его стандартный ввод будет передана пара "proto cookie", также ему будет доступна переменная среды DISPLAY. Сценарий должен вызывать xauth(1) самостоятельно для добавления cookie X11.

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

Этот файл будет вероятно содержать блок аналогичный следующему:

```
if read proto cookie && [ -n "$DISPLAY" ]; then
	if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
		# X11UseLocalhost=yes
		echo add unix:`echo $DISPLAY |
		    cut -c11-` $proto $cookie
	else
		# X11UseLocalhost=no
		echo add $DISPLAY $proto $cookie
	fi | xauth -q -
fi
```

Если этот файл отсутствует, то выполняется /etc/ssh/sshrc, а если отсутствует и он, то для добавления cookie используется xauth.

## ФОРМАТ ФАЙЛА AUTHORIZED_KEYS
Параметр файла конфигурации AuthorizedKeysFile определяет путь к файлу с открытыми ключами. Значение по умолчанию - ~/.ssh/authorized_keys. Каждая строка файла содержит один ключ (пустые строки или строки, начинающиеся с символа ‘#’ считаются комментариями и игнорируются). Открытые ключи протокола 1 (RSA) состоят из следующих полей, разделённых пробелами: параметры, битность, порядок, модуль, комментарий. Открытые ключи протокола версии 2 состоят из: параметр, тип ключа, ключ в виде base64, комментарий. Поля параметров необязательны; их отсутствие определяется наличием в начале строки цифры (поле параметра никогда не начинается с цифры). Поля битности, порядка, модуля и комментарии определяют ключ RSA; поле комментария не используется (но может быть удобно пользователю для отметки ключа). Для протокола версии 2 типом ключа является “ssh-dss” или “ssh-rsa”.

Заметьте, что строки в этих файлах, обычно имеют длину в несколько сотен байт (из-за размера открытого ключа RSA) и могут достигать длины в 8 килобайт (таким образом, максимальный размер ключа DSA - 8 килобит, а RSA - 16 килобит). Очевидно, не стоит вводить их вручную. Вместо этого скопируйте файл identity.pub, id_dsa.pub, или id_rsa.pub и отредактируйте их.

Минимальная длина модуля RSA независимо от протокола составляет 768 бит.

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

command="команда"

Выполнять команду при каждом использовании данного ключа для аутентификации. Команда, передаваемая пользователем, будет игнорироваться. Команда выполняется на псевдо-терминале, если последний запрашивается клиентом; в противном случае она выполняется без терминала. Если требуется "чистый" 8-битный канал, запрашивать псевдо-терминал или указывать no-pty нельзя. В команду может быть включена кавычка, предварённая обратной косой чертой. Данный параметр полезен для ограничения использования определённых RSA-ключей. Примером может служить ключ, по которому можно выполнять удалённые операции резервного копирования и ничего более. Учтите, что клиент по-прежнему может запросить перенаправление TCP и/или X11, если только это не запрещен явно. Команда запрашиваемая клиентом заносится в переменную SSH_ORIGINAL_COMMAND. Заметьте, что данный параметр относится к выполнению оболочки, команды или подсистемы.

environment="ПЕРЕМЕННАЯ=значение"

Добавить переменную в среду (или переопределить её значение) при регистрации в системе с использованием данного ключа. Допускается указание нескольких таких директив. По умолчанию изменение переменных среды таким образом отключено. За его включение отвечает параметр PermitUserEnvironment. Этот параметр отключается автоматически при включении UseLogin.

from="список-шаблонов"

Если параметр определён, то в дополнение к прохождению аутентификации по открытому ключу каноническое имя удалённого хоста должно соответствовать одному из шаблонов в списке (шаблоны указываются через запятую). Цель этого параметра - увеличение степени защиты: если частный ключ хоста каким-либо образом удастся похитить, то он позволит злоумышленнику войти в систему из любой точки мира. Этот дополнительный параметр делает использование ворованных ключей более затруднительным (кроме перехвата ключа, требуется взлом серверов имён и/или маршрутизаторов). См. ШАБЛОНЫ в ssh_config(5.)

no-agent-forwarding

Запретить перенаправление агента аутентификации при аутентификации данным ключом.

no-port-forwarding

Запретить перенаправление TCP/IP при аутентификации данным ключом. Любой запрос на перенаправление порта приведёт к получению клиентом сообщения об ошибке. Это может быть использовано, например, вместе с параметром command.

no-pty

Запретить назначение терминала (запросы на назначение псевдо-терминала не будут удовлетворены).

no-X11-forwarding

Запретить перенаправление Х11 при аутентификации данным ключом. Любой запрос на перенаправление порта возвратит клиенту сообщение об ошибке.

permitopen="хост:порт"

Для функции перенаправления данных с локального клиентского порта на порт удалённой системы (выполняемого при указании ``ssh -L'' ) ограничить набор возможных целей для перенаправления указанной машиной и портом. Для указания адресов IPv6 можно использовать альтернативный синтаксис: хост/порт. Допускается указание нескольких целей через запятую. Значение параметра не интерпретируется как шаблон (т.е. является литеральным).

tunnel="n"

Принудительно использовать устройство tun(4) на сервере. Без этого параметра при запросе клиентом туннеля используется ближайшее доступное для этого устройство.

Пример файла authorized_keys:

```
# допустимы комментарии только на всю строку
ssh-rsa AAAAB3Nza...LiPk== user@example.net
from="*.sales.example.net,!pc.sales.example.net" ssh-rsa
AAAAB2...19Q== john@example.net
command="dump /home",no-pty,no-port-forwarding ssh-dss
AAAAC3...51R== example.net
permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-dss
AAAAB5...21S==
tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...==
jane@example.net
```

## ФОРМАТ ФАЙЛА SSH_KNOWN_HOSTS
В файлах /etc/ssh/ssh_known_hosts и ~/.ssh/known_hosts хранятся открытые ключи всех машин, с которыми когда-либо устанавливалась связь. Глобальный файл должен быть подготовлен администратором (это необязательно), пользовательский файл поддерживается автоматически: каждый раз, когда поступает запрос на соединение от неизвестной машины, её ключ автоматически заносится в пользовательский файл.

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

Имена хостов - это разделённый запятыми список шаблонов (символы подстановки - (‘*’ и ‘?’ ); каждый шаблон сопоставляется с каноническим именем машины (при аутентификации клиента) или с именем, которое указано пользователем (при аутентификации сервера). Этот шаблон может также быть предварён знаком ‘!’ для обозначения отрицания: если имя машины соответствует отрицаемому шаблону, оно будет отвергнуто (этой строкой) даже если оно соответствует другому шаблону в этой же строке. Также можно, заключив имя хоста или IP-адрес в квадратные скобки - ‘[’ и ‘],’ - через ‘:’ указать нестандартный порт.

Вместо имён хостов можно записывать их хэши. Это позволит скрыть их от злоумышленника в случае попадания файла в его руки. Для различия хэшей от имён хостов первые предваряются символом ‘|.’ На одной строке может быть не больше одного хэша, операция отрицания в этом случае не доступна.

Разрядность, порядок и модуль копируются из ключа хоста RSA, например, /etc/ssh/ssh_host_key.pub. Необязательное поле комментария занимает всю оставшуюся часть строки и игнорируется.

Комментариями также считаются пустые и строки начинающиеся с ‘#.’

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

Заметьте, что строки в этих файлах, обычно имеют длину в несколько сотен символов и, очевидно, не стоит вводить имена хостов вручную. Вместо этого их можно сгенерировать при помощи сценария оболочки или взять из файла /etc/ssh/ssh_host_key.pub, добавив вначале имя хоста.

Пример файла ssh_known_hosts:

```
# допустимы явные комментарии только на всю строку
closenet,...,192.0.2.53 1024 37 159...93 closenet.example.net
cvs.example.net,192.0.2.10 ssh-rsa AAAA1234.....=
# хэш имени хоста
|1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa
AAAA1234.....=
```

## ФАЙЛЫ
~/.hushlogin

Позволяет отключить вывод времени последнего входа в систему и содержимого файла /etc/motd, если в файле конфигурации включены соответственно PrintLastLog и PrintMotd. Файл не влияет на вывод содержимого Banner.

~/.rhosts

Этот файл используется для аутентификации по хосту (см. ssh(1) ). На некоторых машинах, если каталог пользователя находится на разделе NFS, для того чтобы он был доступен пользователю root, он должен быть доступен для чтения всем. Файл должен принадлежать пользователю и не должен быть доступен для записи другим. Рекомендуемый набор прав доступа в общем случае - чтение/запись для пользователя и недоступность для других.

~/.shosts

Аналогичен файлу .rhosts, но позволяет проводить аутентификацию на основе хоста не разрешая вход в систему с помощью rlogin/rsh.

~/.ssh/authorized_keys

Содержит список открытых ключей (RSA/DSA), которые могут быть использованы для регистрации данного пользователя. Формат файла описан выше. Этот файл не очень важен для злоумышленника, но мы рекомендуем сделать его доступным только пользователю (чтение/запись). Если этот файл, каталог ~/.ssh или домашний каталог пользователя доступны для записи другим пользователям, этот файл может быть изменён или заменён любым пользователем системы, имеющим сколько угодно мало прав. В этом случае sshd не будет использовать этот файл, если только параметр StrictModes не имеет значение “no”. Установить рекомендуемый набор прав доступа можно командой “chmod go-w ~/ ~/.ssh ~/.ssh/authorized_keys”.

~/.ssh/environment

Этот файл (при его наличии) считывается в среду при регистрации в системе. Он может содержать только пустые строки, строки комментария (начинающиеся с ‘#’), и определения значений переменных в виде: переменная=значение. Правом на запись этого файла должен обладать только пользователь; он не должен быть доступен остальным. Задание переменных среды отключено по умолчанию, за что отвечает параметр PermitUserEnvironment.

~/.ssh/known_hosts

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

~/.ssh/rc

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

/etc/hosts.allow

/etc/hosts.deny

Данные о разрешении и запрете соединений с хостами для надстроек TCP. См. hosts_access(5).

/etc/hosts.equiv

Используется для аутентификации на основе хоста (см. ssh(1)). Должен быть доступен для записи только root.

/etc/moduli

Группы для схемы Диффи-Хеллмана. Формат файла описан в moduli(5).

/etc/motd

См. motd(5).

/etc/nologin

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

/etc/shosts.equiv

Аналогичен hosts.equiv, но позволяет проводить аутентификацию на основе хоста не разрешая вход в систему с помощью rlogin/rsh.

/etc/ssh/ssh_known_hosts

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

/etc/ssh/ssh_host_key

/etc/ssh/ssh_host_dsa_key

/etc/ssh/ssh_host_rsa_key

Содержат частные ключи хостов. Файлы должны принадлежать root, и быть доступными только для него. sshd не запустится если эти файлы доступны для чтения кому-либо кроме суперпользователя.

/etc/ssh/ssh_host_key.pub

/etc/ssh/ssh_host_dsa_key.pub

/etc/ssh/ssh_host_rsa_key.pub

Содержат открытые ключи хостов. Должны быть доступны всем для чтения и только суперпользователю для записи. Содержимое файлов должно соответствовать содержимому соответствующих файлов с частными ключами. Эти файлы не используются программой и предназначены для копирования пользователем в файлы known_hosts. Эти файлы создаются командой ssh-keygen(1).

/etc/ssh/sshd_config

Конфигурация службы sshd. Формат файла и параметры конфигурации описаны в sshd_config(5).

/etc/ssh/sshrc

Аналогичен ~/.ssh/rc, позволяет задавать инициализационный сценарий глобально для всех пользователей. Должен быть доступен всем для чтения и только root для записи.

/var/empty

Каталог chroot(2) используемый sshd при отделении полномочий на предаутентификационном этапе. В папке не должно быть никаких файлов, она должна принадлежать только root и не должна быть доступна другим для записи.

/var/run/sshd.pid

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

## СМ. ТАКЖЕ
scp(1), sftp(1), ssh(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), chroot(2), hosts_access(5), login.conf(5), moduli(5), sshd_config(5), inetd(8), sftp-server(8)

## АВТОРЫ
Продукт OpenSSH является производным от оригинальной и свободной версии ssh 1.2.12 выпущенной Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt и Dug Song удалили много ошибок, самостоятельно реализовали функции доступные в несвободных версиях оригинальной программы и создали OpenSSH. Markus Friedl реализовал поддержку протоколов SSH версии 1.5 и 2.0. Niels Provos и Markus Friedl реализовали разделение полномочий.

## ПРЕДОСТЕРЕЖЕНИЯ
Использование этой службы не повысит уровень защиты системы пока rshd, rlogind и rexecd не будут полностью отключены в системе.

Николай Шафоростов <shafff@ukr.net> 2007, с использованием перевода Александра Блохина <sass@altlinux.ru>


sudo

title: sudo(8)

text:
# sudo(8)

## НАЗВАНИЕ
sudo - выполнить команду от имени другого пользователя

## СИНТАКСИС
sudo -V | -h | -l | -L | -v | -k | -K | -s | [ -H ] [ -P ] [ -S ] [ -b ] | [ -p запрос ] [ -c класс|- ] [ -a тип_аутентификации ] [ -u имя_пользователя/#uid ] команда

## ОПИСАНИЕ
sudo позволяет разрешенному пользователю выполнять команду как суперпользователь или другой пользователь, как определено в файле sudoers. Реальный и эффективный uid и gid при этом устанавливаются так, чтобы соответствовать таковым целевого пользователя, как определено в файле passwd (также инициализируется вектор группы, если целевой пользователь - не root). По умолчанию sudo требует, что бы пользователи аутентифицировали себя при помощи пароля (ЗАПОМНИТЕ: это пароль пользователя, не пароль root). Как только пользователь аутентифицировал себя происходит обновление временной метки и пользователь может использовать sudo некоторый период времени без пароля (по умолчанию пять минут, если в sudoers не указано другое).

sudo определяет, кто является авторизованным пользователем сверяясь с файлом /etc/sudoers и всеми файлами с подходящим названием в каталоге /etc/sudo.d. Указав для sudo флаг -v пользователь может обновить временную метку без выполнения команды. Строка приглашения для ввода пароля так же устаревает, если пользователь не введёт пароль в течение 5 минут (если в sudoers не переопределено другое).

Если не указанный в файле sudoers пользователь попытается выполнить при помощи sudo команду, то уполномоченному пользователю будет отправлено почтовое сообщение, как определено во время конфигурации или в файле sudoers (по умолчанию это root). Обратите внимание, что сообщение не будет отправлено, если неавторизованный пользователь пытается выполнить sudo с флагами -l или -v. Это позволяет пользователям определить - разрешено им использовать sudo или нет.

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

## ПАРАМЕТРЫ
sudo акцептирует следующие параметры командной строки:

"-V"

Параметр -V (версия) заставляет sudo показать номер версии и выйти. Если пользователем инициировавшим вызов является root, то параметр -V отобразит список значений по умолчанию с которыми был собран sudo, в том числе локальные сетевые адреса машины.

"-l"

Параметр -l (список) перечислит дозволенные (и запрещенные) команды для пользователя на данной машине.

"-L"

Параметр -L (список по умолчанию) отобразит список параметров, которые могут быть установлены в строке Defaults, с кратким описанием каждого. Этот параметр полезен в сочетании с grep(1).

"-h"

Параметр -h (помощь) заставит sudo показать справку об использовании и выйти.

"-v"

Если указан параметр -v (идентифицировать), sudo обновит временную метку пользователя, предложив пользователю, если необходимо, указать пароль. Это продлит срок действия прежнего пароля sudo на следующие 5 минут (или на тот срок, который указан в sudoers), но не требует при этом выполнения какой-либо команды.

"-k"

Указание для sudo параметра -k (уничтожить) лишает законной силы временную метку пользователя, устанавливая время на начало века. При следующем выполнении sudo потребуется указать пароль. Эта операция не требует указания пароля и была добавлена, чтобы позволить пользователю аннулировать права sudo из файла .logout.

"-K"

Параметр -K (уничтожить наверняка) для sudo полностью удаляет временную метку пользователя. Этот параметр тоже не требует указания пароля.

"-b"

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

"-p"

Параметр -p (приглашение) позволяет переопределить внешний вид приглашения в систему по умолчанию. Если вид приглашения содержит управляющий символ %u, то %u будет заменен учетным именем пользователя. Аналогично %h может быть заменено на имя компьютера.

"-c"

Параметр -c (класс) заставляет sudo выполнить определенную команду с ограничением ресурсов, свойственным указанному классу пользователя. Параметр класс может быть либо именем класса, указанным в /etc/login.conf, или знаком -. Указание класс с помощью - означает, что команда будет выполнена с учетом прав того пользователя, от имени которого эта команда выполняется. Если параметр класс указывает на текущий класс пользователя, то команда должна быть выполнена от имени root, или команда sudo должна выполняться из оболочки суперпользователя (root). Этот параметр доступен с BSD-классом входа в систему, где sudo был сконфигурирован с параметром --with-logincap.

"-а"

Параметр -а (тип аутентификации) принуждает sudo при идентификации пользователя использовать указанный тип аутентификации, в соответствии с /etc/login.conf. Системный администратор может указать перечень подходящих для sudo методов аутентификации путём добавления в /etc/login.conf записи "auth-sudo". Этот параметр доступен только на системах поддерживающих BSD-тип аутентификации, если sudo был сконфигурирован с параметром --with-bsdauth.

"-u"

Параметр -u (пользователь) вызывает sudo для выполнения указанной команды от имени пользователя, отличного от root. Для указания uid вместо имени пользователя, используйте #uid.

"-s"

Параметр -s (оболочка) запускает командный интерпретатор, определенный переменной окружения SHELL, или оболочку указанную в passwd(5).

"-H"

Параметр -H (HOME) устанавливает значение переменной окружения HOME к домашнему каталогу целевого пользователя (по умолчанию root), определенную в passwd(5). По умолчанию sudo не изменяет HOME.

"-Р"

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

"-S"

Параметр -S (stdin) заставляет sudo считывать пароль со стандартного ввода вместо терминала.

"--"

Флаг -- обозначает, что sudo должен прекратить выполнение параметров командной строки. Это полезно в сочетании с флагом -s.

## КОДЫ ВОЗВРАТА
В случае успешного выполнения возвращаемым значением sudo будет возвращаемое значение выполненной программы.

В противном случае sudo завершает работу со значением 1, если обнаруживает проблемы в конфигурации/правах доступа или sudo не в состоянии выполнить заданную команду. В последнем случае сообщение об ошибке будет выведено в stderr. Если sudo не в состоянии получить stat(2) на одну или болееe запись в пользовательском PATH, то сообщение об ошибке будет выведено на stderr. (Если каталог не существует или если это на самом деле не каталог, запись о нем будет игнорирована и об ошибке сообщено не будет.) При нормальных обстоятельствах этого не должно произойти. Наиболее частая причина возврата от stat(2) "permission denied", если вы запустили автоматическое монтирование дисков и один из каталогов в вашем PATH находится на машине, которая в настоящий момент не доступна.

## ПРИМЕЧАНИЯ ПО БЕЗОПАСНОСТИ
sudo пытается быть безопасной при выполнении внешних команд. Переменные, контролирующие выполнение динамической загрузки и связей, могут быть использованы для уничтожения программ выполняемых sudo. Для борьбы с этим, переменные окружения LD_*, _RLD_*, SHLIB_PATH (только HP-UX) и LIBPATH (только AIX), изъяты из окружения доступного для команд выполняемых всеми. sudo также изымает переменные IFS, ENV, BASH_ENV, KRB_CONF, KRB5_CONFIG, LOCALDOMAIN, RES_OPTIONS, HOSTALIASES, NLSPATH, PATH_LOCALE, TERMINFO, TERMINFO_DIRS И TERMPATH, поскольку они тоже могут представлять угрозу. Если установлена переменная TERMPATH и является именем пути, то она также будет игнорирована. Дополнительно, если переменные LC_* или LANGUAGE содержат символы / или %, то они будут игнорированы. Если sudo було собрано с поддержкой SecurID, то переменные VAR_ACE, USR_ACE и DLC_ACE будут также очищены. Список переменных, подлежащих очистке со стороны sudo, может быть распечатан в вывод команды sudo -V, выполненной от имени суперпользователя (root).

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

Из соображений безопасности, если ваша ОС поддерживает разделяемые библиотеки и не отключает пользовательский путь поиска для программ использующих setuid (чаще всего), вы должны использовать параметры линковщика которые исключают такую возможность или линкуют sudo статически.

sudo проверяет принадлежность каталога содержащего временные метки (по умолчанию это /var/run/sudo) и игнорирует каталоги с содержимым не принадлежащим root и доступным на запись только для root. В системах, позволяющих не привилегированным пользователям передавать права на файлы через chown(2), если временная метка находится в каталоге доступном для записи для всех (т.е.: /tmp), то возможна ситуация, когда пользователь создаст каталог каталог содержащий временную метку прежде, чем будет выполнено sudo. Однако, так как sudo проверяет права владения и режим доступа каталога и его содержимого, то вред может быть нанесён только "скрытыми" файлами, помещенными в каталог с временными метками. Это вряд ли случится в том случае, если владельцем каталогов с временными метками является суперпользователь и они не доступны для других пользователей для записи в них. Что бы обойти эту проблему вы можете использовать каталог для хранения временных меток (например /var/adm/sudo), никому не доступный для записи, или создать /var/run/sudo, с соответствующими владельцем (root) и правами доступа (0700) в системных файлах запуска.

sudo игнорирует временные метки с датой создания в далеком будущем. Временные метки с датой большей, чем настоящий момент времени + 2 * TIMEOUT будут игнорироваться, регистрироваться sudo и уполномоченному пользователю будет послано предупреждение. Это сделано во избежание создания временных меток с поддельными датами, которые позволят отдавать файлы пользователям.

Обратите внимание, что sudo регистрирует только явно выполненные команды. Если пользователь выполняет такую команду как sudo su или sudo sh, то команды выполненные из этих оболочек не будут запротоколированы и при этом их не затронет управление доступом sudo. Тоже-самое верно по отношению к командам, допускающим использование управляющих символов (включая большинство редакторов). В связи с этим должна быть проявлена осторожность при предоставление пользователям доступа к выполнению команд посредством sudo, во-избежание нечаянного предоставления пользователю доступа к оболочке суперпользователя (root).

## EXAMPLES
Внимание: следующие примеры содержат работающие записи sudoers(5).

Для получения списка файлов в каталоге закрытом для чтения:

sudo ls /usr/local/protected

Для получения списка файлов домашнего каталога пользователя yazza на машине, где файловая система, содержащая ~yazza не позиционируется как корневая:

sudo -u yazza ls ~yazza

Для редактирования файла index.html как пользователь www:

sudo -u www vi ~www/htdocs/index.html

Для выключения компьютера:

sudo shutdown -r +15 "quick reboot"

Для создания списка занимаемого каталогами места в партиции /home. Обратите внимание, что это выполняется в под-оболочке (sub-shell) для выполнения cd и переадресации файла.

sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"

## ПЕРЕМЕННЫЕ
sudo использует следующие системные переменные:

PATH Установленную в нормальное значение, если установлен SECURE_PATH.

SHELL Используется для указания оболочки для запуска с параметром -s.

USER Устанавливается к целевому пользователю (root, если параметром -u не определено другое).

HOME В варианте -s или -H (или если sudo было сконфигурировано с

параметром --enable-shell-sets-home) указывает на домашний каталог целевого пользователя.

SUDO_PROMPT Используется как заданная по умолчанию подсказка пароля.

SUDO_COMMAND Установлено на команды, выполняемые sudo.

SUDO_USER Установлено на вход в систему пользователя, которому разрешено

вызывать sudo.

SUDO_UID Установлено на uid пользователя, которому разрешено вызывать sudo.

SUDO_GID Установлено на gid пользователя, кто вызвал sudo.

SUDO_PS1 Если установлено, PS1 будет установлен на это значение.

## ФАЙЛЫ
/etc/sudoers /etc/sudo.d/* Описание того, кто и какие команды может выполнять

/var/run/sudo Каталог содержащий временные метки

## АВТОРЫ
Многие люди годами работали над sudo. Эта версия содержит код написанного прежде всего:

Todd Miller

Chris Jepeway

Краткую историю sudo смотри в файле HISTORY в дистрибутиве или в интернете по адресу http://www.sudo.ws/sudo/history.html.

Александр Блохин <sass@altlinux.ru> - перевод на русский язык.

## ОШИБКИ
Если вам кажется, что вы нашли ошибку в sudo, то отправьте рапорт об ошибке по адресу: http://www.courtesan.com/sudo/bugs/

## ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ
Sudo поставляется ``КАК ЕСТЬ' и любые явные или неявные гарантии, включая, но не ограничиваясь неявными гарантиями, коммерческой ценности и пригодности для конкретной цели отрицаются. Подробности смотри в файле LICENSE, поставляемом вместе с sudo.

## ПРЕДОСТЕРЕЖЕНИЕ
Не существует никакого простого способа предотвратить захват пользователем оболочки с правами суперпользователя (root), если он имеет доступ к командам оболочки.

Если пользователь имеет sudo ALL, то ничто не остановит его от создании собственной программы, которая даст ему оболочку привилегированного пользователя (root), не смотря ни на какие элементы ! в спецификации пользователя.

Выполнение сценариев оболочки через sudo может вызвать те же самые ошибки ядра, которые делают сценарии оболочки со сменой идентификатора пользователя опасными на некоторых операционных системах (если ваша ОС поддерживает каталог/dev/fd/, сценарии оболочки со сменой идентификатора пользователя в целом безопасны).

## СМ. ТАКЖЕ
stat(2), login_cap(3), sudoers(5), passwd(5), visudo(8), grep(1), su(1).


sync

title: sync(8)

text:
# sync(8)

## ИМЯ
sync - синхронизация данных на диске с данными в памяти

## ОБЗОР
sync [--help] [--version]

## ОПИСАНИЕ
sync записывает данные, буферизованные в памяти, на диск. Буферизуются, например, измененные супер-блоки, измененные inode'ы, операции чтения и записи также откладываются. Буферизация должна быть реализована в ядре. Программа sync всего лишь делает системный вызов sync(2).

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

sync должен вызываться перед тем, как процессор будет остановлен каким-то нестандартным образом (например, перед паникой в ядре при отладке). Обычно процессор должен быть остановлен при помощи программ shutdown(8), reboot(8), либо halt(8), которые пытаются перевести систему в неактивное состояние, прежде чем вызывать sync(2). (Существуют различные реализации этих команд; прочтите документацию на вашу систему; на некоторых системах нельзя непосредственно вызывать команды reboot(8) и halt(8).)

## СТАНДАРТНЫЕ ПАРАМЕТРЫ GNU
--help

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

--version

Выводит информацию о версии программы на устройство стандартного вывода и успешно завершает работу.

--

Завершает список параметров.

## ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ
Переменные LANG, LC_ALL, LC_CTYPE и LC_MESSAGES имеют свое обычное значение.

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX 1003.2

## ПРИМЕЧАНИЯ
В Linux sync всего-лишь гарантирует, что будет составлен список "грязных" блоков, которые нужно записать. Прежде чем они действительно будут записаны, пройдет еще некоторое время. Команды reboot(8) и halt(8) учитывают это, делая паузу в несколько секунд после вызова sync(2).

Данная страница описывает версию sync пакета fileutils-4.0; из пакета fileutils-4.0; другие версии могут немного отличаться. Исправления и дополнения присылайте по адресу aeb@cwi.nl. Отчеты об ошибках в этой программе присылайте по адресу fileutils-bugs@gnu.ai.mit.edu.

## СМОТРИ ТАКЖЕ
sync(2), halt(8), reboot(8), update(8)

## ПЕРЕВОД
Перевел с английского Алексей Миллер <asm@asm.kiev.ua> 2000


sysctl

title: sysctl(8)

text:
# sysctl(8)

## НАЗВАНИЕ
sysctl - настройка параметров ядра во время выполнения

## СИНТАКСИС
sysctl [-n] [-e] переменная ...

sysctl [-n] [-e] [-q|-v] -w переменная=значение ...

sysctl [-n] [-e] [-q|-v] -p <файл>

sysctl [-n] [-e] -a

sysctl [-n] [-e] -A

## ОПИСАНИЕ
sysctl используется для изменения параметров ядра во время выполнения. Доступные параметры перечислены в /proc/sys/. Для поддержки sysctl(8) в Linux необходима поддержка файловой системы procfs. sysctl(8) может использоваться как для чтения, так и для записи параметров ядра.

## ПАРАМЕТРЫ
переменная

Имя ключа, из которого производится чтение, к примеру kernel.ostype. Наряду с разделителем '.' поддерживается '/'.

переменная=значение

Чтобы изменить значение ключа, используйте форму переменная=значение, где "переменная" - это изменяемый ключ, а "значение" - значение, ему присваиваемое. Если значение содержит кавычки или символы, обрабатываемые оболочкой, вам может потребоваться заключить значение в двойные кавычки. Эта форма требует использования ключа -w.

-n

Не выводить имена ключей при выводе их значений.

-e

Игнорировать ошибки, связанные с неизвестными ключами.

-N

Выводить только имена. Это может быть полезно для оболочек, поддерживающих настраиваемое автодополнение.

-q

Не выводить устанавливаемые значения на стандартный вывод.

-v

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

-w

Этот параметр используется для изменения значений ключей.

-p

Загрузить настройки из указанного файла или /etc/sysctl.conf, если файл не указан.

-a

Вывести все доступные в данный момент настройки.

-A

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

## ПРИМЕРЫ
/sbin/sysctl -a

/sbin/sysctl -n kernel.hostname

/sbin/sysctl -w kernel.domainname="example.com"

/sbin/sysctl -p /etc/sysctl.conf

## ФАЙЛЫ
/proc/sys /etc/sysctl.conf

## СМ. ТАКЖЕ
sysctl.conf(5)

## ОШИБКИ
Параметр -A действует точно так же, как -a.

## АВТОР
George Staikos, <staikos@0wned.org>

## ПЕРЕВОД
Andrey Rahmatullin <wrar@altlinux.ru> 10.11.2005


syslogd

title: syslogd(8)

summary: системные службы журналирования Linux

text:
# syslogd(8)

## НАЗВАНИЕ
sysklogd - системные службы журналирования Linux

## СИНТАКСИС
syslogd [ -a сокет ] [ -d ] [ -f файл_конфигурации ] [ -h ] [ -i адрес_IP ] [ -l список_сетевых_узлов ] [ -m интервал ] [ -n ] [ -p сокет ] [ -r ] [ -s список_доменов ] [ -u имя_пользователя ] [ -j каталог_chroot ] [ -v ]

## ОПИСАНИЕ
Sysklogd предоставляет две системные утилиты, обеспечивающих журналирование событий происходящих в системе и сообщений ядра. Поддерживая и домены интернет и unix-домены, этот пакет утилит обеспечивает как локальное, так и удалённое журналирование.

Системный журнал ведёт версия syslogd(8), восходящая в своём происхождении к исходникам BSD. Поддержка журналирования для ядра обеспечивается утилитой klogd(8), которая может работать либо отдельно, либо в виде клиента syslogd.

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

Не смотря на то, что исходные тексты syslogd были серьёзно переработаны, есть пара моментов, которые необходимо отметить. Первое, разработчики строго придерживались положения о том, что syslogd должен сохранить стандартное для BSD поведение. Вторая важная концепция, это прозрачное взаимодействие этой версии syslogd с находящейся в системных библиотеках версии syslog. Если выполняемый код связанный со стандартной разделяемой библиотекой не будет правильно выполняться, мы бы хотели получить пример этого ненормального поведения.

При запуске читается основной конфигурационный файл /etc/syslog.conf или альтернативный файл, заданный опцией -f. В нем игнорируются любые пустые строки и начинающиеся с символа решетки ("#"). Если при разборе какой-либо строки возникает ошибка, то она полностью игнорируется.

## ОПЦИИ
-a сокет

Используя этот аргумент, вы можете определить дополнительные сокеты, которые syslogd будет слушать. Это необходимо, если некоторые службы планируется выполнять в окружении chroot(). Вы можете использовать до 19 дополнительных сокетов. Если же потребуется больше, то можно увеличить идентификатор MAXFUNIX в файле syslogd.c. Ребята из OpenBSD рассматривают пример с работающим в chroot() сервисе на странице <http://www.guides.sk/psionic/dns/>.

-d

Включает режим отладки. Применение этой опции укажет службе syslogd не использовать порождение дочернего процесса fork(2) для перехода в фоновой режим работы, напротив, демон останется в интерактивном режиме выполнения и будет выводить довольно много отладочной информации на текущий tty. За дополнительной информацией обратитесь к разделу ОТЛАДКА.

-f файл_конфигурации

Определить альтернативный файл конфигурации взамен используемого по умолчанию /etc/syslog.conf.

-h

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

-i адрес_IP

Если syslogd сконфигурирован для приёма сообщений через порт UDP, то предпочтительнее указать адрес IP, к которому его привязать, нежели использовать настройку по умолчанию INADDR_ANY. Адрес должен состоять из четырех чисел разделённых точками, DNS-имя не требуется.

-l список_сетевых_узлов

Определить сетевой узел, журналирование которого необходимо производить, используя только простое имя машины (например, aurora), а не полностью определённое доменное имя (FQDN) (например, aurora.tux.ru). Имена нескольких машин можно перечислить используя в качестве разделителя двоеточие (":").

-m интервал

Syslogd регулярно отмечает текущее время делая запись в журнале. Стандартно, между двумя строками с отметками -- MARK -- определён интервал в 20 минут. Это можно изменить с помощью данной опции. Установив в интервал нулевое значение вы полностью отключите запись этих отметок.

-n

Отменить автоматический переход в фоновый режим. Это главным образом необходимо если syslogd запущен и контролируется init(8).

-p сокет

Взамен /dev/log, вы можете определить альтернативу сокету домена unix.

-r

Эта опция активирует возможность получения сообщений из сети используя сокет домена интернет через службу syslog (см. services(5)). По умолчанию сообщения из сети не принимаются. Эта опция впервые появилась в версии 1.3 пакета sysklogd. Вы можете это использовать, только пожалуйста, примите во внимание, что стандартное поведение зависит от используемой версии.

-s список_доменов

Определить имя домена, которое будет отсекаться при журналировании. Несколько доменов можно перечислить используя в качестве разделителя двоеточие (":"). Пожалуйста учтите, что нельзя указывать субдомены, а только домены целиком. Например, если указать -s north.de и журналируемым узлом является satu.infodrom.north.de, то домен не будет отсечён, вам необходимо будет указать два домена: -s north.de:infodrom.north.de.

-u имя_пользователя

Прежде чем начать журналирование, служба syslogd получит имя (псевдо)пользователя. Обратите внимание, что когда эта опция используется, то при первом запуске syslogd откроет файлы журналов как суперпользователь (root); однако, после вызова SIGHUP, файлы будут открыты вновь от имени непривилегированного пользователя. Это стоит принять в расчёт, когда будете назначать права владения файлами журналов.

-j каталог_chroot

Указывает службе syslogd, после инициализации, сменить корневой каталог (chroot(2)) на данный. Эта опция допустима, только при одновременном использовании опции -u, для запуска syslogd без привилегий суперпользователя (root). Учтите, что эта опция делает вызов SIGHUP бесполезным, что делает перезагрузку сервиса практически невозможным.

-v

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

## СИГНАЛЫ
Syslogd реагирует на набор сигналов. Вы можете просто послать сигнал syslogd используя команду вида:

```
kill -СИГНАЛ `cat /var/run/syslogd.pid`
```

SIGHUP

Этот сигнал, переданный syslogd вызовет пере-инициализацию. Все открытые файлы будут закрыты, файл настроек (по умолчанию это /etc/syslog.conf) будет прочитан заново, и сервис syslog(3) запуститься вновь.

SIGTERM

Прервёт работу syslogd.

SIGINT, SIGQUIT

Если режим отладки включен, то эти сигналы будут проигнорированы, иначе syslogd прервёт работу.

SIGUSR1

Включение/выключение режима отладки. Этот сигнал может быть использован только если при запуске syslogd применялась опция включающая режим отладки -d.

SIGCHLD

Во время отправки сообщений с помощью команды wall, ожидать реакции дочерних процессов, если они были порождены.

## РАЗЛИЧИЯ В СИНТАКСИСЕ ФАЙЛОВ КОНФИГУРАЦИИ
Syslogd использует слегка отличающийся от принятого в BSD синтаксис конфигурационного файла. Изначально, все сообщения с соответствующим приоритетом и выше направлялись в файл журнала.

Например, следующая строка повлечёт направление ВСЕЙ выводной информации от системных служб выполняющихся в режиме демонов в файл /usr/adm/daemons (режим отладки (debug) имеет наименьший приоритет, поэтому все сообщения имеющие более высокий приоритет также подходят под условие):

```
	# Пример syslog.conf
	daemon.debug			/usr/adm/daemons
```

По новой схеме это поведение остаётся тем же. Различие состоит в четырех добавившихся спецификаторах: шаблон - символ звёздочки (*), знак равенства (=), восклицательный знак (!), и знак минуса (-).

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

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

Например, следующая строка в syslog.conf направит все отладочные сообщения из всех источников в файл /usr/adm/debug.

```
	# Пример syslog.conf
	*.=debug			/usr/adm/debug
```

Восклицательный знак "!" используется для того чтобы исключить некоторое журналирование. И это затронет все возможные виды данного исключения.

Например, следующая строка указывает журналировать все сообщения категории mail в файл /usr/adm/mail, кроме имеющих метку приоритета info. И все сообщения от news.info (включительно) до news.crit (исключая последние), будут журналироваться в файл /usr/adm/news.

```
	# Пример syslog.conf
	mail.*;mail.!=info		/usr/adm/mail
	news.info;news.!crit	/usr/adm/news
```

Вы можете использовать это для указания исключений. Здесь просто инвертирована интерпретация символа "=". Таким образом, вы можете указать

```
	mail.none
```

или

```
	mail.!*
```

или

```
	mail.!debug
```

и все сообщения от почтового сервиса будут игнорироваться. Что ж, здесь есть с чем поиграться. :-)

Если вы хотите опустить выполнение sync для файла после каждого его изменения, то используйте символ "-" как префикс имени файла.

Тем кто использовал чистый синтаксис BSD может потребоваться небольшая акклиматизация, однако тестеры отмечают, что новый синтаксис в обращении более гибок. Отметим, что эти изменения не затрагивают стандартные файлы syslog.conf(5). Вам необходимо специально изменить конфигурационные файлы чтобы получить расширенное поведение.

## ПОДДЕРЖКА УДАЛЁННОГО ЖУРНАЛИРОВАНИЯ
Эта версия предоставляет поддержку сети для сервиса syslogd. Поддержка сети означает, что сообщения могут быть пере-направлены с одного узла сети на котором запущен syslogd, на другой сетевой узел с выполняющимся на нём syslogd, где они и будут в действительности помещены в файл журнала на жестком диске.

Для включения этой возможности, в командной строке следует указать опцию -r. По умолчанию syslogd не прослушивает сеть.

Идея заключается в том, чтобы иметь syslogd который прослушивает сокет домена unix на предмет локально сгенерированных сообщений, помещаемых в журнал. Это поведение позволяет syslogd взаимодействовать с syslog находящемся в стандартной библиотеке C. В тоже время syslogd прослушивает стандартный порт syslog, ожидая сообщений пересылаемых с других сетевых узлов. Для того чтобы это работало корректно, необходимо в файл services(5), находящийся в /etc внести следующую запись:

```
	syslog          514/udp
```

Если эта запись отсутствует, то syslogd не сможет ни получать, ни отправлять сообщений, так как UDP-порт нельзя будет открыть. Вместо этого, syslogd немедленно аварийно завершит работу, выдав сообщение об ошибке.

Включить пере-направление сообщений на другой сетевой узел можно изменив строку в syslog.conf, содержащую имя файла журнала, его следует заменить на имя узла сети с префиксом "@", на которую будут пересылаться сообщения.

Например, для пере-направления ВСЕХ сообщений на удалённую машину используйте следующую запись в syslog.conf:

```
	# Пример конфигурационного файла syslogd,
	# который предписывает пересылать все сообщения
	# на удалённую машину.
	*.*			@имя_хоста
```

Для пере-направления всех сообщений ядра (kernel) на удалённую машину, конфигурационный файл должен быть следующего вида:

```
	# Пример конфигурационного файла syslogd.
	# Все сообщения ядра пере-направляются на
	# удалённую сетевую машину.
	kern.*		@имя_хоста
```

Если во время загрузки системы имя удалённой машины не может быть разрешено (т.е. определён адрес сетевого узла в числовом виде), потому что сервер имён не доступен (он может запускаться после запуска syslogd), то не стоит беспокоиться. Syslogd предпримет ещё 10 попыток для разрешения имени удалённой машины и в случае неудачи выразит недовольство. Другое возможное решение это поместить имя удалённого сетевого узла в /etc/hosts.

С обычными настроенными syslogd легко угодить в syslog-петлю, когда сообщения полученные от удалённого узла пересылаются на ту же самую машину (или в более сложном варианте, на третью машину, которая отсылает сообщения на первую, и т.д.). В моём домене (Infodrom Oldenburg) мы это неожиданно обнаружили заполненными все наши диски одним и тем же сообщением. :-(

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

Если удалённая машина находится в том же домене что и станция на которой выполняется syslogd, то в журнал вместо FQDN, будет записываться только простое имя узла.

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

Использование опции -l, также позволяет определить указанные машины как локальные. Что также приведёт к журналированию только их простых имён, а не FQDN.

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

## ВЫВОД В ИМЕНОВАННЫЕ КАНАЛЫ (FIFOs)
Эта версия syslogd поддерживает вывод журналирования в именованные каналы (FIFOs). FIFO или именованные каналы могут быть использованы как место назначения для сообщений журнала, указанием символа канала ("|") перед именем файла. Это удобно применять для отладки. Учтите, что прежде чем syslogd будет запущен, FIFO должен быть создан командой mkfifo.

Нижеследующий конфигурационный файл задаёт пере-направление отладочных сообщений ядра в FIFO:

```
	# Пример настройки для пере-направления ТОЛЬКО отладочных
	# сообщений ядра в /usr/adm/debug, который является
	# именованным каналом.
	kern.=debug			|/usr/adm/debug
```

## ВОПРОСЫ УСТАНОВКИ
Возможно, есть только один важный момент на который стоит обратить внимание при установке этой версии syslogd. Эта версия syslogd зависит от надлежащего форматирования сообщений функцией syslog. Где-то в районе версий libc.so.4.[2-4].n, изменилась работа функции syslog находящейся в разделяемой библиотеке. Конкретно поменялось следующее: теперь перед отправлением в сокет /dev/log, сообщения получают завершающий ноль. Правильное функционирование этой версии syslogd зависит от наличия в сообщении завершающего нуля.

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

И syslogd(8) и the klogd(8) могут быть запущены из init(8) или стартовать как часть rc.* последовательности. Если запуск производится из init, то необходимо применить опцию -n, иначе вы получите тонны запущенных служб syslog. Это происходит потому что init(8) зависит от идентификатора (ID) процесса.

## УГРОЗЫ БЕЗОПАСНОСТИ
Потенциально, сервис syslogd может быть использован в качестве лазейки для атак приводящих к отказу в обслуживании (DoS, denial of service). Спасибо Джону Моррисону (John Morrison, jmorriso@rflab.ee.ubc.ca) за предупреждение об этой потенциально существующей опасности. Злоумышленник или программа довольно просто может утопить службу syslogd в сообщениях syslog, в результате чего файлы журналов займут всё доступное место в файловой системе. Конечно же, активирование журналирования через сокеты домена интернет подвергает систему риску атак со стороны внешних, либо локальных, злоумышленных программ или лиц.

Некоторые методы защиты машины:

1.

Для ограничения доступа к сокету 514/UDP только конкретным хостам или сетям, обеспечьте работу межсетевого экрана ядра.

2.

Журналирование может быть направлено на изолированную или не корневую файловую систему, которая в случае заполнения не повредит работе машины.

3.

Можно использовать файловую систему ext2, в которой есть возможность настроить процент использования файловой системы суперпользователем (root). ВНИМАНИЕ, это потребует работы syslogd в виде непривилегированного процесса. ТАКЖЕ УЧТИТЕ, что это воспрепятствует использованию удалённого журналирования, так как syslogd не сможет связаться с сокетом 514/UDP.

4.

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

5.

Если вы применили п.4 и это не помогло устранить проблему с злоумышленной программой/демоном, то возьмите стальной метровый прут и проведите с пользователем разъяснительную беседу.

## ОТЛАДКА
Если использованием в командной строке опции -d, отладка включена, то рапортуя о выполняемых действиях на stdout, syslogd будет достаточно многословен. Всякий раз когда конфигурационный файл заново перечитан и проанализирован, вы увидите таблицу соответствующую внутренней структуре данных. Эта таблица состоит из четырёх полей:

number(номер)

Это поле содержит порядковый номер начиная с нуля. Этот номер представляет позицию во внутренней структуре данных (массиве). Если один из номеров отсутствует, то возможно имеется ошибка в соответственной строке в файле /etc/syslog.conf.

pattern(шаблон)

Это поле очень информативно и в точности представляет внутреннюю структуру. В каждом столбце отдельно представлено одно из средств обслуживания (см. syslog(3)). Как видите, некоторые средства обслуживания ещё не сформированы и свободны для использования, в основном используются только те что слева. В каждом поле в столбце представлены приоритеты (см. syslog(3)).

action(действие)

Данное поле описывает конкретное действие, которое выполняется каждый раз при получении сообщения соответствующего шаблону. Для получения информации о всех возможных действиях, смотрите страницу руководства syslog.conf(5).

arguments(аргументы)

В этом поле показаны дополнительные аргументы, которые можно использовать при осуществлении действия (action). Для записи журнала в файл это имя файла журнала; для журналирование работы пользователей это список пользователей; для удалённого журналирования это имя машины, журнал которой будет вестись; для журналирования консоли, используемая консоль; для tty-журнала установленная tty; wall не имеет дополнительных аргументов.

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

Файл настроек для syslogd. Для полной информации смотрите syslog.conf(5).

/dev/log

Сокет домена Unix из которого читаются локальные сообщения syslog.

/var/run/syslogd.pid

Файл содержит идентификатор (ID) процесса syslogd.

## ОШИБКИ
Всё правило игнорируется в случае наличия ошибки в одной строке.

На любых стадиях работы, syslogd не изменит режима доступа к открытым файлам журналов. Если файл создан с разрешённым доступом на чтения для всех. Для избежания этого, создайте файл и назначьте права доступа по своему усмотрению. Это может быть сделано в комбинации с оборотом файлов журналов при использовании программы savelog(8), которая поставляется с версиями 3.x программы smail. Помните, что открытый для всех доступ на чтение сообщений авторизации auth.*, которые могут содержать пароли, может быть дырой в безопасности.

## СМ. ТАКЖЕ
syslog.conf(5), klogd(8), logger(1), syslog(2), syslog(3), services(5), savelog(8)

## СОТРУДНИКИ
Syslogd взят из исходных кодов BSD, Грег Ветстейн (Greg Wettstein, greg@wind.enjellic.com) выполнил его перенос на Linux, Мартин Шульце (Martin Schulze, joey@linux.de) исправил некоторые ошибки и добавил несколько новых возможностей. Klogd изначально был написан Стивом Лордом (Steve Lord, lord@cray.com), затем Грег Ветстейн сделал значительные улучшения.

Dr. Greg Wettstein

Enjellic Systems Development

Oncology Research Division Computing Facility

Roger Maris Cancer Center

Fargo, ND

greg@wind.enjellic.com

Stephen Tweedie

Department of Computer Science

Edinburgh University, Scotland

sct@dcs.ed.ac.uk

Juha Virtanen

jiivee@hut.fi

Shane Alderton

shane@ion.apana.org.au

Martin Schulze

Infodrom Oldenburg

joey@linux.de

## ПЕРЕВОД
Василий Коломеец (Vasily Kolomeets) <boojuman@gmail.com>