Ще одна альтернатива - підказки Linux From Scratch :
Більше управління та управління пакетами за допомогою користувачів пакету
3 Користувачі пакету
3.1 Вступ
Основна ідея цієї схеми пояснюється легко. Кожен пакет належить певному «користувачеві пакету». Встановлюючи пакет, ви будуєте та встановлюєте пакунок як цей користувач пакету, внаслідок чого всі встановлені файли належать користувачеві пакету. Як наслідок, усі звичайні завдання управління пакетом можна комфортно досягти за допомогою використання стандартних утиліт командного рядка. Простий ls -l <file>
підкаже, наприклад, до якого пакета
<file>
належить, і find -user ...
команда дозволяє виконати операцію над усіма файлами, що належать певному пакету, наприклад, видаліть їх для видалення пакета.
Але управління пакетами - це не все, для чого користувачі пакунків хороші. Оскільки користувачі пакету не мають root-прав, установка пакету обмежена тим, що він може робити. Одне, що користувачеві пакету заборонено робити, наприклад, це перезаписати файли іншого користувача пакета. Сутички між різними пакетами, які хочуть встановити бінарний, бібліотечний або заголовний файл з тим самим іменем, зустрічаються частіше, ніж можна подумати. З користувачами пакету ви ніколи не ризикуєте встановити пакет B, знищивши файли з пакета A мовчки, не помічаючи. Кожна спроба зробити це під час встановлення пакету B призведе до помилки "Дозвіл відмовлено" або "Операція не дозволена", щоб у вас була можливість вжити відповідних кроків. Інша річ, яку користувачі пакету забороняють робити, це встановити встановлені кореневі бінарні файли. Рішення зробити коріння бінарного настроюваного корі - це також те, що розсудливий адміністратор не хоче залишати лише творцю програмного пакету.
Зазвичай облікові записи користувачів пакету не мають дійсного пароля, так що su
користувач пакету може виконувати лише root , що гарантує, що користувачі пакету не відкриють додатковий шлях до системи та підривають безпеку. Але ви можете все-таки встановити паролі, щоб дозволити співавтору, якому ви хочете мати змогу встановлювати та підтримувати певні програмні пакети, робити це, не маючи доступу до власного кореневого облікового запису. Наприклад, цей адміністратор може встановити, видалити, змінити додаткові бібліотеки, які можуть знадобитися його робочій групі. Однак він не зможе видалити або змінити бібліотеки, які не належать йому / їй, наприклад, libc.
Після цієї першої грубої пропозиції я знайшов розвинений варіант:
crablfs - Система управління пакетами на основі користувачів
Це crablfs
найновіший зразок управління пакунками, що використовує унікальні посібники та посібники для управління пакунками, але в sourceforge він знову еволюціонує в ulfs:
uLFS: Ваш керований та багаторазовий Linux з нуля
Для причинно-наслідкових користувачів встановлених пакетів я думаю, що LFS-рішення "користувачів пакетів" є легким, менш інвазивним та елегантним. Коротше кажучи, ви встановлюєте пакети в /usr/local
або /home/user/local
відслідковуєте файли, використовуючи унікальні посібники та гіди для кожного пакету, але всі файли розміщуєте в традиційних місцях, загальних каталогах /usr/local/bin
, /usr/local/lib
як це є у всіх поширених дистрибутивах Linux ... Заключення файлів та небажане перезапис або видалення файлів уникнути акуратного хитрості Linux, поясненого Маттіасом С. Бенкманом у more_control_and_pkg_man.txt, для якого потрібні лише нормальні маніпуляції з дозволом на файли та каталоги, наприклад, липкий дозвіл бітів для каталогів, щоб уникнути небажаних перезаписів файлів:
3.3 Групи
Кожен користувач пакету належить щонайменше до 2 груп. Однією з цих груп є група «встановити», до якої належать усі користувачі пакунків (і лише користувачі пакунків). Усі каталоги, у яких пакетам дозволено встановлювати речі, належать до групи встановлення. Сюди входять каталоги, такі як / bin та / usr / bin, але виключаються каталоги типу / root або /. Каталоги, що належать групі встановлення, завжди доступні для запису групи. Цього буде достатньо для аспектів управління пакетом, але без подальшої підготовки це не дасть додаткової безпеки або контролю, оскільки кожен пакет міг би замінити файли з іншого пакету (зміна буде видно у висновку зls -l
, хоча). З цієї причини всі встановлені каталоги отримують атрибут sticky. Це дозволяє користувачам створювати нові файли та видаляти або змінювати власні файли в каталозі, але файли інших користувачів не можна змінювати чи видаляти. У решті цього підказу, щоразу, коли використовується термін "каталог встановлення", він посилається на каталог, який належить до групи встановлення, є груповим записом та липким. IOW, щоб перетворитись <dir>
на каталог встановлення, який ви зробили б
chgrp install && chmod g + w, o + t
Для мене це виглядає як просте і розумне рішення! Я використовував цю схему в моїй збірці LFS, і це робоче рішення ...