# &kppp; і питання безпеки

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

## Обмеження доступу до &kppp;

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

### Обмеження доступу на основі дозволів груп

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

    # chown root.dialout /opt/kde/bin/kppp
    # chmod 4750 /opt/kde/bin/kppp

Тут ми припускали, що &kde; було встановлено до `/opt/kde/`, а назвою нової групи є `dialout`.

### Обмеження доступу засобами &kppp;

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

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

    ivan
    yurko
    stepan

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

## Для &kppp; увімкнено SUID-біт! Як це вплине на безпеку системи?

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

- Одразу після запуску програми, &kppp; розгалужується.

- Основний процес, який обробляє всі дії, пов’язані з графічним інтерфейсом користувача (тобто взаємодією з користувачем), після відгалуження знімає з себе SUID-біт і виконується з правами звичайного користувача.

- Підлеглий процес зберігає права доступу, він відповідатиме за всі дії, для виконання яких потрібні права адміністратора (`root`). Щоб підвищити безпеку цієї частини програми, у ній не використовуються виклики бібліотек &kde; або &Qt;, лише виклики простих бібліотек. Вихідні коди, які відповідають за цей процес є дуже короткими (близько 500 рядків) і дуже добре документованими, отже ви можете легко перевірити код на наявність прогалин у безпеці.

- Основний і підлеглий процеси обмінюються відомостями за допомогою стандартного протоколу &UNIX;, IPC.

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