[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Homeverzeichnis in /etc/passwd als relativer Pfad


Hallo,


Am 26.10.2012 01:16, schrieb Raphael Eiselstein:

...

> Wenn man statt ~/.ssh/ lieber ein /opt/foo/kram/tools/job42/conf/.ssh/
> verwenden will, kann man zB mit
> 
> ssh -F /opt/foo/kram/tools/job42/conf/.ssh/config
> 
> die dort liegende Konfiguration verwenden und dort wiederum alle
> Default-Dateinamen von ~/.ssh/* nach
> /opt/foo/kram/tools/job42/conf/.ssh/* konfigurieren, soweit moeglich.
> 
> Leider laesst sich das scheinbar nicht per Umebungsvariable steuern
> (anders als zB bei wget, bei dem $HOME verwendet wird), sodass es zB
> bei einem rsync+ssh nicht ohne Weiteres moeglich ist, den Parameter
> "-F /opt/foo/kram/tools/job42/conf/.ssh/config" mitzugeben. Es ging
> in diesem Fall schon, ist aber haesslich und fehleranfaellig.

Geht einfach per rsync -e oder der Environmentvariablen RSYNC_RSH. Ist auch
schoen in der manpage zu rsync beschrieben.

> Auf der Suche nach einer *einfachen* Loesung bin ich zu einem fuer mich
> selbst eher ueberraschenden Workaround gekommen: in /etc/passwd habe ich
> als Homeverzeichnis fuer den Tooluser einfach "./conf" hinterlegt. Abhaengig
> vom aktuellen Verzeichnis wuerde nun zB ssh oder was auch immer gerade
> aktiv ist ausgehend vom aktuellen verzeichnis in ./conf zugreifen.
> Ausserdem wird fuer alle anderen Tools auch $HOME entsprechend auf ./conf
> gesetzt.
> 
> Tatsaechlich funktioniert das auch praechtig, zu mindest ssh(1) liess sich
> da relativ schmerzfrei "ueberlisten" und hat also brav per Default nach
> /opt/foo/kram/tools/job42/conf/.ssh/config gesucht statt in
> /home/tooluser/.ssh/
> 
> Die Frage ist nun: welche konkrete Gefahr besteht (unabhaengig davon,
> dass sich dieses Verhalten aendern koennte) grundsaetzlich bei einem
> "relativen Homeverzeichnis"
> BTW: es ist per default fuer den Tooluser nicht schreibbar, damit kein
> Tool durch Fehlkonfiguration sich selbst oder seine Config loeschen oder
> ueberscheiben kann.

Ich habe das schon im IRC erklaert: "es" kannst du nicht kontrollieren. "es"
ist relativ, d.h. die Aussage '"es" ist nicht beschreibbar' ist falsch. Du
handelst dir mit einem relativen Pfad als home massenweise Fallstricke ein, es
ist eine ueberaus schlechte Idee.

Da meine Erklaerungen im IRC anscheinend schwierig zu verstehen waren, hier
nochmal eine Schritt fuer Schritt Anleitung um sich in den Fuss zu schieÃ?en:

----------
root@host ~ # useradd -M -b ./conf -c "dumb" owned
useradd: Ungueltiges Basis-Verzeichnis »./conf«
root@host ~ # #(hier muesste man schon nachdenklich werden)
root@host ~ # useradd -c "dumb" owned
root@host ~ # vim /etc/passwd # (home in ./conf aendern)
root@host ~ # su owned
bash: ./conf/.bashrc: Keine Berechtigung
owned@host /root $ #(hmm, noch ein Hinweis, dass man evtl. etwas falsch macht)
owned@host /root $ echo $HOME
./conf
owned@host /root $ cd /tmp
owned@host /tmp $ mkdir -p /tmp/remote/conf
owned@host /tmp $ echo "echo OWNED" >/tmp/remote/conf/.bashrc
owned@host /tmp $ mkdir /tmp/backup
owned@host /tmp $ cd /tmp/backup
owned@host /tmp/backup $ rsync -av /tmp/remote/* ./
sending incremental file list
conf/
conf/.bashrc

sent 127 bytes  received 35 bytes  324.00 bytes/sec
total size is 11  speedup is 0.07
owned@host /tmp/backup $ bash
OWNED
owned@host /tmp/backup $
----------

Mir fallen da auf Anhieb noch etliche andere interessante Dateien ein, die man
anstatt dem .bashrc anpassen koennte, um unerwartete Dinge erscheinen zu
lassen.

Gruss,

Alexander



-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/