Table of Contents

Створення нових користувачів і груп для програм або системних сервісів

Запуск програм від імені root — погана практика безпеки, оскільки будь-яка вразливість у програмі надає доступ до root-привілеїв у системі OpenWrt.

З цієї причини багато застосунків налаштовано так, щоб запускатися від імені окремого користувача без root-доступу, без доступу до shell (командного рядка) і з обмеженим доступом лише до окремих каталогів (зазвичай лише конфігурацій і даних сервісу).

Додавання нового користувача

# opkg update
# opkg install shadow-useradd
# useradd -r -s /bin/false service-name

Файл, де зберігаються всі користувачі, — це `/etc/passwd`. Ви можете переглянути UID та GID нового користувача (і змінити їх за потреби). Приклад:

# cat /etc/passwd
root:x:0:0:root:/root:/bin/ash
daemon:*:1:1:daemon:/var:/bin/false
ftp:*:55:55:ftp:/home/ftp:/bin/false
network:*:101:101:network:/var:/bin/false
nobody:*:65534:65534:nobody:/var:/bin/false
dnsmasq:x:453:453:dnsmasq:/var/run/dnsmasq:/bin/false
docker:x:65536:65536:docker:/var/run/docker:/bin/false
ubus:x:81:81:ubus:/var/run/ubus:/bin/false

Ми бачимо кількох користувачів, серед яких перший — “root” (адміністратор), а решта належать до системних сервісів. Залежно від встановлених вами сервісів цей список може бути більшим або меншим.

Кожен рядок — це окремий користувач, а поля розділені двокрапкою. Поля мають таке значення:

  1. Ім’я користувача
  2. Зашифрований пароль
  3. UID — числовий ідентифікатор користувача
  4. GID — числовий ідентифікатор групи
  5. Повне ім’я користувача (GECOS)
  6. Домашній каталог користувача
  7. Shell ( /bin/ash — це дійсний shell в OpenWrt; /bin/false — щоб заборонити доступ до shell)

Щоб додати користувача вручну, відкрийте файл `/etc/passwd` і додайте новий рядок у відповідному форматі. Ім’я користувача та UID мають бути унікальними. Призначте групу (наприклад, 100 — група “users” в OpenWrt) і shell (/bin/false — щоб заборонити логін).

# vi /etc/passwd

Приклад нового рядка:

testuser:x:501:501:testuser:/home/user:/bin/ash

Призначте пароль новому користувачу:

# passwd testuser

Після чого буде виведено:

Changing password for user testuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

Додавання груп

У типовій Linux-системі всі звичайні користувачі належать до групи “users”. Якщо потрібно створити нову групу або додати користувача до інших груп, змініть файл `/etc/group`.

Приклад рядка:

cvs::102:chris,logan,david,root

Поля: назва групи, пароль групи, GID, учасники (через кому). Щоб створити нову групу, додайте новий рядок із унікальним GID і списком учасників. Користувачам потрібно перелогінитися, щоб зміни вступили в дію.

Створення домашнього каталогу користувача

Створіть домашній каталог користувача (відповідно до `/etc/passwd`) і призначте йому власника:

# mkdir /home/testuser
# chown testuser /home/testuser

Видалення користувачів

Щоб видалити користувача:

  1. Видаліть рядок користувача з `/etc/passwd`
  2. Видаліть ім’я користувача з груп у файлі `/etc/group`
  3. За бажанням — видаліть домашній каталог користувача:
# rm -r /home/testuser