Die Shell kann ~
in Ihr Home-Verzeichnis erweitert werden. $HOME
hat normalerweise das gleiche Angebot, aber häufig möchten Sie aus einem Kontext, der eine solche Erweiterung möglicherweise nicht unterstützt, auf das Home-Verzeichnis des aktuellen Benutzers verweisen.
Ich hatte Konfigurationsdateien, in denen es $HOME
funktioniert, ~
aber nicht und umgekehrt.
Ich würde vermuten, dass die Sicherung etwas in diese Richtung liefern könnte, so etwas wie /var/myself
->$HOME
Damit konnte ich Werte in Konfigurationsdateien platzieren, um auf Dinge wie zu verweisen /var/myself/backdrops/pornography/wtf/yarly.jpg
Gibt es so etwas schon? Wenn nicht, gibt es gute Gründe dafür, dass es so etwas nicht gibt?
Antworten:
Ich verstehe Ihre Besorgnis, aber die Antwort lautet "nein", so etwas gibt es nicht.
Die übliche Methode besteht darin, das Betriebssystem nach dem Home-Pfad des Benutzers zu fragen oder die Variable $ HOME abzurufen.
Alle diese Optionen erfordern immer eine Codierung von der Anwendung. Viele Anwendungen, wie z. B. bash, bieten den "Alias" ~ (open (2) übersetzt das nicht).
Dazu könnte natürlich ein vfs oder ein Sicherungsmodul implementiert werden. Wahrscheinlich gibt es etwas zu tun, das werde ich fragen!
Aber wird es wirklich gebraucht? Sie können eine Problemumgehung wie folgt verwenden:
Erstellen Sie ein Skript, um das Programm zu starten, das $ HOME mit einem relativen Pfad oder einem bekannten Speicherort verknüpft.
Verwenden Sie pam_exec, um das Verzeichnis $ HOME mit einem bekannten Speicherort zu verknüpfen: http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag-pam_exec.html
quelle
Ein Trick (zumindest unter Linux) wäre,
$HOME
vor dem Ausführen der App/proc/self/cwd/...
in das Verzeichnis zu wechseln und dann in der Konfigurationsdatei zu verwenden.quelle
/proc/self
nicht sein/proc/PID
, da Sie nicht im Voraus wissen können, wie die PID sein wird.In den meisten Programmen können Sie in der Befehlszeile einen Pfad zur Konfigurationsdatei angeben. Sie können also einen Wrapper schreiben, der eine Standardkonfigurationsdatei verwendet, diese filtert,
$HOME
um beispielsweise den aktuellen Benutzer zu ersetzen , und dann die geänderte temporäre Konfigurationsdatei an das Programm übergeben.quelle
Sie können die PID des Anforderungsbenutzers abrufen und das System nach seinem Ausgangsverzeichnis fragen. So ist es möglich.
Ich bin mir jedoch nicht sicher, ob es keine SUID-Programme gibt, die FS als statisch annehmen würden.
Bearbeiten:
Der obige Code ist nicht ideal, sollte aber für häufige Fälle funktionieren.
quelle
getpwuid
odergetpwuid_r
.