Miałem okazję bawić się wersją 7.o jeszcze w becie w2k8. Potem jakoś długo nie miałem potrzeby do niego siadać, aż w końcu dostałem zadanie konfiguracji w produkcji. realne scenariusze są zawsze dobrym testem i ten ftp go nie przeszedł. niewątpliwie nie ma porównania z tym czymś, co było do wersji w2k8 [oficjalnie – bo 7.o trzeba było zassać z iis.net]. wersja 7.5 nie zmieniła wiele, ale jak można przeczytać – podstawową zmianą jest rozszerzalność [extensibility], więc może powstaną jakieś sensowne modyfikacje.

jest FTPS. jest nowy interfejs spójny z całym IIS [i działa appcmd]. jest możliwość skorzystania z kont asp.net. i nie ma nic z tego, co od lat pamiętam z opensourcowych serwerów typu proFTPd czy glFTPd. ta usługa zawsze była totalnie zaniedbana i taka nadal pozostała.

Czego braqje:

  • najmniej ważny szczegół – przy ustawieniu listingu unix-style zawsze zwracane jest “rwxrwxrwx” – bez względu na realne uprawnienia
  • izolacja użytkowników jest, ale dla wszystkich lub nikogo – totalna głupota
  • nie ma możliwości zdefiniowania katalogu domowego użytkownika – jest to na sztywno localuser%username%
  • brak możliwości definiowana katalogu domowego dla grupy
  • dodatkowy poziom zabezpieczeń w konfiguracji FTP [poza NTFS] niewiarygodnie granularny: są uprawnienia read i write lol O_o.
  • i setek parametrów typu komunikat per user, bandwith control, ratio i tak dalej… ale to szczegóły (;

tyle ile rzuciło mi się przez kilka godzin, które spędziłem na wymyślaniu obejścia tych niedogodności. Scenariusz:

jest sobie jakaś struktura katalogów jeszcze z ftp na wersji 2k, dość złożona, dodatkowo share’y – generalnie klient nie za bardzo chciałby to restrukturyzować, ograniczony czas blablabla.. komputer nie jest w domenie z różnych względów i część użytkowników musi mieć dostęp tylko do własnego katalogu. piqś. jak się okazuje nie dla iis bo izolację kiedy się włączy, to jest dla wszystkich no i nazwa katalogu domowego jest niedefiniowalna. początkowo obejście było dość proste:

  • obok istniejącej struktury katalogów założyłem nowy katalog – “extFTP” a w nim bez-sensu-obligatoryjny “localUser”
  • w ftp włączyłem izolację
  • pozakładałem katalogi virtualne dla userów [bez-sensu-z-taką-samą-nazwą-jak-user]

so far so good. ponieważ userzy są wyizolowani nie widzą, że zmieniły im się nazwy katalogów. problemem jest teraz zrobienie dostępu dla użytkowników .. powiedzmy superusers, którzy mają mieć dostęp do całej struktury. ponieważ nie ma możliwości ustawienia katalogu domowego dla grupy są dwa wyjścia – albo dodatkowy ftp [inny port/inne ip/inny header], albo zakładać katalogi dla wszystkich userów. pierwsza opcja w tym przypadq nie mogła być wykonana [niemożna zarejestrować nazw/jedno ip/nie może być innego portu], pozostaje tylko zakładanie katalogów. w tym przypadq miałem szczęście bo userów było niewielu, ale przy bardziej złożonych scenariuszach… no generalnie co za kretynizm z tymi katalogami domowymi… uff.. no i ta wymuszona ścieżka – mam nadzieję, że jest na to jakiś hack i da się to jakoś zmienić, ale nie udało mi się takiej informacji póki co znaleźć. dzięki katalogom wirtualnym, superuserzy widzą całą strukturę tak, jak dotychczas – homedir każdego z nich był vdirem wskazującym na starty rootftp. w uproszczeniu struktura wygląda teraz tak:

image

no i te dziwne uprawnienia – oczywiście najfajniejsze w ftp windowsowym było zawsze to, że dostęp ustawia się za pomocą uprawnień NTFS. proste, jasne, granularne, dobrze znane, spójne z całym systemem. w nowym ftp pojawia się dodatkowy poziom – FTP Authorization, w którym można zdefiniować usera/grupę i nadać mu [allow] lub odebrać [deny] jedno z dwóch uprawnień – read lub/i write. wprowadza to niejasność i w sumie podszedłem to tego tak, jak z shareami – full dla wszystkich na udziale i przycinanie uprawnień na poziomie NTFS. domyślam się, że nadawanie z poziomu ftp przydaje się, kiedy używa się ról/userów asp.net bo w takim przypadq NTFS nie jest w stanie odróżnić kto jest kto – ale nie podoba mi się jak to zostało zaprojektowane [np, taka opcja mogłaby być tylko wtedy, kiedy z takich userów się korzysta]. no i podczas wpisywania nazw grup/userów nie ma opcji ‘browse’ więc trzeba uważać na literówki – jakby trudno było zrobić dodatkowy guziczek…

nie miałem czasu rozglądać się czy są jakieś rozszerzenia do FTP 7.5 – być może da się z tym zrobić coś więcej. to co oferuje standardowo pozostawia sporo do życzenia.

n.