fragen stichworte

Ändern Sie die Standardumgebungsvariable PATH in Solaris 10

Ich weiß, ich könnte/etc/profile ändern. Aber gibt es einen besseren Weg? Ich weiß, dass/etc/profile Terminals betrifft, aber ich möchte, dass alle Prozesse betroffen sind. crontab, Service Manager, Startskripte usw.

Bearbeiten: Ich habe eine Antwort, um den PFAD für cron zu bearbeiten. Ich möchte jedoch immer noch eine für Startskripts und ausführbare Dateien, die vom Service Management aufgerufen werden.

antworten

Sie müssen die Umgebung in Betracht ziehen, in der einige Ihrer oben genannten Anwendungen ausgeführt werden. Das Ausführen dieser Befehlsarten mit PATHs, die sie nicht erwarten, hat Auswirkungen auf die Sicherheit. Ein böswilliger Benutzer, der zu einem früheren Zeitpunkt im PATH Zugriff auf ein Verzeichnis hat, kann möglicherweise seine eigenen Befehle ersetzen und Zugriff erhalten usw.

Startskripts verwenden im Allgemeinen vollständige Pfade zu den Befehlen, die sie ausführen möchten (einige setzen möglicherweise einen eingeschränkten PATH). Dadurch wird sichergestellt, dass die erwarteten Befehle ausgeführt werden.

Beim Aufrufen eines Dienstes verwendet der SCM keine PATHS, die von Manifesten verwendet werden (/var/svc/manifest/...). Manifests sind XML-Dateien und enthalten alle Informationen, die zur Definition der Interaktion mit einem bestimmten Dienst erforderlich sind. Wieder werden vollständige Pfade zu Befehlen verwendet, um sicherzustellen, dass die erwarteten Befehle ausgeführt werden.

In /etc/default/cron können Sie einen Standardwert für PATH (normale Benutzer) oder SUPATH (für root) festlegen. Auch hier sollten Sie die Auswirkungen auf die Sicherheit in Betracht ziehen - es ist viel besser, vollständige Pfade zu Befehlen zu verwenden und die Befehle bei Bedarf ihren eigenen PATH definieren.

Ich glaube, dass der Standard-PATH, den init an SMF übergibt, und die Init-Skripte in die init -binär kompiliert werden und nicht geändert werden können. Es wird explizit nicht aus/etc/default/init gelesen.

Ich stimme @lain zu, dass Sie wirklich nur die vollständigen Pfade zu den gewünschten Befehlen verwenden sollten. das heißt, die meisten smf-Methoden quellen /lib/svc/share/smf_include.sh. Sie könnten die PATH-Variable dort ändern, aber ich würde sagen, dass dies im Allgemeinen eine schlechte Idee ist.