Wie installiere ich eine Anwendung per DEB-Datei nur für einen Benutzer?

33

Bei der Installation von Anwendungen über das Software Center oder über eine DEB-Datei werden diese normalerweise systemweit für alle Benutzer installiert.

Gibt es eine Möglichkeit, eine Anwendung nur für einen Benutzer zu installieren?

Takkat
quelle

Antworten:

5

Je nachdem, was Sie erreichen möchten, gibt es möglicherweise verschiedene Möglichkeiten, um diese Funktion auszuführen (oder zumindest einen abgedrehten Eindruck von der gewünschten Funktionalität zu vermitteln).

Bei der Installation von Software kommt es in vielerlei Hinsicht darauf an, Ressourcen verfügbar zu machen oder Zugriff auf Dinge zu gewähren, die bereits auf dem System vorhanden sind.

Unabhängig davon, ob Sie den Zugriff auf Drucker gewähren oder einem Benutzer erlauben, Programme in einem bestimmten Verzeichnis auszuführen, gibt es Möglichkeiten, dies zu erreichen. Auch wenn diese Lösungen in Ubuntu integriert sind, werden sie (natürlich) in der Regel eingesetzt hinzugefügt werden, nachdem eine .deb-Installation durchgeführt wurde.

Im Folgenden werden zwei allgemeine Klassen für die Steuerung nach der Installation aufgeführt, die hinzugefügt werden können. Beachten Sie, dass dies unter Berücksichtigung der richtigen Umgebung, z. B. wenn eine streng kontrollierte Gruppenrichtlinie vorhanden ist, möglicherweise einfacher ist, wenn Sie das Basissystem eingerichtet haben. Diese Art von Berechtigung kann sogar an LDAP oder ein ähnliches System gebunden sein, das die Authentifizierung und Autorisierung pro Benutzer oder Gruppe ermöglicht.

Sichtbarkeitskontrolle
Ich hatte selbst eine vielleicht etwas ähnliche Situation, aber in meinem Fall waren die Benutzer (noch) nicht sehr anspruchsvoll (alle unter 7 Jahren). Für mich hat es funktioniert, Gnome-Menüs auszublenden oder Desktop-Starter zu entfernen.

Wenn Sie das ausführbare Bit aus Verzeichnissen entfernen, können Prozesse diese nicht mehr durchsuchen oder durchlaufen. Es kann sie effektiv unsichtbar machen und sie benutzerseitig nicht verfügbar machen. Wenn Sie beispielsweise über eine Standardsystemrichtlinie verfügen, die Menüs basierend auf dem Dateizugriff erstellt, können Sie eine solche kosmetische Lösung installieren und sie dann mit geringem zusätzlichen Aufwand für nachfolgende Installationen verwenden.

Ausführungskontrolle Die Kontrolle
der Ressource kann über Unix-Berechtigungen, Apparmor-Profile, SELinux-Berechtigungen usw. erfolgen. Abhängig von der Anwendung kann es auch andere Kontrollfilterebenen geben. In Ermangelung gezielterer Lösungen müssen Sie möglicherweise Wrapper für bestimmte Programme schreiben, um den Benutzer- oder Prozesszugriff zu steuern.

belacqua
quelle
3
+1 für die Trennung der Sichtbarkeit und der Ausführungskontrolle Aspekt
Takkat
10

Naja dpkg, hilft dir nicht weiter, da dies nicht das gestalterische Ziel ist. Es soll eine alleinige Erhebung von Paketen sein, die auf einem System installiert sind.

Das Einzige, woran ich mich erinnere, ist, das Paket zu extrahieren und zu versuchen, die Dateien manuell im Ausgangsverzeichnis abzulegen.

Dies funktioniert jedoch nur für einige Dinge. Viele Pakete sind in Chunks aufgeteilt (ausführbare Dateien oder Skripte /usr/bin, Bibliotheken /libund andere Garb- Ins /usr/shareusw.), und diese Speicherorte werden von den Build-Skripten fest codiert. Wenn Sie also versuchen, so etwas hineinzuziehen ~, wird es zerbrechen. Sie könnten Stunden damit verbringen, die Abhängigkeiten zu lösen, aber Sie könnten etwas Nützliches mit Ihrer Zeit anfangen, wie das Heilmittel für Krebs zu finden oder einige der Schönheiten der Welt in sich aufzunehmen.

