Eine weitere Alternative sind die Linux From Scratch-Hinweise :
Mehr Kontrolle und Paketverwaltung mit Paketbenutzern
3 Paketbenutzer
3.1 Einführung
Die Grundidee dieses Schemas ist leicht zu erklären. Jedes Paket gehört einem bestimmten "Paketbenutzer". Wenn Sie ein Paket installieren, erstellen und installieren Sie das Paket als dieser Paketbenutzer, wodurch alle installierten Dateien dem Paketbenutzer gehören. Infolgedessen können alle üblichen Paketverwaltungsaufgaben bequem durch die Verwendung von Standardbefehlszeilendienstprogrammen ausgeführt werden. Ein einfacher Befehl ls -l <file>
sagt Ihnen beispielsweise, zu welchem Paket es
<file>
gehört, und ein find -user ...
Befehl ermöglicht es Ihnen, alle zu einem bestimmten Paket gehörenden Dateien zu bearbeiten, z. B. zu löschen, um das Paket zu deinstallieren.
Die Paketverwaltung ist jedoch nicht alles, wofür Paketbenutzer gut sind. Da Paketbenutzer nicht über Root-Rechte verfügen, ist die Installation eines Pakets in ihren Möglichkeiten begrenzt. Eine Sache, die ein Paketbenutzer nicht tun darf, ist beispielsweise, Dateien von einem anderen Paketbenutzer zu überschreiben. Konflikte zwischen verschiedenen Paketen, die eine Binär-, Bibliotheks- oder Headerdatei mit demselben Namen installieren möchten, sind häufiger als Sie vielleicht denken. Bei Paketbenutzern besteht nie das Risiko, dass bei der Installation von Paket B Dateien aus Paket A unbemerkt gelöscht werden. Bei jedem Versuch, dies während der Installation von Paket B zu tun, wird der Fehler "Berechtigung verweigert" oder "Vorgang nicht zulässig" angezeigt, sodass Sie die Möglichkeit haben, die entsprechenden Schritte auszuführen. Eine andere Sache, die Paketbenutzer nicht tun dürfen, ist die Installation von setuid-Root-Binärdateien. Die Entscheidung, ein binäres setuid-Stammverzeichnis zu erstellen, möchte ein umsichtiger Administrator nicht dem Ersteller eines Softwarepakets überlassen.
In der Regel haben Paketbenutzerkonten kein gültiges Kennwort, sodass nur Root-Benutzer Zugriff su
auf ein Paket haben. Dadurch wird sichergestellt, dass Paketbenutzer keinen zusätzlichen Zugang zum System erhalten und die Sicherheit untergraben. Sie können jedoch trotzdem Kennwörter festlegen, damit ein Co-Administrator, der bestimmte Softwarepakete installieren und warten kann, dies tun kann, ohne Zugriff auf das eigentliche Root-Konto. Dieser Co-Administrator kann beispielsweise zusätzliche Bibliotheken installieren, löschen und ändern, die für seine Arbeitsgruppe erforderlich sein könnten. Er ist jedoch nicht in der Lage, Bibliotheken wie libc zu entfernen oder zu ändern, die ihm nicht gehören.
Nach diesem ersten groben Vorschlag fand ich eine weiterentwickelte Variante:
crablfs - Benutzerbasiertes Paketverwaltungssystem
Dies crablfs
ist das neueste Exemplar der Paketverwaltung, das eindeutige UIDs und GIDs für die Paketverwaltung verwendet. Auf SourceForge wird es jedoch in ulfs erneut weiterentwickelt:
uLFS: Ihr verwaltbares und wiederverwendbares Linux von Grund auf neu
Für kausale Benutzer installierter Pakete halte ich die LFS-Lösung "package users" für eine leichte, weniger invasive und elegante Lösung. Kurz gesagt, Sie installieren Pakete in /usr/local
oder /home/user/local
und verfolgen Dateien unter Verwendung eindeutiger UIDs und GIDs für jedes Paket, speichern jedoch alle Dateien an den herkömmlichen Orten, in gemeinsamen Verzeichnissen /usr/local/bin
, /usr/local/lib
wie es in allen gängigen Linux-Distributionen der Fall ist ... Verschließen von Dateien und unerwünschtes Überschreiben oder Löschen von Dateien Dies wird durch einen von Matthias S. Benkmann in more_control_and_pkg_man.txt erläuterten, sauberen Linux-Trick vermieden, der nur eine normale Manipulation der Datei- und Verzeichnisberechtigungen erfordert, z. B. die Sticky-Bit-Berechtigung für Verzeichnisse, um unerwünschtes Überschreiben von Dateien zu vermeiden:
3.3 Gruppen
Jeder Paketbenutzer gehört mindestens 2 Gruppen an. Eine dieser Gruppen ist die Gruppe "install", zu der alle Paketbenutzer (und nur Paketbenutzer) gehören. Alle Verzeichnisse, in denen Pakete Dateien installieren dürfen, gehören zur Installationsgruppe. Dies schließt Verzeichnisse wie / bin und / usr / bin ein, schließt jedoch Verzeichnisse wie / root oder / aus. Die Verzeichnisse der Installationsgruppe sind immer für Gruppen beschreibbar. Dies würde für die Aspekte der Paketverwaltung ausreichen, würde jedoch ohne weitere Vorbereitung keine zusätzliche Sicherheit oder Kontrolle bieten, da jedes Paket die Dateien eines anderen Pakets ersetzen könnte (die Änderung wäre in der Ausgabe von sichtbar)ls -l
obwohl). Aus diesem Grund erhalten alle Installationsverzeichnisse das Attribut sticky. Auf diese Weise können Benutzer neue Dateien erstellen und ihre eigenen Dateien im Verzeichnis löschen oder ändern. Dateien anderer Benutzer können jedoch nicht geändert oder entfernt werden. Wenn im Rest dieses Hinweises der Begriff "Installationsverzeichnis" verwendet wird, bezieht er sich auf ein Verzeichnis, das zur Gruppeninstallation gehört, gruppenbeschreibbar und dauerhaft ist. IOW, <dir>
in ein Installationsverzeichnis zu verwandeln, das Sie tun würden
chgrp installiere && chmod g + w, o + t
Für mich sieht es nach einer einfachen und cleveren Lösung aus! Ich habe dieses Schema in meinem LFS-Build verwendet und es ist eine funktionierende Lösung ...