<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN"
"dtd/kdex.dtd" [
  <!ENTITY kappname "&kdesu;">
  <!ENTITY package "kdebase">
  <!ENTITY % addindex "IGNORE">
  <!ENTITY % Russian "INCLUDE"
> <!-- change language only here -->
]>

<book lang="&language;">
<bookinfo>

<title
>Справочное руководство по &kdesu;</title>

<authorgroup>
<author
>&Geert.Jansen; &Geert.Jansen.mail;</author>
<othercredit role="translator"
><firstname
>Екатерина</firstname
> <surname
>Пыжова</surname
> <affiliation
><address
><email
>haleth@yandex.ru</email
></address
></affiliation
> <contrib
>Перевод на русский</contrib
></othercredit
> 
</authorgroup>

<copyright>
<year
>2000</year>
<holder
>Геерт Янсен (Geert Jansen)</holder>
</copyright>

<legalnotice
>&FDLNotice;</legalnotice>

<date
>2002-01-18</date>
<releaseinfo
>1.00.00</releaseinfo>


<abstract
><para
>&kdesu; представляет собой графическую оболочку к &UNIX;-команде <command
>su</command
>.</para
></abstract>

<keywordset>
<keyword
>KDE</keyword>
<keyword
>su</keyword>
<keyword
>пароль</keyword>
<keyword
>root</keyword>
</keywordset>

</bookinfo>

<chapter id="introduction">
<title
>Введение</title>

<para
>Добро пожаловать в &kdesu;! Эта программа представляет собой графическую оболочку к &UNIX;-команде <command
>su</command
> для среды &kde;. Она позволяет вам запускать программы от имени другого пользователя, если вы передадите ей пароль этого пользователя. &kdesu; является непривилегированной программой и пользуется системным <command
>su</command
>.</para>

<para
>&kdesu; предлагает еще одну дополнительную возможность &mdash; запоминание паролей. Чтобы использовать ее, вам нужно ввести пароль всего однажды для каждой команды. Подробности и анализ безопасности смотрите по ссылке <xref linkend="sec-password-keeping"/>.</para>

<para
>Эта программа расчитана на запуск из командной строки или из файлов <filename
>.desktop</filename
>. Хотя она спрашивает пароль пользователя <systemitem class="username"
>root</systemitem
>, используя графический интерфейс, мне кажется, что она скорее основана на слиянии командной строки и графического интерфейса, а не просто на графическом интерфейсе.</para>

</chapter>

<chapter id="using-kdesu">
<title
>Использование &kdesu;</title>

<para
>Использовать &kdesu; просто. Синтаксис следующий:</para>

    <cmdsynopsis
><command
>kdesu</command
> <arg
>USER</arg
> <arg
>-n</arg
> <arg
>-t</arg
> <arg
>-q</arg
> <arg
>-d</arg
> <arg
>-f <replaceable
>FILE</replaceable
></arg
> <arg
>-c <group
> <arg
> <replaceable
>COMMAND</replaceable
> <arg
><replaceable
>ARG1</replaceable
></arg
> <arg
><replaceable
>ARG2</replaceable
></arg
> <arg rep="repeat"
><replaceable
></replaceable
></arg
> </arg
> </group
> </arg
> </cmdsynopsis>

    <cmdsynopsis
><command
>kdesu</command
> <group
> <arg
>-v</arg
> <arg
>-h</arg
> <arg
>-s</arg
> </group
> </cmdsynopsis>

<para
>Параметры командной строки описаны ниже.</para>

