aboutsummaryrefslogtreecommitdiff
path: root/ru_RU.KOI8-R/books/handbook/users/chapter.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'ru_RU.KOI8-R/books/handbook/users/chapter.sgml')
-rw-r--r--ru_RU.KOI8-R/books/handbook/users/chapter.sgml1081
1 files changed, 1081 insertions, 0 deletions
diff --git a/ru_RU.KOI8-R/books/handbook/users/chapter.sgml b/ru_RU.KOI8-R/books/handbook/users/chapter.sgml
new file mode 100644
index 0000000000..1530ebee10
--- /dev/null
+++ b/ru_RU.KOI8-R/books/handbook/users/chapter.sgml
@@ -0,0 +1,1081 @@
+<!--
+ The FreeBSD Russian Documentation Project
+
+ $FreeBSD$
+ $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/users/chapter.sgml,v 1.19 2008/05/13 13:46:29 den Exp $
+
+ Original revision: 1.60
+-->
+
+<chapter id="users">
+ <chapterinfo>
+ <authorgroup>
+ <author>
+ <firstname>Neil</firstname>
+ <surname>Blakey-Milner</surname>
+ <contrib>Предоставил </contrib>
+ </author>
+ </authorgroup>
+ <!-- Feb 2000 -->
+ <authorgroup>
+ <author>
+ <firstname>Денис</firstname>
+ <surname>Пеплин</surname>
+ <contrib>Перевод на русский язык: </contrib>
+ </author>
+ </authorgroup>
+ </chapterinfo>
+
+ <title>Пользователи и основы управления учетными записями</title>
+
+ <sect1 id="users-synopsis">
+ <title>Краткий обзор</title>
+
+ <para>FreeBSD позволяет одновременную работу множества пользователей
+ на одном компьютере. Разумеется, только один пользователь может сидеть
+ за клавиатурой и перед экраном в один момент времени
+ <footnote>
+ <para>Конечно, пока не используется множество терминалов, но мы
+ оставим эту тему для <xref linkend="serialcomms">.</para>
+ </footnote>, но любое количество пользователей может выполнять работу
+ через сеть. Для использования системы у каждого пользователя должна
+ быть учетная запись.</para>
+
+ <para>После прочтения этой главы вы будете знать:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Различия между разнообразными учетными записями в системе
+ FreeBSD.</para>
+ </listitem>
+
+ <listitem>
+ <para>Как добавлять учетные записи пользователей.</para>
+ </listitem>
+
+ <listitem>
+ <para>Как удалять учетные записи пользователей.</para>
+ </listitem>
+
+ <listitem>
+ <para>Как изменять данные учетных записей пользователей, такие
+ как полное имя пользователя, или предпочитаемую оболочку.</para>
+ </listitem>
+
+ <listitem>
+ <para>Как устанавливать ограничения на использование ресурсов,
+ например на использование памяти и времени CPU для учетных записей
+ или групп учетных записей.</para>
+ </listitem>
+
+ <listitem>
+ <para>Как использовать группы для упрощения управлением учетными
+ записями.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Перед прочтением этой главы вам потребуется:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Понимание основ &unix; и FreeBSD (<xref
+ linkend="basics">).</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1 id="users-introduction">
+ <title>Введение</title>
+
+ <para>Весь доступ к системе осуществляется через учетные записи,
+ и все процессы запускаются пользователями, так что управление
+ пользователями и учетными записями в системах FreeBSD имеет
+ всеобъемлющее значение.</para>
+
+ <para>С каждой учетной записью в системе FreeBSD связана определенная
+ идентификационная информация.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>Имя пользователя</term>
+
+ <listitem>
+ <para>Имя пользователя в том виде, в каком оно вводится в
+ приглашение <prompt>login:</prompt>. Имена пользователей
+ должны быть уникальны в пределах одного компьютера; не может
+ быть двух пользователей с одинаковым именем пользователя.
+ Существует множество правил для создания правильных имен
+ пользователей, документированных в &man.passwd.5;; вы как
+ правило будете использовать имена пользователей, состоящие
+ из восьми или меньшего количества символов, все символы в
+ нижнем регистре.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Пароль</term>
+
+ <listitem>
+ <para>С каждой учетной записью связан пароль. Пароль может быть
+ пустым, в этом случае для доступа к системе не нужен пароль.
+ Обычно это очень плохая идея; у каждой учетной записи должен быть
+ пароль.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>ID пользователя (User ID, UID)</term>
+
+ <listitem>
+ <para>The UID это номер, традиционно от 0 до
+ 65535<footnote id="users-largeuidgid">
+ <para>Возможно использование UID/GID вплоть до
+ 4294967295, но эти ID могут вызвать серьезные проблемы с
+ программами, делающими предположения о значениях
+ ID.</para>
+ </footnote>, используемый для однозначной идентификации
+ пользователя в системе. Сама система FreeBSD для идентификации
+ пользователей использует UID &mdash; любая команда FreeBSD,
+ позволяющая вам указывать имя пользователя, первым делом
+ преобразует его к UID. Это означает, что вы можете создать
+ несколько учетных записей с различными именами пользователей,
+ но с одним UID. FreeBSD будет воспринимать эти учетные записи как
+ одного пользователя. Маловероятно, что вам когда-либо это
+ понадобится.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>ID группы (Group ID, GID)</term>
+
+ <listitem>
+ <para>GID это номер, традиционно от 0 до
+ 65535<footnoteref linkend="users-largeuidgid">, используемый
+ для однозначной идентификации главной группы, к которой
+ принадлежит пользователь. Группы это механизм для контроля
+ доступа к ресурсам на основе GID пользователя вместо его UID.
+ Это может значительно уменьшить размер некоторых файлов настройки.
+ Кроме того, пользователь может быть включен более чем в одну
+ группу.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Класс логина</term>
+
+ <listitem>
+ <para>Классы логинов это расширение к механизму групп,
+ позволяющее системе более гибко управлять различными
+ пользователями.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Время изменения пароля</term>
+
+ <listitem>
+ <para>По умолчанию FreeBSD не принуждает пользователей периодически
+ менять пароли. Вы можете включить эту функцию для определенных
+ пользователей, заставив некоторых или всех пользователей менять
+ пароли по прошествии определенного времени.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Время истечения действия учетной записи</term>
+
+ <listitem>
+ <para>По умолчанию в FreeBSD время действия учетных записей не
+ ограничено. Если вы создаете учетные записи, продолжительность
+ жизни которых ограничена, например учетные записи для
+ студентов в школе, вы можете определить время истечения
+ действия учетной записи. После наступления этого времени
+ учетная запись не может использоваться для входа в систему,
+ хотя каталоги и файлы этой учетной записи останутся
+ нетронутыми.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Полное имя пользователя</term>
+
+ <listitem>
+ <para>Имя пользователя является уникальным идентификатором
+ учетной записи в FreeBSD, но недостаточно для сопоставления
+ с реальным именем пользователя. Эта информация может быть
+ добавлена в учетную запись.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Домашний каталог</term>
+
+ <listitem>
+ <para>Домашний каталог это полный путь к каталогу в системе, в
+ котором пользователь начнет работать после входа в систему.
+ По общепринятому соглашению все домашние каталоги пользователей
+ помещаются в
+ <filename>/home/<replaceable>username</replaceable></filename>
+ или
+ <filename>/usr/home/<replaceable>username</replaceable></filename>.
+ Пользователи хранят личные файлы в домашнем каталоге и в любых
+ подкаталогах, создаваемых внутри домашнего каталога.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Оболочка пользователя</term>
+
+ <listitem>
+ <para>Оболочка необходима пользователям как средство взаимодействия
+ с системой по умолчанию. Существует множество различных видов
+ оболочек, опытные пользователи работают с собственными
+ настройками, которые могут быть отражены в установках их учетных
+ записей.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Существует три основных типа учетных записей: <link
+ linkend="users-superuser">суперпользователь</link>, <link
+ linkend="users-system">системные пользователи</link>, и <link
+ linkend="users-user">учетные записи пользователей</link>.
+ Учетная запись суперпользователя, обычно называемая
+ <username>root</username>, используется для управления системой
+ без ограничения привилегий. Системные пользователи запускают
+ сервисы. Наконец, учетные записи пользователей необходимы обычным
+ людям для входа в систему, чтения почты, и так далее.</para>
+ </sect1>
+
+ <sect1 id="users-superuser">
+ <title>Учетная запись суперпользователя</title>
+
+ <indexterm>
+ <primary>учетные записи</primary>
+ <secondary>суперпользователь (root)</secondary>
+ </indexterm>
+ <para>Учетная запись суперпользователя, обычно называемая
+ <username>root</username>, существует в системе изначально
+ для целей системного администрирования, и не должна использоваться
+ для повседневных задач, таких как получение и отправка почты,
+ общее исследование системы или программирование.</para>
+
+ <para>Причина в том, что суперпользователь, в отличие от обычных
+ пользователей, может работать без ограничений и неправильное
+ использование учетной записи суперпользователя может привести к
+ полному уничтожению системы. Учетные записи пользователей не
+ способны уничтожит систему вследствие ошибки, поэтому обычно
+ лучше использовать учетные записи обычных пользователей везде,
+ где это возможно, пока вам не потребуются дополнительные
+ привилегии для какой-то определенной задачи.</para>
+
+ <para>Вы всегда должны дважды и трижды проверять команды, выполняемые
+ под учетной записью суперпользователя, поскольку даже один лишний
+ пробел или отсутствующий символ может привести к безвозвратной
+ потере данных.</para>
+
+ <para>Таким образом, первое, что вам необходимо сделать после прочтения
+ этой главы, это создать непривилегированную учетную запись пользователя
+ для повседневного использования (если вы еще этого не сделали).
+ Это необходимо сделать независимо от того, работаете ли вы на
+ многопользовательском или однопользовательском компьютере.
+ Позже в этой главе мы обсудим как создать дополнительные учетные записи,
+ и как менять уровень привилегий между нормальным пользователем и
+ суперпользователем.</para>
+ </sect1>
+
+ <sect1 id="users-system">
+ <title>Системные учетные записи</title>
+
+ <indexterm>
+ <primary>учетные записи</primary>
+ <secondary>системные</secondary>
+ </indexterm>
+ <para>Системные пользователи предназначены для запуска сервисов, таких
+ как DNS, почта, веб серверы и так далее. Это необходимо по соображениям
+ безопасности; если все сервисы работают от суперпользователя, они
+ могут действовать без ограничений.</para>
+
+ <indexterm>
+ <primary>учетные записи</primary>
+ <secondary><username>daemon</username></secondary>
+ </indexterm>
+ <indexterm>
+ <primary>учетные записи</primary>
+ <secondary><username>operator</username></secondary>
+ </indexterm>
+ <para>Примеры системных пользователей это <username>daemon</username>,
+ <username>operator</username>, <username>bind</username> (для
+ Domain Name Service, DNS), <username>news</username> и
+ <username>www</username>.</para>
+
+ <indexterm>
+ <primary>учетные записи</primary>
+ <secondary><username>nobody</username></secondary>
+ </indexterm>
+ <para><username>nobody</username> это классический непривилегированный
+ системный пользователь. Тем не менее, необходимо помнить, что чем
+ больше сервисов используют <username>nobody</username>, тем больше
+ файлов и процессов ассоциировано с этим пользователем, и следовательно
+ тем больше прав появляется у этого пользователя.</para>
+ </sect1>
+
+ <sect1 id="users-user">
+ <title>Учетные записи пользователей</title>
+
+ <indexterm>
+ <primary>учетные записи</primary>
+ <secondary>пользователей</secondary>
+ </indexterm>
+ <para>Учетные записи пользователей в основном означают доступ в систему
+ для обычных людей, и эти учетные записи отделяют пользователя и
+ его рабочую среду, предотвращая повреждение пользователем системы
+ или данных других пользователей, и позволяя пользователям
+ настраивать свою рабочую среду без влияния на других
+ пользователей.</para>
+
+ <para>Каждая персона, получающая доступ к вашей системе, должна получить
+ уникальную учетную запись пользователя. Это позволит вам выяснить
+ кто что делает, предотвращая сбивание одним пользователем настроек
+ других пользователей, чтение чужой почты и так далее.</para>
+
+ <para>Каждый пользователь может настраивать свою собственную рабочую
+ среду для приспособления системы под свои нужды с помощью альтернативных
+ оболочек, редакторов, привязки клавиш и настроек языка.</para>
+ </sect1>
+
+ <sect1 id="users-modifying">
+ <title>Изменение учетных записей</title>
+
+ <indexterm>
+ <primary>учетные записи</primary>
+ <secondary>изменение</secondary>
+ </indexterm>
+
+ <para>В среде &unix; существуют различные команды для работы с учетными
+ записями пользователей. Наиболее часто используемые команды приведены
+ в таблице, ниже находятся более детальные примеры их
+ использования.</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <colspec colwidth="1*">
+ <colspec colwidth="2*">
+ <thead>
+ <row>
+ <entry>Команда</entry>
+ <entry>Краткое описание</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>&man.adduser.8;</entry>
+ <entry>Рекомендуемое приложение командной строки для добавления
+ новых пользователей.</entry>
+ </row>
+ <row>
+ <entry>&man.rmuser.8;</entry>
+ <entry>Рекомендуемое приложение командной строки для удаления
+ пользователей.</entry>
+ </row>
+ <row>
+ <entry>&man.chpass.1;</entry>
+ <entry>Гибкий инструмент для изменения информации в базе данных
+ пользователей.</entry>
+ </row>
+ <row>
+ <entry>&man.passwd.1;</entry>
+ <entry>Простой инструмент командной строки для изменения паролей
+ пользователей.</entry>
+ </row>
+ <row>
+ <entry>&man.pw.8;</entry>
+ <entry>Мощный и гибкий инструмент для изменения любой информации,
+ связанной с учетными записями пользователей.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <sect2 id="users-adduser">
+ <title><command>adduser</command></title>
+
+ <indexterm>
+ <primary>учетные записи</primary>
+ <secondary>добавление</secondary>
+ </indexterm>
+ <indexterm>
+ <primary><command>adduser</command></primary>
+ </indexterm>
+ <indexterm>
+ <primary><filename class="directory">/usr/share/skel</filename></primary>
+ </indexterm>
+ <indexterm><primary>каталог шаблонов</primary></indexterm>
+ <indexterm><primary>skeleton directory</primary></indexterm>
+ <para>&man.adduser.8; это простая программа для добавления новых
+ пользователей. Она создает записи в системных файлах
+ <filename>passwd</filename> и <filename>group</filename>.
+ Она также создает домашний каталог для нового пользователя,
+ копируя файлы настройки по умолчанию (<quote>dotfiles</quote>, файлы
+ имя который начинается с символа <literal>.</literal>) из
+ <filename>/usr/share/skel</filename> и опционально может отправлять
+ новому пользователю приветственное сообщение.</para>
+
+ <example>
+ <title>Добавление пользователя в &os;</title>
+
+ <screen>&prompt.root; <userinput>adduser</userinput>
+Username: <userinput>jru</userinput>
+Full name: <userinput>J. Random User</userinput>
+Uid (Leave empty for default):
+Login group [jru]:
+Login group is jru. Invite jru into other groups? []: <userinput>wheel</userinput>
+Login class [default]:
+Shell (sh csh tcsh zsh nologin) [sh]: <userinput>zsh</userinput>
+Home directory [/home/jru]:
+Home directory permissions (Leave empty for default):
+Use password-based authentication? [yes]:
+Use an empty password? (yes/no) [no]:
+Use a random password? (yes/no) [no]:
+Enter password:
+Enter password again:
+Lock out the account after creation? [no]:
+Username : jru
+Password : ****
+Full Name : J. Random User
+Uid : 1001
+Class :
+Groups : jru wheel
+Home : /home/jru
+Shell : /usr/local/bin/zsh
+Locked : no
+OK? (yes/no): <userinput>yes</userinput>
+adduser: INFO: Successfully added (jru) to the user database.
+Add another user? (yes/no): <userinput>no</userinput>
+Goodbye!
+&prompt.root;</screen>
+ </example>
+
+ <note>
+ <para>Пароль, который вы вводите, не отображается,
+ <quote>звездочки</quote> при вводе пароля также не отображаются.
+ Убедитесь, что вы не ошиблись при вводе пароля.</para>
+ </note>
+ </sect2>
+
+ <sect2 id="users-rmuser">
+ <title><command>rmuser</command></title>
+
+ <indexterm><primary><command>rmuser</command></primary></indexterm>
+ <indexterm>
+ <primary>учетные записи</primary>
+ <secondary>удаление</secondary>
+ </indexterm>
+
+ <para>Для полного удаления пользователя из системы вы можете
+ использовать &man.rmuser.8;. Эта программа выполняет следующие
+ действия:</para>
+
+ <procedure>
+ <step>
+ <para>Удаление записи пользователя из &man.crontab.1; (если
+ она присутствует).</para>
+ </step>
+ <step>
+ <para>Удаляет задачи &man.at.1;, принадлежащие
+ пользователю.</para>
+ </step>
+ <step>
+ <para>Уничтожает все процессы, принадлежащие пользователю.</para>
+ </step>
+ <step>
+ <para>Удаляет пользователя из локального файла паролей.</para>
+ </step>
+ <step>
+ <para>Удаляет домашний каталог пользователя (если он принадлежит
+ пользователю).</para>
+ </step>
+ <step>
+ <para>Удаляет принадлежащую пользователю входящую почту из
+ <filename>/var/mail</filename>.</para>
+ </step>
+ <step>
+ <para>Удаляет все файлы, принадлежащие пользователю, из каталогов
+ с временными файлами, например <filename>/tmp</filename>.</para>
+ </step>
+ <step>
+ <para>Наконец, удаляет имя пользователя из всех групп, которым оно
+ принадлежит, в <filename>/etc/group</filename>.</para>
+
+ <note>
+ <para>Если после этого удаления группа остается пустой и
+ имя группы совпадает с именем пользователя, она удаляется;
+ Это необходимо для удаления пользовательских уникальных
+ групп, создаваемых &man.adduser.8;.</para>
+ </note>
+ </step>
+ </procedure>
+
+ <para>&man.rmuser.8; не может использоваться для удаления учетной
+ записи суперпользователя, поскольку это почти всегда означает
+ разрушение системы.</para>
+
+ <para>По умолчанию используется интерактивный режим, программа
+ пытается убедиться, что вы уверены в своих действиях.</para>
+
+ <example>
+ <title>Интерактивное удаление учетной записи с помощью
+ <command>rmuser</command></title>
+
+ <screen>&prompt.root; <userinput>rmuser jru</userinput>
+Matching password entry:
+jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh
+Is this the entry you wish to remove? <userinput>y</userinput>
+Remove user's home directory (/home/jru)? <userinput>y</userinput>
+Updating password file, updating databases, done.
+Updating group file: trusted (removing group jru -- personal group is empty) done.
+Removing user's incoming mail file /var/mail/jru: done.
+Removing files belonging to jru from /tmp: done.
+Removing files belonging to jru from /var/tmp: done.
+Removing files belonging to jru from /var/tmp/vi.recover: done.
+&prompt.root;</screen>
+ </example>
+ </sect2>
+
+ <sect2 id="users-chpass">
+ <title><command>chpass</command></title>
+
+ <indexterm><primary><command>chpass</command></primary></indexterm>
+ <para>&man.chpass.1; изменяет информацию в базе данных пользователей:
+ пароли, оболочки, персональную информацию.</para>
+
+ <para>Только системные администраторы с правами суперпользователя
+ могут изменять информацию и пароли других пользователей с помощью
+ &man.chpass.1;.</para>
+
+ <para>При запуске без параметров (кроме опционального имени
+ пользователя), &man.chpass.1; вызывает редактор, содержащий
+ информацию о пользователе. Когда пользователь выходит из редактора,
+ база данных пользователей обновляется этой информацией.</para>
+
+ <note>
+ <para>После выхода из редактора будет запрошен
+ пароль (если вы не суперпользователь).</para>
+ </note>
+
+ <example>
+ <title>Интерактивная работа с <command>chpass</command>
+ суперпользователя</title>
+
+ <screen>#Changing user database information for jru.
+Login: jru
+Password: *
+Uid [#]: 1001
+Gid [# or name]: 1001
+Change [month day year]:
+Expire [month day year]:
+Class:
+Home directory: /home/jru
+Shell: /usr/local/bin/zsh
+Full Name: J. Random User
+Office Location:
+Office Phone:
+Home Phone:
+Other information:</screen>
+ </example>
+
+ <para>Обычные пользователи могут изменять лишь небольшую часть этой
+ информации, и только для своей учетной записи.</para>
+
+ <example>
+ <title>Интерактивная работа с <command>chpass</command> обычного
+ пользователя</title>
+
+ <screen>#Changing user database information for jru.
+Shell: /usr/local/bin/zsh
+Full Name: J. Random User
+Office Location:
+Office Phone:
+Home Phone:
+Other information:</screen>
+ </example>
+
+ <note>
+ <para>&man.chfn.1; и &man.chsh.1; это всего лишь ссылки на
+ &man.chpass.1;, как и &man.ypchpass.1;, &man.ypchfn.1; и
+ &man.ypchsh.1;. NIS поддерживается автоматически, так что
+ указание <literal>yp</literal> перед командой не обязательно.
+ Если это непонятно, не беспокойтесь, NIS будет рассмотрен в
+ <xref linkend="network-servers">.</para>
+ </note>
+ </sect2>
+ <sect2 id="users-passwd">
+ <title><command>passwd</command></title>
+
+ <indexterm><primary><command>passwd</command></primary></indexterm>
+ <indexterm>
+ <primary>учетные записи</primary>
+ <secondary>изменение пароля</secondary>
+ </indexterm>
+ <para>&man.passwd.1; это обычный способ изменения собственного пароля
+ пользователя, или пароля другого пользователя
+ суперпользователем.</para>
+
+ <note>
+ <para>Для предотвращения случайного или неавторизованного изменения,
+ перед установкой нового пароля необходимо ввести старый.</para>
+ </note>
+
+ <example>
+ <title>Изменение пароля</title>
+
+ <screen>&prompt.user; <userinput>passwd</userinput>
+Changing local password for jru.
+Old password:
+New password:
+Retype new password:
+passwd: updating the database...
+passwd: done</screen>
+ </example>
+
+ <example>
+ <title>Изменение пароля другого пользователя
+ суперпользователем</title>
+
+ <screen>&prompt.root; <userinput>passwd jru</userinput>
+Changing local password for jru.
+New password:
+Retype new password:
+passwd: updating the database...
+passwd: done</screen>
+ </example>
+
+ <note>
+ <para>Как и с &man.chpass.1;, &man.yppasswd.1; это всего лишь
+ ссылка на &man.passwd.1;, так что NIS работает с обеими
+ командами.</para>
+ </note>
+ </sect2>
+
+
+ <sect2 id="users-pw">
+ <title><command>pw</command></title>
+ <indexterm><primary><command>pw</command></primary></indexterm>
+
+ <para>&man.pw.8; это утилита командной строки для создания, удаления,
+ модифицирования и отображения пользователей и групп. Она
+ функционирует как внешний интерфейс к системным файлам пользователей
+ и групп. У &man.pw.8; очень мощный набор параметров командной строки,
+ что делает это программу подходящей для использования в shell
+ скриптах, но новым пользователям она может показаться более сложной,
+ чем другие представленные здесь команды.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="users-limiting">
+ <title>Ограничение пользователей</title>
+
+ <indexterm><primary>ограничение пользователей</primary></indexterm>
+ <indexterm>
+ <primary>учетные записи</primary>
+ <secondary>ограничение</secondary>
+ </indexterm>
+ <para>Если у вас есть пользователи, может появиться мысль о возможности
+ ограничения нагрузки на систему. FreeBSD предоставляет
+ администратору несколько способов ограничения объема
+ занимаемых пользователями системных ресурсов. Существует два вида
+ ограничений: дисковые квоты и другие ограничения ресурсов.</para>
+
+ <indexterm><primary>квоты</primary></indexterm>
+ <indexterm>
+ <primary>ограничение пользователей</primary>
+ <secondary>квоты</secondary>
+ </indexterm>
+ <indexterm><primary>дисковые квоты</primary></indexterm>
+ <para>Дисковые квоты ограничивают объем пространства, занимаемого
+ пользователями, это способ быстрой проверки объема без вычисления
+ его каждый раз. Квоты обсуждаются в <xref
+ linkend="quotas">.</para>
+
+ <para>Другие ограничения ресурсов включают способы ограничения
+ использования CPU, памяти и других ресурсов, которые могут потребляться
+ пользователем. Ограничения накладываются с помощью классов учетных
+ записей и обсуждаются в этом разделе.</para>
+
+ <indexterm>
+ <primary><filename>/etc/login.conf</filename></primary>
+ </indexterm>
+ <para>Классы учетных записей определяются в
+ <filename>/etc/login.conf</filename>. Описание полной семантики
+ выходит за пределы обсуждаемого здесь материала, она детально
+ описана в странице справочника &man.login.conf.5;. Достаточно
+ сказать, что каждому пользователю присвоен класс
+ (<literal>default</literal> по умолчанию), и каждому классу присвоен
+ набор характеристик. Характеристика определяется в виде пары
+ <literal><replaceable>имя</replaceable>=<replaceable>значение</replaceable></literal>,
+ где <replaceable>имя</replaceable> это определенный идентификатор,
+ а <replaceable>значение</replaceable> это произвольная строка,
+ обрабатываемая в зависимости от имени. Настройка классов и
+ характеристик довольно проста и также описана в
+ &man.login.conf.5;.</para>
+
+ <note>
+ <para>Система, как правило, не читает настройки в
+ <filename>/etc/login.conf</filename> непосредственно, она обращается
+ к файлу базы данных <filename>/etc/login.conf.db</filename> для
+ ускорения доступа к данным.
+ Для создания <filename>/etc/login.conf.db</filename> из
+ <filename>/etc/login.conf</filename>, выполните следующую
+ команду:</para>
+
+ <screen>&prompt.root; <userinput>cap_mkdb /etc/login.conf</userinput></screen>
+ </note>
+
+ <para>Ограничения на ресурсы отличаются от обычных характеристик:
+ во-первых, для каждого ограничения существует <quote>мягкое</quote>
+ (текущее) и <quote>жесткое</quote> ограничение. Мягкое ограничение
+ может настраиваться пользователем или приложением, но не может
+ превышать жесткое ограничение. Последнее может быть уменьшено
+ пользователем, но никогда не увеличено. Во-вторых, большинство
+ ограничений ресурсов применяются к процессам определенного пользователя,
+ а не к пользователю вообще. Обратите внимание, что эти различия
+ реализуются специфической обработкой ограничений, а не реализацией
+ структуры характеристик учетных записей (т.е. это не
+ <emphasis>настоящий</emphasis> специальный случай характеристик).</para>
+
+ <para>Ниже приведен список наиболее часто используемых ограничений
+ на ресурсы (остальные, вместе с другими характеристиками
+ можно найти в &man.login.conf.5;).</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><literal>coredumpsize</literal></term>
+
+ <listitem>
+ <indexterm><primary>coredumpsize</primary></indexterm>
+ <indexterm>
+ <primary>ограничение пользователей</primary>
+ <secondary>coredumpsize</secondary>
+ </indexterm>
+ <para>Ограничение на размер файла core, генерируемого программой,
+ по очевидным причинам подчиняющееся другим ограничениям
+ на используемое дисковое пространство (например,
+ <literal>filesize</literal>, или дисковые квоты).
+ Тем не менее, оно часто используется как менее строгий
+ метод контролирования потребления дискового пространства:
+ поскольку пользователь не создает файлы core самостоятельно,
+ и зачастую не удаляет их, установка этого параметра может
+ предохранить его от выхода за пределы дисковых квот, если
+ большая программа (например, <application>emacs</application>)
+ создаст core файл.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>cputime</literal></term>
+
+ <listitem>
+ <indexterm><primary>cputime</primary></indexterm>
+ <indexterm>
+ <primary>ограничение пользователей</primary>
+ <secondary>cputime</secondary>
+ </indexterm>
+ <para>Это максимальное количество времени CPU, потребляемого
+ пользователем. Превысившие это время процессы будут уничтожены
+ ядром.</para>
+
+ <note>
+ <para>Это ограничение потребляемого
+ <emphasis>времени</emphasis> CPU, а не процентов использования
+ CPU, которые отображаются в некоторых полях &man.top.1;
+ и &man.ps.1;. Ограничения на них на время написания этого
+ материала невозможны и такие ограничения практически
+ бесполезны: компилятор &mdash; вполне законное приложение
+ &mdash; иногда может легко использовать почти 100%
+ CPU.</para>
+ </note>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>filesize</literal></term>
+
+ <listitem>
+ <indexterm><primary>filesize</primary></indexterm>
+ <indexterm>
+ <primary>ограничение пользователей</primary>
+ <secondary>filesize</secondary>
+ </indexterm>
+ <para>Это максимальный размер файла, который может обрабатываться
+ пользователем. В отличие от <link linkend="quotas">дисковых
+ квот</link>, это ограничение применяется к отдельным файлам,
+ а не ко всему набору принадлежащих пользователю файлов.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>maxproc</literal></term>
+
+ <listitem>
+ <indexterm><primary>maxproc</primary></indexterm>
+ <indexterm>
+ <primary>ограничение пользователей</primary>
+ <secondary>maxproc</secondary>
+ </indexterm>
+ <para>Это максимальное число процессов, которые могут быть
+ запущены пользователем. В это число включаются и консольные
+ и фоновые процессы. По очевидным причинам, они не могут быть
+ больше, чем системное ограничение, указываемое через
+ переменную &man.sysctl.8; <varname>kern.maxproc</varname>.
+ Имейте ввиду, что установка слишком жестких ограничений может
+ стать помехой работе пользователя: зачастую полезно входить
+ в систему с нескольких консолей или использовать каналы.
+ Некоторые задачи, такие как компиляция большой программы,
+ также порождают множество процессов (например, &man.make.1;,
+ &man.cc.1; и другие препроцессоры).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>memorylocked</literal></term>
+
+ <listitem>
+ <indexterm><primary>memorylocked</primary></indexterm>
+ <indexterm>
+ <primary>ограничение пользователей</primary>
+ <secondary>memorylocked</secondary>
+ </indexterm>
+ <para>Это максимальный объем памяти, блокировка которого
+ может быть запрошена процессом (см. например
+ &man.mlock.2;). Некоторые критически важные для системы
+ программы, такие как &man.amd.8;, блокируют память так,
+ что при выгрузке они не создают системе дополнительных
+ проблем.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>memoryuse</literal></term>
+
+ <listitem>
+ <indexterm><primary>memoryuse</primary></indexterm>
+ <indexterm>
+ <primary>ограничение пользователей</primary>
+ <secondary>memoryuse</secondary>
+ </indexterm>
+ <para>Это максимальный объем памяти, которая может быть занята
+ процессами. Он включает основную память и
+ использование подкачки. Это ограничение не снимает все вопросы,
+ связанные с использованием памяти, но для начала это подходящее
+ ограничение.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>openfiles</literal></term>
+
+ <listitem>
+ <indexterm><primary>openfiles</primary></indexterm>
+ <indexterm>
+ <primary>ограничение пользователей</primary>
+ <secondary>openfiles</secondary>
+ </indexterm>
+ <para>Это максимальное количество файлов, которые могут быть
+ открыты процессами. В FreeBSD, файлы также используются для
+ представления сокетов и каналов IPC; не устанавливайте слишком
+ маленькое значение. Ограничение этого параметра, устанавливаемое
+ для всей системы, определяется переменной &man.sysctl.8;
+ <varname>kern.maxfiles</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>sbsize</literal></term>
+
+ <listitem>
+ <indexterm><primary>sbsize</primary></indexterm>
+ <indexterm>
+ <primary>ограничение пользователей</primary>
+ <secondary>sbsize</secondary>
+ </indexterm>
+ <para>Это ограничение потребляемого пользователем объема сетевой
+ памяти, т.е. mbufs. Оно было введено как ответ на старые
+ DoS атаки, при которых создавалось множество сокетов,
+ но обычно может быть использовано и для ограничения
+ сетевых соединений.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>stacksize</literal></term>
+
+ <listitem>
+ <indexterm><primary>stacksize</primary></indexterm>
+ <indexterm>
+ <primary>ограничение пользователей</primary>
+ <secondary>stacksize</secondary>
+ </indexterm>
+ <para>Это максимальный размер, до которого может вырасти стек
+ процесса. Сам по себе этот параметр не может ограничить
+ размер используемой программой памяти, следовательно,
+ его необходимо использовать вместе с другими ограничениями.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Существуют несколько других аспектов, которые необходимо учитывать
+ при установке ограничений ресурсов. Ниже приведены некоторые общие
+ подсказки, советы и различные комментарии.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Процессам, загружаемым при старте системы скриптами
+ <filename>/etc/rc</filename> присваивается класс
+ <literal>daemon</literal>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Хотя <filename>/etc/login.conf</filename>, поставляемый с
+ системой, это хороший источник подходящих значений для большинства
+ ограничений, только вы, администратор, можете знать подходящие
+ значения для вашей системы. Установка слишком слабых ограничений
+ может повлечь злоупотребления системой, а установка слишком
+ сильных ограничений может стать помехой производительности.</para>
+ </listitem>
+
+ <listitem>
+ <para>Пользователи X Window System (X11) возможно должны получить
+ больше ресурсов, чем другие пользователи. X11 сама по себе
+ потребляет много ресурсов, а также провоцирует пользователей
+ на одновременный запуск большего количества программ.</para>
+ </listitem>
+
+ <listitem>
+ <para>Помните, что многие ограничения применяются к отдельным
+ процессам, а не к пользователю вообще. Например, установка
+ <varname>openfiles</varname> в 50 означает, что каждый
+ процесс, запущенный пользователем, может открывать до 50
+ файлов. Таким образом, общее количество файлов, которые могут
+ быть открыты пользователем, вычисляется как
+ <literal>openfiles</literal>, помноженное на
+ <literal>maxproc</literal>. Это также применимо к потребляемой
+ памяти.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>За дальнейшей информацией по ограничениям на ресурсы, классам
+ учетных записей и характеристикам, обращайтесь к соответствующим
+ страницам справочника.</para>
+ </sect1>
+
+ <sect1 id="users-groups">
+ <title>Группы</title>
+
+ <indexterm><primary>группы</primary></indexterm>
+ <indexterm>
+ <primary><filename>/etc/groups</filename></primary>
+ </indexterm>
+ <indexterm>
+ <primary>учетные записи</primary>
+ <secondary>группы</secondary>
+ </indexterm>
+ <para>Группа это просто список пользователей. Группа идентифицируется
+ по имени и GID (Group ID, идентификатор группы). В FreeBSD
+ (и большинстве других &unix;-подобных системах) ядро для определения
+ прав процесса использует два фактора: его ID пользователя и
+ список групп, которым он принадлежит. Когда вы слышите что-то о
+ <quote>group ID</quote> пользователя или процесса, это обычно означает
+ только первую группу из списка.</para>
+
+ <para>Имена групп связываются с ID групп в файле
+ <filename>/etc/group</filename>. Это текстовый файл с четырьмя
+ разделенными двоеточием полями. Первое поле это имя группы,
+ второе это зашифрованный пароль, третье это ID группы, а четвертое
+ это разделенный запятыми список членов группы. Этот файл может
+ быть безопасно отредактирован вручную (предполагается, конечно,
+ что вы не сделаете синтаксических ошибок!). За более полным описанием
+ синтаксиса обратитесь к странице справочника &man.group.5;.</para>
+
+ <para>Если вы не хотите редактировать <filename>/etc/group</filename>
+ вручную, используйте команду &man.pw.8; для добавления и
+ редактирования групп. Например, для добавления группы,
+ называемой <groupname>teamtwo</groupname>, и проверки ее существования
+ вы можете использовать:</para>
+
+ <example>
+ <title>Добавление группы с использованием &man.pw.8;</title>
+
+ <screen>&prompt.root; <userinput>pw groupadd teamtwo</userinput>
+&prompt.root; <userinput>pw groupshow teamtwo</userinput>
+teamtwo:*:1100:</screen>
+ </example>
+
+ <para>Число <literal>1100</literal> это ID группы
+ <groupname>teamtwo</groupname>. На данный момент в,
+ <groupname>teamtwo</groupname> нет членов, и поэтому она практически
+ бесполезна. Давайте изменим эту ситуацию, добавив
+ <username>jru</username> в группу <groupname>teamtwo</groupname>.</para>
+
+ <example>
+ <title>Составление списка членов группы с использованием
+ &man.pw.8;</title>
+
+ <screen>&prompt.root; <userinput>pw groupmod teamtwo -M jru</userinput>
+&prompt.root; <userinput>pw groupshow teamtwo</userinput>
+teamtwo:*:1100:jru</screen>
+ </example>
+
+ <para>Аргумент к параметру <option>-M</option> это разделенный
+ запятыми список пользователей, являющихся членами группы. Из предыдущих
+ разделов мы знаем, что файл паролей также указывает группу для
+ каждого пользователя. Пользователь автоматически добавляется системой
+ к списку групп; пользователь не будет показан как член группы при
+ использовании &man.pw.8; <option>groupshow</option>, но эта
+ информация будет показана при использовании &man.id.1; или похожего
+ инструмента. Другими словами, с этим параметром программа &man.pw.8;
+ работает только с файлом <filename>/etc/group</filename>; она никогда
+ не будет пытаться получить дополнительную информацию из файла
+ <filename>/etc/passwd</filename>.</para>
+
+ <example>
+ <title>Добавление нового члена группы с использованием &man.pw.8;</title>
+
+ <screen>&prompt.root; <userinput>pw groupmod teamtwo -m db</userinput>
+&prompt.root; <userinput>pw groupshow teamtwo</userinput>
+teamtwo:*:1100:jru,db</screen>
+ </example>
+
+ <para>Аргументом к опции <option>-m</option> является разделенный запятыми
+ список пользователей, добавляемых в группу. В отличие от предыдущего
+ примера, пользователи добавляются в группу, а не замещают имеющийся
+ список пользователей группы.</para>
+
+ <example>
+ <title>Использование &man.id.1; для определения принадлежности к
+ группам</title>
+
+ <screen>&prompt.user; <userinput>id jru</userinput>
+uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)</screen>
+ </example>
+
+ <para>Как вы можете видеть, <username>jru</username> является членом
+ групп <groupname>jru</groupname> и
+ <groupname>teamtwo</groupname>.</para>
+
+ <para>За дальнейшей информацией о &man.pw.8;, обратитесь к ее странице
+ справочника, а за дополнительной информацией о формате файла
+ <filename>/etc/group</filename> к странице справочника
+ &man.group.5;.</para>
+ </sect1>
+</chapter>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-declaration: "../chapter.decl"
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "part" "chapter")
+ End:
+-->