nelze vytvorit relativni symlink pres sftp

Miroslav Lachman 000.fbsd at quip.cz
Tue Apr 30 13:11:05 CEST 2013


Mam tu takovy problem, se kterym si uz par dnu lamu hlavu.

Na celkem normalnim FreeBSD serveru, kde bezi sshd je vytvoreno nekolik 
ssh uctu. Nektere ucty maji povolene pouze pouzivani sftp. Ty ucty 
slouzi pro deployment webaplikaci a obcas je tam potreba udelat nejaky 
symlink.
Kdyz jsem to testoval z jineho FreeBSD stroje, tak to vsechno fungovalo 
jak ma. Zkousel jsem ty sftp accounty i z Windows, napriklad skrz 
WinSCP. Vsechno funguje, symlinky jsou relativni jak maji byt.

Pak se ale jeden klient pripojil z Mac OS X skrz OpenSSH 6.1 klienta a k 
udivu vsech se z neho symlinky vytvareji s absolutni cestou, coz je 
problem, protoze ty sftp ucty jsou v chrootu a tak je vysledny symlink 
neplatny.
Stejne chovani mam potvrzene i na uctech, ktere nejsou v chrootu a 
stejne se chova i OpenSSH 6.2 z cygwinu.

Zkusil jsem na serveru v sshd_config zapnout DEBUG logovani a vysledek 
je nasledujici:

Spravne chovani s OpenSSH 5.4

subsystem request for sftp
session opened for local user devel from [y.y.y.y]
received client version 3
realpath "."
symlink old "temp" new "/usr/home/devel/temp_symlink"
sent status Success
session closed for local user devel from [y.y.y.y]


Spatne chovani s OpenSSH 6.1 nebo 6.2

subsystem request for sftp
session opened for local user devel from [x.x.x.x]
received client version 3
realpath "."
opendir "/usr/home/devel"
sent status End of file
closedir "/usr/home/devel"
sent status Success
symlink old "/usr/home/devel/temp" new "/usr/home/devel/temp_symlink"
sent status Success

V obou pripadech se spousti jednoduchy shellscript:

echo "symlink temp temp_symlink
quit
" | sftp devel na x.x.x.x


(je to minimalizovana verze vetsiho scriptu, ktery se stara o cely 
deployment)

Chovani je stejne s pouzitim sftp-server i internal-sftp (v sshd_config) 
a je jedno, jestli je ucet chrootnuty, nebo ne - vzdy se vytvori 
absolutni symlink, pokud je sftp klient novejsi, nez mnou pouzita 5.4 
(nevim, od ktere verze presne)


Nesetkal jste se s tim nekdo? Nenapada vas, jak prinutit sftp z OpenSSH 
6.2 k tomu, aby delal normalne relativni symlinky, tak jak je mu zadano?

Mirek


More information about the Users-l mailing list