<?xml version="1.0" ?> <!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ <!ENTITY kappname "&tdesu;"> <!ENTITY package "tdebase"> <!ENTITY % addindex "IGNORE"> <!ENTITY % Russian "INCLUDE" > <!-- change language only here --> ]> <book lang="&language;"> <bookinfo> <title >Руководство пользователя &tdesu;</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 >&tdesu; представляет собой графическую оболочку к команде &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 >Добро пожаловать в &tdesu;! Эта программа представляет собой графическую оболочку к команде &UNIX; <command >su</command > для среды &kde;. Она позволяет вам запускать программы от имени другого пользователя, если вы укажете ей пароль этого пользователя. &tdesu; является непривилегированной программой и пользуется системной программой <command >su</command >.</para> <para >&tdesu; предлагает ещё одну дополнительную возможность — запоминание паролей. Чтобы использовать её, вам нужно ввести пароль всего один раз для каждой команды. Подробности и анализ безопасности смотрите в разделе <xref linkend="sec-password-keeping"/>.</para> <para >Эта программа рассчитана на запуск из командной строки или из файлов <filename >.desktop</filename >. Хотя она спрашивает пароль пользователя <systemitem class="username" >root</systemitem >, используя графический интерфейс, мне кажется, что она скорее основана на слиянии командной строки и графического интерфейса, а не просто на графическом интерфейсе.</para> </chapter> <chapter id="using-tdesu"> <title >Использование &tdesu;</title> <para >Использовать &tdesu; просто. Синтаксис вызова следующий:</para> <cmdsynopsis ><command >tdesu</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 >tdesu</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 >tdesu <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 >Этот параметр позволяет эффективно использовать &tdesu; в файлах <filename >.desktop</filename >. При этом &tdesu; проверяет файл, указанный в параметре <parameter >файл</parameter >. Если он доступен для записи текущему пользователю, &tdesu; запустит команду с правами этого пользователя. Иначе команда будет запущена с правами пользователя <parameter >пользователь</parameter > (root по умолчанию).</para> <para ><parameter >файл</parameter > анализируется следующим образом: если этот параметр начинается с <literal >/</literal >, то он считается абсолютным путём. Иначе — именем глобального файла конфигурации &kde;. Например, чтобы настроить менеджер входа в систему <application >tdm</application >, вам следует набрать <command >tdesu <option >-c tdmconfig -f tdmrc</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 >tdesu</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 >Остановить сервис tdesu. Подробности в разделе <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 >Хотя чаще всего &tdesu; используется для запуска команд с правами root, вы можете указать имя пользователя и соответствующий пароль.</para> </listitem> </varlistentry> </variablelist> </chapter> <chapter id="Internals"> <title >Внутренние особенности</title> <sect1 id="x-authentication"> <title >Аутентификация в X</title> <para >Запускаемая вами программа будет работать с идентификатором пользователя root и, в общем случае, не будет иметь прав для доступа к вашему дисплею X. &tdesu; исправляет это, добавляя cookie аутентификации для вашего дисплея во временный файл <filename >.Xauthority</filename >. После завершения выполнения команды файл удаляется. </para> <para >Если вы не используете систему X cookie, то &tdesu; обнаружит это и не будет добавлять новый cookie, однако никакой гарантии, что root получит доступ к вашему дисплею, не даётся.</para> </sect1> <sect1 id="interface-to-su"> <title >Взаимодействие с <command >su</command ></title> <para >&tdesu; использует системную команду <command >su</command >, чтобы получить привилегированный доступ. В этом разделе разъясняется, как &tdesu; это делает. </para> <para >Так как некоторые реализации <command >su</command > (например в &RedHat;) не позволяют задавать пароль из <literal >stdin</literal > (стандартного потока ввода), &tdesu; создаёт пару 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 >, &tdesu; запускает небольшую программу, называемую <application >tdesu_stub</application >. Она (запущенная с правами требуемого пользователя) запрашивает определённую информацию от &tdesu; через канал pty/tty (потоки ввода и вывода для этой программы), а затем уже выполняет программу пользователя. Передаваемая информация: номер X-дисплея, X cookie для аутентификации (если доступен), переменная <envar >PATH</envar > и команда для запуска. Такая вспомогательная программа нужна, потому что X cookie содержит секретную информацию и поэтому не может быть передан в командной строке.</para> </sect1> <sect1 id="password-checking"> <title >Проверка пароля</title> <para >&tdesu; проверяет введённый вами пароль и выдаёт сообщение об ошибке, если он не верен. Проверка организована с помощью выполнения программы-теста <filename >/bin/true</filename >. Если это возможно, то пароль считается правильным.</para> </sect1> <sect1 id="sec-password-keeping"> <title >Хранение паролей</title> <para >Для вашего удобства в &tdesu; реализован механизм хранения паролей. Если вас интересуют вопросы безопасности, прочитайте этот раздел.</para> <para >Запоминание паролей в &tdesu; создаёт небольшую дыру в системе безопасности вашей системы. Очевидно, что &tdesu; не позволяет никому, кроме пользователей с вашим идентификатором пользоваться этими паролями. Однако если это реализовать без предосторожностей, системный уровень безопасности <systemitem class="username" >root</systemitem > понизится до уровня обычного пользователя (вас). И человек, который получит доступ к вашей учётной записи, получит доступ уровня <systemitem class="username" >root</systemitem >. &tdesu; пытается не допустить этого. Схема безопасности, используемая им, на мой взгляд, достаточно безопасна.</para> <para >&tdesu; использует сервис под названием <application >tdesud</application >. Этот сервис ожидает команды с &UNIX;-сокета, расположенного в <filename >/tmp</filename >. Режим его доступа равен 0600, то есть только пользователь с вашим идентификатором может соединиться с ним. Если хранение паролей включено, &tdesu; выполняет команды через этот сервис. Он пишет команды и пароль пользователя <systemitem class="username" >root</systemitem > в сокет, и сервис выполняет команду <command >su</command >, как описано выше. После этого команда и пароль не теряются, а хранятся в течение указанного времени (устанавливается в модуле настройки). Если другой запрос на запуск такой же команды приходит в течение этого периода времени, клиент может не предоставлять пароль. Чтобы не дать человеку, получившему доступ к вашей учётной записи, украсть у сервиса пароль (например, запуском отладчика), sgid сервиса (группа при запуске) установлен в nogroup. Это не даёт обычным пользователям, в том числе и вам, получать пароли от процесса <application >tdesud</application >. Также этот сервис устанавливает переменную окружения <envar >DISPLAY</envar > в значение при запуске. Все, что сможет сделать взломщик — это запустить на вашем дисплее приложение.</para> <para >Слабое место в этой схеме в том, что запускаемые программы могут быть написаны без соблюдения правил защиты (например, программы с setuid <systemitem class="username" >root</systemitem >). Это означает, что они могут вызвать переполнение буферов или другие проблемы, а взломщик может использовать это.</para> <para >Использование хранения паролей — это компромисс между безопасностью и удобством. Подумайте и решите, что вам больше важно, и решите, будете ли вы им пользоваться.</para> </sect1> </chapter> <chapter id="Author"> <title >Автор</title> <para >&tdesu;</para> <para >© &Geert.Jansen;, 2000</para> <para >&tdesu; написал Геерт Янсен (Geert Jansen). Эта программа основана на &tdesu;, версии 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: -->