Chcę dać klientowi dostęp do mojego serwera, ale chcę ograniczyć tych użytkowników do ich katalogów domowych. Zamocuję bind-mount we wszystkich plikach, które chcę, aby były widoczne.
Utworzyłem użytkownika o nazwie bob
i dodałem go do nowej grupy o nazwie sftponly
. Mają katalog domowy pod adresem /home/bob
. Zmieniłem ich powłokę, /bin/false
aby zatrzymać logowanie SSH. Oto ich /etc/passwd
linia:
bob:x:1001:1002::/home/bob:/bin/false
Zmieniłem również /etc/ssh/sshd_config
następujące elementy:
Match Group sftponly
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
Kiedy próbuję się zalogować jako oni, oto co widzę
$ sftp bob@server
bob@server's password:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
Jeśli skomentuję ChrootDirectory
wiersz, mogę wprowadzić SFTP, ale wtedy będą mogli swobodnie sterować serwerem. Znalazłem, że to ChrootDirectory /home
działa, ale nadal daje im dostęp do dowolnego katalogu domowego. Próbowałem wyraźnie, ChrootDirectory /home/bob
ale to też nie działa.
Co ja robię źle? W jaki sposób można ograniczyć bob
do /home/bob/
?
----EDYTOWAĆ-----
Okej, więc właśnie rzuciłem okiem /var/log/auth.log
i zobaczyłem to:
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session opened for user bob by (uid=0)
May 9 14:45:48 nj sshd[5091]: fatal: bad ownership or modes for chroot directory component "/home/bob/"
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session closed for user bob
Nie jestem do końca pewien, co się tam dzieje, ale to sugeruje, że coś jest nie tak z katalogiem użytkownika. Oto ls -h /home
wynik:
drwxr-xr-x 26 oli oli 4096 2012-01-19 17:19 oli
drwxr-xr-x 3 bob bob 4096 2012-05-09 14:11 bob
ChrootDirectory /home/%u
można go wymienićChrootDirectory %h
.Odpowiedzi:
Cały ten ból jest spowodowany kilkoma problemami bezpieczeństwa opisanymi tutaj . Zasadniczo katalog chroot musi być własnością
root
i nie może być dostępem do zapisu grupowego. Śliczny. Więc zasadniczo musisz zmienić chroota w komórkę przechowującą, w której możesz mieć swoją zawartość do edycji.I bam, możesz się zalogować i napisać
/writable
.źródło
root
. W tym przykładzie/home
powinien być również własnością root.Subsystem sftp /usr/lib/openssh/sftp-server
linię, abySubsystem sftp internal-sftp -f AUTH -l VERBOSE
to zadziałało.Aby chrootować katalog SFTP, musisz
Utwórz użytkownika i zmuś root jako jego właściciela
Zmień lokalizację podsystemu w / etc / ssh / sshd_config:
i utwórz sekcję użytkownika na końcu pliku (ssh może umrzeć odradzając się, jeśli zostanie umieszczony po wierszu podsystemu):
źródło
john
jest zablokowany w/home/john
katalogu. udzieliłeś755
uprawnień do katalogu. więc właściciel przeczytał (4), napisał (2) i wykonał (1), a grupa przeczytała (4) i wykonała (1). ustawiłeś również właściciela i grupę jakoroot
, więcjohn
należy do innych. wtedy też przeczytał i wykonał (4 + 1 = 5). więc zablokowałeś Johna w katalogu, w którym nie ma on uprawnień do zapisu. jak to naprawić? zmiana uprawnień,757
a nawet777
psuje login. zmiana grupy lub właściciela na john również przerywa logowanie./home/userx/sftproot/uploads
i sftpuser w / home / sftpuse. Ustawiłem chroot na/home/usex/sftproot
własność root: root i chmod 755. Jest/home/usex/sftproot/uploads
on zmieniany przez sftpuser: sftpuser. Otrzymuję ten sam błąd, co pytanie początkowe powyżej. Czy chroot i wszystkie foldery nadrzędne muszą być własnością root: root, aby sftp działał?Cały dzień spędziłem, próbując uzyskać udział sieciowy na mojej malinie. Chciałem zablokować użytkownika, aby nie mógł poruszać się po całym systemie plików, brak dostępu do logowania ssh i chciałem mieć dostęp do zapisu do udziału sieciowego.
Oto jak to działa:
Najpierw stworzyłem użytkownika:
Następnie edytowałem
/etc/passwd
i upewniłem się, że ma to/bin/false
dla użytkownika, więc wiersz był:Edytowałem,
/etc/ssh/sshd_config
aby uwzględnić:Zmieniono właściciela katalogu głównego i uprawnienia:
Ok, więc po tym wszystkim udało mi się połączyć za pomocą,
sshfs
ale w trybie tylko do odczytu. Co musiałem zrobić, aby uzyskać zapisywalny folder:To było to, działało bez żadnych dalszych zmian. Pamiętaj, że mam tylko uprawnienia do zapisu dla użytkownika , a nie do grupy tak wielu innych rozwiązań online. Byłem w stanie bez problemu tworzyć / usuwać / edytować / zmieniać nazwy plików / folderów.
Podczas uzyskiwania dostępu za
sshfs
pomocą użytkownika netdrive z powodu konfiguracji chroot widziałbym tylko rzeczy przechowywane w/home/netdrive/
katalogu serwera , idealnie. Powtarzająca się/home/netdrive/home/netdrive/
struktura katalogów sprawiła, że działało mi się z czystym rozwiązaniem zapisywania ssh w chroot .Teraz wyjaśnię poniżej problemy, które miałem:
Prawdopodobnie nie powinieneś wykonywać następujących akapitów :
Po zapoznaniu się z powyższymi rozwiązaniami (i wieloma innymi w sieci, które korzystały nawet z acl (listy kontroli dostępu)) nadal nie byłem w stanie uruchomić go, ponieważ to, co zrobiłem, to:
Poniższe NIE działało dla mnie:
Ponieważ użytkownik netdrive nadal nie mógł pisać w tym
/home/netdrive/writable/
katalogu, mimo że jest właścicielem folderu i ma uprawnienia. Potem zrobiłem: sudo chmod 775 / home / netdrive / writable / A teraz mogłem utworzyć katalog i go usunąć, ale nie byłem w stanie go edytować, ponieważ był tworzony bez uprawnień do zapisu grupowego. Tutaj, z tego, co widziałem w sieci, ludzie używająacl
do naprawy. Ale nie byłem z tego zadowolony, ponieważ musiałem zainstalowaćacl
, a następnie skonfigurować punkty montowania itp. Nie mam też pojęcia, dlaczego potrzebuję uprawnień grupy do zapisu w folderze należącym do tego samego użytkownika.Wygląda na to, że z jakiegoś powodu tworząc
/home/netdrive/home/netdrive
i oddając własność do ostatniegonetdrive
folderu byłem w stanie sprawić, że wszystko zadziała bez bałagania uprawnieniami grupy .źródło
Śledziłem ten artykuł, ale to nie działało. Zaczęło działać po wprowadzeniu tej zmiany (sugerowanej w powyższych odpowiedziach):
Plus sprawił, że główny katalog główny jest dostępny, w którym miałem podkatalog do zapisu przez użytkownika (jak opisano powyżej).
Nową i przydatną rzeczą, którą chcę dodać w tej odpowiedzi, jest to, że możesz uprościć konfigurację, określając% h jako katalog domowy użytkownika:
Odkryłem to dzięki temu linkowi.
źródło