sudoers

title: sudoers(5)

text:
# sudoers(5)

## НАЗВАНИЕ
sudoers - список пользователей, с указанием того, что они могут выполнять

## ОПИСАНИЕ
Файл sudoers содержит два типа данных: псевдонимы (в основном переменные) и определения пользователей (где определяется кто что может выполнять). Грамматика sudoers будет описана ниже в Расширенной Форме Бэкуса-Наура (EBNF). Не отчаивайтесь, если вы не знаете,что такое EBNF; это довольно просто, и к определениям, приводимым далее, будут даваться пояснения.

### Краткое руководство по EBNF
EBNF это краткий и точный способ описания грамматики языка. Каждое определение EBNF происходит из последовательности правил. Т.е.

символ ::= определение | альтернатива1 | альтернатива2 ...

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

"?"

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

"*"

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

"+"

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

Круглые скобки могут использоваться для объединения символов в группы. Для ясности, мы будем использовать одинарные ('') кавычки для выделения выражений, которые следует читать и понимать буквально (в противоположность символическим именам).

### Псевдонимы
Имеется четыре типа псевдонимов: User_Alias, Runas_Alias, Host_Alias и Cmnd_Alias.

Псевдоним ::= 'User_Alias' User_Alias (':' User_Alias)* |

'Runas_Alias' Runas_Alias (':' Runas_Alias)* |

'Host_Alias' Host_Alias (':' Host_Alias)* |

'Cmnd_Alias' Cmnd_Alias (':' Cmnd_Alias)*

User_Alias ::= NAME '=' User_List

Runas_Alias ::= NAME '=' Runas_User_List

Host_Alias ::= NAME '=' Host_List

Cmnd_Alias ::= NAME '=' Cmnd_List

NAME ::= [A-Z]([A-Z][0-9]_)*

Каждое определение псевдонима имеет форму

Тип_Псевдонима НАЗВАНИЕ = элемент1, элемент2, ...

где Тип_Псевдонима является одним из User_Alias, Runas_Alias, Host_Alias, или Cmnd_Alias. НАЗВАНИЕ это набор символов, набранных в верхнем регистре, цифр, и символов подчеркивания ('_'). НАЗВАНИЕ должно начинаться с символа, набранного в верхнем регистре. Это позволяет размещать несколько определений псевдонимов одного типа в одной строке, разделенных знаком двоеточия (':'). Т.е.

Тип_Псевдонима НАЗВАНИЕ = элемент1, элемент2, элемент3 : НАЗВАНИЕ = элемент4, элемент5

За определением следует допустимое значение псевдонима.

User_List ::= User |

User ',' User_List

User ::= '!'* username |

'!'* '%'group |

'!'* '+'netgroup |

'!'* User_Alias

User_List состоит из одного, или более, имени пользователя (username), идентификатора пользователя (uid), начинающегося со знака #', cистемной группы (group), начинающейся со знака %'), сетевой группы (netgroup), начинающейся со знака +', и других псевдонимов (User_Alias). Каждый элемент списка может начинаться с одного, или более, оператора !. Отрицающее значение оператора ! отрицает значение элемента; положительное значение только отменяет значение другого.

Runas_List ::= Runas_User |

Runas_User ',' Runas_List

Runas_User ::= '!'* username |

'!'* '#'uid |

'!'* '%'group |

'!'* +netgroup |

'!'* Runas_Alias

Runas_List аналогичен User_List, за исключением того, что хоть в нём и присутствуют идентификаторы пользователей uid (начинающиеся со знака '#'), однако вместо User_Alias он содержит Runas_Alias

Host_List ::= Host |

Host ',' Host_List

Host ::= '!'* hostname |

'!'* ip_addr |

'!'* network(/netmask)? |

'!'* '+'netgroup |

'!'* Host_Alias