Sie tun es viel besser, wenn Sie eine nicht gepackte Version von jemandem kaufen, der die Software schreibt. Fast alle freie Software ist in irgendeiner Form von komprimiertem Archiv als Quelle verfügbar, also schnappen Sie sich das und erstellen Sie es einfach. Du machst den make installSchritt nicht. Ihre App wurde erstellt. Platzieren Sie sie einfach dort, wo Sie sie möchten.

Oli
quelle
1
Was die letzte Option betrifft: Es scheint mir, dass es in einigen (einfachen Programm-) Fällen hilfreich sein kann, aber normalerweise installiert das Paket zum Beispiel Init-Skripte /etc/init, sucht nach Konfigurationsdateien in /etcoder hat einige andere Pfade fest codiert.
Ordnen Sie den
2
Projekte, die auf autoconf basieren, können das Festlegen eines benutzerdefinierten Installationsverzeichnisses über ermöglichen ./configure --prefix=$HOME/local.
Ingo Karkat
6

Ich weiß nicht zu viel über dieses Thema, aber es scheint, als ob Sie aufgrund der anderen Antworten in der Lage sein könnten, ein Paket in einem anderen Verzeichnis zu installieren, anstatt /mit dpkgdem --rootParameter chroot" installiert "in (das kann natürlich ein Verzeichnis im Home-Verzeichnis des Benutzers sein).

Um ein Paket für einen anderen Benutzer als zu installieren root, ist es möglicherweise möglich, den obigen Prozess mit fakechrootanstelle von zu verwenden chroot.

Disclaimer : Ich habe das nicht versuchen, und haben nicht viel Erfahrung zu der Zeit mit zu schreiben dpkgoder chrootaber von dem, was ich tun zu diesen Tools kennen, ist dieser Prozess nur könnte funktionieren.

Links, die Informationen enthalten, die für Personen nützlich sein können, die die Wirkung von chrootohne rootFähigkeiten erzielen möchten :

Aktualisieren

Ich habe jetzt ein wenig mit Dingen zu tun, die dieses Thema berühren, und etwas mehr herausgefunden ...

Fragmente (lokale Umgebungsbausteine):

  • Fakechroot - emuliertchroot(1)
  • Debootstrap - Erstellt eine andere Debian-Dateisystemhierarchie in einem Verzeichnis
  • Fakeroot-NG / fakeroot - Kann vorgeben, für einige Dinge root zu sein
  • EmDebian - Eine Debian-Variante, die weniger Platz benötigt und häufig in Chroot-Umgebungen verwendet wird
  • binfmt_misc - Kann Dateien unter Verwendung ihrer Interpreter ausführen, als wären sie native Binärdateien. nützlich zusammen mit qemu-Benutzer mit Binärdateien arbeiten (oder in einem (falschen) chroot) Fremd Architekturen ( scripts / qemu-binfmt-conf.sh , die mit dem QEMU Quellcode kommen automatisiert diese)
  • Qemu-Benutzerbereich - Kann Binärdateien anderer Architekturen ausführen. kann mit einigen dieser Tools verwendet werden, wenn sie einige Prozessorarchitekturen nicht unterstützen
  • LwIP - Ein TCP / IP-Netzwerkstapel, der vom Benutzerbereich ausgeführt werden kann

Vollständig (vollständige lokale Umgebungsanbieter):

  • Benutzermodus Linux - führt ein anderes Linux-System als regulären Prozess / Programm aus
  • Qemu - Führen Sie einen vollständigen virtuellen Computer aus
  • Proot - Bietet Funktionalitäten chroot(1), mount --bind, binfmt_misc, und Programme von anderen Architekturen ausgeführt qemu-user-Raum mit
  • Linux-Namespaces - Ermöglichen die Verwendung des vollständigen Stamms in einer lokalen Umgebung bei Verwendung von User-Namespaces , eine Funktion, die in Linux-Kernel-Versionen 3.8 und höher verfügbar ist.

Zusammenfassung : DEB-Pakete können für eine lokale Umgebung installiert werden, indem Root-Berechtigungen lokal emuliert werden oder tatsächlich vorhanden sind.

