Serwer SCP czyli jak dać dostęp do plików bez dostępu do shella
Ktoś kazał Ci (albo chcesz udostępnić komuś z własnej nieprzymuszonej woli) zrobć dostęp do plików na serwerze. Nie ważne czy wystawiasz klientowi pliki, któryś z devów potrzebuje dostępu do appa, czy udzielasz kumplowi kawałek miejsca na VPSie, jakoś ten dostęp trzeba zapewnić.
Jest oczywiście FTP, ale ten niestety ma parę problemów. Na początek, to kolejny pakiet do instalacji i konfiguracji. Nie ma szyfrowania (jest niby FPTS, nie widziałem jeszcze nogdy żeby ktoś tego używał), i jeżeli twój “serwer” jest za NATem to trzeba kombinować (bo FTP wymaga otworzenia dodatkowego portu dla danych, w zależności od trybu albo po stronie klienta albo po stronie serwera).
Więc myślisz sobie, może sftp/scp ? Serwer już jest, tylko ustawić config. Tyle że nie widzi Ci się dawanie też userowi shella. O ile kiedyś można było użyć scponly (taki zamiennik shella, zgadnij co robi ? ), to żeby na dodatek zrobić chroota zeby user nie łaził Ci po systemie trzeba było się bawić.
Moje zaciekawienie ostatnio przykuł man sshd_config
i opcja ChrootDirectory
, mówi ona:
<br />
...<br />
<strong>For file transfer sessions using<br />
“sftp”, no additional configuration of the environment is necessary if the in-process sftp server is used<br />
(see Subsystem for details).</strong><br />
...<br />
Czyli da się bez większych kombinacji. O takich rzeczach na portalach nie piszą, za to nie przegapią każdej nawet najmniejszej distro Linuksa (do ludzi którzy zamierzają stworzyć kolejną “desktopową”: jest ich już za dużo, pomóżcie istniejącym!) ;]. Ale wracając do tematu. Ustawienie dostępu “scponly” okazało się tak skomplikowane jak wpisanie:
<br />
Match Group scponly<br />
ChrootDirectory /home<br />
ForceCommand internal-sftp<br />
do /etc/ssh/sshd_config. Niestety, mimo że w chroot można wpisać żeby chrootował się bezpośrednio do katalogu userka ale jest ograniczenie w SSHd:
This path, and all its components, must be root-
owned directories that are not writable by any other user or group.
Trochę szkoda bo ile w przypadku typowego chroota ma to sens to jeżeli używamy wbudowanego ssh już nie bardzo go ma. Chociaż z poprawnymi uprawnieniami to żadna różnica ;].