Host_List состоит из одного, или более, имен машин (hostname), IP адресов (ip_addr), номеров сетей (network), сетевых групп (netmask, начинающихся со знака +') и других псевдонимов (Host_Alias). Опять-же, значение может отрицаться оператором !. Если вы не укажете маску сети с номером сети, то будет использоваться подходящая сетевая маска внешнего сетевого интерфейса машины. Сетевая маска может быть указана либо четырьмя группами чисел, разделенных между собой точками, (т.е. 255.255.255.0) или указанием CIDR (числом бит, т.е. 24). Имя машины может содержать символы подстановки в стиле интерпретатора команд (см. ниже секцию `Символы подстановки), но если команда hostname на вашей машине возвращает полное имя машины, то для использования маски вы должны будете использовать опцию fqdn.

Cmnd_List ::= Cmnd |

Cmnd ',' Cmnd_List

commandname ::= filename |

filename args |

filename '""'

Cmnd ::= '!'* commandname |

'!'* directory |

'!'* Cmnd_Alias

Cmnd_List это список имен комманд (commandnames), каталогов (directory), и других псевдонимов (Cmnd_Alias). Имя команды это полное имя файла, которое может содержать символы подстановки используемые интерпретатором команд (см. секцию `Символы подстановки). Простое имя файла позволяет пользователю выполнять команду с любыми аргументами, какие он пожелает. Также вы можете использовать аргументы командной строки (включая символы подстановки). Дополнительно вы можете использовать "" для указания, что эта команда может быть выполнена без параметров командной строки. Каталог, это полное имя имя пути, заканчивающееся с /. Если вы укажите каталог в Cmnd_List, то пользователь сможет выполнить любой файл, в пределах того каталога (но не в его подкаталогах).

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

### Значения по умолчанию
Некоторые значения параметров конфигурации по умолчанию могут быть изменены во время выполнения через одну или несколько записей Default_Entry. Они могут касаться всех пользователей на любом компьютере, всех пользователей на определенном компьютере, или только определенного пользователя. Когда имеется множество значений, то они применяются поочередно. Если имеются конфликтующие значения, то эффект будет иметь последнее из них в строке.

Default_Type ::= 'Defaults' ||

'Defaults' ':' User ||

'Defaults' '@' Host

Default_Entry ::= Default_Type Parameter_List

Parameter ::= Parameter '=' Value || Parameter '+=' Value || Parameter '-=' Value ||

'!'* Parameter ||

Параметры могут быть флагами, целочисленными значениями, выражениями или списками. Флаги являются булевыми и могут быть выключены при помощи оператора !. Некоторые параметры, целочисленные, выражения и списки, могут быть так же использованы в булевом контексте для его отключения. Значения могут быть заключены в двойные кавычки ("), если они содержат повторяющиеся слова. Специальные символы могут начинаться с символа "обратный слэш" (\).

Флаги:

"long_otp_prompt"

При идентификации по схеме One Time Password (S/Key или OPIE), используется двойная командная строка, чтобы облегчить возможность "вырезать и вставлять" вызов в локальное окно. Это не так хорошо выглядит, как значение по умолчанию, но некоторые люди найдут это более удобным. По умолчанию этот флаг выключен.

"ignore_dot"

Если этот флаг установлен, то sudo будет игнорировать . или (текущий каталог) в $PATH; сам $PATH при этом не меняется. Этот флаг включен по умолчанию.

"mail_always"

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

"mail_badpass"

Отправить сообщение пользователю mailto, если пользователь выполняющий sudo ввёл неверный пароль. По умолчанию этот флаг выключен.

"mail_no_user"

Если этот флаг установлен, сообщение будет отправлено пользователю mailto, если пользователь, выполняющий sudo, отсутствует в файле sudoers. По умолчанию этот флаг включен.

"mail_no_host"

Если этот флаг установлен, пользователю mailto будет отправлено сообщение, если вызывающий пользователь присутствует в файле sudoers, но не имеет прав на выполнение команд на данной машине. По умолчанию этот флаг выключен.

"mail_no_perms"

Если этот флаг установлен, пользователю mailto будет отправлено сообщение, если вызывающий пользователь имеет право выполнять sudo, но команда, которую он пытается выполнить, отсутствует в записи этого пользователя в файле sudoers. По умолчанию этот флаг выключен.

"tty_tickets"

Если этот флаг установлен, sudo будет использовать ticket dir (каталог вида /var/run/sudo/имя_ticketа, где имя_ticketa совпадает с именем пользователя или терминала, с которого пользователь вошел в систему) для по-терминальной аутентификации пользователей. Это механизм, с помощью которого sudo отслеживает, что данный пользователь уже вызывал sudo (используется, в частности, для lecture) и момент времени, когда была произведена последняя успешная аутентификация данного пользователя (или терминала, если используется tty_tickets). По умолчанию этот флаг включен.

"lecture"

Если этот флаг установлен, то при первом использовании sudo пользователь получит короткую лекцию. По умолчанию этот флаг включен.

"authenticate"

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

"root_sudo"

Если этот флаг установлен, то супер-пользователю (root) также разрешено выполнять sudo. Отключение этого позволит предотвратить выполнение пользователями цепочек команд sudo, подобных "sudo sudo /bin/sh", в целях получения ими командной оболочки с правами супер-пользователя (root). Этот флаг включен по умолчанию.

"log_host"

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

"log_year"

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

"shell_noargs"

Если этот флаг установлен и sudo вызвано без параметров, то это равносильно вызову с флагом -s. То-есть, это запускает оболочку от имени супер-пользователя (root) (оболочка определена переменной окружения SHELL, если она указана, если нет, то происходит обращение к оболочке, указанной в учетной записи пользователя вызывающего команду файла /etc/passwd). По умолчанию этот флаг выключен.

"set_home"

Если этот флаг установлен и sudo вызвано с флагом -s, переменная окружения HOME будет установлена в домашний каталог целевого пользователя (которым является супер-пользователь (root), если не указан параметр -u). Это заставит подразумевать вместо флага -s флаг -H. По умолчанию этот флаг выключен.

"always_set_home"

Если этот флаг установлен, то sudo установит переменную окружения HOME к домашнему каталогу целевого пользователя (которым является супер-пользователь (root), если не указан параметр -u). Это подразумевает, что флаг -H используется постоянно. По умолчанию этот флаг выключен.

"path_info"

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

"preserve_groups"

По умолчанию sudo инициализирует групповой вектор к списку групп, которому принадлежит целевой пользователь. Когда preserve_groups установлен, то существующий вектор группы пользователя остаётся неизменным. А реальный и эффективный ID группы, наоборот, приводятся в соответствие с целевым пользователем. По умолчанию этот флаг выключен.

"fqdn"

Установите этот флаг если вы хотите поместить полные имена машин в файл sudoers. То-есть, вместо myhost вы бы использовали myhost.mydomain.edu. Вы все-равно можете, при желании, использовать краткую форму (и даже смешивать две). Остерегайтесь! Для включения fqdn sudo требуется сделать поисковую таблицу DNS, из-за чего sudo может перестать реагировать, если DNS прекратит свою работу (например, если машина не подключена к сети). Так же обратите внимание, что вы должны использовать только официальное имя машины под которым она известна DNS. То есть, Вы не можете использовать псевдоним машины (запись CNAME) из-за проблем производительности и факта, что не возможно получить все псевдонимы от DNS. Если имя вашей машины полное (как сообщает вывод команды hostname), то у вас нет необходимости задействовать fqfn. По умолчанию этот флаг выключен.

"insults"

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

"requiretty"

Если этот флаг установлен, sudo будет выполнено только в том случае, если пользователь вошел в систему с реального терминала. Это предотвращает вещи, подобные "rsh somehost sudo ls", так как rsh(1) не назначает терминал. Так как нет возможности отключить отклик, если терминал отсутствует, некоторые сайты могут устанавливать этот флаг для предотвращения ввода пользователем пароля открытым текстом. По умолчанию этот флаг выключен.

"env_editor"

Если этот флаг установлен, visudo будет использовать значение переменной EDITOR или VISUAL и лишь после этого возвращаться к списку редакторов по умолчанию. Учтите, что это может создать прорехи в защите, так как позволит пользователю выполнять произвольные команды от имени супер-пользователя, не подлежащие какому-либо контролю. Более безопасным является помещение списка редакторов, разделённых точкой с запятой, в переменную редактора. Это позволит visudo использовать EDITOR и VISUAL только если они соответствуют значению, указанному в редакторе. Этот флаг включен по умолчанию.

"rootpw"

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

"runaspw"

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

"targetpw"

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

"set_logname"

Обычно, sudo устанавливает переменные окружения LOGNAME и USER к имени целевого пользователя (обычно супер-пользователя (root), если не задан флаг -u). Однако, так как некоторые программы (включая систему управления проверкой RCS) используют LOGNAME, чтобы определить подлинность пользователя, то может возникнуть желание изменить это поведение. Это может быть сделано посредством отрицания опции set_logname.

"stay_setuid"

Обычно, когда sudo выполняет команду, реальный и эффективный UID устанавливаются в значение целевого пользователя (по умолчанию супер-пользователь (root)). Этот параметр изменит его поведение таким образом, что реальный UID останется таким же, как и у пользователя инициировавшего его выполнение. Другими словами это заставляет sudo действовать как обработчика setuid. Это полезно для отключения потенциально опасной функциональности при выполнении setuid-программ. Обратите внимание, что это означает то, что sudo выполняется с реальным uid пользователя инициировавшего его выполнение, что может позволить этому пользователю уничтожить sudo раньше, чем тот сможет запротоколировать отказ, в зависимости от того, как ваша система определяет взаимодействие между сигналами и setuid-процессами.

"env_reset"

Если установлено, то sudo обнулит значения переменных окружения оставив только следующие: HOME, LOGNAME, PATH, SHELL, TERM, и USER (в дополнение к переменным SUDO_*). Из них будет полностью скопирован в неизменном виде только TERM. Прочие переменные будут установлены в значения по умолчанию (возможно изменённые в соответствии со значениями параметра set_logname). Если sudo было собрано с параметром SECURE_PATH, то это значение быдет использовано для переменной окружения PATH. Другие переменные могут быть сохранены использованием параметра env_keep.

"use_loginclass"

Если этот флаг установлен, sudo применит установки по умолчанию, определенные для входа в систему класса целевого пользователя. Это доступно только если sudo сконфигурировано с опцией --with-logincap. По умолчанию этот флаг выключен.

Целые числа:

"passwd_tries"

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

Целые числа, которые могут быль использованы в булевом контексте:

"loglinelen"

Количество знаков в строке в файле журнала. Это значение используется для указания через какое количество знаков лучше производить верстку строк в файлах журнала. Это не окажет влияния на системном журнале, только на файле журнала sudo. По умолчанию это значение равно 80 (используйте 0 или отрицание для отключения верстки строк).

"timestamp_timeout"

Количество минут, которое должно пройти перед тем, как sudo запросит пароль снова. По умолчанию это 5. Установка этого значения в 0 заставит программу запрашивать пароль всегда. Установка значения меньшего, чем 0 будет означать, что временные метки пользователя бессрочны. Это может быть использовано для того, чтобы позволить пользователям самим управлять созданием и удалением своих временных меток при помощи sudo -v и sudo -k соответственно.

"passwd_timeout"

Количество минут, в течение которых sudo будет ожидать повторного ввода пароля прежде, чем истечёт срок действия прежнего пароля. Значение по умолчанию - 5. Для отключения ожидания пароля установите это значение равным 0.

"umask"

Umask используемое при выполнении команды. Установите это значение в 0777 для сохранения umask пользователя. По умолчанию это 0022.

Строчные значения:

"mailsub"

Тема сообщения, отправляемого пользователю mailto. Использование %h позволит указать имя машины. По умолчанию это *** SECURITY information for %h ***.

"badpass_message"

Сообщение, которое будет отображено, если пользователь введет неверный пароль. По умолчанию это Sorry, try again., если включено использование insults.

"timestampdir"

Каталог в котором sudo хранит свои временные файлы-метки. По умолчанию это /var/run/sudo.

"passprompt"

Вид приглашения для ввода пароля по умолчанию; может быть изменен при помощи параметра -p или переменной окружения SUDO_PROMPT. Поддерживаются два варианта управляющих последовательностей: %u отображает имя входящего в систему пользователя и %h выводит локальное имя машины. Значение по умолчанию - Password:.

"runas_default"

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

"syslog_goodpri"

Приоритет Syslog в случае успешной регистрации пользователя в системе. По умолчанию notice.

"syslog_badpri"

Приоритет Syslog в случае, если регистрация пользователя окончилась неудачей. По умолчанию alert.

"editor"

Разделённый через двоеточие (:) список программ для редактирования, допущенных к использованию с visudo. visudo выберет, по возможности, редактор соответствующий пользовательской переменной окружения USER, или первый из списка, присутствующий в системе и доступный для выполнения. По умолчанию это путь к редактору vi в вашей системе.

Выражения, которые могут быть использованы в булевом контексте:

"logfile"

Путь к файлу журнала sudo (не syslog). Указание пути включает регистрацию событий в файл журнала; отрицание выключает это.

"syslog"

Средство для регистрации событий в системном журнале Syslog (укажите отрицание для отключения регистрации в syslog). По умолчанию установлено authpriv.

"mailerpath"

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

"mailerflags"

Флаги используемые при вызове почтовой программы. По умолчанию -t.

"mailto"

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

"exempt_group"

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

"verifypw"

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

all Все пользовательские записи в sudoers

для данного компьютера должны иметь установленный

флаг NOPASSWD во избежание ввода пароля.

any Хотя бы одна пользовательская запись для данного

компьютера в sudoers должна иметь

установленный флаг NOPASSWD во избежание

ввода пароля.

never Для использования флага -v пользователь

не должен использовать пароль.

always Пользователь должен всегда вводить пароль для

использования флага -v.

Значение по умолчанию `all.

"listpw"

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

all Все пользовательские записи в sudoers

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

флаг NOPASSWD во избежание ввода пароля.

any Хотя бы одна пользовательская запись для данного

компьютера в sudoers должна иметь

установленный флаг NOPASSWD, во избежание

ввода пароля.

never Для использования флага -l пользователь

не должен использовать пароль.

always Пользователь должен всегда вводить пароль для

использования флага -l.

По умолчанию принято значение `any.

### Списки, которые могут быть использованы в булевом контексте:
env_check

Если значения переменных окружения содержат символы % или /, то эти переменные будут удалены из пользовательских переменных. Это может быть использовано для защиты от уязвимости плохо написанных программ в printf-style формате. Аргументом может быть заключение в двойные кавычки, разделенный пробелами список или одинарное значение без двойных кавычек. Список может быть замещен, добавлен к, удален из, или отключен при помощи операторов =, +=, -= и ! соответственно. Список проверяемых переменных окружения по умолчанию может быть получен при выполнении sudo с параметром -V от имени root.

env_delete

Переменные окружения, которые будут удалены из пользовательских переменных. Аргументом может быть заключение в двойные кавычки, разделенный пробелами список или одинарное значение без двойных кавычек. Список может быть замещен, добавлен к, удален из, или отключен при помощи операторов =, +=, -= и ! соответственно. Список удаляемых переменных окружения по умолчанию может быть получен при выполнении sudo с параметром -V от имени root.

env_keep

Переменные окружения, которые будут сохранены в пользовательских переменных, даже если используется параметр env_reset. Это позволяет осуществить филигранный контроль над переменными окружения, получаемыми процессами порождёнными sudo. Аргументом может быть заключение в двойные кавычки, разделенный пробелами список или одинарное значение без двойных кавычек. Список может быть замещен, добавлен к, удален из, или отключен при помощи операторов =, +=, -= и ! соответственно. По умолчанию этот список пуст.

Если включена регистрация событий через syslog(3), sudo акцептирует следующие значения для лучшего взаимодействия с syslog (значение Параметра syslog): authpriv (если ваша ОС поддерживает это), auth, daemon, user, local0, local1, local2, local3, local4, local5, local6, и local7. Поддерживаются следующие приоритеты syslog: alert, crit, debug, emerg, err, info, notice, и warning.

### Спецификация Пользователя

User_Spec ::= User_list Host_List '=' User_List Cmnd_Spec_List \

(':' User_Spec)*

Cmnd_Spec_List ::= Cmnd_Spec |

Cmnd_Spec ',' Cmnd_Spec_List

Cmnd_Spec ::= Runas_Spec? ('NOPASSWD:' | 'PASSWD:')? Cmnd

Runas_Spec ::= '(' Runas_List ')'

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

Давайте разберем это детальнее:

### Runas_Spec
Runas_Spec это просто Runas_List (как определено выше) заключенный в круглые скобки. Если вы не определяете Runas_Spec в спецификации пользователя, то по умолчанию будет использован Runas_Spec супер-пользователя (root). Runas_Spec устанавливает значение по умолчанию для команд следующих после него. Вот что это означает в записи:

dgb boulder = (operator) /bin/ls, /bin/kill, /usr/bin/who

Пользователь dgb может выполнять /bin/ls, /bin/kill, и /usr/bin/lprm -- но только как operator. Т.е.

sudo -u operator /bin/ls.

Также возможно отменить Runas_Spec далее, в той же строке. Если мы изменим запись вот так:

dgb boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm

Пользователю dgb теперь разрешено выполнять /bin/ls как operator, но /bin/kill и /usr/bin/lprm как root.

### NOPASSWD and PASSWD
По умолчанию sudo требует чтобы пользователь аутентифицировал себя заранее, до выполнения команды. Это поведение может быть изменено через тэг NOPASSWD. Как и Runas_Spec, тэг NOPASSWD устанавливает значение по умолчанию для команд, следующих за Cmnd_Spec_List. Тэг PASSWD может использоваться в целях изменения значений наоборот. Например:

ray rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm

позволило бы пользователю ray выполнять /bin/kill, /bin/ls, и /usr/bin/lprm как супер-пользователю (root) на машине rushmore без аутентификации. Если мы хотим разрешить ray выполнять без пароля только /bin/kill, то запись должна быть:

ray rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm

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

По умолчанию, если к какой-либо записи пользователя на данной машине применен тэг NOPASSWD, он или она сможет выполнять sudo -l без указания пароля. Также, пользователь может выполнять без пароля только sudo -v, если отметка NOPASSWD присутствует для всех пользователей, которые относятся к данному компьютеру. Это поведение может быть изменено при помощи параметров verifypw и listpw.

### Символы подстановки (метасимволы):
sudo позволяет использовать знаки подстановки, подобные знакам подстановки оболочки, для использования в именах пути также, как в параметрах командной строки в файле sudoers. Знаки подстановки соответствуют POSIX fnmatch(3). Обратите внимание, что это не регулярные выражения.

"*"

Соответствует любому количеству символов, в том числе нулю.

"?"

Соответствует любому одному символу.

"[...]"

Соответствует любому символу в заданном диапазоне.

"[!...]"

Соответствует любому символу не в указанном диапазоне.

"\x"

Для любого символа x, принять значение x. Это необходимо для использования специальных символов: *, ?, [, и }.

Обратите внимание, что знак слэша ('/') не будет соответствовать символам подстановки используемым в имени пути. Однако, если сравнивать с параметрами командной строки, слэш будет соответствовать символу подстановки. Это делает путь подобный:

/usr/bin/*

соответствующим /usr/bin/who, но не /usr/bin/X11/xterm.

### Исключения из правил символов подстановки:
К вышеприведенным правилам применимы следующие исключения:

""""

Если единственным параметром командной строки, в записи sudoers, является пустая строка "", это означает, что команда не может быть выполнена ни с какими параметрами.

### Другие специальные символы и зарезервированные слова:
Знак фунта ('#') используется для обозначения комментария (если это происходит не в контексте имени пользователя, сопровождается одной или более цифр и обрабатывается как универсальный идентификатор пользователя (uid)). И знак комментария, и любой текст после него, игнорируются до конца строки.

Зарезервированное слово ALL является встроенным псевдонимом, которое всегда имеет определение. Это может использоваться везде, где было бы уместно использование псевдонимов Cmnd_Alias, User_Alias, Runas_Alias, или Host_Alias. Вы не должны пытаться назначить свой собственный псевдоним с именем ALL, поскольку встроенный псевдоним будет использоваться вместо вашего собственного. Помните, что использование ALL в контексте команды опасно, так как позволит пользователю выполнить любую команду в системе.

Знак восклицания (!') может быть использован как логический оператор не, как в псевдониме, так и перед Cmnd. Это позволяет исключать некоторые значения. Обратите внимание, что использование ! в сочетании с встроенным псевдонимом ALL для разрешения выполнения пользователем всего кроме нескольких команд не всегда работает должным образом (см. БЕЗОПАСНОСТЬ ПРИМЕЧАНИЯ ниже).

Длинные строки могут быть перенесены при помощи обратного слэша (\'), если он является последним символом в строке.

Пробелы между элементами описания, также как и специальные синтаксические символы в Спецификации пользователя ('=, :, (, )'), являются необязательными.

Следующие символы должны начинаться с символа обратного слэша (\'), когда используются как часть слова (т.е. имя пользователя или имя компьютера): '@, !, =, :, ,, (, ), \.

## ПРИМЕРЫ
Ниже приведены примеры записей sudoers. Возможно, некоторые из них являются выдуманными. Сначала мы определяем свои псевдонимы:

\# Определение псевдонимов пользователя

User_Alias FULLTIMERS = millert, mikef, dowdy

User_Alias PARTTIMERS = bostley, jwfox, crawl

User_Alias WEBMASTERS = will, wendy, wim

\# Определение псевдонимов Runas (Выполнить как)

Runas_Alias OP = root, operator

Runas_Alias DB = oracle, sybase

\# Определение псевдонимов машин

Host_Alias SPARC = bigtime, eclipse, moet, anchor :\

SGI = grolsch, dandelion, black :\

ALPHA = widget, thalamus, foobar :\

HPPA = boa, nag, python

Host_Alias CUNETS = 128.138.0.0/255.255.0.0

Host_Alias CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0

Host_Alias SERVERS = master, mail, www, ns

Host_Alias CDROM = orion, perseus, hercules

\# Определение псевдонимов Cmnd (команд)

Cmnd_Alias DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\

/usr/sbin/restore, /usr/sbin/rrestore

Cmnd_Alias KILL = /usr/bin/kill

Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm

Cmnd_Alias SHUTDOWN = /usr/sbin/shutdown

Cmnd_Alias HALT = /usr/sbin/halt, /usr/sbin/fasthalt

Cmnd_Alias REBOOT = /usr/sbin/reboot, /usr/sbin/fastboot

Cmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \

/usr/local/bin/tcsh, /usr/bin/rsh, \

/usr/local/bin/zsh

Cmnd_Alias SU = /usr/bin/su

Здесь мы переопределим некоторые встроенные значения по умолчанию. Мы хотим, чтобы sudo регистрировал события при помощи syslog(3), во всех случаях используя метод auth. Мы не хотим, что бы sudo читало лекции всем пользователям, и пользователь millert не должен указывать пароль. В добавок, на машинах в SERVERS Host_Alias мы держим дополнительный локальный файл журнала и удостоверимся, что мы регистрируем год в каждой строке файла журнала, так как записи журнала будут сохраняться в течение нескольких лет.

\# Переопределяем встроенные значения по умолчанию

Defaults syslog=auth

Defaults:FULLTIMERS !lecture

Defaults:millert !authenticate

Defaults@SERVERS log_year, logfile=/var/log/sudo.log

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

root ALL = (ALL) ALL

%wheel ALL = (ALL) ALL

Мы позволим супер-пользователю (root) и любому пользователю в группе wheel выполнить любую команду на любой машине от имени любого пользователя.

FULLTIMERS ALL = NOPASSWD: ALL

Системные администраторы занятые полный рабочий день (millert, mikef и dowdy) могут выполнить любую команду на любой машине без аутентификации.

PARTTIMERS ALL = ALL

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

jack CSNETS = ALL

Пользователь jack может выполнить любую команду на машинах с псевдонимом CSNETS (сети 128.138.243.0, 128.138.204.0 и 128.138.242.0). Из этих сетей только <128.138.204.0> имеет явную сетевую маску (в соответствии с CIDR) означающую сеть класса C. Для остальных сетей в CSNETS в случае соответствия будет использоваться сетевая маска машины.

lisa CUNETS = ALL

Пользователь lisa может выполнять любую команду на любой машине с псевдонимом CUNETS (сеть класса B 128.138.0.0).

operator ALL = DUMPS, KILL, PRINTING, SHUTDOWN, HALT, REBOOT,\

/usr/oper/bin/

Пользователь operator может выполнять команды ограничивающиеся простым обслуживанием. В данном случае таковыми являются резервное копирование, уничтожение процессов, система печати, выключение системы и любая команда в каталоге /usr/oper/bin/.

joe ALL = /usr/bin/su operator

Пользователь joe может выполнять только su(1) оператору.

pete HPPA = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root

Пользователю pete разрешено изменять любой пароль, за исключением пароля супер-пользователя (root) на машинах HPPA. Учтите, что passwd(1) не воспринимает несколько имен пользователей подряд в одной командной строке.

bob SPARC = (OP) ALL : SGI = (OP) ALL

Пользователь bob может выполнять любые команды на машинах SPARC и SGI, как пользователь описанный в Runas_Alias в OP (root и operator).

jim +biglab = ALL

Пользователь jim может выполнить любую команду на машинах в сетевой группе biglab. Sudo знает, что biglab является сетевой группой из-за префикса +.

+secretaries ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser

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

fred ALL = (DB) NOPASSWD: ALL

Пользователь fred может выполнять команды от имени любого пользователя в Runas_Alias DB (oracle или sybase), без указания пароля.

john ALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*

На машинах ALPHA пользователь john может выполнить su любому пользователю, за исключением супер-пользователя (root), но не имеет права задавать su(1) какие-либо флаги.

jen ALL, !SERVERS = ALL

Пользователь jen может выполнить любую команду на любой машине, за исключением машин в Host_Alias SERVERS (master, mail, www и ns).

jill SERVERS = /usr/bin/, !SU, !SHELLS

Для любой машины в Host_Alias SERVERS jill может выполнить любую команду в каталоге /usr/bin/, за исключением команд относящихся к Cmnd_Aliases SU и SHELLS.

steve CSNETS = (operator) /usr/local/op_commands/

Пользователь steve может выполнить любую команду в каталоге /usr/local/op_commands/, но только как пользователь operator.

matt valkyrie = KILL

На своей персональной рабочей станции, valkyrie, matt необходима возможность уничтожать зависшие процессы.

WEBMASTERS www = (www) ALL, (root) /usr/bin/su www

На машинах www, любой пользователь в User_Alias WEBMASTERS (will, wendy и wim), может выполнить любую команду как пользователь www (который является владельцем web-страниц) или просто su(1) к www.

ALL CDROM = NOPASSWD: /sbin/umount /CDROM,\

/sbin/mount -o nosuid\,nodev /dev/cd0a /CDROM

Любой пользователь может монтировать или размонтировать CD-ROM на машинах в Host_Alias CDROM (orion, perseus, hercules) без ввода пароля. Ввод этого несколько утомителен для пользователей, поэтому это первейший кандидат для включения в сценарий оболочки.

## СОВЕТЫ ПО БЕЗОПАСНОСТИ
В целом исключение команд из ALL, с использованием оператора !, не эффективно. Пользователь может тривиально это обойти, копируя желаемые команды с разными именами, и затем их выполнять. Например:

bill ALL = ALL, !SU, !SHELLS

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

## ПРЕДОСТЕРЕЖЕНИЯ
Файл sudoers должен редактироваться только командой visudo, которая блокирует файл и осуществит проверку грамматики. Это обязательно, во избежание возникновения ошибок в синтаксисе sudoers, так как sudo не будет работать при наличии ошибок в sudoers.

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

## ФАЙЛЫ

/etc/sudoers,

/etc/sudo.d/* Cписок пользователей, с указанием того, что они могут выполнять

/etc/group Файл локальных групп

/etc/netgroup Список сетевых групп

## ПЕРЕВОД
Александр Блохин <sass@altlinux.ru>

## СМ. ТАКЖЕ
rsh(1), sudo(8), visudo(8), su(1), fnmatch(3).


syslog.conf

package: man-pages-ru-extra

title: syslog.conf(5)

text:
# syslog.conf(5)

## ИМЯ
syslog.conf - syslogd(8)

## ОПИСАНИЕ
Файл syslog.conf является главным конфигурационным файлом для демона syslogd(8) , выполняющего журналирование системных сообщений на *nix системах. Этот файл определяет правила для журналирования. Для описания особых возможностей смотрите руководство по sysklogd(8).

Каждое правило представляет из себя два поля: поле селектора и поле действия . Эти два поля разделены одним (или более) пробелом или символом табуляции. Поле селектора описывает шаблон, определяющий над какими сообщениями (они задаются службами и приоритетами), надлежит выполнять определенные действия.

Строки начинающиеся с символа `#' и пустые строки игнорируются.

Эта версия syslogd понимает расширенный синтаксис: одно правило может быть разделено на несколько строк, если строка правила заканчивается символом `\'.

## СЕЛЕКТОРЫ
Поле селектора, в свою очередь, тоже состоит из двух частей: служба и приоритет, разделенных точкой (`.'). Обе части не чувствительны к регистру и могут быть заданы также в виде десятичных чисел, но не делайте этого. И службы, и приоритеты описаны в syslog(3). Указанные ниже имена описаны в /usr/include/syslog.h, в виде LOG_-значений.

Служба задается одним из следующих ключевых слов: auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (тоже что и auth), syslog, user, uucp и local0 ... local7. Ключевое слово security больше не должно использоваться, а mark предназначено только для внутреннего использования и не указывается для приложений - хотя вы можете задать такие сообщения для перенаправления. Служба определяет подсистемы, которые генерируют сообщение, т.е. все почтовые программы, конечно, если они используют syslog, журналируют сообщения c указанием почтовой службы (LOG_MAIL).

Прироритет задается одним из следующих ключевых слов (в порядке возрастания серьезности): debug, info, notice, warning, warn (тоже что и warning), err, error (тоже что и err), crit, alert, emerg, panic (тоже что и emerg). Ключевые слова error, warn и panic устарели и не должны больше использоваться. Приоритет определяет серьезность сообщения.

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

Дополнительно к указанным выше именам, syslogd(8) понимает следующие расширения: `*' обозначает все службы или все приоритеты, в зависимости от того, где используется (до или после точки `.'). Ключевое слово none означает отсутствие приоритета для данной службы.

Вы можете задать несколько служб в одном правиле для одного и того же приоритета, используя `,'. Запомните, что при использовании такой записи из шаблона извлекается только та часть, которая отвечает за службу, а часть, которая отвечает за приоритет, игнорируется.

Для одного действия может быть задано несколько селекторов с использованием `;'. Запомните, что каждый селектор в поле селектор может перезаписать предшествующие. Используя это поведение, вы можете исключать некоторые приоритеты из шаблона.

Эта версия syslogd(8) расширяет синтаксис оригинальной версии BSD, что делает его использование более интуитивно понятным. Вы можете перед каждым приоритетом ставить `=' (равенство), чтобы определить только один приоритет, а не любой из тех, что выше. Вы можете также (использовать оба символа корректно) перед приоритетом ставить `!' (инвертирование), чтобы игнорировать все приоритеты, которые совпадают с указанным или выше него. Если вы используете оба расширения, то `!' должен быть перед `=' (не равно) - просто интуитивно используйте их.

## ДЕЙСТВИЯ
Поле действия в правиле описывает абстрактный термин `logfile'. Необязательно, чтобы `logfile' был реальным файлом. syslogd(8) предоставляет следующие действия:

### Обычный файл
Обычно сообщения журналируются в реальных файлах. Файл должен быть задан с полным путем, начинающимся с `/'.

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

### Именованные каналы
Эта версия syslogd(8) поддерживает вывод журналируемых сообщений в именованные каналы (fifo). Fifo или именованный канал может быть использован как пункт назначения, посредством добавления символа `|' перед именем файла. Это удобно использовать для отладки. Заметьте, что перед тем как syslogd(8) будет запущен, fifo должен быть создан с помощью команды mkfifo(1).

### Терминал и консоль
Если файл, который вы задаете, является tty, выполняется специальная tty-обработка. Тоже самое и с /dev/console.

### Удаленный узел
Эта версия syslogd(8) полностью поддерживает удаленное журналирование, т.е. может посылать сообщения на удаленную систему, где запущен syslogd(8) и принимать сообщения с удаленных систем. В свою очередь, удаленная система не будет пересылать сообщения снова, она просто будет журналировать их локально. Чтобы дать возможность удаленно журналировать сообщения на другой системе, указывайте `@' перед именем системы.

Используя эту возможность, вы можете контролировать все syslog сообщения на одной системе, если все другие машины будут удаленно выполнять журналирование на нее. Это позволяет уменьшить стоимость администрирования.

### Список пользователей
Обычно критичные сообщения также направляются пользователю `root'. Вы можете задать список пользователей, которые будут получать сообщения, просто указав имена этих пользователей. Чтобы задать несколько пользователей, разделите их `,'. Если они зарегистрированы (совершили вход в систему), то получат сообщение. Не думаю, что письмо будет послано - уже может быть слишком поздно.

### Каждый зарегистрированный (вошедший в систему)
Аварийные сообщения часто идут ко всем пользователям, находящимся сейчас на системе, для того, чтобы уведомить их в том, что нечто странное происходит с системой. Чтобы задать такое поведение, используйте возможности wall(1), посредством использования `*'.

## ПРИМЕРЫ
Здесь приведено несколько примеров, частично взятых с реально существующих систем и конфигураций. Надеюсь, они сделают ненужными все вопросы по настройке, если нет - напишите мне (Joey).

```
# Хранить все критические сообщения в critical
#
*.=crit;kern.none            /var/adm/critical
```

Сохранит все сообщения с приоритетом crit в файле /var/adm/critical, за исключением сообщений ядра.

```
# Сначала сообщения ядра сохраняются в файле kernel,
# но критичные сообщения (и выше) также будут
# отправлены на другую систему и на консоль
#
kern.*                       /var/adm/kernel
kern.crit                    @finlandia
kern.crit                    /dev/console
kern.info;kern.!err          /var/adm/kernel-info
```

Первое правило направляет все сообщения от службы kernel в файл /var/adm/kernel.

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

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

Четвертая строка говорит демону syslogd сохранять все сообщения ядра, которые приходят с приоритетами от info и до warning, в файле /var/adm/kernel-info. Все остальные (от err и выше) не будут сохранены.

```
# tcpwrapper посылает в журнал записи с mail.info, мы
# показываем все соединения на tty12
#
mail.=info                   /dev/tty12
```

Отправляет все сообщения, использующие mail.info (в тексте программы это выглядит как LOG_MAIL | LOG_INFO), в /dev/tty12- двенадцатую консоль. К примеру, tcpwrapper tcpd(8) использует такие сообщения по умолчанию.

```
# Сохраняет все сообщения, касающиеся почты в файле
#
mail.*;mail.!=info           /var/adm/mail
```

Этот шаблон выискивает все сообщения, пришедшие от службы mail , исключая сообщения с приоритетом info . Эти сообщения будут сохранены в файле /var/adm/mail.

```
# Журналировать все сообщения mail.info и news.info в файле info
#
mail,news.=info              /var/adm/info
```

Извлекает все сообщения, пришедшие либо с mail.info , либо с news.info, и сохраняет их в файле /var/adm/info.

```
# Журналировать сообщения info и notice в файле messages
#
*.=info;*.=notice;\
	mail.none  /var/log/messages
```

Это позволяет демону syslogd журналировать все сообщения, пришедшие либо с приоритетом info , либо с приоритетом notice, в файл /var/log/messages, за исключением тех сообщений, которые используют службу mail .

```
# Журналировать информационные сообщения в файл messages
#
*.=info;\
	mail,news.none       /var/log/messages
```

Это правило указывает syslogd журналировать все сообщения, пришедшие с приоритетом info , в файл /var/log/messages. Но сообщения, пришедшие со служб либо mail , либо news, не будут сохранены.

```
# Аварийные сообщения будут показаны, используя wall
#
*.=emerg                     *
```

Это правило говорит демону syslogd выводить все аварийные сообщения всем пользователям, которые в текущий момент находятся в системе.

```
# Сообщения с приоритетом alert будут направлены оператору.
#
*.alert                      root,joey
```

Это правило направляет все сообщения с приоритетом alert или выше на терминалы операторов, т.е. пользователям `root' и `joey', если они вошли в систему.

```
*.*                          @finlandia
```

Это правило перенаправляет все сообщения на удаленную систему с именем finlandia. Это полезно в случае кластера машин, когда все syslog сообщения будут храниться только на одной машине.

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

Оригинальный BSD syslogd не принимает пробелы как разделители между полем селектора и полем действия.

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

Конфигурационный файл для syslogd

## ОШИБКИ
Эффект от использования нескольких селекторов не всегда интуитивно понятен. К примеру, `mail.crit,*.err' будет отбирать сообщения от `mail' служб с приоритетом `err' и выше, а не с приоритетом `crit' и выше.

## СМ. ТАКЖЕ
sysklogd(8), klogd(8), logger(1), syslog(2), syslog(3)

## АВТОРЫ
Из исходных кодов BSD Greg Wettstein (greg@wind.enjellic.com) портировал оригинальный syslogd под Linux. Martin Schulze (joey@linux.de) исправил некоторые ошибки и добавил новую функциональность.

## ПЕРЕВОД
Перевод с английского Alexander Kolotov (alexandr.kolotov@gmail.com) 2007

branch: sisyphus


tcb

title: tcb(5)

text:
# tcb(5)

## Название
tcb - альтернативная схема управления теневыми паролями

## Задача
Согласно традиционной схеме управления теневыми паролями, хеши паролей всех пользователей, а также информация о сроке их действия хранится в едином файле - /etc/shadow. Таким образом, процесс, которому предоставляется доступ к информации о пароле одного из пользователей системы, автоматически получает права, достаточные для получения аналогичного доступа к информации о паролях всех остальных пользователей. Этот явный изъян в дизайне легко проследить на примере утилиты passwd(1). Предположим, что политика безопасности позволяет непривилегированным пользователям изменять собственные пароли. Какими бы ни были права доступа к файлу /etc/shadow, программа passwd(1), запущенная непривилегированным пользователям U, должна иметь возможность вносить изменения в этот файл. Если злоумышленник U найдёт способ взять под свой контроль процесс passwd(1) (с помощью ошибки непосредственно в коде программы passwd(1), используемых ею библиотеках, или в ядре), то этот пользователь получит возможность менять пароли всех пользователей и таким образом возьмёт под свой контроль операционную систему.

## Решение
Решение проблемы простое - каждому пользователю соответствует отдельный теневой shadow-файл. Поскольку теневой файл пользователя U принадлежит этому пользователю U, то программа passwd(1), запущенная U, уже не требует рутовых прав.

Все теневые файлы пользователей располагаются в каталоге /etc/tcb:

```
drwx--x---    2 root     shadow       1024 Май  4 01:18 /etc/tcb
```

Для каждого пользователя создаётся подкаталог в /etc/tcb с соответствующими правами доступа:

```
# ls -l /etc/tcb
всего 2
drwx--s---    2 root     auth         1024 Май  4 01:18 root
drwx--s---    2 user     auth         1024 Май  4 01:18 user
```

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

```
# ls -l /etc/tcb/user
всего 1
-rw-r-----    1 user     auth           91 Май  4 01:18 shadow
```

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

## Преимущества
Описанный выше дизайн обладает следующими преимуществами:

1.

Утилита passwd(1) должна быть установлена с правами SGID-shadow, а не SUID-root. Утилита chage(1) и вспомогательная программа /usr/lib/chkpwd/tcb_chkpwd также должны быть установлены с правами SGID-shadow; это значит, что в соответствии со схемой tcb запущенные процессы будут обладать правами, достаточными для изменения только пользовательской теневой записи. Таким образом, весь вред, который может причинить злоумышленник в случае обнаружения ошибки в реализации этих программ, ограничен возможностью изменения своего собственного теневого файла.

2.

Если процессу необходим доступ по чтению ко всем теневым файлам сразу, достаточно дополнительно включить его в группы "shadow" и "auth".

3.

Схема tcb полностью прозрачна для приложений, которым требуется читать информацию о паролях. Разделяемая библиотека libnss_tcb реализует интерфейс к функции getspnam(3) и другим функциям работы с теневыми записями. Смена паролей обеспечивается PAM-модулем pam_tcb(8).

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

## Недостатки
Честно говоря, их всего несколько, и они крайне незначительные:

1.

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

2.

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

3.

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

4.

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

## Обход ограничений, накладываемых файловыми системами
Некоторые файловые системы ограничивают возможное число жёстких ссылок для файлов. Например, в файловой системе ext2 никакой файл не может содержать более 32000 жёстких ссылок. Это значит, что каталог /etc/tcb, размещённый на такой файловой системе, может содержать не более 31998 подкаталогов. При использовании схемы размещения файлов, описанной выше, это ограничение файловой системы автоматически приводит к ограничению максимального числа пользователей тем же числом 31988.

Решение: каталог с теневым файлом для пользователя U может быть помещён не только в каталог /etc/tcb, но и в каталог /etc/tcb/:some/path. В случае использования второго варианта должна быть создана символическая ссылка /etc/tcb/U -> /etc/tcb/:some/path/U.

В реализации tcb, начиная с версии 0.9.8, каталоги с именами, удовлетворяющими шаблону /etc/tcb/:*, не рассматриваются как каталоги с теневыми файлами. Эти имена зарезервированы для символических ссылок на каталоги с теневыми файлами.

По умолчанию, средства управления доступом пользователей, работающие непосредственно с каталогами, содержащими теневые файлы, создают эти каталоги непосредственно в /etc/tcb; в ситуации, когда число пользователей в tcb может превысить ограничение файловой системы, администратор системы может перейти на второй вариант размещения каталогов с теневыми файлами, изменив параметр TCB_SYMLINKS в конфигурационном файле login.defs(5).

## Историческая справка
Первая публичная версия реализации альтернативной схемы управления теневыми паролями tcb появилась 12 ноября 2001 года в ОС Openwall GNU/*/Linux.

Дата появления tcb в ALT Linux Sisyphus - 20 декабря 2001 года.

## Авторы
Rafal Wojtczuk <nergal@owl.openwall.com>, Solar Designer <solar@owl.openwall.com> -

реализация схемы tcb для ОС Openwall GNU/*/Linux.

Dmitry V. Levin <ldv@altlinux.org> -

аудит кода, адаптация схемы tcb для ОС ALT Linux, перевод документации по tcb на русский язык.

Реализация PAM-модуля

pam_tcb призвана обеспечивать обратную совместимость с pam_unix, ввиду чего некоторые решения были заимствованы из pam_unix. Некоторые менее критичные фрагменты кода, а также в некоторой мере композиция кода взяты из реализации модуля pam_unix в Linux-PAM. Имена соавторов pam_unix приведены в каталоге orig_copyright/ исходного кода схемы tcb.

## Ссылки
login.defs(5), pam_tcb(8), tcb_convert(8)


vps.conf

title: vps.conf(5)

text:
# vps.conf(5)

## ИМЯ
vps.conf - файл конфигурации виртуальной среды (Virtual Environment - VE).

## ОБЗОР
/etc/vz/conf/XXX.conf

## ОПИСАНИЕ
Это файл конфигурации виртуальной среды. Он имеет имя /etc/vz/conf/id.conf, где id - идентификатор данной виртуальной среды.

Файл состоит из строк в формате

ПАРАМЕТР="значение"

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

Создание и изменение файла осуществляется с помощью утилиты vzctl(8) (с ключами set --save), и все изменения, вносимые другими способами, будут утеряны при следующем запуске vzctl.

Все параметры описаны в vzctl(8), потому далее приведены только соответствующие параметры vzctl set.

### Общие параметры
NAME="имя-среды"

Соответствует --name.

ONBOOT="yes|no"

Запускать ли виртуальную среду при загрузке системы. Значение по умолчанию: no (не запускать). Соответствует --onboot.

OSTEMPLATE="имя_шаблона"

Соответствует --ostemplate.

VE_ROOT="каталог"

Соответствует --root.

VE_PRIVATE="каталог"

Соответствует --private.

DISABLED="yes|no"

Соответствует --disabled.

ORIGIN_SAMPLE="имя"

Имя исходной конфигурации на которой основана конфигурация данной виртуальной среды.

CONFIG_CUSTOMIZED="yes|no"

Должно быть yes если виртуальная среда была изменена.

### Параметры работы с ресурсами
NUMPROC

Соответствует --numproc.

NUMFILE

Соответствует --numfile.

NUMFLOCK

Соответствует --numflock.

NUMPTY

Соответствует --numpty.

NUMSIGINFO

Соответствует --numsiginfo.

NUMTCPSOCK

Соответствует --numtcpsock.

NUMOTHERSOCK

Соответствует --numothersock.

PRIVVMPAGES

Соответствует --privvmpages.

VMMGUARPAGES

Соответствует --vmguarpages.

OOMGUARPAGES

Соответствует --oomguarpages.

LOCKEDPAGES

Соответствует --lockedpages.

SHMPAGES

Соответствует --shmpages.

KMEMSIZE

Соответствует --kmemsize.

TCPSNDBUF

Соответствует --tcpsndbuf.

TCPRCVBUF

Соответствует --tcprcvbuf.

OTHERSOCKBUF

Соответствует --othersockbuf.

DGRAMRCVBUF

Соответствует --dgramrcvbuf.

DCACHESIZE

Соответствует --dcachesize.

NUMIPTENT

Соответствует --numiptent.

CPUUNITS

Соответствует --cpuunits.

DISKSPACE="гибкий-предел[:жёсткий-предел]"

Соответствует --diskspace.

DISKINODES="гибкий-предел[:жёсткий-предел]"

Соответствует --diskinodes.

QUOTATIME="количество_секунд"

Соответствует --quotatime.

QUOTAUGIDLIMIT="num"

Соответствует --quotaugidlimit.

NOATIME="yes|no"

Соответствует --noatime.

CAPABILITY="имя-функции:on|off [...]"

Соответствует --capability.

### Параметры работы с сетью
IP_ADDRESS="адрес [адрес]"

Указывает адрес, который будет назначен виртуальной среде. Несколько адресов разделяются пробелами. Соответствует --ipadd.

HOSTNAME="имя"

Соответствует --hostname.

NAMESERVER="ip [ip]"

Соответствует --nameserver. Несколько адресов разделяются пробелами.

SEARCHDOMAIN="домен [домен]"

Соответствует --searchdomain. Несколько доменов разделяются пробелами.

## СМ. ТАКЖЕ
vzctl(8), vz.conf(5).

## АВТОРЫ
Copyright (C) 2001-2007 by SWsoft. Распространяется на условиях лицензии GNU GPL.

## ПЕРЕВОД
Николай Шафоростов <shafff@ukr.net> 2007


vsftpd.conf

title: vsftpd.conf(5)

summary: конфигурационный файл для vsftpd

text:
# vsftpd.conf(5)

## ИМЯ
vsftpd.conf - конфигурационный файл для vsftpd

## ОПИСАНИЕ
vsftpd.conf используется для управления различными аспектами поведения vsftpd. По умолчанию, vsftpd ищет этот файл в по адресу /etc/vsftpd.conf. Однако, вы можете изменить местоположение файла, через аргументы командной строки. Аргументы командной строки, это путь и имя конфигурационного файла для vsftpd. Такая возможность полезна, если вы пожелаете использовать улучшенный inetd, такой как xinetd для запуска vsftpd с разными конфигурационными файлами на каждый виртуальный хост.

## ФОРМАТ
Формат vsftpd.conf очень простой. Каждая строка это коментарий или директива. Командные строки начинающиеся с символа # игнорируются. Директивы имеют формат

опция=значение

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

Каждое значение по умолчанию может быть изменено в конфигурационном файле.

## БУЛЕВЫ ОПЦИИ
Ниже идет список булевых опций. Значения, для булевых опций могут быть установлены в YES или NO.

allow_anon_ssl

Применяется, если опция ssl_enable включена. При включении этой опции, анонимным пользователям также будет разрешено использование безопасных SSL соединений. По умолчанию: NO

anon_mkdir_write_enable

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

anon_other_write_enable

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

anon_upload_enable

Включение этой опции позволяет анонимным пользователям загружать файлы на сервер, в соответствии с определенными для этого условиями. Для работы этой опции, опция write_enable и анонимный ftp пользователь должен иметь права на запись в каталоге для загрузки. Включение опции также необходимо для предоставления возможности загружать на сервер файлы виртуальным пользователям; по умолчанию виртуальные пользователи имеют одинаковые привилегии с анонимными пользователями (т.е. максимально ограниченные привилегии). По умолчанию: NO

anon_world_readable_only

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

anonymous_enable

Разрешает или запрещает вход анонимных пользователей. Если опция включена, пользователи с именами ftp и anonymous распознаются как анонимные пользователи. По умолчанию: YES

ascii_download_enable

Если опция включена, ASCII режим передачи данных будет разрешен при скачивании с сервера. По умолчанию: NO

ascii_upload_enable

Если опция включена, ASCII режим передачи будет разрешен при загрузке на сервер. По умолчанию: NO

async_abor_enable

Если опция включена, специальные FTP команды известные как "async ABOR" будут разрешены. Только плохо продуманные FTP клиенты используют эту функцию. В добавок, эта функция неудобна в управлении, поэтому отключена по умолчанию. К сожалению, некоторые FTP клиенты могут зависать в момент отмены передачи, если эта функция выключена. Если это происходит можно попробовать включить эту функцию. По умолчанию: NO

background

Если опция включена, vsftpd стартуя в режиме listen, работает в фоновом режиме. Т.е. контроль возвращается той оболочке, в которой был запущен vsftpd. По умолчанию: NO

check_shell

Замечание! Опция эффективна только для non-PAM сборок vsftpd. Если опция выключена, vsftpd не проверяет файл /etc/shells на допустимость пользовательских shell оболочек для локальных входов. По умолчанию: YES

chmod_enable

Включение этой опции разрешает использование SITE CHMOD команд устанавливающих права доступа для файла. ВНИМАНИЕ! Применимо только к локальным пользователям. Анонимные пользователи никогда не смогут использовать SITE CHMOD команды. По умолчанию: YES

chown_uploads

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

chroot_list_enable

Если опция включена, вы можете использовать список локальных пользователей помещаемых в chroot() в их домашнем каталоге после входа. Если используется совместно с включенным chroot_local_user означает список пользователей которые не помещаются в chroot(). По умолчанию список содержится в файле /etc/vsftpd.chroot_list, но можно указать любой другой путь к файлу используя chroot_list_file опцию. По умолчанию: NO

chroot_local_user

Если опция установлена, локальные пользователи будут (по умолчанию) перенесены в chroot () в их домашнем каталоге после входа. Внимание: эта опция имеет смысл быть включенной из соображений безопасности, особенно если пользователи имеют права позволяющие загрузку файлов на сервер, или shell доступ. Включайте, только если Вы действительно знаете что Вы делаете. Заметим, что эта опция безопасности в системах класса unix, характерна не только для vsftpd, используется и в других FTP серверах, которые предлагают помещать локальных пользователей в chroot(). По умолчанию: NO

connect_from_port_20

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

debug_ssl

Если опция установлена, диагностика OpenSSL соединений записывается в лог файл vsftpd. (Добавлено в v2.0.6). По умолчанию: NO

delete_failed_uploads

Если опция установлена, любые недокаченные файлы удаляются. (Добавлено в v2.0.7). По умолчанию: NO

deny_email_enable

Если опция установлена, вы можете установить список анонимных паролей, с уведомлением по электронной почте, если логин был набран неверно. По умолчанию, файл содержащий этот список /etc/vsftpd.banned_emails, но вы можете изменить эту настройку, установкой опции banned_email_file По умолчанию: NO

dirlist_enable

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

dirmessage_enable

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

download_enable

Если опция не установлена, все запросы на скачивание будут возвращать ошибку запрета доступа. По умолчанию: YES

dual_log_enable

При включении, два файла с журналами генерируются параллельно, по умолчанию они располагаются в /var/log/xferlog и /var/log/vsftpd.log. Первый генерируется в стиле журнала wu-ftpd, анализируемый стандартными средствами. Другой в стиле журнала vsftpd. По умолчанию: NO

force_dot_files

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

force_anon_data_ssl

Разрешено, только если опция ssl_enable включена. При включении, все анонимные подключения будут использовать SSL безопасные соединения для приема и передачи данных. По умолчанию: NO

force_anon_logins_ssl

Разрешено, только если опция ssl_enable включена. При включении, все анонимные подключения будут использовать безопасные SSL соединения при посылке паролей. По умолчанию: NO

force_local_data_ssl

Разрешено, только если опция ssl_enable включена. При включении, все не анонимные подключения используют безопасные SSL соединения для приема и передачи данных. По умолчанию: YES

force_local_logins_ssl

Разрешено, только если опция ssl_enable включена. При включении, все не анонимные подключения используют безопасное SSL соединение при передачи паролей. По умолчанию: YES

guest_enable

Если опция включена, подключения всех не анонимных локальных пользователей рассматриваются как "гостевые" ("guests"). "Гостям" назначаются параметры указванные в опции guest_username По умолчанию: NO

hide_ids

Включение скрывает информацию о именах владельцев файлов и группах, при листинге отображается как "ftp" По умолчанию: NO

implicit_ssl

Если опция включена, рукопожатие SSL первое, что ожидается при всех подключениях (протокол FTPS). Для явной поддержки SSL и/или plain text, должны быть запущены отдельные процессы vsftpd. По умолчанию: NO

listen

Если опция включена сервер стартует в независимом от inetd/xinetd режиме "standalone mode". В этом случае он сам заботится о прослушивании и определении входящих соединений. По умолчанию: NO

listen_ipv6

Тоже самое что listen, за исключением того что vsftpd слушает IPv6 протокол включительно. Данный параметр и параметр listen - взаимоисключаемые. По умолчанию: NO

local_enable

Разрешает или запрещает вход для локальных пользователей. Если опция включена, обычные пользовательские акаунты в /etc/passwd могут быть использованы для входа. Должно быть включено для разрешения любых не анонимных входов, включая вход виртуальных пользователей. По умолчанию: NO

lock_upload_files

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

log_ftp_protocol

При включении, все FTP запросы и ответы журналируются, включение с опцией xferlog_std_format запрещено. Используется для выявления ошибок. По умолчанию: NO

ls_recurse_enable

При включении, разрешает рекурсивный листинг "ls -R". Включение немного рискованно исходя из соображений безопасности, так как выполнение "ls -R" в верхнем уровне большого сайта может поглощать много ресурсов. По умолчанию: NO

mdtm_write

Если опция включена, разрешены обновления времени модификации файла через MDTM ftp команды. По умолчанию: YES

no_anon_password

Если опция установлена, vsftp не спрашивает пароль у анонимных пользователей, позволяя им подключаться сразу. По умолчанию: NO

no_log_lock

Если опция включена, запрещает vsftpd блокировку файла журнала при записи в него. Обычно эта опция выключена. Она существует для обхода ошибок в операционных системах Solaris / Veritas и комбинаций файловых систем на них, в которых наблюдались зависания при попытке блокировки лог файлов. По умолчанию: NO

one_process_model

Начиная с ядра Linux 2.4, возможно использование различных моделей безопасности, так включение этой опции позволяет использовать только один процесс на одно пользовательское подключение. Обычно нет нужды включать эту опцию, если вы не увены в том, что делаете, и ваш сайт не поддерживает большое количество одновременно подключенных пользователей. По умолчанию: NO

passwd_chroot_enable

Если опция включена вместе с chroot_local_user , тогда местоположение chroot() может быть определено для каждого пользователя. Пользователи помещаются в свои домашние директории, которые указаны в файле /etc/passwd. Точное указание пути /./ указывает что пользователь будет перемещен при входе в директорию в этом пути. По умолчанию: NO

pasv_addr_resolve

Необходимо включить, если вы хотите использовать имя хоста (вместо ip адреса) в опции pasv_address По умолчанию: NO

pasv_enable

Отключите, если вы хотите запретить PASV метод соединения. По умолчанию: YES

pasv_promiscuous

Включите, если хотите запретить PASV security check, контролирующую подключения с одинаковыми ip адресами. Включайте опцию, только если вы знаете что делаете! Используется в некоторых туннельных соединениях, возможно в FXP. По умолчанию: NO

port_enable

Отключите опцию, если есть желание запретить PORT метод организации соединения. По умолчанию: YES

port_promiscuous

При включении опции, выключается PORT security check гарантирующий, что исходящие соединения могут быть установлены только с клиентами. Включайте только если действительно знаете что делаете! По умолчанию: NO

require_cert

Если опция установлена, все клиентские SSL соединения обязаны представить сертификат клиента. Степень одобрения, применяемая к сертификату определяется опцией validate_cert (Добавлено в v2.0.6). По умолчанию: NO

require_ssl_reuse

Если опция установлена, все SSL соединения обязаны выставить повторное использование SSL (что будет являться подтверждением того, что они знают тот же master secret, что и контролирующий канал ). Хоть эта опция повышает безопасность и установлена по умолчанию, она может нарушить работоспособность некоторых FTP клиентов, поэтому вы можете захотеть ее отключить. Для обсуждения последствий смотрите http://scarybeastsecurity.blogspot.com/2009/02/vsftpd-210-released.html (Добавлено в v2.1.0). По умолчанию: YES

run_as_launching_user

Включите для возможности запуска vsftpd от пользователя vsftpd. Это полезно когда root доступ недопустим. Важное предупреждение! Не разрешайте эту опцию если вы полностью не уверены что вы делаете, наивное использование этой опции может создать множество проблем связанных с безопасностью. В особенности, vsftpd не может использовать chroot технологию для разграничения доступа к файлам (даже если при этом сервер запущен от root). В некоторой степени можно ограничить доступ при помощи параметра deny_file указав шаблон запрещенных файлов, такой как {/*,*..*}, но надежность этого не сравнима с chroot, поэтому не стоит возлагать на это больших надежд. С использованием этой опции, также проявляются ограничения в других опциях. Для примера, в опциях требующих привилегии, не анонимные входы, изменение владельца закачанных на сервер файлов, подключение по 20 порту и прослушивание портов менее 1024. Возможно и другие опции пересекаются с включением этой опции. По умолчанию: NO

secure_email_list_enable

Активируйте опцию, если хотите разрешать вход анонимным пользователям только на основе проверки паролей указанных в e-mail листе. Это простой путь ограничения доступа к низко безопасному содержимому без необходимости в виртуальных пользователях. При включении, анонимные входы блокируются если пароль не содержится в файле указанном опцией email_password_file. Формат файла - один пароль на строку. По умолчанию файл располагается в /etc/vsftpd.email_passwords. По умолчанию: NO

session_support

Эта опция определяет, будет ли vsftpd поддерживать установленные соединения. Если vsftpd поддерживает сессии, он будет пытаться обновить utmp и wtmp. Он также откроет pam_session, если используется PAM аутентификация и закроет соединение только после отключения. Можно отключить эту опцию, если не требуется журналирование сессии и есть желание предоставить vsftpd больше возможностей для запуска с меньшими привилегиями. Замечание - utmp и wtmp поддерживаются только в сборках с включенным PAM. По умолчанию: NO

setproctitle_enable

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

ssl_enable

Если опция включена, и vsftpd был скомпилирован с поддержкой OpenSSL, vsftpd будет поддерживать безопасность соединения с помощью SSL. Это позволяет контролировать соединения (включая входы в систему) и также передачу данных. Для этого также необходим клиент с поддержкой SSL. Замечания!! Включайте, если это действительно вам необходимо. Надо понимать тот факт, что vsftpd не может гарантировать безопасность OpenSSL библиотек. Включая эту опцию вы доверяете безопасность установленной OpenSSL библиотеке. По умолчанию: NO

ssl_request_cert

Если опция включена, vsftpd запросит (но не обязательно потребует; смотрите опцию .BR require_cert) сертификат на входящие SSL соединения. Обычно, это совсем не должно вызвать неприятностей, но IBM zOS похоже имеют проблемы. (Добавлено в v2.0.7). По умолчанию: YES

ssl_sslv2

Разрешено, только если опция ssl_enable включена. Включение этой опции разрешит подключения по протоколу SSL v2. TLS v1 подключения предпочтительны. По умолчанию: NO

ssl_sslv3

Разрешено, только если опция ssl_enable включена. Включение этой опции разрешит подключения по протоколу SSL v3. TLS v1 подключения предпочтительны. По умолчанию: NO

ssl_tlsv1

Разрешено, только если опция ssl_enable включена. Включение этой опции разрешит подключения по протоколу TLS v1. TLS v1 подключения предпочтительны. По умолчанию: YES

strict_ssl_read_eof

Если опция включена, загрузку данных по SSL необходимо завершить через SSL, а не через EOF в сокет. Данная опция нужна для того, что бы быть уверенным, что атакующий не завершит загрузку преждевременно, с поддельным TCP FIN. К сожалению, опция не включена по умолчанию, так как немногие клиенты обрабатывают ее правильно. (Добавлено в v2.0.7). По умолчанию: NO

strict_ssl_write_shutdown

Если опция включена, скачивание данных по SSL необходимо завершить через SSL, а не через EOF в сокет. Опция выключена по умолчанию, поскольку я не нашел ни единого FTP клиента, который бы осущствлял это. обрабатывают ее правильно. Она не совершенна. Перечисленное, вляет на возможность сообщить, подтвердил ли клиент полное получение файла. Даже без этой опции клиент может проверить целостность загрузки. (Добавлено в v2.0.7). По умолчанию: NO

syslog_enable

Если опция включена, весь журналируемый вывод, направляемые ранее в /var/log/vsftpd.log вместо этого будет направляться в системный журнал. If enabled, then any log output which would have gone to /var/log/vsftpd.log goes to the system log instead. Журналирование осуществляется в рамках механизма FTPD. По умолчанию: NO

tcp_wrappers

Если опция включена, и vsftpd был скомпилирован с поддержкой tcp_wrappers, входящие соединения контролируются через tcp_wrappers. Более того, существует механизм для конфигурирования для каждого ip адреса. Если tcp_wrappers устанавливает переменную окружения VSFTPD_LOAD_CONF, то vsftpd будет пытаться загрузить конфигурационный файл, который указан в этой переменной. По умолчанию: NO

text_userdb_names

По умолчанию, цифровый идентификаторы показываются в полях user и group в списке директорий. Вы можете получить текстовые имена, включив эту опцию. По умолчанию она выключена из соображений производительности. По умолчанию: NO

tilde_user_enable

Если опция включена, vsftpd будет пытаться распознать такие имена как ~chris/pics, то есть имена следующие за тильдой. Учтите, что vsftpd будет всегда распознавать путевые имена ~ и ~/что-нибудь (в случае ~ - распознавать начальную директорию при регистрации). Пути ~пользователь распознаются только в том случае, если файл /etc/passwd может быть найден внутри _текущей_ директории chroot(). По умолчанию: NO

use_localtime

Если опция включена, vsftpd покажет список директорий с отображением времени лично вашей временной зоны. По умолчанию, в листинге отображается временная зона GMT. Время возвращаемое MDTM командами также затрагиваются этой опцией. По умолчанию: NO

use_sendfile

Внутренняя настройка используемая для проверки преимущества использования системного вызова sendfile(), на вашей платформе. По умолчанию: YES

userlist_deny

Данная опция проверяет включена ли опция userlist_enable . Если опция не включена, вход пользователей будет отклонен, если они не найдены в файле указанном userlist_file. Если вход отклоняется, отказ отображается перед тем, как у пользователя будет запрошен пароль. По умолчанию: YES

userlist_enable

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

По умолчанию: NO

validate_cert

Если опция включена, все получаемые SSL сертификаты клиентов должны иметь OK подтверждение. Самоподписные сертификаты не являются OK подтвержденными. (Добавлено в v2.0.6). По умолчанию: NO

virtual_use_local_privs

Если опция включена, виртуальные пользователи будут использовать одинаковые с локальными пользователями привилегии. По умолчанию, виртуальные пользователи используют одинаковые с анонимными пользователями привилегии, предполагающие большие ограничения, (особенно условия доступа на запись). По умолчанию: NO

write_enable

Опция контролирует будут ли изменять файловую систему или нет, следующие FTP команды: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE and SITE. По умолчанию: NO

xferlog_enable

Если опция включена, журнал будет включать детальные отчеты о закачках на сервер, и закачках с сервера (uploads, downloads). По умолчанию, этот файл будет располагаться в /var/log/vsftpd.log, но расположение может быть изменено путем изменения опции vsftpd_log_file. По умолчанию: NO (но в прилагаемом конфигурационном файле, опция включена)

xferlog_std_format

Если опция включена, запись в журнал производится в стандартном xferlog формате, таким, который используется в wu-ftpd. Полезно при желании использования уже существующих, привычных, способов генерации статистики. Однако, с другой стороны, формат используемый по умолчанию лучше читается. Расположение журнала по умолчанию /var/log/xferlog, что может быть изменено путем изменения опции xferlog_file. По умолчанию: NO

## ЦИФРОВЫЕ ОПЦИИ
Ниже - список цифровых опций. Цифровым опциям не должны быть присвоены отрицательные числа. Восьмеричный режим поддерживается и похож на опции umask. Для использования восьмеричных опций, используйте 0 в качестве первой цифры номера.

accept_timeout

Максимальное время в секундах, выделенное для установки соединения с PASV стилем передачи данных. По умолчанию: 60

anon_max_rate

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

anon_umask

Значение накладываемой маски на файлы, создаваемые анонимными пользователями. Замечание! Если вы решили указать восмеричное значение, надо помнить о нулевом "0" префиксе, иначе значение будет рассмотрено как десятизначное. По умолчанию: 077

chown_upload_mode

Режим доступа к файлу, как у chown(), для анонимных загрузок. (Добавлено в v2.0.6). По умолчанию: 0600

connect_timeout

Максимальное время в секундах, для удаленного клиента отведенное на ответ для нашей передачи данных в стиле PORT. По умолчанию: 60

data_connection_timeout

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

delay_failed_login

Время ожидания в секундах, перед выводом отчета о неудачном входе. По умолчанию: 1

delay_successful_login

Время ожидания в секундах, перед разрешением успешного входа. По умолчанию: 0

file_open_mode

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

ftp_data_port

Указывается порт для входящих соединений с сервером (пока опция connect_from_port_20 включена). По умолчанию: 20

idle_session_timeout

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

listen_port

Если запущен в standalone mode, указанный порт слушает входящие FTP соединения. По умолчанию: 21

local_max_rate

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

local_umask

Значение накладываемой маски на файлы, создаваемые локальными пользователями. Замечание! Если вы решили указать восмеричное значение, надо помнить о нулевом "0" префиксе, иначе значение будет рассмотрено как десятизначное. По умолчанию: 077

max_clients

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

max_login_fails

Количество неудачных попыток входа, после которых сессия прекращается. По умолчанию: 3

max_per_ip

Если vsftpd находится в standalone mode, эта опция указывает максимально возможное количество клиентов с одинаковыми ip адресами. Клиентские подключения пытающиеся превысить этот лимит, получат сообщение об ошибке. По умолчанию: 0 (не ограничено)

pasv_max_port

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

pasv_min_port

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

trans_chunk_size

Вы, возможно, не хотите менять это, но можете попытаться выбрать что нибудь наподобие 8192 для более плавного ограничения полосы пропускания. По умолчанию: 0 (позволить vsftpd выбрать осмысленное значение)

## СТРОКОВЫЕ ОПЦИИ
Ниже - список строковых опций.

anon_root

В этой строке указывается каталог, в который vsftp будет переводить анонимных пользователей после входа. Неудачные попытки тихо игнорируются. По умолчанию: (не определено)

banned_email_file

Эта опция указывает имя файла в котором содержится список анонимных e-mail паролей не принимаемых сервером. Сервер сверяется с этим файлом если опция deny_email_enable включена. По умолчанию: /etc/vsftpd.banned_emails

banner_file

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

ca_certs_file

Опция указывает имя файла, откуда будут загржаться сертификаты, для подтверждения сертификатов клиентов. Загруженные сертификаты также объявляются клиенту, для клиентов TLSv1.0, таких как FTP клиенты в z/OS К сожалению, пути по умолчанию к сертификатам SSL CA не используются, потому что vsftpd использует ограниченное пространство файловой системы (chroot). (Добавлено в v2.0.6). По умолчанию: (не определено)

chown_username

В этом параметре указывается имя пользователя, назначаемого владельцем анонимно загруженных на сервер файлов. Эта опция уместна только при включенной опции chown_uploads По умолчанию: root

chroot_list_file

Опция содержит имя файла, в котором находится список локальных пользователей, который помещается в chroot() в их домашних директориях. Опция уместна, если опция chroot_list_enable включена. Если опция chroot_local_user включена, в таком случае, файл становится списком пользователе, которые не помещаются в chroot(). По умолчанию: /etc/vsftpd.chroot_list

cmds_allowed

В этой опции указывается, разделенных запятыми, список разрешенных FTP команд (post login. USER, PASS и QUIT pre-login всегда разрешены). Другие команды запрещены. Пример: cmds_allowed=PASV,RETR,QUIT По умолчанию: (не определено)

cmds_denied

В этой опции указывается, разделенных запятыми, список запрещенных FTP команд (post login. USER, PASS и QUIT pre-login всегда разрешены). Если команда находится и в данной опции и в cmds_allowed ,тогда приоритет имеет запрещающий список. (Добавлено в v2.1.0). По умолчанию: (не определено)

deny_file

Эта опция может быть использована для выбора шаблона имен файлов, к которым необходимо ограничить доступ. Обозначенный в шаблоне элемент не скрывается, но любая попытка сделать с ним что-нибудь (скачать, изменить и др.) будет отклонена. Эта опция очень проста и не должна использоваться для серьезного контроля доступа - приоритет должен отдаваться ограничениям файловой системы. Однако, эта опция может быть полезной при определенных настройках для виртуальных пользователей. Если имена файлов доступны по разным именам (к примеру, из-за символьных или жестких ссылок), тогда необходимо позаботиться о запрете доступа ко всем именам. В доступе будет отказано, если их имена содержат строку определенную в опции hide_file, либо они совпадают с регулярным выражением указанным в данной опции. Учтите, что механизм совпадения регулярных выражений vsftpd - простая реализация, являющаяся подмножеством полной функциональности регулярных выражений. Из-за этого, вам потребуется тщательная и всесторонняя проверка при применении этой опции. И рекомендуется использовать разрешения файловой системы для любых важных политик безопасности, ввиду их большей надежности. Поддерживаемый синтаксис регулярных выражений - любое число *, ? и невложенный оператор {,}. Поддерживаются регулярные выражения совпадающие только с последним компонентом пути, то есть a/b/? поддерживается, а a/?/c - нет. Пример: deny_file={*.mp3,*.mov,.private} По умолчанию: (не определено)

dsa_cert_file

Эта опция указывает местонахождение DSA сертификата для использования в SSL зашифрованных соединениях. По умолчанию: (нет - достаточно RSA сертификата)

dsa_private_key_file

Эта опция задает расположение личного DSA ключа для использования в SSL зашифрованных соединениях. Если эта опция не установлена, ожидается, что личный ключ тот же файл, что и сертификат. По умолчанию: (не определено)

email_password_file

Опция может быть использована в качестве альтернативы использованию опции secure_email_list_enable По умолчанию: /etc/vsftpd.email_passwords

ftp_username

Имя, назначаемое анонимным пользователям. Домашняя директория таких пользователей, корневая директория анонимного пространства FTP. По умолчанию: ftp

ftpd_banner

Эта опция позволяет отменить приветственное сообщение, отображаемое vsftpd при первом соединении. По умолчанию: (none - отображается сообщение по умолчанию)

guest_username

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

hide_file

Эта опция может быть использована для выбора шаблона имен файлов и каталогов, которые должны быть скрыты от просмотра. Несмотря на то, что они скрыты, они остаются полностью доступными для клиентов, которые знают их имена. Элементы будут скрыты если их имена содержат строки заданные в hide_file, или, если они совпадают с регулярными выражениями указаными в опции hide_file. Учтите, что механизм совпадения регулярных выражений vsftpd - простая реализация, являющаяся подмножеством полной функциональности регулярных выражений. Смотрите описание опции deny_file для информации о поддерживаемых регулярных выражениях. Пример: hide_file={*.mp3.,.hidden,hide*,h?} По умолчанию: (не определено)

listen_address

Прослушиваемый по умолчанию адрес (на всех локальных интерфейсах), если vsftpd запущен в standalone mode, может быть отменен определением этой опции. По умолчанию: (не определено)

listen_address6

Как и listen_address, но слушаемый адрес по умолчанию IPv6 (используется, если установлена опция listen_ipv6). Формат стандартный для IPv6. По умолчанию: (не определено)

local_root

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

message_file

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

nopriv_user

Указывает имя пользователя под которым работает vsftpd сервер, в случаях, когда нужно что бы он был полностью непривелегированным. Для этого предпочтительней выделить отдельного пользователя, чем использовать nobody. Пользователь nobody, как правило, используется для разных важных вещей на многих машинах. По умолчанию: nobody

pam_service_name

В этой строке указывается имя PAM сервиса который будет использоваться vsftpd. По умолчанию: ftp

pasv_address

Этой опцией отменяется ip адрес, который предлагает vsftpd для ответа на запрос PASV команды. Адрес указывается в цифровом виде, если не включена опция pasv_addr_resolve , в таком случае, вы можете указать имя хоста, которое будет разрешено в момент запуска. По умолчанию: (none - адрес берется из входящего сокета)

rsa_cert_file

Эта опция задает расположение RSA сертификата, для использования в SSL зашифрованных соединениях. По умолчанию: /usr/share/ssl/certs/vsftpd.pem

rsa_private_key_file

Эта опция задает расположение личного RSA ключа для использования в SSL зашифрованных соединениях. Если эта опция не установлена, ожидается, что личный ключ тот же файл, что и сертификат. По умолчанию: (не определено)

secure_chroot_dir

Эта опция указывает на имя пустой директории. Директория не должна быть записываемый для ftp пользователя. Эта директория используется как безопасный chroot(), когда vsftpd требуется доступ к файловой системе. По умолчанию: /usr/share/empty

ssl_ciphers

Эта опция может быть использована для выбора того, какие SSL шифры будут разрешены для шифрования SSL соединений. Смотрите man страницу ciphers для подробной информации. Учтите, такие ограничения шифров могут использоваться в целях предосторожности, предотвращая использования отдаленными сторонами шифра с которым были обнаружены проблемы. По умолчанию: DES-CBC3-SHA

user_config_dir

Эта опция позволяет отменять любую опцию конфигурации, указанную в man странице для каждого пользователя. Например, если в user_config_dir будет /etc/vsftpd_user_conf и потом произойдет подключение под пользователем "chris", тогда vsftpd применит установки из файла /etc/vsftpd_user_conf/chris для этой сессии. Формат данного файла детально описан в этой странице! ПОЖАЛУЙСТА, ИМЕЙТЕ ВВИДУ, что не все параметры эффективны для каждого пользователя, Например, много параметров применяется до подключения пользователя. Примеры параметров, которые не повлияют на пользователей включают в себя: listen_address, banner_file, max_per_ip, max_clients, xferlog_file, и так делее. По умолчанию: (не определено)

user_sub_token

Опция полезна в сочетании с виртуальными пользователями. Она применяется для автоматического создания домашних директорий для каждого виртуального пользователя, основанного на шаблоне. Например, если домашняя директория настоящего пользователя указана через опцию guest_username которая /home/virtual/$USER, и опция user_sub_token установлена $USER, тогда, когда виртуальный пользователь fred зарегистрируется, он будет в конечном итоге в директории (обычно в chroot() директории) /home/virtual/fred. Эта опция также будет иметь эффект, если local_root будет содержать user_sub_token. По умолчанию: (не определено)

userlist_file

Этот опция указывает имя файла загружаемого, когда опция userlist_enable включена. По умолчанию: /etc/vsftpd.user_list

vsftpd_log_file

В опции указывается имя файла, в который мы будем записывать лог файл в стиле vsftpd. Этот журнал ведется если опция xferlog_enable установлена и xferlog_std_format НЕ установлена. Кроме того, она будет записываться, если вы укажете опцию dual_log_enable. еще одна тонкость - если вы укажете опцию syslog_enable, в таком случае файл не будет записан, а вывод будет отправляться в системный журнал. По умолчанию: /var/log/vsftpd.log

xferlog_file

В опции указывается имя файла, в который мы будем записывать лог файл в стиле wu-ftpd. Лог будет записан только, если опция xferlog_enable установлена вместе с опцией xferlog_std_format. Кроме того, он будет записываться если вы установили опцию dual_log_enable. По умолчанию: /var/log/xferlog

## АВТОР
scarybeasts@gmail.com

## ПЕРЕВОД
Перевод выполнен Andrew Clark'ом <andyc@altlinux.org> и Александром Головиным aka screenn <alex.golovin@mail.ru>


vz.conf

title: vz.conf(5)

summary: глобальный файл конфигурации OpenVZ

text:
# vz.conf(5)

## ИМЯ
vz - глобальный файл конфигурации OpenVZ

## ОБЗОР
/etc/vz/vz.conf

## ОПИСАНИЕ
Это глобальный файл конфигурации для OpenVZ. Он состоит из строк формата

ПАРАМЕТР="ЗНАЧЕНИЕ"

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

### Глобальные параметры
VIRTUOZZO=yes|no

Этот параметр может быть установлен в yes или no, и используется скриптом /etc/init.d/vz. В случае, если параметр не установлен в yes, ничего не будет сделано для запуска OpenVZ на этом узле.

LOCKDIR=каталог

Указывает каталог для сохранения файлов блокировки.

VE0CPUUNITS=число

Этот параметр устанавливает значение cpuunits для VE0.

LOGGING=yes|no

Включает или выключает журналирование. Параметр может быть установлен в yes или no, по умолчанию используется yes.

LOGFILE=файл

Устанавливает путь к файлу журнала, по умолчанию используется /var/log/vzctl.log.

LOG_LEVEL=число

Устанавливает уровень журналирования. Чем больше число, тем больше информации будет записано в журнал.

VERBOSE=число

Устанавливает уровень подробности при выводе. По умолчанию используется 0.

MODULES_DISABLED=yes|no

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

### Параметры дисковой квоты.
DISK_QUOTA=yes|no

В случае, если значение установлено в no, квотирование на дисковых операциях будет отключено.

VZFASTBOOT=yes|no

Этот параметр используется скриптом /etc/init.d/vz start. Если параметр установлен в yes, для виртуальной среды (VE, Virtual Environment), которая была некорректно завершена, будет отключено квотирование.

### Параметры сетевых интерфейсов
VE_ROUTE_SRC_DEV="устройство"

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

TEMPLATE=каталог

Каталог, в котором хранятся все данные шаблонов VE.

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

VE_ROOT=каталог

Каталог, который служит корневой точкой монтирования VE. Значение должно содержать строку $VEID, вместо которой будет подставлено реальное значение VE ID.

VE_PRIVATE=каталог

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

CONFIGFILE=имя

Указывает конфигурационный файл при создании VE, соответствует опции --config.

Любой другой параметр, который появляется в файлах конфигурации PE vps.conf(5) может быть также задан здесь. Однако, рекомендуется указывать только параметры TEMPLATE, VE_PRIVATE и VE_ROOT в этих конфигурационных файлах, а все остальные параметры, относящиеся к VE, - в файлах конфигурации отдельных VE.

## СМ. ТАКЖЕ
vzctl(8), vps.conf(5).

## АВТОРСКИЕ ПРАВА
Copyright (C) 2000-2007, SWsoft. Распространяется на условиях GNU GPL.

## ПЕРЕВОД
Перевод с английского Виктор Ерёмин <ErV2005@rambler.ru> 2007