<variablelist>
<varlistentry>
<term
><option
>-c <replaceable
>PROGRAM</replaceable
></option
></term>
<listitem
><para
>Указать программу для запуска с правами root. Это должен быть один аргумент. Поэтому, если вы хотите запустить новый файловый менеджер, вам следует ввести следующее: <userinput
><command
>kdesu <option
>-c <replaceable
>kfm -sw</replaceable
></option
></command
></userinput
>.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>-f <replaceable
>FILE</replaceable
></option
></term>
<listitem
><para
>Этот параметр позволяет эффективно использовать <filename
>.desktop</filename
>-файлы. При этом &kdesu; проверяет файл, указанный в <parameter
>FILE</parameter
>. Если он доступен для записи текущему пользователю, то &kdesu; запустит команду с правами этого пользователя. Иначе команда будет запущена с правами пользователя <parameter
>USER</parameter
> (root по умолчанию).</para>
<para
><parameter
>FILE</parameter
> анализируется так: если этот параметр начинается с <literal
>/</literal
>, то он считается абсолютным путем. Иначе &mdash; именем глобального файла конфигурации &kde;. Например, чтобы настроить менеджер входа в систему <application
>kdm</application
>, вам следует набрать <command
>kdesu <option
>-c kdmconfig -f kdmrc</option
></command
>.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>-t</option
></term>
<listitem
><para
>Разрешить терминальный вывод. Это делает невозможным запоминание паролей. В основном служит для отладки. Если вы хотите запустить обычное консольное приложение, пользуйтесь стандартным <command
>su</command
>.</para
> </listitem>
</varlistentry>
<varlistentry>
<term
><option
>-n</option
></term>
<listitem
><para
>Не сохранять пароль. Делает недоступным флажок <guilabel
>Сохранить пароль</guilabel
> в окне ввода пароля.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>-q</option
></term>
<listitem
><para
>Не выводить никакой информации.</para
></listitem>
<!-- Lauri: This could do with a little expansion.  quiet as in no screen -->
<!-- output, quiet as in no gui prompt for the password, or quiet as in no -->
<!-- beeping? -->
</varlistentry>

<varlistentry>
<term
><option
>-d</option
></term>
<listitem
><para
>Выводить информацию для отладки.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>-v</option
></term>
<listitem
><para
>Вывести номер версии и завершить работу.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>-h</option
></term>
<listitem
><para
>Вывести небольшое описание.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>-s</option
></term>
<listitem
><para
>Остановить сервис kdesu. Подробности: <xref linkend="sec-password-keeping"/>.</para
></listitem>
</varlistentry>
</variablelist>

</chapter>

<chapter id="configuration">
<title
>Настройка</title>

<para
>&kde; устанавливается с модулем настройки <application
>kcmkdesu</application
>. Его можно найти в <guimenu
>Меню &kde;</guimenu
> в подменю <menuchoice
><guisubmenu
>Настройка</guisubmenu
><guisubmenu
>KDE</guisubmenu
><guimenuitem
>Безопасность</guimenuitem
><guimenuitem
>Пароли</guimenuitem
></menuchoice
>.</para>

<variablelist>
<varlistentry>
<term
><guilabel
>Отображать вводимый символ</guilabel
></term>
<listitem
><para
>Определяет режим отображения символов пароля. Можно выводить звездочку вместо каждого символа, три звездочки или вообще ничего не выводить. По умолчанию &mdash; одна звездочка вместо символа.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Запоминание паролей</guilabel
></term>
<listitem
><para
>Если флажок <guilabel
>Помнить пароль</guilabel
> установлен, &kdesu; будет запоминать введенные пароли. Время (в минутах), в течение которого вас не спросят повторно пароль, вводится в поле ниже. По умолчанию эта возможность не используется.</para
></listitem>
</varlistentry>
</variablelist>

</chapter>

<chapter id="Internals">
<title
>Внутренние особенности</title>

<sect1 id="x-authentication">
<title
>Авторизация X</title>

<para
>Запускаемая вами программа будет работать с идентификатором пользователя root и, в общем случае, не будет иметь прав для доступа к вашему X-дисплею. &kdesu; исправляет это, добавляя авторизационный cookie для вашего дисплея во временный файл <filename
>.Xauthority</filename
>. После завершения команды, файл удаляется. </para>

<para
>Если вы не используете систему X cookie, то &kdesu; обнаружит это и не будет добавлять новый cookie, однако никакой гарантии, что root получит доступ к вашему дисплею, не дается.</para>

</sect1>

<sect1 id="interface-to-su">
<title
>Взаимодействие с <command
>su</command
></title>

<para
>&kdesu; использует системную команду <command
>su</command
>, чтобы получить привилегированный доступ. В этом разделе объясняются детали того, как &kdesu; это делает. </para>

<para
>Так как некоторые реализации <command
>su</command
> (например в &RedHat;) не позволяют задавать пароль из <literal
>stdin</literal
>, &kdesu; создает пару pty/tty и запускает <command
>su</command
> с его стандартными файловыми дескрипторами, настроенными на этот tty.</para>

<para
>Чтобы выполнить программу, которую выбрал пользователь, а не запустить оболочку интерактивно, используется параметр <option
>-c</option
> для <command
>su</command
>. Этот аргумент понимается всеми известными мне оболочками и должен быть переносимым. Команда <command
>su</command
> передает аргумент <option
>-c</option
> оболочке пользователя, которая и запускает программу на исполнение. Это выглядит так: <command
>su <option
>root -c <replaceable
>the_program</replaceable
></option
></command
>.</para>

