• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] Beim starten Variable setzen für alle User

rapidmax

Newbie
Hallo,

ich bin auf der Suche nach einer Möglichkeit, wie ich für alle Benutzer im System (also auch squid, www-run etc.) eine Variable erzeugen kann. Habe in die .bashrc des Hauptbenutzers den Befehl schon eingefügt, und da steht mir die Variable auch zur Verfügung, aber nicht unter root (bei den anderen Nutzern weiß ich nicht, wie ich das prüfen könnte :roll: ) bei dem es diese Datei auch gar nicht gibt. Selbst erstellen half nicht.

Es geht um den Befehl: export $MEIN_PFAD=/blub/

Habs schon mit einfügen in ein init.d Script versucht, aber da hat er sie wieder nur für den User erzeugt, und ein sudo export kannte er nicht :?

Wie kann man das hinbekommen? Möglichst für alle Nutzer (wichtigster wäre aber root) und gleich am Beginn des Bootvorgangs? System ist SuSE Linux 10.2
 
OP
R

rapidmax

Newbie
Die Datei gabs bei mir nicht, aber auch wenn ich sie erstelle und meinen Befehl
Code:
export LD_LIBRARY_PATH=/opt/CA/SharedComponents/Emulation/lib
eingebe funktionierts nicht...

Muss man das vllt. anders schreiben? Beim "normalen" User geht es ja, ich brauchst aber eigentlich bei root...
 

Tooltime

Advanced Hacker
Deine /etc/profile.local ist korrekt, wenn auch das "export" überflüssig ist. Das Prinzip sieht etwa so aus: Die login-Shell startet im Home-Verzeichnis des Benutzers das Script ".profile", dieses wiederrum "/etc/profile", das letztendlich "/etc/profile.local" und irgenwo zwischendurch werden die Scripte in "/etc/profile.d" ausgeführt. Daraus ergeben sich folgende Einschränkungen:


  • Die profile-Dateien werden nur von einer login-Shell ausgewertet. Die enthaltenen Shellvariablen stehen nur ihr und ihren Kindprozessen zur Verfügung. Ein Dienst (daemon) oder ein Aufruf über cron wird ohne login-Shell ausgeführt und hat daher keinen Zugriff auf Definitionen die innerhalb der profile-Dateien erfolgen.

  • Zweitens die Kette der profile-Einstellungen beginnt im home-Verzeichnis des Benutzers. Genau an dieser Stelle wird sie für den Benutzer root absichtlich unterbrochen um sichere Einstellungen zu garantieren. Eine einfache Manipulation der PATH-Variablen kann schon dazu führen, das ein einfacher Aufruf wie ls, cp, .. auf ein Script umgeleitet wird, das die Partitionstabellen aller angeschlossenen Platten überschreibt. Daher sollte man daran auch nichts ändern.
Dein Problem würde sich wahrscheinlich viel einfacher lösen lassen, wenn du beschreiben würdest was wirklich dein Problem ist und nicht wie du es unbedingt lösen willst. Aus dem Namen der Shellvariable schließe ich, das irgend jemand gewisse Bibliotheken nicht findet. Wenn du weist wo die Bibliotheken sind, erstell doch einfach einen link zu der Stelle, wo wer auch immer sie erwartet.
 
OP
R

rapidmax

Newbie
Hallo,

danke schon mal für die Antworten, ausführbar ist die Datei.

Es geht hier um den eTrust Virenscanner von CA. Eigentlich läuft der Echtzeitscanner etc, was mir aber nichts hilft, da dass ein Proxy wird, der mit Squid und SquiVi2 die runtergeladenen Dateien scannt. Dazu braucht man den Konsolenscanner inocmd32, der aber immer an dieser Variable meckert. Laut CA ist das setzen dieser Variable die einzige Möglichkeit das zu umgehen.... Und nein, ich werde keinen anderen Scanner einsetzten :wink:

Und wie bekommt root dann die anderen Variablen? Könnte ich die ihm da nicht irgendwo mit reinschieben?
 

Tooltime

Advanced Hacker
Vielleicht ist der entscheidene Unterschied nicht ganz klar geworden. Die Shellvariablen werden je nach Zugang des Benutzers gesetzt.


  • Anmeldung über Textkonsole -> starten login-Shell (profile-Scripte) -> starten Kommandoshell (z.B bashrc-Scripte)

  • Anmeldung grafische Oberfläche ->starten einer X-Session (xinitrc-Scripte), wird ein Konsolenfenster gestartet -> starten Kommandoshell (z.B bashrc-Scripte)

  • Rechner bootet -> Kernel startet init -> init analysiert /etc/inittab -> starten des Runlevel -> starten Dienste
Beim Bootmechanismus ist nicht erkennbar ob überhaupt eine Shellvariable gesetzt wird. In den Scripten zum Starten der Dienste werden alle Pfade hart kodiert, was darauf schliessen lässt, das nicht einmal die PATH-Variable richtig gesetzt ist.

Zu deinem Problem. Wenn sich in diesem Verzeichnis Bibliotheken befinden, könnte es Helfen die Konfiguration des dynamischen Linker entsprechend anzupassen.
Stichwörter:

  • /etc/ld.so.conf
    /etc/ld.so.conf.d/
    ldd
    ldconfig
Wenn die Variable unbedingt gesetzt werden muss, hilft warscheinlich nur ein Wrapper-Script das die Variable entsprechend setzt.
 
OP
R

rapidmax

Newbie
OK, habe das Problem gelöst.

Die Variable wird gar nicht von root benötigt, es reicht wenn Squid die hat. Habe sie also einfach am Anfang von /etc/init.d/squid ergänzt und das reicht
 
Oben