diff options
Diffstat (limited to 'ru_RU.KOI8-R/books/handbook/users/chapter.sgml')
-rw-r--r-- | ru_RU.KOI8-R/books/handbook/users/chapter.sgml | 1081 |
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 — любая команда 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;. Ограничения на них на время написания этого + материала невозможны и такие ограничения практически + бесполезны: компилятор — вполне законное приложение + — иногда может легко использовать почти 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: +--> |