<para
>Вместо прямого запуска команды пользователя через <command
>su</command
>, &kdesu; запускает небольшую программу, называемую <application
>kdesu_stub</application
>. Она (запущенная с правами требуемого пользователя) запрашивает определенную информацию от &kdesu; через канал pty/tty (stdin и stdout для этой программы), а затем уже выполняет программу пользователя. Передаваемая информация: номер X-дисплея, авторизационный X cookie (если доступен), переменная <envar
>PATH</envar
> и команда для запуска. Такая вспомогательная программа нужна, потому что X cookie содержит секретную информацию и поэтому не может быть передан в командной строке.</para>

</sect1>

<sect1 id="password-checking">
<title
>Проверка пароля</title>

<para
>&kdesu; проверяет введенный вами пароль и выдает сообщение об ошибке, если он не верен. Проверка организована с помощью выполнения программы-теста <filename
>/bin/true</filename
>. Если это возможно, то пароль считается правильным.</para>

</sect1>

<sect1 id="sec-password-keeping">
<title
>Хранение паролей</title>

<para
>Для вашего удобства в &kdesu; реализован механизм хранения паролей. Если вас интересуют вопросы безопасности, прочитайте этот раздел.</para>

<para
>Запоминание паролей в &kdesu; создает небольшую дыру в системе безопасности вашей системы. Очевидно, что &kdesu; не позволяет никому, кроме пользователей с вашим идентификатором пользоваться этими паролями. Однако если это реализовать без предосторожностей, системный уровень безопасности <systemitem class="username"
>root</systemitem
> понизится до уровня обычного пользователя (вас). И человек, который получит доступ к вашей учетной записи, получит доступ уровня <systemitem class="username"
>root</systemitem
>. &kdesu; пытается не допустить этого. Схема безопасности, используемая им, на мой взгляд, достаточно безопасна.</para>

<para
>&kdesu; использует сервис под названием <application
>kdesud</application
>. Этот сервис ожидаает команды с &UNIX;-сокета, расположенного в <filename
>/tmp</filename
>. Режим его доступа равен 0600, то есть только пользователь с вашим идентификатором может соединиться с ним. Если хранение паролей включено, &kdesu; выполняет команды через этот сервис. Он пишет команды и пароль пользователя <systemitem class="username"
>root</systemitem
> в сокет, и сервис выполняет команду <command
>su</command
>, как описано выше. После этого команда и пароль не теряются, а хранятся в течение указанного времени (устанавливается в модуле настройки). Если другой запрос на запуск такой же команды приходит в течение этого периода времени, клиент может не предоставлять пароль. Чтобы не дать человеку, получившему доступ к вашей учетной записи, украсть у сервиса пароль (например, запуском отладчика), sgid сервиса (группа при запуске) установлен в nogroup. Это не дает обычным пользователям, в том числе и вам, получать пароли от процесса <application
>kdesud</application
>. Также этот сервис устанавливает переменную окружения <envar
>DISPLAY</envar
> в значение при запуске. Все, что сможет сделать взломщик &mdash; это запустить на вашем дисплее приложение.</para>

<para
>Слабое место в этой схеме в том, что запускаемые программы могут быть написаны без соблюдения правил защиты (например, программы с setuid <systemitem class="username"
>root</systemitem
>). Это означает, что они могут вызвать переполнение буферов или другие проблемы, а взломщик может использовать это.</para>

<para
>Использование хранения паролей &mdash; это компромисс между безопасностью и удобством. Подумайте и решите, что вам больше важно, и решите, будете ли вы им пользоваться.</para>

</sect1>
</chapter>

<chapter id="Author">
<title
>Автор</title>

<para
>&kdesu;</para>

<para
>(C) 2000 Геерт Янсен (Geert Jansen)</para>

<para
>&kdesu; написал Геерт Янсен (Geert Jansen). Эта программа основана на &kdesu;, версии 0.3, написанной Пьетро Иглио  (Pietro Iglio). Мы договорились, что я буду проводить дальнейшую поддержку этой программы.</para>

<para
>С автором можно связаться по адресу &Geert.Jansen.mail;. Пожалуйста, сообщайте мне о всех встреченных ошибках, чтобы я мог их исправить. Также жду любых предложений и комментариев.</para>
&underFDL; &underArtisticLicense; </chapter>

</book>
<!--
Local Variables:
mode: sgml
sgml-omittag: nil
sgml-shorttag: t
End:
-->