Abbafei
quelle
3
Fühlen Sie sich frei, Ihre Antwort vollständig neu zu formatieren, wenn Sie Informationen haben, die Ihren vorherigen Informationen widersprechen (oder wenn Sie glauben, dass sie etwas hinzufügen). In vielen Fällen ist Ihre Antwort klarer, wenn Sie eine neue Formulierung eingeben, anstatt zusätzliche Abschnitte "Bearbeiten" oder "Aktualisieren" hinzuzufügen. Ihre Informationen sind interessant, aber die möglicherweise relevantesten Teile stecken unten fest.
Belacqua
@jgbelacqua - neu formatiert, danke für den Tipp.
Abbafei
4

Sie können wahrscheinlich die --rootOption dpkgzum Installieren in ein anderes Verzeichnis verwenden. Aber wird wahrscheinlich auf Probleme stoßen, wenn die Anwendung Sachen an festen Orten sucht wie /etc.

Kurz gesagt, ich glaube nicht, dass es einen einfachen Weg gibt.

Dariel Dato-on
quelle
2

Sie können den Eigentümer der ausführbaren Datei so ändern, dass nur ein Benutzer sie ausführen kann. Anschließend können Sie die Anwendung bei Bedarf aus den Menüs anderer Benutzer entfernen.

ordnen
quelle
1
Eine häufige Motivation für die Installation einer Anwendung für einen einzelnen Benutzer ist die Vermeidung von Administratorrechten für die Installation.
ændrük
@ ændrük Aber wenn er bereits von einer .deb installiert, nehmen wir dann keine Administratorrechte an?
Belacqua
@jgbelacqua Meines Wissens nach erfordert die Installation von einer .deb-Datei Administratorrechte. Generell sollte für die Installation von "Nur für einen Benutzer" jedoch niemals eine Erhöhung der Berechtigungen erforderlich sein, die für die systemweite Verwaltung verwendet werden. Zum Beispiel installiere ich häufig Programme nur für mich selbst, indem ich sie einfüge ~/bin. In dieser Frage besteht Unklarheit darüber, ob Takkat den Zugriff / die Sichtbarkeit einer Mehrbenutzeranwendung einschränken oder eine Einzelbenutzeranwendung installieren möchte. Ihre und die Fragen von Arrangement verwenden die erstere Interpretation, und der Rest übernimmt die letztere.
ændrük
1

Zweifelhaft.

Bei den Debs handelt es sich hauptsächlich um Archive , die bei der Installation in das Stammverzeichnis Ihres Dateisystems extrahiert werden (plus einige Konfigurationsdateien). Wenn Sie sie nur für einen Benutzer installieren möchten, müssen Sie sie irgendwie im Ordner / home / user installieren. Selbst wenn Sie dies tun, würden sie nicht funktionieren, da zB Anwendungs-Binärdateien nicht in / usr / bin (oder ähnlichem) landen und das System sie nicht findet, wenn Sie versuchen, sie zu starten. Ebenso wären Bibliotheken etc. nutzlos, da das System nicht wissen würde, dass sich irgendwo in der / home befinden. Sie könnten den Brute-Force-Ansatz ausprobieren und die PATH-Variable so anpassen, dass sie zeigt, wo Sie die Dateien aus dem deb-Archiv extrahiert haben, aber das wäre nicht nur SEHR unsicher, kann aber möglicherweise zu Kompatibilitätsproblemen führen (z. B. funktionieren Menüeinträge nicht, da GNOME die .desktop-Dateien in / usr / share / applications erweitert).

Wenn Sie ein Paket nur für einige Benutzer installiert haben, kann dies außerdem zu verrückten Abhängigkeitsproblemen führen, wenn ein anderes Benutzerpaket, das mit einem anderen, das Sie nur für sich selbst installiert haben, in Konflikt steht, und möglicherweise Tonnen anderer Probleme im Zusammenhang mit der Paketverwaltung auftreten.

All diese Probleme machen es extrem schwierig, Pakete für Benutzer separat zu verwalten. Es scheint daher nicht möglich zu sein, sie nur für einen Benutzer zu installieren, da die Idee hinter den .debs dies nicht zulässt.

Rafał Cieślak
quelle