|
|
<?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
|
|
|
> <othercredit role="translator"
|
|
|
><firstname
|
|
|
>Виктор</firstname
|
|
|
> <surname
|
|
|
>Ерёмин</surname
|
|
|
> <affiliation
|
|
|
><address
|
|
|
><email
|
|
|
>ErV2005@rambler.ru</email
|
|
|
></address
|
|
|
></affiliation
|
|
|
> <contrib
|
|
|
>Перевод на русский язык</contrib
|
|
|
></othercredit
|
|
|
>
|
|
|
</authorgroup>
|
|
|
|
|
|
<copyright>
|
|
|
<year
|
|
|
>2000</year>
|
|
|
<holder
|
|
|
>Геерт Янсен (Geert Jansen)</holder>
|
|
|
</copyright>
|
|
|
|
|
|
<legalnotice
|
|
|
>&FDLNotice;</legalnotice>
|
|
|
|
|
|
<date
|
|
|
>2005-06-07</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; предлагает ещё одну дополнительную возможность — запоминание паролей. Чтобы использовать её, вам нужно ввести пароль всего один раз для каждой команды. Подробности и анализ безопасности смотрите в разделе <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
|
|
|
> <group choice="opt"
|
|
|
><option
|
|
|
>-c</option
|
|
|
></group
|
|
|
> <group choice="opt"
|
|
|
><option
|
|
|
>-d</option
|
|
|
></group
|
|
|
> <group choice="opt"
|
|
|
><option
|
|
|
>-f</option
|
|
|
> <replaceable
|
|
|
> файл</replaceable
|
|
|
></group
|
|
|
> <group choice="opt"
|
|
|
><option
|
|
|
>-i</option
|
|
|
> <replaceable
|
|
|
> имя_значка</replaceable
|
|
|
></group
|
|
|
> <group choice="opt"
|
|
|
><option
|
|
|
>-n</option
|
|
|
></group
|
|
|
> <group choice="opt"
|
|
|
><option
|
|
|
>-p</option
|
|
|
> <replaceable
|
|
|
> приоритет</replaceable
|
|
|
></group
|
|
|
> <group choice="opt"
|
|
|
><option
|
|
|
>-r</option
|
|
|
></group
|
|
|
> <group choice="opt"
|
|
|
><option
|
|
|
>-s</option
|
|
|
></group
|
|
|
> <group choice="opt"
|
|
|
><option
|
|
|
>-t</option
|
|
|
></group
|
|
|
> <group choice="opt"
|
|
|
><option
|
|
|
>-u</option
|
|
|
> <replaceable
|
|
|
> пользователь</replaceable
|
|
|
></group
|
|
|
> <group choice="opt"
|
|
|
><option
|
|
|
>--nonewdcop</option
|
|
|
></group
|
|
|
> <group
|
|
|
><arg choice="req"
|
|
|
><replaceable
|
|
|
>команда</replaceable
|
|
|
> <arg
|
|
|
><replaceable
|
|
|
>аргумент1</replaceable
|
|
|
></arg
|
|
|
> <arg
|
|
|
><replaceable
|
|
|
>аргумент2</replaceable
|
|
|
></arg
|
|
|
> <arg rep="repeat"
|
|
|
><replaceable
|
|
|
></replaceable
|
|
|
></arg
|
|
|
></arg
|
|
|
></group
|
|
|
> </cmdsynopsis>
|
|
|
<cmdsynopsis
|
|
|
><command
|
|
|
>kdesu</command
|
|
|
> <arg choice="opt"
|
|
|
>специфические параметры &kde;</arg
|
|
|
> <arg choice="opt"
|
|
|
>специфические параметры Qt</arg
|
|
|
> </cmdsynopsis>
|
|
|
|
|
|
<para
|
|
|
>Параметры командной строки описаны ниже.</para>
|
|
|
|
|
|
<variablelist>
|
|
|
<varlistentry>
|
|
|
<term
|
|
|
><option
|
|
|
>-c <replaceable
|
|
|
>программа</replaceable
|
|
|
></option
|
|
|
></term>
|
|
|
<listitem
|
|
|
><para
|
|
|
>Указать программу для запуска с правами root. Это должен быть один аргумент. Поэтому, если вы хотите запустить новый файловый менеджер, вам следует ввести следующее: <userinput
|
|
|
><command
|
|
|
>kdesu <option
|
|
|
>-c <replaceable
|
|
|
>kfm -sw</replaceable
|
|
|
></option
|
|
|
></command
|
|
|
></userinput
|
|
|
>.</para
|
|
|
></listitem>
|
|
|
</varlistentry>
|
|
|
<varlistentry>
|
|
|
<term
|
|
|
><option
|
|
|
>-d</option
|
|
|
></term>
|
|
|
<listitem
|
|
|
><para
|
|
|
>Выводить отладочную информацию.</para
|
|
|
></listitem>
|
|
|
</varlistentry>
|
|
|
<varlistentry>
|
|
|
<term
|
|
|
><option
|
|
|
>-f <replaceable
|
|
|
>файл</replaceable
|
|
|
></option
|
|
|
></term>
|
|
|
<listitem
|
|
|
><para
|
|
|
>Этот параметр позволяет эффективно использовать &kdesu; в файлах <filename
|
|
|
>.desktop</filename
|
|
|
>. При этом &kdesu; проверяет файл, указанный в параметре <parameter
|
|
|
>файл</parameter
|
|
|
>. Если он доступен для записи текущему пользователю, &kdesu; запустит команду с правами этого пользователя. Иначе команда будет запущена с правами пользователя <parameter
|
|
|
>пользователь</parameter
|
|
|
> (root по умолчанию).</para>
|
|
|
<para
|
|
|
><parameter
|
|
|
>файл</parameter
|
|
|
> анализируется следующим образом: если этот параметр начинается с <literal
|
|
|
>/</literal
|
|
|
>, то он считается абсолютным путём. Иначе — именем глобального файла конфигурации &kde;. Например, чтобы настроить менеджер входа в систему <application
|
|
|
>kdm</application
|
|
|
>, вам следует набрать <command
|
|
|
>kdesu <option
|
|
|
>-c kdmconfig -f kdmrc</option
|
|
|
></command
|
|
|
>.</para
|
|
|
></listitem>
|
|
|
</varlistentry>
|
|
|
<varlistentry>
|
|
|
<term
|
|
|
><option
|
|
|
>-f</option
|
|
|
> <replaceable
|
|
|
>имя_значка</replaceable
|
|
|
></term>
|
|
|
<listitem
|
|
|
><para
|
|
|
>Указывает значок для диалога пароля. Вы можете указать только имя файла, без расширения.</para>
|
|
|
<para
|
|
|
>Например, чтобы запустить <command
|
|
|
>kfmclient</command
|
|
|
> и использовать значок &konqueror; в диалоге пароля, введите команду:</para>
|
|
|
<screen
|
|
|
><userinput
|
|
|
><command
|
|
|
>kdesu</command
|
|
|
> <option
|
|
|
>-i konqueror</option
|
|
|
> <command
|
|
|
>kfmclient</command
|
|
|
></userinput
|
|
|
></screen>
|
|
|
</listitem>
|
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
|
<term
|
|
|
><option
|
|
|
>-n</option
|
|
|
></term>
|
|
|
<listitem
|
|
|
><para
|
|
|
>Не сохранять пароль. Делает недоступным флажок <guilabel
|
|
|
>Сохранить пароль</guilabel
|
|
|
> в окне ввода пароля.</para
|
|
|
></listitem>
|
|
|
</varlistentry>
|
|
|
<varlistentry>
|
|
|
<term
|
|
|
><option
|
|
|
>-p</option
|
|
|
> <replaceable
|
|
|
>приоритет</replaceable
|
|
|
></term>
|
|
|
<listitem>
|
|
|
<para
|
|
|
>Устанавливает приоритет выполнения программы. Для указания приоритета используется целое число от 0 до 100, где 100 соответствует максимальному приоритету, и 0 — минимальному. По умолчанию используется 50.</para>
|
|
|
</listitem>
|
|
|
</varlistentry>
|
|
|
<varlistentry>
|
|
|
<term
|
|
|
><option
|
|
|
>-r</option
|
|
|
></term>
|
|
|
<listitem
|
|
|
><para
|
|
|
>Использовать приоритет реального времени.</para>
|
|
|
</listitem>
|
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
|
<term
|
|
|
><option
|
|
|
>-s</option
|
|
|
></term>
|
|
|
<listitem
|
|
|
><para
|
|
|
>Остановить сервис kdesu. Подробности в разделе <xref linkend="sec-password-keeping"/>.</para
|
|
|
></listitem>
|
|
|
</varlistentry>
|
|
|
<varlistentry>
|
|
|
<term
|
|
|
><option
|
|
|
>-t</option
|
|
|
></term>
|
|
|
<listitem
|
|
|
><para
|
|
|
>Разрешить терминальный вывод. Это делает невозможным запоминание паролей. В основном эта возможность служит для отладки. Если вы хотите запустить обычное консольное приложение, пользуйтесь стандартным <command
|
|
|
>su</command
|
|
|
>.</para
|
|
|
> </listitem>
|
|
|
</varlistentry>
|
|
|
<varlistentry>
|
|
|
<term
|
|
|
><option
|
|
|
>-u</option
|
|
|
> <replaceable
|
|
|
>пользователь</replaceable
|
|
|
></term>
|
|
|
<listitem
|
|
|
><para
|
|
|
>Хотя чаще всего &kdesu; используется для запуска команд с правами root, вы можете указать имя пользователя и соответствующий пароль.</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
|
|
|
>программа</replaceable
|
|
|
></option
|
|
|
></command
|
|
|
>.</para>
|
|
|
|
|
|
<para
|
|
|
>Вместо прямого запуска команды пользователя через <command
|
|
|
>su</command
|
|
|
>, &kdesu; запускает небольшую программу, называемую <application
|
|
|
>kdesu_stub</application
|
|
|
>. Она (запущенная с правами требуемого пользователя) запрашивает определённую информацию от &kdesu; через канал pty/tty (потоки ввода и вывода для этой программы), а затем уже выполняет программу пользователя. Передаваемая информация: номер 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
|
|
|
> в значение при запуске. Все, что сможет сделать взломщик — это запустить на вашем дисплее приложение.</para>
|
|
|
|
|
|
<para
|
|
|
>Слабое место в этой схеме в том, что запускаемые программы могут быть написаны без соблюдения правил защиты (например, программы с setuid <systemitem class="username"
|
|
|
>root</systemitem
|
|
|
>). Это означает, что они могут вызвать переполнение буферов или другие проблемы, а взломщик может использовать это.</para>
|
|
|
|
|
|
<para
|
|
|
>Использование хранения паролей — это компромисс между безопасностью и удобством. Подумайте и решите, что вам больше важно, и решите, будете ли вы им пользоваться.</para>
|
|
|
|
|
|
</sect1>
|
|
|
</chapter>
|
|
|
|
|
|
<chapter id="Author">
|
|
|
<title
|
|
|
>Автор</title>
|
|
|
|
|
|
<para
|
|
|
>&kdesu;</para>
|
|
|
|
|
|
<para
|
|
|
>© &Geert.Jansen;, 2000</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:
|
|
|
-->
|
|
|
|