Як пакет Debian повинен створювати облікові записи користувачів?


33

У пакеті qqq.debвстановлена ​​програма, qqqяка повинна працювати з uqqqоблікового запису користувача. Пакет складається з qqqпрограми, qqq.confконфігураційного файла та /etc/init.d/qqqinitscript.

Як пакет повинен керувати створенням користувача uqqq? Чи є найкращі практики чи офіційні вказівки щодо цього?

  1. Просто створіть користувача автоматично uqqqв пості;
  2. Створіть користувача автоматично при першому запуску із /etc/init.d/qqqсценарію;
  3. Створіть користувача автоматично при першому запуску qqqпрограми (без аргументів)
  4. Не створюйте жодних облікових записів користувачів, не відмовляйтеся від запуску, якщо користувач явно не створив адміністратор (наприклад, використовуючи qqq --create-user);
  5. Не створюйте жодних облікових записів користувачів, запускайте небезпечно з root за умовчанням;
  6. Інтерактивно запитайте у postinst, init.d скрипт чи qqqсам, чи створити користувача.

Чи повинен пакет видалити обліковий запис користувача при видаленні?


7
Найпростіший спосіб отримати відповіді на це питання - переглянути сценарії до / після встановлення офіційних пакетів Debian. Просто запустіть grep adduser /var/lib/dpkg/info/*.postinstбудь-яку систему на базі Debian, щоб отримати багато прикладів.
jofel

Коли adduserвикористовується, вона також повинна залежати від упаковки. Дивіться: lintian.debian.org/tags/…
Lekensteyn

Відповіді:


22

Вікі Debian мають дещо більш вичерпні та конкретні вказівки, ніж уже згаданий Посібник з політики Debian. Див. Розділ AccountHandlingInMaintainerScripts :

Програма adduser робить все правильно, якщо викликається за допомогою параметра --system. Тому зазвичай потрібно лише зателефонувати

adduser --система $ USERNAME

у своєму пості, щоб створити обліковий запис із відключеними входами, основною групою ноггруп та домашнім каталогом під / home. Якщо ви хочете інші варіанти, додайте їх, як хочете.

Зазвичай не потрібно перехресно перевіряти, чи вже існує акаунт, оскільки adduser - система, як правило, робить правильно. Якщо ні, повідомте про помилку в Adduser, щоб прості ваші сценарії підтримки були простими.

Поради, які вона надає щодо видалення облікових записів, є непереконливими. Однак зазначу, що відповідна порада для Fedora не дає жодних результатів.

Не видаляйте користувачів або групи Ми ніколи не видаляємо користувачів або групи, створені пакетами. Немає жодного розумного способу перевірити, чи залишилися файли, що належать цим користувачам / групам (і навіть якщо вони будуть, що ми з ними робитимемо?), А залишити їх позаду власності, що вказує на теперішніх неіснуючих користувачів / груп, може призвести до проблем із безпекою. коли пізніше створюється семантично не пов'язаний користувач / група і повторно використовує UID / GID. Крім того, у деяких налаштуваннях видалення користувача / групи може бути неможливим або / або бажаним (наприклад, при використанні спільної, віддаленої бази даних користувача / групи). Прибирання невикористаних користувачів / груп залишається системним адміністраторам, щоб вони подбали про їхнє бажання.


12

Будучи адміністратором, який встановлює пакети, я очікував, що мої пакети автоматично створюватимуть потрібних користувачів або перед, або після посту, так що будь-які файли, необхідні для власності користувача, можуть бути зроблені таким чином перед запуском програми.

Ваша програма повинна запускатися як root, лише якщо вона потребує (наприклад, прив’язати до привілейованого порту), а в ідеалі повинна скинути свої привілеї, як тільки вона закінчить робити те, що потрібно.

Ви можете подивитися, як інші (встановлені) пакети обробляють це за допомогою

grep -l adduser /var/lib/dpkg/info/*postinst /var/lib/dpkg/info/*preinst

і читання перелічених файлів (більшість займає більше ніж один рядок варіантів).

Як не дивно, всі мої встановлені пакети, які створюють користувач, використовують adduserдля додавання користувачів, але пакет adduser не є необхідним пакетом, тому ваш пакет повинен бути побудований, щоб залежати від нього. useraddПрограма використовується пакет libuuid1, і є частиною passwdпакету , який є обов'язковим пакетом.


1
Це жахливо. Перевірте правильний спосіб створення сценаріїв, а не зловживання вручну.
LtWorf

--quietпідхід здається дуже популярним
vidstige

6

Розділ 10.9. Дозволи та власники у Посібнику з політик Debian містять те, що ви шукаєте (від "версія 3.9.5.0, 2013-10-28"):

Якщо вам потрібно створити нового користувача або групу для свого пакету, є дві можливості. По-перше, вам може знадобитися зробити деякі файли в двійковому пакеті власністю цього користувача або групи, або вам може знадобитися скласти ідентифікатор користувача або групи (а не лише ім'я) у двійковий файл (хоча цього слід уникати, якщо можливо, оскільки в цьому випадку вам потрібен статично виділений ідентифікатор).

Якщо вам потрібен статично виділений ідентифікатор, потрібно запитати користувача або ідентифікатора групи у base-passwd' maintainer, and must not release the package until you have been allocated one. Once you have been allocated one you must either make the package depend on a version of the базового passwd 'пакета з ідентифікатором, присутнього в /etc/passwd' or / etc / group', або домовитись, щоб ваш пакет створив користувача або групу з правильним id (використовуючи adduser') in itspreinst 'або postinst'. (Doing it in thepostinst' слід віддати перевагу, якщо це можливо, інакше буде потрібна попередня залежність від пакета `adduser '.)

Примітка: The Debian-Devel список досить активний і відповіді на такі питання теж (хоча цей приклад з 2003 року).


3
Отже, коротка спрощена відповідь - «Використовувати adduserв postinst».
Ві.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.