2013-07-17 3 views
9
$ uname -a 
Linux xhost10.bcgsc.ca 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux 

$ /sbin/ldconfig --version 
ldconfig (GNU libc) 2.5 

Ich installiere mehrere Binärdateien und Bibliotheken lokal, da ich keinen Root-Zugriff habe.Update ldconfig-Cache ohne root-Berechtigung

Einige der Programme müssen zur Laufzeit dynamisch mit einer gemeinsam genutzten Bibliothek an einem nicht standardmäßigen Speicherort verknüpft werden.

Wenn er ausgeführt wird, kehrt das Programm:

$ path/to/cc1 
path/to/cc1: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory 

Ich habe hinzugefügt Pfade zu den Bibliotheken $LD_LIBRARY_PATH, aber ich kann den ldconfig Cache ohne Root-Zugriff nicht aktualisieren ...

Gibt es eine benutzer- spezifisch /etc/ld.so.cache?

Oder allgemeiner, ist es möglich, eine Systemkonfigurationsdatei mit einer Benutzerkonfigurationsdatei zu "maskieren"?

+0

Ich kann ld.so finden, um die gemeinsam genutzten Bibliotheken zu finden, indem ich LD_LIBRARY_PATH in ~/.bashrc exportiere und mich neu anmelde. Laufende Binaries, die Bibliotheken in LD_LIBRARY_PATH dynamisch laden, brauchen viel länger zu initialisieren (gemeinsames Netzwerk-Dateisystem), aber zumindest laufen sie ... –

Antwort

4

Der ldconfig-Cache gilt nur für den in /etc/ld.so.conf oder /etc/ld.so.conf.d angegebenen Pfad. Da diese für Nicht-Root-Benutzer nicht beschreibbar sind, können Sie sie nicht dazu verwenden, die Startgeschwindigkeit für ohne root-Berechtigungen installierte ausführbare Dateien ohne die Hilfe von root zu verbessern (aber selbst dann wäre es eine schlechte Idee, diesen Benutzern eine schreibbare Datei hinzuzufügen) systemweite Bibliothek Suchpfade).

Für diese Fälle müssen Sie entweder die Umgebungsvariable LD_LIBRARY_PATH oder rpath/runpath in der ausführbaren Datei oder Bibliothek verwenden, die von Bibliotheken im nicht standardmäßigen Pfad abhängt. Geschwindigkeitsunterschiede zwischen LD_LIBRARY_PATH und rpath/runpath sind mir nicht bekannt, aber rpath/runpath haben den Vorteil, dass sie nur bestimmte ausführbare Dateien betreffen und somit weniger Probleme für andere Programme verursachen.

In Linux/Unix gibt es keine allgemeine Möglichkeit, eine Systemkonfigurationsdatei zu maskieren und stattdessen eine vom Benutzer bereitgestellte Datei zu verwenden. In der Tat muss das Unix-Sicherheitsmodell aktiv verhindern, dass verschiedene Arten von Privilegien-Eskalationen vermieden werden. Aus diesem Grund werden selbst viele Umgebungsvariablen für suid-Executables deaktiviert. Bei vielen Programmen gibt es eine Möglichkeit, die übergeordnete Benutzerkonfiguration anzugeben, bei einigen komplizierteren gibt es auch Möglichkeiten für den Systemadministrator, obligatorische Einstellungen festzulegen, die nicht überschrieben werden können.

Verwandte Themen