<chapter id="security">
<title
>&kppp; і питання безпеки</title>

<para
>Цей розділ призначено для тих користувачів, які мають права адміністраторів (<systemitem
>root</systemitem
>) і ставлять перед собою мету, що полягає у підвищенні безпеки системи, або просто цікавляться технічними аспектами програми. Вам не обов’язково читати цей розділ, якщо ви користуєтеся &Linux; вдома, але все ж з нього ви зможете дізнатися про декілька корисних речей.</para>

<sect1 id="security-restricting-access">
<title
>Обмеження доступу до &kppp;</title>

<para
>Ймовірно, системний адміністратор забажає обмежити коло осіб, яким буде дозволено доступ до користування &kppp;. Існує декілька способів досягти цієї мети.</para>

<sect2 id="security-group-permissions">
<title
>Обмеження доступу на основі дозволів груп</title>

<para
>Створіть нову групу (ймовірно, її слід назвати <systemitem
>dialout</systemitem
> або щось подібне), і додайте всіх користувачів, яким буде дозволено доступ до &kppp; до цієї групи. Потім введіть у командному рядку такі команди:</para>

<screen
><prompt
>#</prompt
> <userinput
><command
>chown</command
> <option
>root.dialout</option
> <filename
>/opt/kde/bin/kppp</filename
></userinput>
<prompt
>#</prompt
> <userinput
><command
>chmod</command
> <option
>4750</option
> <filename
>/opt/kde/bin/kppp</filename
></userinput
>
</screen>

<para
>Тут ми припускали, що &kde; було встановлено до <filename class="directory"
> /opt/kde/</filename
>, а назвою нової групи є <systemitem
>dialout</systemitem
>.</para>

</sect2>

<sect2 id="security-kppps-way">
<title
>Обмеження доступу засобами &kppp;</title>

<para
>Перш ніж виконувати будь-які дії, &kppp; перевіряє наявність файла з назвою <filename
>/etc/kppp.allow</filename
>. Якщо такий файл існує, вихід на зовнішню лінію буде дозволено лише переліченим у цьому файлі користувачам. Цей файл має бути придатним для читання для всіх користувачів (але, звичайно ж, <emphasis
>НЕ</emphasis
> для запису). Використовувати можна лише назви облікових записів, використовувати <acronym
>UID</acronym
> не можна. Ось коротенький приклад вмісту такого файла:</para>

<screen
># /etc/kppp.allow
# рядки коментарів, на зразок цього, буде
# проігноровано разом з порожніми рядками

ivan
yurko
stepan
</screen>

<para
>У наведеному вище прикладі, доступ до зовнішньої лінії матимуть лише користувачі <systemitem
>ivan</systemitem
>, <systemitem
>yurko</systemitem
> і <systemitem
>stepan</systemitem
>, так само, як будь-який користувач з <acronym
>UID</acronym
>, який починається з 0 (отже, вам не обов’язково явно вказувати користувача root у цьому файлі).</para>

</sect2>

</sect1>

<sect1 id="security-why-suid">
<title
>Для &kppp; увімкнено <acronym
>SUID</acronym
>-біт! Як це вплине на безпеку системи?</title>

<para
>Майже неможливо написати інструмент додзвону, який не мав би увімкненого біту <acronym
>SUID</acronym
> і був водночас безпечним і простим у користуванні для недосвідчених користувачів. У &kppp; питання безпеки вирішено за допомогою наведеної нижче стратегії.</para>

<itemizedlist>
<listitem>
<para
>Одразу після запуску програми, &kppp; розгалужується.</para>
</listitem>
<listitem>
<para
>Основний процес, який обробляє всі дії, пов’язані з графічним інтерфейсом користувача (тобто взаємодією з користувачем), після відгалуження знімає з себе <acronym
>SUID</acronym
>-біт і виконується з правами звичайного користувача.</para>
</listitem>
<listitem>
<para
>Підлеглий процес зберігає права доступу, він відповідатиме за всі дії, для виконання яких потрібні права адміністратора (<systemitem
>root</systemitem
>). Щоб підвищити безпеку цієї частини програми, у ній не використовуються виклики бібліотек &kde; або &Qt;, лише виклики простих бібліотек. Вихідні коди, які відповідають за цей процес є дуже короткими (близько 500 рядків) і дуже добре документованими, отже ви можете легко перевірити код на наявність прогалин у безпеці.</para>
</listitem>
<listitem>
<para
>Основний і підлеглий процеси обмінюються відомостями за допомогою стандартного протоколу &UNIX;, <acronym
>IPC</acronym
>.</para>
</listitem>
</itemizedlist>

<para
>Особлива подяка Harri Porten за те, що він написав цю частину коду. Це здавалося неможливим, але він впорався з роботою за один тиждень.</para>

</sect1>

</chapter>
