Blokowanie użytkownika SFTP w cygwin

1

Skonfigurowałem użytkownika do ssh do Windows Server 2008 R2.

Byłem w stanie zmienić domyślny katalog.

Jedyne, czego nie mogłem rozgryźć, to jak ograniczyć użytkownika tylko do tego katalogu.

Innymi słowy, nie chcę, aby użytkownik mógł zmieniać katalog.

Proszę doradź.

EDYTOWAĆ:

Oto gdzie stoję:

  • Zainstalowano Cygwin
  • Użytkownik ( James) utworzony w systemie Windows
  • Grupa (SftpUser) utworzona w systemie Windows
  • SftpUser nie wyświetla się w / etc / passwd
  • zamiast tego jest jakaś Nonegrupa, do której należy James
  • Mogę zalogować się z moim użytkownikiem
  • cygdrivei devkatalog są wymienione (nie chcę tego)
  • cygdrive jest pusty


Oto scenariusz

Chcę Jamesz sftpUsergrupy musi być ograniczona do jego folderu przesyłania. Ścieżka znajduje się na dysku zewnętrznym:

D:\uploads\james_folder\

w cygwinie

/cygdrive/d/uploads/james_folder/

Nie mam nic przeciwko włączeniu ograniczenia

/home/james/upload

A potem zamontuj katalog na ścieżce domowej, ale wygląda na to, że cygwin nie jest dołączony do samby.

sshd_config

Match user james
    ChrootDirectory /home/james/upload/
    ForceCommand internal-sftp
meda
źródło
Myślę, że właściwym sposobem na to jest ustawienie odpowiednich list ACL, aby odmówić Jamesowi dostępu do prawie wszystkiego.
Gilles
@Gilles dzięki za sugestię, jak mam to zrobić
meda,
Gdybym wiedział, napisałbym odpowiedź. Nie jestem ekspertem od systemu Windows.
Gilles

Odpowiedzi:

1

Ostatnio ustawiłem SFTP na cygwin i zdałem sobie sprawę, że nie możemy ukryć następujących katalogów:

  • / cygdrive
  • / dev

Ponieważ możesz być świadomy, że / path / to / sftp musi być własnością użytkownika root, którego nie może zapisać żaden inny użytkownik lub grupa, musisz zaktualizować identyfikator użytkownika w / etc / passwd do 0, ponieważ nie ma pojęcia root w systemie Windows.

Jeśli uwięzisz użytkownika w trybie innym niż cygdrive (np. / Sftp), zobaczysz tylko / cygdrive (nic nie pojawi się w / cygdrive).

Jeśli uwięzisz użytkownika w cygdrive (np. /Cygdrive/d/.../sftp), zobaczysz / cygdrive / d. Nie możesz jednak przejść do żadnego katalogu nadrzędnego, jeśli skonfigurujesz go poprawnie.

Mam nadzieję, że powyższe informacje pomogą!


Sprawdź następujące rzeczy:

  1. Upewnij się, że identyfikator bieżącego użytkownika logującego się (James w twoim przykładzie) w / etc / passwd wynosi zero. Jest tak, ponieważ cygwin zmieni użytkownika wszystkich katalogów w katalogu głównym jako bieżący użytkownik logujący się. ls -l /Uruchom polecenie, aby to zweryfikować.
  2. Upewnij się, że / home, / home / james, / home / james / upload to bieżący użytkownik (tj. Odpowiednik użytkownika root o identyfikatorze użytkownika 0).
  3. Upewnij się, że plik / etc / sshd_config zawiera:

    Match user james
    ChrootDirectory /home/james/upload/
    ForceCommand internal-sftp
    
chesschi
źródło
if you set it up correctly.czy możesz proszę elborate?
med.
zobacz dodatkowe informacje, które dodałem i sprawdź, czy to pomoże
chesschi
1

Musisz skonfigurować ChrootDirectorykatalog w sshd_config

Szczegółowe instrukcje dla ArchLinux są dostępne w chroot SFTP .

Podstawowy zarys jest następujący:

1) Dodaj konfigurację chroot, na sshd_confgprzykład:

Match User username
ChrootDirectory /home/%u
ForceCommand internal-sftp

2) Zmień prawa do katalogu chroot za pomocą czegoś takiego:

chown root.root /home/<user>
usermod -d / <user>

3) Naprawianie ścieżki dla kluczy autoryzowanych za pomocą czegoś takiego:

AuthorizedKeysFile      %h/.ssh/authorized_keys

Po nad na cygwin listy raportów sukcesu za pomocą tej metody, aby ograniczyć dostęp z podobnej konfiguracji jak wyżej.

ssnobody
źródło
Przeczytałem, że chroot nie działa z cygwinem, ale spróbuję teraz dzięki
meda
-bash: usermod: command not foundi chown: invalid user: âroot.rootâto, co dostaję
meda
Jest mało prawdopodobne, że potrzebujesz tych poleceń, ale root.root byłby czymś w rodzaju administrator.administratorzy, ponieważ na ogół nie ma użytkownika root ani grupy w systemie Windows. Jeśli chodzi o usermod nieistniejący w cygwin, sugerowałbym po prostu ręczną edycję / etc / passwd i zmianę katalogu domowego użytkownika z ograniczeniami na /
ssnobody
ale zobacz katalog, który chcę udostępnić. /cygdrive/d/UPLOAD/user_folder/Czy możesz dostosować swoją odpowiedź do tej ścieżki? i masz rację, że nie ma użytkownika root. +1
meda,
polecenia teraz działają, ale kiedy testuję, dostaję się sshd: PID 4332: fatal: bad ownership or modes for chroot directory component "/"do dziennika serwera, nie jestem pewien, dlaczego wskazuje na katalog główny
med.