# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR The FreeBSD Project # This file is distributed under the same license as the FreeBSD Documentation package. # Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2026-02-22 15:58+0000\n" "PO-Revision-Date: 2026-03-08 09:11+0000\n" "Last-Translator: Vladlen Popolitov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.17\n" #. type: YAML Front Matter: description #: documentation/content/en/articles/pam/_index.adoc:1 #, no-wrap msgid "A guide to the PAM system and modules under FreeBSD" msgstr "Руководство по системе PAM и модулям в FreeBSD" #. Copyright (c) 2001-2003 Networks Associates Technology, Inc. #. All rights reserved. #. This software was developed for the FreeBSD Project by ThinkSec AS and #. Network Associates Laboratories, the Security Research Division of #. Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 #. ("CBOSS"), as part of the DARPA CHATS research program. #. Redistribution and use in source and binary forms, with or without #. modification, are permitted provided that the following conditions #. are met: #. 1. Redistributions of source code must retain the above copyright #. notice, this list of conditions and the following disclaimer. #. 2. Redistributions in binary form must reproduce the above copyright #. notice, this list of conditions and the following disclaimer in the #. documentation and/or other materials provided with the distribution. #. 3. The name of the author may not be used to endorse or promote #. products derived from this software without specific prior written #. permission. #. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND #. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE #. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE #. ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE #. FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL #. DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS #. OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) #. HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT #. LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY #. OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF #. SUCH DAMAGE. #. type: Title = #: documentation/content/en/articles/pam/_index.adoc:1 #: documentation/content/en/articles/pam/_index.adoc:45 #, no-wrap msgid "Pluggable Authentication Modules" msgstr "Подключаемые модули аутентификации (PAM)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:81 msgid "Abstract" msgstr "Аннотация" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:83 msgid "" "This article describes the underlying principles and mechanisms of the " "Pluggable Authentication Modules (PAM) library, and explains how to " "configure PAM, how to integrate PAM into applications, and how to write PAM " "modules." msgstr "" "В этой статье описываются принципы и механизмы, лежащие в основе библиотеки " "Подключаемых Модулей Аутентификации (PAM - Pluggable Authentication " "Modules), и рассказывается, как настроить PAM, как интегрировать PAM в " "приложения и как создавать модули PAM." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:85 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/pam/_index.adoc:89 #, no-wrap msgid "Introduction" msgstr "Введение" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:92 msgid "" "The Pluggable Authentication Modules (PAM) library is a generalized API for " "authentication-related services which allows a system administrator to add " "new authentication methods simply by installing new PAM modules, and to " "modify authentication policies by editing configuration files." msgstr "" "Библиотека Pluggable Authentication Modules (PAM) является обобщённым API " "для служб, связанных с аутентификацией, которые позволяют системному " "администратору добавлять новые методы аутентификации простой установкой " "новых модулей PAM, и изменять политику аутентификации посредством " "редактирования конфигурационных файлов." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:96 msgid "" "PAM was defined and developed in 1995 by Vipin Samar and Charlie Lai of Sun " "Microsystems, and has not changed much since. In 1997, the Open Group " "published the X/Open Single Sign-on (XSSO) preliminary specification, which " "standardized the PAM API and added extensions for single (or rather " "integrated) sign-on. At the time of this writing, this specification has " "not yet been adopted as a standard." msgstr "" "PAM описали и разработали Vipin Samar и Charlie Lai из Sun Microsystems в " "1995 году, с тех он сильно не менялся. В 1997 году Open Group опубликовала " "предварительные спецификации на X/Open Single Sign-on (XSSO), что " "стандартизовало API для PAM и добавило расширения для одноразовой (или " "достаточно интегрированной) подписи. На момент написания этого документа эта " "спецификация ещё не была принята за стандарт." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:98 msgid "" "Although this article focuses primarily on FreeBSD 5.x, which uses OpenPAM, " "it should be equally applicable to FreeBSD 4.x, which uses Linux-PAM, and " "other operating systems such as Linux and Solaris(TM)." msgstr "" "Хотя эта статья посвящена в основном FreeBSD 5.x, в которой используется " "OpenPAM, она подойдёт для FreeBSD 4.x, использующей Linux-PAM, а также для " "других операционных систем, таких как Linux и Solaris(TM)." #. type: Title == #: documentation/content/en/articles/pam/_index.adoc:100 #, no-wrap msgid "Terms and Conventions" msgstr "Термины и соглашения" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:103 #, no-wrap msgid "Definitions" msgstr "Определения" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:110 msgid "" "The terminology surrounding PAM is rather confused. Neither Samar and Lai's " "original paper nor the XSSO specification made any attempt at formally " "defining terms for the various actors and entities involved in PAM, and the " "terms that they do use (but do not define) are sometimes misleading and " "ambiguous. The first attempt at establishing a consistent and unambiguous " "terminology was a whitepaper written by Andrew G. Morgan (author of Linux-" "PAM) in 1999. While Morgan's choice of terminology was a huge leap forward, " "it is in this author's opinion by no means perfect. What follows is an " "attempt, heavily inspired by Morgan, to define precise and unambiguous terms " "for all actors and entities involved in PAM." msgstr "" "Терминология, используемая в PAM, достаточно запутанна. Ни оригинальная " "работа Samar и Lai, ни спецификация XSSO не делают никаких попыток формально " "определить термины для различных объектов и участвующих в PAM сторон, а " "термины, которые они используют (но не определяют) иногда неверны и " "неоднозначны. Первой попыткой создать однозначную и непротиворечивую " "терминологию была работа, которую написал Andrew G. Morgan (автор Linux-PAM) " "в 1999 году. Хотя выбор терминологии, которую сделал Морган, был гигантским " "скачком вперёд, это, по мнению автора данной статьи, не означает её " "правильность. Далее делается попытка, в значительной степени на основе " "работы Моргана, дать точные и недвусмысленные определения терминов для всех " "участников и объектов PAM." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:111 #, no-wrap msgid "account" msgstr "учётная запись (account)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:113 msgid "The set of credentials the applicant is requesting from the arbitrator." msgstr "Набор полномочий, которые аппликант запрашивает от арбитратора." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:114 #, no-wrap msgid "applicant" msgstr "аппликант (applicant)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:116 msgid "The user or entity requesting authentication." msgstr "Пользователь или объект, запрашивающие аутентификацию." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:117 #, no-wrap msgid "arbitrator" msgstr "арбитратор (arbitrator)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:119 msgid "" "The user or entity who has the privileges necessary to verify the " "applicant's credentials and the authority to grant or deny the request." msgstr "" "Пользователь или объект, имеющий привилегии, достаточные для проверки " "полномочий аппликанта и права подтвердить или отклонить запрос." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:120 #, no-wrap msgid "chain" msgstr "цепочка (chain)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:123 msgid "" "A sequence of modules that will be invoked in response to a PAM request. " "The chain includes information about the order in which to invoke the " "modules, what arguments to pass to them, and how to interpret the results." msgstr "" "Последовательность модулей, которые будут вызваны в ответ на запрос PAM. В " "цепочку включена информация о последовательности вызовов модулей, " "аргументах, которые нужно им передать, и о том, как интерпретировать " "результаты." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:124 #, no-wrap msgid "client" msgstr "клиент (client)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:126 msgid "" "The application responsible for initiating an authentication request on " "behalf of the applicant and for obtaining the necessary authentication " "information from him." msgstr "" "Приложение, отвечающее за инициирование запроса на аутентификацию от имени " "аппликанта и получающее от него необходимую для аутентификации информацию." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:127 #, no-wrap msgid "facility" msgstr "подсистема (facility)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:129 msgid "" "One of the four basic groups of functionality provided by PAM: " "authentication, account management, session management and authentication " "token update." msgstr "" "Одна из четырёх основных групп функциональности, которые даёт PAM: " "аутентификация, управление учётными записями, управление сеансом и " "обновление ключом аутентификации." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:130 #, no-wrap msgid "module" msgstr "модуль (module)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:132 msgid "" "A collection of one or more related functions implementing a particular " "authentication facility, gathered into a single (normally dynamically " "loadable) binary file and identified by a single name." msgstr "" "Набор из одной или большего количества связанных функций, реализующих " "определённую подсистему аутентификации, собранный в один (обычно динамически " "загружаемый) двоичный файл, идентифицируемый по имени." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:133 #, no-wrap msgid "policy" msgstr "политика (policy)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:136 msgid "" "The complete set of configuration statements describing how to handle PAM " "requests for a particular service. A policy normally consists of four " "chains, one for each facility, though some services do not use all four " "facilities." msgstr "" "Полный набор конфигурационных деклараций, описывающих, как обрабатывать " "запросы PAM к определённой услуге. Политика обычно состоит из четырёх " "цепочек, по одной для каждой подсистемы, хотя некоторые службы используют не " "все четыре подсистемы." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:137 #, no-wrap msgid "server" msgstr "сервер (server)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:139 msgid "" "The application acting on behalf of the arbitrator to converse with the " "client, retrieve authentication information, verify the applicant's " "credentials and grant or deny requests." msgstr "" "Приложение, выступающее от имени арбитратора для общения с клиентом, " "запрашивания аутентификационной информации, проверки полномочий аппликанта и " "подтверждающее или отклоняющее запрос." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:140 #, no-wrap msgid "service" msgstr "сервис (service)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:143 msgid "" "A class of servers providing similar or related functionality and requiring " "similar authentication. PAM policies are defined on a per-service basis, so " "all servers that claim the same service name will be subject to the same " "policy." msgstr "" "Класс серверов, предоставляющих похожую или связанную функциональность, и " "требующую подобную аутентификацию. Политики PAM задаются на основе сервисов, " "так что ко всем серверам, объявляющим одно и тоже имя сервиса, будет " "применяться одна и та же политика." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:144 #, no-wrap msgid "session" msgstr "сеанс (session)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:147 msgid "" "The context within which service is rendered to the applicant by the " "server. One of PAM's four facilities, session management, is concerned " "exclusively with setting up and tearing down this context." msgstr "" "Контекст, в котором сервис оказывается аппликанту сервером. Одна из четырёх " "подсистем PAM, управление сеансом, касается исключительно настройке и " "очистке этого контекста." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:148 #, no-wrap msgid "token" msgstr "ключ (token)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:150 msgid "" "A chunk of information associated with the account, such as a password or " "passphrase, which the applicant must provide to prove his identity." msgstr "" "Блок информации, связанный с учётной записью, например, пароль или ключевая " "фраза, которую аппликант должен предоставить для своей идентификации." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:151 #, no-wrap msgid "transaction" msgstr "транзакция (transaction)" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:153 msgid "" "A sequence of requests from the same applicant to the same instance of the " "same server, beginning with authentication and session set-up and ending " "with session tear-down." msgstr "" "Последовательность запросов от одного и того же аппликанта к одному и тому " "же экземпляру того же самого сервера, начиная с аутентификации и " "установления сеанса и заканчивая закрытием сеанса." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:155 #, no-wrap msgid "Usage Examples" msgstr "Примеры использования" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:158 msgid "" "This section aims to illustrate the meanings of some of the terms defined " "above by way of a handful of simple examples." msgstr "" "Этот раздел предназначен для иллюстрации значений некоторых терминов, " "определённых выше, при помощи простых примеров." #. type: Title ==== #: documentation/content/en/articles/pam/_index.adoc:159 #, no-wrap msgid "Client and Server Are One" msgstr "Объединенные клиент и сервер" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:162 msgid "This simple example shows `alice` man:su[1]'ing to `root`." msgstr "" "В этом простом примере показывается пользователь `alice`, выполняющий " "команду man:su[1] для того, чтобы стать пользователем `root`." #. type: delimited block . 4 #: documentation/content/en/articles/pam/_index.adoc:167 #, no-wrap msgid "" "% whoami\n" "alice\n" msgstr "" "% whoami\n" "alice\n" #. type: delimited block . 4 #: documentation/content/en/articles/pam/_index.adoc:170 #, no-wrap msgid "" "% ls -l `which su`\n" "-r-sr-xr-x 1 root wheel 10744 Dec 6 19:06 /usr/bin/su\n" msgstr "" "% ls -l `which su`\n" "-r-sr-xr-x 1 root wheel 10744 Dec 6 19:06 /usr/bin/su\n" #. type: delimited block . 4 #: documentation/content/en/articles/pam/_index.adoc:175 #, no-wrap msgid "" "% su -\n" "Password: xi3kiune\n" "# whoami\n" "root\n" msgstr "" "% su -\n" "Password: xi3kiune\n" "# whoami\n" "root\n" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:178 msgid "The applicant is `alice`." msgstr "Аппликантом является `alice`." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:179 msgid "The account is `root`." msgstr "Учётной записью является `root`." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:180 msgid "The man:su[1] process is both client and server." msgstr "Процесс man:su[1] является как клиентом, так и сервером." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:181 msgid "The authentication token is `xi3kiune`." msgstr "Аутентификационным ключом является `xi3kiune`." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:182 msgid "The arbitrator is `root`, which is why man:su[1] is setuid `root`." msgstr "" "Арбитратором выступает `root`, и именно поэтому у команды man:su[1] " "выставлен бит выполнения с правами `root`." #. type: Title ==== #: documentation/content/en/articles/pam/_index.adoc:183 #, no-wrap msgid "Client and Server Are Separate" msgstr "Клиент и сервер разделены" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:187 msgid "" "The example below shows `eve` try to initiate an man:ssh[1] connection to " "`login.example.com`, ask to log in as `bob`, and succeed. Bob should have " "chosen a better password!" msgstr "" "В примере ниже рассматривается пользователь `eve`, пытающийся установить man:" "ssh[1]-соединение с `login.example.com`, и успешно входя как пользователь " "`bob`. Боб должен был выбрать пароль получше!" #. type: delimited block . 4 #: documentation/content/en/articles/pam/_index.adoc:192 #, no-wrap msgid "" "% whoami\n" "eve\n" msgstr "" "% whoami\n" "eve\n" #. type: delimited block . 4 #: documentation/content/en/articles/pam/_index.adoc:200 #, no-wrap msgid "" "% ssh bob@login.example.com\n" "bob@login.example.com's password:\n" "% god\n" "Last login: Thu Oct 11 09:52:57 2001 from 192.168.0.1\n" "Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994\n" "\tThe Regents of the University of California. All rights reserved.\n" "FreeBSD 4.4-STABLE (LOGIN) 4: Tue Nov 27 18:10:34 PST 2001\n" msgstr "" "% ssh bob@login.example.com\n" "bob@login.example.com's password:\n" "% god\n" "Last login: Thu Oct 11 09:52:57 2001 from 192.168.0.1\n" "Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994\n" "\tThe Regents of the University of California. All rights reserved.\n" "FreeBSD 4.4-STABLE (LOGIN) 4: Tue Nov 27 18:10:34 PST 2001\n" #. type: delimited block . 4 #: documentation/content/en/articles/pam/_index.adoc:203 #, no-wrap msgid "" "Welcome to FreeBSD!\n" "%\n" msgstr "" "Welcome to FreeBSD!\n" "%\n" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:207 msgid "The applicant is `eve`." msgstr "Аппликантом является `eve`." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:208 msgid "The client is Eve's man:ssh[1] process." msgstr "Клиентом является процесс man:ssh[1] пользователя Eve." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:209 msgid "The server is the man:sshd[8] process on `login.example.com`" msgstr "Сервером является процесс man:sshd[8] на машине `login.example.com`" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:210 msgid "The account is `bob`." msgstr "Учётной записью является `bob`." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:211 msgid "The authentication token is `god`." msgstr "Ключом аутентификации является `god`." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:212 msgid "Although this is not shown in this example, the arbitrator is `root`." msgstr "Хотя этого не видно в примере, но арбитратором является `root`." #. type: Title ==== #: documentation/content/en/articles/pam/_index.adoc:213 #, no-wrap msgid "Sample Policy" msgstr "Пример политики" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:216 msgid "The following is FreeBSD's default policy for `sshd`:" msgstr "" "Следующее является политикой, используемой во FreeBSD по умолчанию для " "`sshd`:" #. type: delimited block . 4 #: documentation/content/en/articles/pam/_index.adoc:225 #, no-wrap msgid "" "sshd\tauth\t\trequired\tpam_nologin.so\tno_warn\n" "sshd\tauth\t\trequired\tpam_unix.so\tno_warn try_first_pass\n" "sshd\taccount\t\trequired\tpam_login_access.so\n" "sshd\taccount\t\trequired\tpam_unix.so\n" "sshd\tsession\t\trequired\tpam_lastlog.so\tno_fail\n" "sshd\tpassword\trequired\tpam_permit.so\n" msgstr "" "sshd\tauth\t\trequired\tpam_nologin.so\tno_warn\n" "sshd\tauth\t\trequired\tpam_unix.so\tno_warn try_first_pass\n" "sshd\taccount\t\trequired\tpam_login_access.so\n" "sshd\taccount\t\trequired\tpam_unix.so\n" "sshd\tsession\t\trequired\tpam_lastlog.so\tno_fail\n" "sshd\tpassword\trequired\tpam_permit.so\n" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:228 msgid "" "This policy applies to the `sshd` service (which is not necessarily " "restricted to the man:sshd[8] server.)" msgstr "" "Эта политика применяется к службе `sshd` (что не обязательно ограничено " "сервером man:sshd[8])." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:229 msgid "`auth`, `account`, `session` and `password` are facilities." msgstr "`auth`, `account`, `session` и `password` являются подсистемами." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:230 msgid "" "[.filename]#pam_nologin.so#, [.filename]#pam_unix.so#, [." "filename]#pam_login_access.so#, [.filename]#pam_lastlog.so# and [." "filename]#pam_permit.so# are modules. It is clear from this example that [." "filename]#pam_unix.so# provides at least two facilities (authentication and " "account management.)" msgstr "" "[.filename]#pam_nologin.so#, [.filename]#pam_unix.so#, [." "filename]#pam_login_access.so#, [.filename]#pam_lastlog.so# и [." "filename]#pam_permit.so# являются модулями. Из этого примера видно, что [." "filename]#pam_unix.so# реализует по крайней мере две подсистемы " "(аутентификацию и управление учётными записями)." #. type: Title == #: documentation/content/en/articles/pam/_index.adoc:232 #, no-wrap msgid "PAM Essentials" msgstr "Основы PAM" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:235 #, no-wrap msgid "Facilities and Primitives" msgstr "Подсистемы и примитивы" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:238 msgid "" "The PAM API offers six different authentication primitives grouped in four " "facilities, which are described below." msgstr "" "API для PAM предоставляет шесть различных примитивов для аутентификации, " "сгруппированных в четыре подсистемы, каждая из которых описывается ниже." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:239 #, no-wrap msgid "`auth`" msgstr "`auth`" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:242 msgid "" "_Authentication._ This facility concerns itself with authenticating the " "applicant and establishing the account credentials. It provides two " "primitives:" msgstr "" "_Аутентификация._ Эта подсистема, собственно говоря, реализует " "аутентификацию аппликанта и выяснение полномочий учётной записи. Она " "предоставляет два примитива:" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:244 msgid "" "man:pam_authenticate[3] authenticates the applicant, usually by requesting " "an authentication token and comparing it with a value stored in a database " "or obtained from an authentication server." msgstr "" "Функция man:pam_authenticate[3] аутентифицирует аппликанта, обычно " "запрашивая аутентификационный ключ и сравнивая его со значением, хранящимся " "в базе данных или получаемым от сервера аутентификации." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:245 msgid "" "man:pam_setcred[3] establishes account credentials such as user ID, group " "membership and resource limits." msgstr "" "Функция man:pam_setcred[3] устанавливает полномочия учётной записи, такие, " "как идентификатор пользователя, членство в группах и ограничения на " "использование ресурсов." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:246 #, no-wrap msgid "`account`" msgstr "`account`" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:249 msgid "" "_Account management._ This facility handles non-authentication-related " "issues of account availability, such as access restrictions based on the " "time of day or the server's work load. It provides a single primitive:" msgstr "" "_Управление учётной записью._ Эта подсистема обрабатывает вопросы " "доступности учётной записи, не связанные с аутентификацией, такие как " "ограничения в доступе на основе времени суток или загрузки сервера. Он " "предоставляет единственный примитив:" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:251 msgid "man:pam_acct_mgmt[3] verifies that the requested account is available." msgstr "" "Функция man:pam_acct_mgmt[3] проверяет, доступна ли запрашиваемая учётная " "запись." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:252 #, no-wrap msgid "`session`" msgstr "`session`" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:255 msgid "" "_Session management._ This facility handles tasks associated with session " "set-up and tear-down, such as login accounting. It provides two primitives:" msgstr "" "_Управление сеансом._ Эта подсистема отрабатывает задачи, связанные с " "установлением и закрытием сеанса, такие как учёт входов пользователей. Она " "предоставляет два примитива:" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:257 msgid "" "man:pam_open_session[3] performs tasks associated with session set-up: add " "an entry in the [.filename]#utmp# and [.filename]#wtmp# databases, start an " "SSH agent, etc." msgstr "" "Функция man:pam_open_session[3] выполняет действия, связанные с " "установлением сеанса: добавление записей в базы данных [.filename]#utmp# и [." "filename]#wtmp#, запуск агента SSH и так далее." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:258 msgid "" "man:pam_close_session[3] performs tasks associated with session tear-down: " "add an entry in the [.filename]#utmp# and [.filename]#wtmp# databases, stop " "the SSH agent, etc." msgstr "" "Функция man:pam_close_session[3] выполняет действия, связанные с закрытием " "сеанса: добавление записей в базы данных [.filename]#utmp# и [." "filename]#wtmp#, завершение работы агента SSH и так далее." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:259 #, no-wrap msgid "`password`" msgstr "`password`" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:262 msgid "" "_Password management._ This facility is used to change the authentication " "token associated with an account, either because it has expired or because " "the user wishes to change it. It provides a single primitive:" msgstr "" "_Управление паролем._ Эта подсистема используется для изменения ключа " "аутентификации, связанного с учётной записью, по причине истечения его срока " "действия или желания пользователя изменить его. Она предоставляет " "единственный примитив:" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:264 msgid "" "man:pam_chauthtok[3] changes the authentication token, optionally verifying " "that it is sufficiently hard to guess, has not been used previously, etc." msgstr "" "Функция man:pam_chauthtok[3] изменяет ключ аутентификации, опционально " "проверяя, что он труден для подбора, не использовался ранее и так далее." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:266 #, no-wrap msgid "Modules" msgstr "Модули" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:271 msgid "" "Modules are a very central concept in PAM; after all, they are the \"M\" in " "\"PAM\". A PAM module is a self-contained piece of program code that " "implements the primitives in one or more facilities for one particular " "mechanism; possible mechanisms for the authentication facility, for " "instance, include the UNIX(R) password database, NIS, LDAP and Radius." msgstr "" "Модули являются центральной концепцией в PAM; в конце концов, им " "соответствует буква \"M\" в сокращении \"PAM\". Модуль PAM представляет " "собой самодостаточный кусок программного кода, который реализует примитивы " "одной или большего количества подсистем одного конкретного механизма; к " "возможным механизмам для подсистемы аутентификации, к примеру, относятся " "базы данных паролей UNIX(R), системы NIS, LDAP или Radius." #. type: Title ==== #: documentation/content/en/articles/pam/_index.adoc:273 #, no-wrap msgid "Module Naming" msgstr "Именование модулей" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:278 msgid "" "FreeBSD implements each mechanism in a single module, named `pam_mechanism." "so` (for instance, `pam_unix.so` for the UNIX(R) mechanism.) Other " "implementations sometimes have separate modules for separate facilities, and " "include the facility name as well as the mechanism name in the module name. " "To name one example, Solaris(TM) has a `pam_dial_auth.so.1` module which is " "commonly used to authenticate dialup users." msgstr "" "Во FreeBSD каждый механизм реализуется в отдельном модуле с именем " "`pam_mechanism.so` (например, `pam_unix.so` для механизма UNIX(R).) В других " "реализациях иногда отдельные модули используются для разных подсистем, и в " "их имя включается, кроме названия механизма, и имя подсистемы. К примеру, в " "Solaris(TM) имеется модуль `pam_dial_auth.so.1`, который часто используется " "для аутентификации пользователей, работающих по коммутируемым каналам связи." #. type: Title ==== #: documentation/content/en/articles/pam/_index.adoc:280 #, no-wrap msgid "Module Versioning" msgstr "Версии модулей" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:284 msgid "" "FreeBSD's original PAM implementation, based on Linux-PAM, did not use " "version numbers for PAM modules. This would commonly cause problems with " "legacy applications, which might be linked against older versions of the " "system libraries, as there was no way to load a matching version of the " "required modules." msgstr "" "Изначальная реализация PAM во FreeBSD, которая была основана на Linux-PAM, " "не использовала номера версий для модулей PAM. Это будет приводить к " "проблемам при работе унаследованных приложений, которые могут быть " "скомпонованы со старыми версиями системных библиотек, так как способа " "подгрузить соответствующую версию требуемых модулей нет." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:287 msgid "" "OpenPAM, on the other hand, looks for modules that have the same version " "number as the PAM library (currently 2), and only falls back to an " "unversioned module if no versioned module could be loaded. Thus legacy " "modules can be provided for legacy applications, while allowing new (or " "newly built) applications to take advantage of the most recent modules." msgstr "" "OpenPAM, с другой стороны, ищет модули, которые имеют тот же самый номер " "версии, что и библиотека PAM (на данный момент 2), и использует модуль без " "версии, только если модуль с известной версией не был загружен. Поэтому для " "старых приложений могут предоставляться старые модули, при этом новые (или " "заново построенные) приложения будут использовать все возможности последних " "версий модулей." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:289 msgid "" "Although Solaris(TM) PAM modules commonly have a version number, they are " "not truly versioned, because the number is a part of the module name and " "must be included in the configuration." msgstr "" "Хотя модули PAM в Solaris(TM) имеют номер версии, по-настоящему номер версии " "в них не отслеживается, потому что номер является частью имени и должен " "включаться в конфигурацию." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:291 #, no-wrap msgid "Chains and Policies" msgstr "Цепочки и политики" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:296 msgid "" "When a server initiates a PAM transaction, the PAM library tries to load a " "policy for the service specified in the man:pam_start[3] call. The policy " "specifies how authentication requests should be processed, and is defined in " "a configuration file. This is the other central concept in PAM: the " "possibility for the admin to tune the system security policy (in the wider " "sense of the word) simply by editing a text file." msgstr "" "Когда сервер инициирует PAM-транзакцию, библиотека PAM пытается загрузить " "политику для службы, указанной при вызове функции man:pam_start[3]. Политика " "определяет, как должны обрабатываться запросы на аутентификацию, и задаётся " "в конфигурационном файле. Это составляет другую основополагающую концепцию " "PAM: возможность администратору настраивать политику безопасности системы (в " "самом широком её понимании) простым редактированием текстового файла." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:299 msgid "" "A policy consists of four chains, one for each of the four PAM facilities. " "Each chain is a sequence of configuration statements, each specifying a " "module to invoke, some (optional) parameters to pass to the module, and a " "control flag that describes how to interpret the return code from the module." msgstr "" "Политика состоит из четырёх цепочек, по одной на каждый из методов PAM. " "Каждое звено представляет собой последовательность конфигурационных " "утверждений, задающих вызываемый модуль, некоторые (необязательные) " "параметры для передачи в модуль, и управляющий флаг, описывающий, как " "интерпретировать возвращаемый из модуля код." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:302 msgid "" "Understanding the control flags is essential to understanding PAM " "configuration files. There are five different control flags:" msgstr "" "Понимание смысла управляющего флага необходимо для понимания " "конфигурационных файлов PAM. Существуют пять различных управляющих флагов:" #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:303 #, no-wrap msgid "`binding`" msgstr "`binding`" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:306 msgid "" "If the module succeeds and no earlier module in the chain has failed, the " "chain is immediately terminated and the request is granted. If the module " "fails, the rest of the chain is executed, but the request is ultimately " "denied." msgstr "" "Если модуль отработал успешно, и ни один из предыдущих модулей в цепочке не " "сработал отрицательно, то цепочка прерывается, а запрос подтверждается. Если " "же модуль отработает неудачно, то выполняется оставшаяся часть цепочки, " "однако запрос отвергается." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:308 msgid "" "This control flag was introduced by Sun in Solaris(TM) 9 (SunOS(TM) 5.9), " "and is also supported by OpenPAM." msgstr "" "Этот управляющий флаг был добавлен компанией Sun в Solaris(TM) 9 (SunOS(TM) " "5.9), и поддерживается в OpenPAM." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:308 #, no-wrap msgid "`required`" msgstr "`required`" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:311 msgid "" "If the module succeeds, the rest of the chain is executed, and the request " "is granted unless some other module fails. If the module fails, the rest of " "the chain is also executed, but the request is ultimately denied." msgstr "" "Если модуль возвратил положительный ответ, выполняется оставшаяся часть " "цепочки, запрос удовлетворяется, если никакой другой модуль не отработает " "отрицательно. Если же модуль возвратит отрицательный ответ, остаток цепочки " "тоже отрабатывается, но запрос отвергается." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:312 #, no-wrap msgid "`requisite`" msgstr "`requisite`" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:315 msgid "" "If the module succeeds, the rest of the chain is executed, and the request " "is granted unless some other module fails. If the module fails, the chain " "is immediately terminated and the request is denied." msgstr "" "Если модуль возвращает положительный ответ, выполняется оставшаяся часть " "цепочки, запрос удовлетворяется, если никакой другой модуль не отработает " "отрицательно. Если же модуль отрабатывает отрицательно, то отработка цепочки " "немедленно прекращается, а запрос отвергается." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:316 #, no-wrap msgid "`sufficient`" msgstr "`sufficient`" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:319 msgid "" "If the module succeeds and no earlier module in the chain has failed, the " "chain is immediately terminated and the request is granted. If the module " "fails, the module is ignored and the rest of the chain is executed." msgstr "" "Если модуль возвратит положительный ответ, и ни один из предыдущих модулей в " "цепочке на отработал отрицательно, то отработка цепочки немедленно " "прекращается, а запрос удовлетворяется. Если модуль отработал отрицательно, " "то результат игнорируется и цепочка отрабатывается дальше." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:321 msgid "" "As the semantics of this flag may be somewhat confusing, especially when it " "is used for the last module in a chain, it is recommended that the `binding` " "control flag be used instead if the implementation supports it." msgstr "" "Так как семантика этого флага может оказаться запутанной, особенно при его " "использовании с последним модулем в цепочке, рекомендуется вместо него " "использовать управляющий флаг `binding`, если реализация его поддерживает." #. type: Labeled list #: documentation/content/en/articles/pam/_index.adoc:321 #, no-wrap msgid "`optional`" msgstr "`optional`" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:324 msgid "" "The module is executed, but its result is ignored. If all modules in a " "chain are marked `optional`, all requests will always be granted." msgstr "" "Модуль отрабатывается, но результат выполнения игнорируется. Если все модули " "в цепочке помечены как `optional`, то удовлетворяться будут все запросы." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:327 msgid "" "When a server invokes one of the six PAM primitives, PAM retrieves the chain " "for the facility the primitive belongs to, and invokes each of the modules " "listed in the chain, in the order they are listed, until it reaches the end, " "or determines that no further processing is necessary (either because a " "`binding` or `sufficient` module succeeded, or because a `requisite` module " "failed.) The request is granted if and only if at least one module was " "invoked, and all non-optional modules succeeded." msgstr "" "Когда сервер вызывает один из шести PAM-примитивов, PAM запрашивает цепочку " "подсистемы, к которой принадлежит примитив, и запускает каждый модуль, " "перечисленный в цепочке в порядке их перечисления, пока список не будет " "исчерпан либо не будет определено, что дальнейшей обработки не нужно (по " "причине достижение модуля, вернувшего положительный ответ при условии " "`binding` или `sufficient`, либо отрицательный с условием `requisite`). " "Запрос подтверждается, если только был вызван по крайней мере один модуль, и " "все неопциональные модули вернули положительный ответ." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:331 msgid "" "Note that it is possible, though not very common, to have the same module " "listed several times in the same chain. For instance, a module that looks " "up user names and passwords in a directory server could be invoked multiple " "times with different parameters specifying different directory servers to " "contact. PAM treat different occurrences of the same module in the same " "chain as different, unrelated modules." msgstr "" "Заметьте, что возможно, хотя это не распространено, перечислять один и тот " "же модуль несколько раз в одной цепочке. К примеру, модуль, просматривающий " "имена и пароли пользователя в сервере каталога может быть вызван несколько " "раз с различными параметрами, задающими различные серверы каталогов для " "связи. PAM считает различные появления одного модуля в той же самой цепочке " "разными и не связанными модулями." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:333 #, no-wrap msgid "Transactions" msgstr "Транзакции" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:337 msgid "" "The lifecycle of a typical PAM transaction is described below. Note that if " "any of these steps fails, the server should report a suitable error message " "to the client and abort the transaction." msgstr "" "Жизненный цикл типичной PAM-транзакции описан ниже. Заметьте, что в случае, " "если любой из перечисленных шагов оканчивается неудачно, сервер должен " "выдать клиенту соответствующее сообщение об ошибке и прервать транзакцию." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:339 msgid "" "If necessary, the server obtains arbitrator credentials through a mechanism " "independent of PAM-most commonly by virtue of having been started by `root`, " "or of being setuid `root`." msgstr "" "Если это необходимо, сервер получает полномочия арбитратора через " "независимый от PAM механизм-чаще всего по факту запуска пользователем `root` " "или с установленным setuid-битом `root`." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:340 msgid "" "The server calls man:pam_start[3] to initialize the PAM library and specify " "its service name and the target account, and register a suitable " "conversation function." msgstr "" "Сервер вызывает функцию man:pam_start[3] для инициализации библиотеки PAM и " "задания имени сервиса и целевой учётной записи, а также регистрации " "подходящего способа общения." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:341 msgid "" "The server obtains various information relating to the transaction (such as " "the applicant's user name and the name of the host the client runs on) and " "submits it to PAM using man:pam_set_item[3]." msgstr "" "Сервер получает различную информацию, относящуюся к транзакции (такую, как " "имя пользователя аппликанта и имя хоста, на котором запущен клиент), и " "отправляет её в PAM при помощи функции man:pam_set_item[3]." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:342 msgid "The server calls man:pam_authenticate[3] to authenticate the applicant." msgstr "" "Сервер вызывает функцию man:pam_authenticate[3] для аутентификации " "аппликанта." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:343 msgid "" "The server calls man:pam_acct_mgmt[3] to verify that the requested account " "is available and valid. If the password is correct but has expired, man:" "pam_acct_mgmt[3] will return `PAM_NEW_AUTHTOK_REQD` instead of `PAM_SUCCESS`." msgstr "" "Сервер вызывает функцию man:pam_acct_mgmt[3] для проверки того, что " "запрошенная учётная запись доступна и корректна. Если пароль верен, но его " "срок истёк, man:pam_acct_mgmt[3] возвратит результат `PAM_NEW_AUTHTOK_REQD`, " "а не `PAM_SUCCESS`." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:344 msgid "" "If the previous step returned `PAM_NEW_AUTHTOK_REQD`, the server now calls " "man:pam_chauthtok[3] to force the client to change the authentication token " "for the requested account." msgstr "" "Если на предыдущем шаге был получен результат `PAM_NEW_AUTHTOK_REQD`, то " "сервер вызывает функцию man:pam_chauthtok[3] для того, чтобы вынудить " "клиента изменить ключ аутентификации для запрошенной учётной записи." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:345 msgid "" "Now that the applicant has been properly authenticated, the server calls man:" "pam_setcred[3] to establish the credentials of the requested account. It is " "able to do this because it acts on behalf of the arbitrator, and holds the " "arbitrator's credentials." msgstr "" "Теперь, когда аппликант полностью аутентифицирован, сервер вызывает функцию " "man:pam_setcred[3] для получения полномочий запрошенной учётной записи. " "Сделать это возможно, потому что он работает как арбитратор, и оставляет за " "собой полномочия арбитратора." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:346 msgid "" "Once the correct credentials have been established, the server calls man:" "pam_open_session[3] to set up the session." msgstr "" "После получения необходимых полномочий, сервер вызывает функцию man:" "pam_open_session[3] для установления сеанса." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:347 msgid "" "The server now performs whatever service the client requested-for instance, " "provide the applicant with a shell." msgstr "" "Теперь сервер выполняет тот сервис, который затребовал клиент-например, " "предоставляет аппликанту оболочку." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:348 msgid "" "Once the server is done serving the client, it calls man:" "pam_close_session[3] to tear down the session." msgstr "" "После того, как сервер закончил обслуживание клиента, он вызывает функцию " "man:pam_close_session[3] для закрытия сеанса." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:349 msgid "" "Finally, the server calls man:pam_end[3] to notify the PAM library that it " "is done and that it can release whatever resources it has allocated in the " "course of the transaction." msgstr "" "Наконец, сервер вызывает функцию man:pam_end[3] для оповещения библиотеки " "PAM о том, что работа с ней завершена и какие-либо выделенные в течение " "сеанса ресурсы можно освободить." #. type: Title == #: documentation/content/en/articles/pam/_index.adoc:351 #, no-wrap msgid "PAM Configuration" msgstr "Настройка PAM" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:354 #, no-wrap msgid "PAM Policy Files" msgstr "Файлы политик PAM" #. type: Title ==== #: documentation/content/en/articles/pam/_index.adoc:357 #, no-wrap msgid "The [.filename]#/etc/pam.conf#" msgstr "Файл [.filename]#/etc/pam.conf#" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:362 msgid "" "The traditional PAM policy file is [.filename]#/etc/pam.conf#. This file " "contains all the PAM policies for your system. Each line of the file " "describes one step in a chain, as shown below:" msgstr "" "Традиционно файлом политик PAM является [.filename]#/etc/pam.conf#. Он " "содержит все политики PAM для вашей системы. Каждая строка файла описывает " "один шаг в цепочке, как показано ниже:" #. type: delimited block . 4 #: documentation/content/en/articles/pam/_index.adoc:366 #, no-wrap msgid "login auth required pam_nologin.so no_warn\n" msgstr "login auth required pam_nologin.so no_warn\n" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:370 msgid "" "The fields are, in order: service name, facility name, control flag, module " "name, and module arguments. Any additional fields are interpreted as " "additional module arguments." msgstr "" "Поля следуют в таком порядке: имя службы, имя подсистемы, управляющий флаг, " "имя модуля и параметры модуля. Любые дополнительные поля интерпретируются " "как дополнительные параметры модуля." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:374 msgid "" "A separate chain is constructed for each service / facility pair, so while " "the order in which lines for the same service and facility appear is " "significant, the order in which the individual services and facilities are " "listed is not. The examples in the original PAM paper grouped configuration " "lines by facility, and the Solaris(TM) stock [.filename]#pam.conf# still " "does that, but FreeBSD's stock configuration groups configuration lines by " "service. Either way is fine; either way makes equal sense." msgstr "" "Для каждой пары сервис/подсистема составляется отдельная цепочка, и тогда " "получается, что, хотя порядок следования строк для одной и той же услуги и " "подсистемы является значимым, порядок перечисления отдельных сервисов не " "значим. В примерах из оригинальной работы по PAM строки конфигурации " "сгруппированы по подсистемам, в поставляемом с Solaris(TM) файле [." "filename]#pam.conf# именно так и сделано, но в стандартном конфигурационном " "файле из поставки FreeBSD строки настроек сгруппированы по сервисам. " "Подходит любой из этих способов; они имеют один и тот же смысл." #. type: Title ==== #: documentation/content/en/articles/pam/_index.adoc:376 #, no-wrap msgid "The [.filename]#/etc/pam.d#" msgstr "Каталог [.filename]#/etc/pam.d#" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:381 msgid "" "OpenPAM and Linux-PAM support an alternate configuration mechanism, which is " "the preferred mechanism in FreeBSD. In this scheme, each policy is " "contained in a separate file bearing the name of the service it applies to. " "These files are stored in [.filename]#/etc/pam.d/#." msgstr "" "OpenPAM и Linux-PAM поддерживают альтернативный механизм настройки, который " "для FreeBSD является предпочтительным. В этой схеме каждая политика " "содержится в отдельном файле с именем, соответствующем сервису, к которому " "она применяется. Эти файлы размещаются в каталоге [.filename]#/etc/pam.d/#." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:384 msgid "" "These per-service policy files have only four fields instead of [." "filename]#pam.conf#'s five: the service name field is omitted. Thus, " "instead of the sample [.filename]#pam.conf# line from the previous section, " "one would have the following line in [.filename]#/etc/pam.d/login#:" msgstr "" "Такие файлы политик, ориентированные на сервисы, имеют только четыре поля, " "вместо пяти полей в файле [.filename]#pam.conf#: поле имени сервиса опущено. " "Таким образом, вместо примера строки файла [.filename]#pam.conf# из " "предыдущего раздела получится следующая строка в файле [.filename]#/etc/pam." "d/login#:" #. type: delimited block . 4 #: documentation/content/en/articles/pam/_index.adoc:388 #, no-wrap msgid "auth required pam_nologin.so no_warn\n" msgstr "auth required pam_nologin.so no_warn\n" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:392 msgid "" "As a consequence of this simplified syntax, it is possible to use the same " "policy for multiple services by linking each service name to a same policy " "file. For instance, to use the same policy for the `su` and `sudo` " "services, one could do as follows:" msgstr "" "Как следствие такого упрощённого синтаксиса, возможно использование одних и " "тех же политик для нескольких сервисов, связывая каждое имя сервиса с тем же " "самым файлом политик. К примеру, для использования той же самой политики для " "сервисов `su` и `sudo`, можно сделать следующее:" #. type: delimited block . 4 #: documentation/content/en/articles/pam/_index.adoc:397 #, no-wrap msgid "" "# cd /etc/pam.d\n" "# ln -s su sudo\n" msgstr "" "# cd /etc/pam.d\n" "# ln -s su sudo\n" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:400 msgid "" "This works because the service name is determined from the file name rather " "than specified in the policy file, so the same file can be used for multiple " "differently-named services." msgstr "" "Это работает, потому что имя сервиса определяется именем файла, а не его " "указанием в файле политики, так что один и тот же файл может использоваться " "для нескольких сервисов с разными названиями." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:402 msgid "" "Since each service's policy is stored in a separate file, the [." "filename]#pam.d# mechanism also makes it very easy to install additional " "policies for third-party software packages." msgstr "" "Так как политика каждого сервиса хранится в отдельном файле, то механизм [." "filename]#pam.d# делает установку дополнительных политик для программных " "пакетов сторонних разработчиков очень лёгкой задачей." #. type: Title ==== #: documentation/content/en/articles/pam/_index.adoc:404 #, no-wrap msgid "The Policy Search Order" msgstr "Порядок поиска политик" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:408 msgid "" "As we have seen above, PAM policies can be found in a number of places. " "What happens if policies for the same service exist in multiple places?" msgstr "" "Как вы видели выше, политики PAM могут находиться в нескольких местах. Что " "будет, если политики для одного и того же сервиса имеются в разных местах?" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:410 msgid "" "It is essential to understand that PAM's configuration system is centered on " "chains." msgstr "" "Необходимо осознать, что система конфигурации PAM ориентирована на цепочки." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:412 #, no-wrap msgid "Breakdown of a Configuration Line" msgstr "Структура строки настройки" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:415 msgid "" "As explained in crossref:pam[pam-config-file, PAM Policy Files], each line " "in [.filename]#/etc/pam.conf# consists of four or more fields: the service " "name, the facility name, the control flag, the module name, and zero or more " "module arguments." msgstr "" "Как это объяснено в <>, каждая строка файла [.filename]#/" "etc/pam.conf# состоит из четырёх или большего количества полей: имени " "сервиса, имени подсистемы, управляющего флага, имени модуля и дополнительных " "параметров модуля, которые могут отсутствовать." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:418 msgid "" "The service name is generally (though not always) the name of the " "application the statement applies to. If you are unsure, refer to the " "individual application's documentation to determine what service name it " "uses." msgstr "" "Имя сервиса обычно (хотя не всегда) является именем приложения, которое этот " "сервис обслуживает. Если вы не уверены, обратитесь к документации по " "конкретному приложению для определения используемого имени сервиса." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:420 msgid "" "Note that if you use [.filename]#/etc/pam.d/# instead of [.filename]#/etc/" "pam.conf#, the service name is specified by the name of the policy file, and " "omitted from the actual configuration lines, which then start with the " "facility name." msgstr "" "Заметьте, что если вы используете [.filename]#/etc/pam.d/# вместо [." "filename]#/etc/pam.conf#, то имя сервиса задается именем файла политики, и " "опускается из строк настройки, которые в таком случае начинаются с названия " "подсистемы." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:423 msgid "" "The facility is one of the four facility keywords described in crossref:" "pam[pam-facilities-primitives, Facilities and Primitives]." msgstr "" "Имя подсистемы представляет собой одно из четырёх ключевых слов, описанных в " "<>." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:428 #, no-wrap msgid "" "Likewise, the control flag is one of the four keywords described in\n" "\tcrossref:pam[pam-chains-policies, Chains and Policies], describing how to interpret the return code from the module. \n" "Linux-PAM supports an alternate syntax that lets you specify the action to associate with each possible return code, but this should be avoided as it is non-standard and closely tied in with the way Linux-PAM dispatches service calls (which differs greatly from the way Solaris(TM) and OpenPAM do it.) \n" "Unsurprisingly, OpenPAM does not support this syntax.\n" msgstr "" "Точно также управляющий флаг является одним из четырёх ключевых слов, описанных в разделе\n" "\tcrossref:pam[pam-chains-policies, Цепочки и политики], в котором рассказано, как интерпретировать возвращаемый из модуля код.\n" " В Linux-PAM поддерживается альтернативный синтаксис, который позволяет указать действие, связанной с каждый возможным кодом возврата, но этого следует избегать, так как он не является стандартным и тесно связан со способом диспетчеризации вызовов сервисов в Linux-PAM (а он значительно отличается от способа взаимодействия в Solaris(TM) и OpenPAM).\n" " Не вызывает удивления тот факт, что в OpenPAM этот синтаксис не поддерживается.\n" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:430 #, no-wrap msgid "Policies" msgstr "Политики" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:433 msgid "" "To configure PAM correctly, it is essential to understand how policies are " "interpreted." msgstr "" "Для корректной настройки PAM необходимо понимать, как происходит " "интерпретация политик." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:436 msgid "" "When an application calls man:pam_start[3], the PAM library loads the policy " "for the specified service and constructs four module chains (one for each " "facility.) If one or more of these chains are empty, the corresponding " "chains from the policy for the `other` service are substituted." msgstr "" "В момент, когда приложение вызывает функцию man:pam_start[3], библиотека PAM " "загружает политику для указанного сервиса и выстраивает четыре цепочки " "модулей (по одной для каждой подсистемы). Если одна или большее количество " "этих цепочек являются пустыми, то будут выполняться подстановки " "соответствующих цепочек из политики для сервиса `other`." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:440 msgid "" "When the application later calls one of the six PAM primitives, the PAM " "library retrieves the chain for the corresponding facility and calls the " "appropriate service function in each module listed in the chain, in the " "order in which they were listed in the configuration. After each call to a " "service function, the module type and the error code returned by the service " "function are used to determine what happens next. With a few exceptions, " "which we discuss below, the following table applies:" msgstr "" "Когда затем приложение вызывает одну из шести примитивов PAM, библиотека PAM " "выделяет из цепочки нужную подсистему и вызывает функцию, соответствующую " "сервису, в каждом модуле, перечисленном в цепочке, в том порядке, в каком " "они перечислены в конфигурации. После каждого обращения к функции сервиса, " "тип модуля и возвращённый из этой функции код результата выполнения " "используются для того, что делать дальше. За некоторыми исключениями, " "которые будут описаны ниже, применяется такая таблица:" #. type: Block title #: documentation/content/en/articles/pam/_index.adoc:441 #, no-wrap msgid "PAM Chain Execution Summary" msgstr "Сводная таблица отработки цепочек PAM" #. type: Table #: documentation/content/en/articles/pam/_index.adoc:446 #, no-wrap msgid "PAM_SUCCESS" msgstr "PAM_SUCCESS" #. type: Table #: documentation/content/en/articles/pam/_index.adoc:447 #, no-wrap msgid "PAM_IGNORE" msgstr "PAM_IGNORE" #. type: Table #: documentation/content/en/articles/pam/_index.adoc:449 #, no-wrap msgid "other" msgstr "other" #. type: Table #: documentation/content/en/articles/pam/_index.adoc:450 #, no-wrap msgid "binding" msgstr "binding" #. type: Table #: documentation/content/en/articles/pam/_index.adoc:451 #: documentation/content/en/articles/pam/_index.adoc:466 #, no-wrap msgid "if (!fail) break;" msgstr "if (!fail) break;" #. type: Table #: documentation/content/en/articles/pam/_index.adoc:452 #: documentation/content/en/articles/pam/_index.adoc:456 #: documentation/content/en/articles/pam/_index.adoc:457 #: documentation/content/en/articles/pam/_index.adoc:461 #: documentation/content/en/articles/pam/_index.adoc:462 #: documentation/content/en/articles/pam/_index.adoc:467 #: documentation/content/en/articles/pam/_index.adoc:469 #: documentation/content/en/articles/pam/_index.adoc:471 #: documentation/content/en/articles/pam/_index.adoc:472 #: documentation/content/en/articles/pam/_index.adoc:473 #, no-wrap msgid "-" msgstr "-" #. type: Table #: documentation/content/en/articles/pam/_index.adoc:454 #: documentation/content/en/articles/pam/_index.adoc:459 #, no-wrap msgid "fail = true;" msgstr "fail = true;" #. type: Table #: documentation/content/en/articles/pam/_index.adoc:455 #, no-wrap msgid "required" msgstr "required" #. type: Table #: documentation/content/en/articles/pam/_index.adoc:460 #, no-wrap msgid "requisite" msgstr "requisite" #. type: Table #: documentation/content/en/articles/pam/_index.adoc:464 #, no-wrap msgid "fail = true; break;" msgstr "fail = true; break;" #. type: Table #: documentation/content/en/articles/pam/_index.adoc:465 #, no-wrap msgid "sufficient" msgstr "sufficient" #. type: Table #: documentation/content/en/articles/pam/_index.adoc:470 #, no-wrap msgid "optional" msgstr "optional" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:477 msgid "" "If `fail` is true at the end of a chain, or when a \"break\" is reached, the " "dispatcher returns the error code returned by the first module that failed. " "Otherwise, it returns `PAM_SUCCESS`." msgstr "" "Если переменная `fail` принимает истинное значение в конце отработки " "цепочки, или когда достигнут \"break\", диспетчер возвращает код ошибки, " "возвращённый первым модулем, отработавшим неудачно. В противном случае " "возвращается `PAM_SUCCESS`." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:479 msgid "" "The first exception of note is that the error code `PAM_NEW_AUTHTOK_REQD` is " "treated like a success, except that if no module failed, and at least one " "module returned `PAM_NEW_AUTHTOK_REQD`, the dispatcher will return " "`PAM_NEW_AUTHTOK_REQD`." msgstr "" "Первым исключением является то, что код ошибки `PAM_NEW_AUTHTOK_REQD` " "интерпретируется как успешный результат, кроме случая, когда модуль " "отработал успешно, и по крайней мере один модуль возвратил " "`PAM_NEW_AUTHTOK_REQD`, тогда диспетчер возвратит результат " "`PAM_NEW_AUTHTOK_REQD`." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:481 msgid "" "The second exception is that man:pam_setcred[3] treats `binding` and " "`sufficient` modules as if they were `required`." msgstr "" "Вторым исключением является то, что man:pam_setcred[3] считает, что модули " "`binding` и `sufficient` являются равнозначными `required`." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:483 msgid "" "The third and final exception is that man:pam_chauthtok[3] runs the entire " "chain twice (once for preliminary checks and once to actually set the " "password), and in the preliminary phase it treats `binding` and `sufficient` " "modules as if they were `required`." msgstr "" "Третьим и последним исключением является то, что функция man:" "pam_chauthtok[3] отрабатывает полную цепочку дважды (один раз для " "предварительных проверок, и ещё раз для реального задания пароля), и на " "подготовительной фазе она считает, что модули `binding` и `sufficient` " "являются равнозначными `required`." #. type: Title == #: documentation/content/en/articles/pam/_index.adoc:485 #, no-wrap msgid "FreeBSD PAM Modules" msgstr "Модули PAM во FreeBSD" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:488 #, no-wrap msgid "man:pam_deny[8]" msgstr "man:pam_deny[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:492 msgid "" "The man:pam_deny[8] module is one of the simplest modules available; it " "responds to any request with `PAM_AUTH_ERR`. It is useful for quickly " "disabling a service (add it to the top of every chain), or for terminating " "chains of `sufficient` modules." msgstr "" "Модуль man:pam_deny[8] является одним из простейших доступных модулей; на " "любой запрос он возвращает результат `PAM_AUTH_ERR`. Он полезен для быстрого " "отключения сервиса (добавьте его на верх каждой цепочки) или завершения " "цепочек модулей `sufficient`." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:494 #, no-wrap msgid "man:pam_echo[8]" msgstr "man:pam_echo[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:498 msgid "" "The man:pam_echo[8] module simply passes its arguments to the conversation " "function as a `PAM_TEXT_INFO` message. It is mostly useful for debugging, " "but can also serve to display messages such as \"Unauthorized access will be " "prosecuted\" before starting the authentication procedure." msgstr "" "Модуль man:pam_echo[8] просто передаёт свои параметры в функцию " "взаимодействия как сообщение `PAM_TEXT_INFO`. В основном полезна для " "отладки, но также может использоваться для вывода сообщений, таких как " "\"Unauthorized access will be prosecuted\" до запуска процедуры " "аутентификации." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:500 #, no-wrap msgid "man:pam_exec[8]" msgstr "man:pam_exec[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:504 msgid "" "The man:pam_exec[8] module takes its first argument to be the name of a " "program to execute, and the remaining arguments are passed to that program " "as command-line arguments. One possible application is to use it to run a " "program at login time which mounts the user's home directory." msgstr "" "Модуль man:pam_exec[8] воспринимает первый переданный ему параметр как имя " "программы для выполнения, а остальные аргументы передаются этой программе в " "качестве параметров командной строки. Одним из возможных применений является " "его использование для запуска в момент регистрации в системе программы " "монтирования домашнего каталога пользователя." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:506 #, no-wrap msgid "man:pam_ftpusers[8]" msgstr "man:pam_ftpusers[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:509 msgid "The man:pam_ftpusers[8] module" msgstr "Модуль man:pam_ftpusers[8]" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:511 #, no-wrap msgid "man:pam_group[8]" msgstr "man:pam_group[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:515 msgid "" "The man:pam_group[8] module accepts or rejects applicants on the basis of " "their membership in a particular file group (normally `wheel` for man:" "su[1]). It is primarily intended for maintaining the traditional behavior " "of BSD man:su[1], but has many other uses, such as excluding certain groups " "of users from a particular service." msgstr "" "Модуль man:pam_group[8] принимает или отвергает аппликантов в зависимости от " "их членства в определённой файловой группе (обычно `wheel` для man:su[1]). В " "первую очередь предназначен для сохранения традиционного поведения утилиты " "BSD man:su[1], хотя имеет и много других применений, таких как отключение " "определённых групп пользователей от некоторого сервиса." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:517 #, no-wrap msgid "man:pam_guest[8]" msgstr "man:pam_guest[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:522 msgid "" "The man:pam_guest[8] module allows guest logins using fixed login names. " "Various requirements can be placed on the password, but the default behavior " "is to allow any password as long as the login name is that of a guest " "account. The man:pam_guest[8] module can easily be used to implement " "anonymous FTP logins." msgstr "" "Модуль man:pam_guest[8] позволяет осуществлять гостевые входы с " "использованием фиксированных имён входа в систему. На пароль могут " "накладываться различные ограничения, однако действием по умолчанию является " "ввод любого пароля при использовании имени, соответствующего гостевому " "входу. Модуль man:pam_guest[8] можно легко использовать для реализации " "анонимных входов на FTP." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:524 #, no-wrap msgid "man:pam_krb5[8]" msgstr "man:pam_krb5[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:527 msgid "The man:pam_krb5[8] module" msgstr "Модуль man:pam_krb5[8]" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:529 #, no-wrap msgid "man:pam_ksu[8]" msgstr "man:pam_ksu[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:532 msgid "The man:pam_ksu[8] module" msgstr "Модуль man:pam_ksu[8]" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:534 #, no-wrap msgid "man:pam_lastlog[8]" msgstr "man:pam_lastlog[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:537 msgid "The man:pam_lastlog[8] module" msgstr "Модуль man:pam_lastlog[8]" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:539 #, no-wrap msgid "man:pam_login_access[8]" msgstr "man:pam_login_access[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:542 msgid "" "The man:pam_login_access[8] module provides an implementation of the account " "management primitive which enforces the login restrictions specified in the " "man:login.access[5] table." msgstr "" "Модуль man:pam_login_access[8] предоставляет реализацию примитива для " "управления учётными записями, который вводит в действие ограничения на вход, " "задаваемые в таблице man:login.access[5]." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:544 #, no-wrap msgid "man:pam_nologin[8]" msgstr "man:pam_nologin[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:548 msgid "" "The man:pam_nologin[8] module refuses non-root logins when [.filename]#/var/" "run/nologin# exists. This file is normally created by man:shutdown[8] when " "less than five minutes remain until the scheduled shutdown time." msgstr "" "Модуль man:pam_nologin[8] отвергает любые входы не пользователем root, если " "существует файл [.filename]#/var/run/nologin#. Обычно этот файл создаётся " "утилитой man:shutdown[8], когда до запланированного завершения работы " "системы остаётся менее пяти минут." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:550 #, no-wrap msgid "man:pam_passwdqc[8]" msgstr "man:pam_passwdqc[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:553 msgid "The man:pam_passwdqc[8] module" msgstr "Модуль man:pam_passwdqc[8]" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:555 #, no-wrap msgid "man:pam_permit[8]" msgstr "man:pam_permit[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:559 msgid "" "The man:pam_permit[8] module is one of the simplest modules available; it " "responds to any request with `PAM_SUCCESS`. It is useful as a placeholder " "for services where one or more chains would otherwise be empty." msgstr "" "Модуль man:pam_permit[8] является одним из самых простым из имеющихся; на " "любой запрос он отвечает `PAM_SUCCESS`. Он полезен в качестве замены пустого " "места для сервисов, когда одна или большее количество цепочек в противном " "случае останутся пустыми." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:561 #, no-wrap msgid "man:pam_radius[8]" msgstr "man:pam_radius[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:564 msgid "The man:pam_radius[8] module" msgstr "Модуль man:pam_radius[8]" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:566 #, no-wrap msgid "man:pam_rhosts[8]" msgstr "man:pam_rhosts[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:569 msgid "The man:pam_rhosts[8] module" msgstr "Модуль man:pam_rhosts[8]" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:571 #, no-wrap msgid "man:pam_rootok[8]" msgstr "man:pam_rootok[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:575 msgid "" "The man:pam_rootok[8] module reports success if and only if the real user id " "of the process calling it (which is assumed to be run by the applicant) is " "0. This is useful for non-networked services such as man:su[1] or man:" "passwd[1], to which the `root` should have automatic access." msgstr "" "Модуль man:pam_rootok[8] возвращает положительный результат в том и только в " "том случае, если реальный id пользователя процесса, его вызвавшего " "(предполагается, что его запускает аппликант) равен 0. Это полезно для " "несетевых сервисов, таких как man:su[1] или man:passwd[1], к которым " "пользователь `root` должен иметь автоматический доступ." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:577 #, no-wrap msgid "man:pam_securetty[8]" msgstr "man:pam_securetty[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:580 msgid "The man:pam_securetty[8] module" msgstr "Модуль man:pam_securetty[8]" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:582 #, no-wrap msgid "man:pam_self[8]" msgstr "man:pam_self[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:586 msgid "" "The man:pam_self[8] module reports success if and only if the names of the " "applicant matches that of the target account. It is most useful for non-" "networked services such as man:su[1], where the identity of the applicant " "can be easily verified." msgstr "" "Модуль man:pam_self[8] возвращает положительный результат тогда и только " "тогда, когда имена аппликанта соответствуют целевой учётной записи. Больше " "всего это пригодится в несетевых сервисах, таких как man:su[1], в которых " "идентификация аппликанта может быть с лёгкостью проверена." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:588 #, no-wrap msgid "man:pam_ssh[8]" msgstr "man:pam_ssh[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:594 msgid "" "The man:pam_ssh[8] module provides both authentication and session " "services. The authentication service allows users who have passphrase-" "protected SSH secret keys in their [.filename]#~/.ssh# directory to " "authenticate themselves by typing their passphrase. The session service " "starts man:ssh-agent[1] and preloads it with the keys that were decrypted in " "the authentication phase. This feature is particularly useful for local " "logins, whether in X (using man:xdm[8] or another PAM-aware X login manager) " "or at the console." msgstr "" "Модуль man:pam_ssh[8] предоставляет как сервис аутентификации, так и сеанса. " "Сервис аутентификации позволяет пользователям, имеющим секретные ключи SSH, " "защищённые паролями, в своих каталогах [.filename]#~/.ssh#, " "аутентифицироваться посредством этих паролей. Сеансовый сервис запускает man:" "ssh-agent[1] и загружает ключи, которые были расшифрованы на фазе " "аутентификации. Такая возможность, в частности, полезна для локальных входов " "в систему, как в систему X (посредством man:xdm[1] или другого X-менеджера " "входов, умеющего работать с PAM), так и на консоль." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:596 #, no-wrap msgid "man:pam_tacplus[8]" msgstr "man:pam_tacplus[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:599 msgid "The man:pam_tacplus[8] module" msgstr "Модуль man:pam_tacplus[8]" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:601 #, no-wrap msgid "man:pam_unix[8]" msgstr "man:pam_unix[8]" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:606 msgid "" "The man:pam_unix[8] module implements traditional UNIX(R) password " "authentication, using man:getpwnam[3] to obtain the target account's " "password and compare it with the one provided by the applicant. It also " "provides account management services (enforcing account and password " "expiration times) and password-changing services. This is probably the " "single most useful module, as the great majority of admins will want to " "maintain historical behavior for at least some services." msgstr "" "Модуль man:pam_unix[8] реализует традиционную аутентификацию UNIX(R) на " "основе паролей, использующую функцию man:getpwnam[3] для получения пароля " "целевой учётной записи и сравнивающую её с тем, что представил аппликант. Он " "также предоставляет средства управления учётными записями (отслеживая время " "действия учётной записи и пароля) и смены паролей. Наверное, это самый " "полезный модуль, так как подавляющее большинство администраторов хотят " "сохранить исторически сложившееся поведение по крайней мере некоторых " "сервисов." #. type: Title == #: documentation/content/en/articles/pam/_index.adoc:608 #, no-wrap msgid "PAM Application Programming" msgstr "Программирование приложений с PAM" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:611 #: documentation/content/en/articles/pam/_index.adoc:616 msgid "This section has not yet been written." msgstr "Этот раздел ещё не написан." #. type: Title == #: documentation/content/en/articles/pam/_index.adoc:613 #, no-wrap msgid "PAM Module Programming" msgstr "Программирование модуля PAM" #. type: Title == #: documentation/content/en/articles/pam/_index.adoc:621 #, no-wrap msgid "Sample PAM Application" msgstr "Пример PAM-приложения" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:628 msgid "" "The following is a minimal implementation of man:su[1] using PAM. Note that " "it uses the OpenPAM-specific man:openpam_ttyconv[3] conversation function, " "which is prototyped in [.filename]#security/openpam.h#. If you wish build " "this application on a system with a different PAM library, you will have to " "provide your own conversation function. A robust conversation function is " "surprisingly difficult to implement; the one presented in crossref:pam[pam-" "sample-conv, Sample PAM Conversation Function] is a good starting point, but " "should not be used in real-world applications." msgstr "" "Далее следует минимальная реализация программы man:su[1] с использованием " "PAM. Заметьте, что в ней используется специфичная для OpenPAM функция " "взаимодействия man:openpam_ttyconv[3], объявление которой расположено в " "файле [.filename]#security/openpam.h#. Если вы собираетесь строить это " "приложение в системе с другой библиотекой PAM, вам необходимо будет создать " "собственную функцию взаимодействия. Надёжную функцию взаимодействия " "неожиданно трудно написать; та, что находится в <>, хороша " "в качестве отправной точки, но в реальных приложениях использоваться не " "может." #. type: delimited block . 4 #: documentation/content/en/articles/pam/_index.adoc:632 #, no-wrap msgid "include::{include-path}su.c[]\n" msgstr "include::{include-path}su.c[]\n" #. type: Title == #: documentation/content/en/articles/pam/_index.adoc:638 #, no-wrap msgid "Sample PAM Module" msgstr "Пример PAM-модуля" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:642 msgid "" "The following is a minimal implementation of man:pam_unix[8], offering only " "authentication services. It should build and run with most PAM " "implementations, but takes advantage of OpenPAM extensions if available: " "note the use of man:pam_get_authtok[3], which enormously simplifies " "prompting the user for a password." msgstr "" "Далее приведена минимальная реализация man:pam_unix[8], предоставляющая " "только сервисы аутентификации. Она должна строиться и работать с " "большинством из реализаций PAM, но использует возможности расширений " "OpenPAM, если они присутствуют: отметьте использование функции man:" "pam_get_authtok[3], которая кардинально упрощает организацию ввода пароля " "пользователем." #. type: delimited block . 4 #: documentation/content/en/articles/pam/_index.adoc:646 #, no-wrap msgid "include::{include-path}pam_unix.c[]\n" msgstr "include::{include-path}pam_unix.c[]\n" #. type: Title == #: documentation/content/en/articles/pam/_index.adoc:652 #, no-wrap msgid "Sample PAM Conversation Function" msgstr "Пример функции взаимодействия PAM" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:657 msgid "" "The conversation function presented below is a greatly simplified version of " "OpenPAM's man:openpam_ttyconv[3]. It is fully functional, and should give " "the reader a good idea of how a conversation function should behave, but it " "is far too simple for real-world use. Even if you are not using OpenPAM, " "feel free to download the source code and adapt man:openpam_ttyconv[3] to " "your uses; we believe it to be as robust as a tty-oriented conversation " "function can reasonably get." msgstr "" "Функция взаимодействия, приводимая ниже, является значительно упрощённой " "версией функции man:openpam_ttyconv[3] из OpenPAM. Она полнофункциональна, и " "должна послужить источником идей о том, как должна себя вести функция " "взаимодействия, однако она слишком проста для реальных приложений. Даже если " "вы не используете OpenPAM, можете сгрузить исходный код и использовать man:" "openpam_ttyconv[3] в своих целях; мы надеемся, что она достаточно надёжна в " "качестве функции для взаимодействия с терминальными устройствами." #. type: delimited block . 4 #: documentation/content/en/articles/pam/_index.adoc:661 #, no-wrap msgid "include::{include-path}converse.c[]\n" msgstr "include::{include-path}converse.c[]\n" #. type: Title == #: documentation/content/en/articles/pam/_index.adoc:666 #, no-wrap msgid "Further Reading" msgstr "Для дальнейшего ознакомления" #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:668 #, no-wrap msgid "Papers" msgstr "Статьи" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:671 msgid "" "Making Login Services Independent of Authentication Technologies Vipin " "Samar. Charlie Lai. Sun Microsystems." msgstr "" "Making Login Services Independent of Authentication Technologies Vipin " "Samar. Charlie Lai. Sun Microsystems." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:673 msgid "" "_link:https://pubs.opengroup.org/onlinepubs/8329799/toc.htm[X/Open Single " "Sign-on Preliminary Specification]_. The Open Group. 1-85912-144-6. June " "1997." msgstr "" "_link:https://pubs.opengroup.org/onlinepubs/8329799/toc.htm[X/Open Single " "Sign-on Preliminary Specification]_. The Open Group. 1-85912-144-6. June " "1997." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:675 msgid "" "_link:https://mirrors.kernel.org/pub/linux/libs/pam/pre/doc/draft-morgan-" "pam-07.txt[Pluggable Authentication Modules]_. Andrew G. Morgan. 1999-10-06." msgstr "" "_link:https://mirrors.kernel.org/pub/linux/libs/pam/pre/doc/draft-morgan-" "pam-07.txt[Pluggable Authentication Modules]_. Andrew G. Morgan. 1999-10-06." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:676 #, no-wrap msgid "User Manuals" msgstr "Руководства пользователя" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:679 msgid "" "_link:https://docs.oracle.com/cd/E26505_01/html/E27224/pam-1.html[PAM " "Administration]_. Sun Microsystems." msgstr "" "_link:https://docs.oracle.com/cd/E26505_01/html/E27224/pam-1." "html[Администрирование PAM]_. Sun Microsystems." #. type: Title === #: documentation/content/en/articles/pam/_index.adoc:680 #, no-wrap msgid "Related Web Pages" msgstr "Веб страницы" #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:683 msgid "" "_link:https://www.openpam.org/[OpenPAM homepage]_ Dag-Erling Smørgrav. " "ThinkSec AS." msgstr "" "_link:https://www.openpam.org/[Домащняя страница OpenPAM]_ Dag-Erling " "Smørgrav. ThinkSec AS." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:685 msgid "" "_link:http://www.kernel.org/pub/linux/libs/pam/[Linux-PAM homepage]_ Andrew " "Morgan." msgstr "" "_link:http://www.kernel.org/pub/linux/libs/pam/[Домашняя страница Linux-" "PAM]_ Andrew Morgan." #. type: Plain text #: documentation/content/en/articles/pam/_index.adoc:686 msgid "_Solaris PAM homepage_. Sun Microsystems." msgstr "" "_Домашняя страница Solaris PAM (Solaris PAM homepage)_. Sun Microsystems."