Re: spezieller lib-Pfad pro user

From: Marc Santhoff <M.Santhoff(at)t-online.de>
Date: Fri, 11 Aug 2006 14:27:30 +0200

Am Freitag, den 11.08.2006, 13:17 +0200 schrieb Oliver Fromme:
> Marc Santhoff wrote:
> > ich möchte auf einem Rechner den Benutzern erlauben, eigene Bibliotheken
> > zu laden, also nicht nur Programme zu übersetzen und laufen zu lassen
> > sondern auch lib's.
>
> Das ist per Default jedem Benutzer erlaubt, und er kann es
> auf verschiedene Weise tun:
>
> 1. Bereits beim Compilieren + Linken eines Programms kann
> ein Benutzer einen (oder mehrere) Library-Pfade fest-
> legen. Dies geht mit der Option -rpath des Linkers
> ld(1), z.B.:
> ld -rpath /home/marc/lib -lmeinelib -o foo foo.o
> Verwendet man cc(1) bzw. gcc(1) zum Linken, kann man
> die ld(1)-Option mit der Option -Xlinker übergeben,
> siehe die Manpage.

Ah, das wußte ich noch nicht. Klingt auch praktisch.

> 2. Man kann das Binary einfach statisch linken (was aller-
> dings zu Portabilitäts- und Effizienzproblemen führen
> kann, wenn man nicht aufpaßt).

Geht technisch ist aber mitunter ein (L)GPL-Problem und auch bei
diversen build-Mechanismen (Makefile, automake) nicht ganz einfach
umzusetzen (ohne es wirklich versucht zu haben).

> 3. Wenn man bereits ein fertiges Binary hat und es nicht
> neu linken will, kann man mit der Umgebungsvariable
> LD_LIBRARY_PATH einen Pfad festlegen, wo Libraries
> gesucht werden sollen.

Jupp, so hat es ja jetzt auch funktioniert. :)

> 4. Wenn man eine bestimmte Library mit einem Binary laden
> möchte, kann man das per LD_PRELOAD. (Vorsicht: Damit
> werden Symbole in anderen Libraries -- inkl. libc --
> überschrieben. Das kann man zu seinem Vorteil nutzen,
> es kann aber auch unbeabsichtigte Effekte haben.)

Ist wohl eher ein Sonderfall bei hartnäckigen Problemen, etwa wenn man
zwei VErsionen eine gleichnamigen Bibliothek benutzen muß.

> > Die sollen dann aber nur für diesen Benutzer
> > installiert werden können (unter $HOME/local/ oder so).
>
> Üblicher wäre wohl $HOME/lib.

Das mag sein, aber es geht hier um PRogramme, die auch noch bin und doc
oder share mitbringen, aber nicht unter /usr/local landen sollen.

Ein Grund dafür ist, daß sich die Version ständig ändert und auch immer
neu installiert werden soll. Das darf der Benutzer dann selbst machen.

Ein weitere Grund ist, daß wirklich nur dieser Benutzer das Programm
haben will und es auf diesem Weg bekommt, ohne das System vollzumüllen
(Backup z.B.). Wenn der Benutzer dann mal aus dem System entfernt wird,
verschwinden seine speziellen binaries gleich mit.

> Du kannst allerdings nicht so ohne weiteres verhindern,
> daß dann auch andere Benutzer diese Libraries verwenden
> können, es sei denn, der Besitzer macht sie nicht lesbar
> für andere (per chmod oder umask). Du kannst auch nicht
> verhindern, daß ein Benutzer Libraries nach /tmp oder
> /var/tmp installiert, um sie anderen Benutzern zugänglich
> zu machen (es sei denn, Du richtest ein Per-User-/tmp
> ein).

Das ist weniger ein Problem, ich frage mich nur noch: Ist das mit den
libs mit den Rechten zur Laufzeit so wie bei regulären Programmen? Wenn
jemand eine Bibliothek schreibt, kann er am System (normalerweise) nix
kaputt machen? Alles andere wäre unlogisch.

Danke für Ausführlichkeit,
Marc

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 11 Aug 2006 - 14:42:24 CEST

search this site