Jak dodać użytkownika ssh, który ma uprawnienia tylko do dostępu do określonego folderu?


17

Jak dodać użytkownika ssh, który ma uprawnienia tylko do dostępu do określonego folderu?

useradd -d /var/www/xyz.com.tr/musteri  -s /bin/bash -g sshd musteri

Utworzyłem użytkownika o nazwie musteri. Ustawiłem jego folder domowy i grupę. Chcę więc zintegrować musteriużytkowników z „/var/www/xyz.com.tr/musteri”. Nie chcę, żeby miał dostęp do innego folderu.


Czy chcesz, aby użytkownik miał pełny dostęp do powłoki, czy tylko protokoły kopiowania plików, takie jak sftp i rsync?
Gilles 'SO - przestań być zły'

Jeśli to drugie, możesz przyjrzeć się scponlyjako powłoka, być może działająca w chroottrybie, aby ograniczyć jego dostęp do tego katalogu i nigdzie indziej.
Shadur

1
@Gilles - Chcę uzyskać dostęp przez sftp. Ale nie chcę, żeby miał dostęp do innego folderu.
Cell-o

1
@ Cell-o: Jeśli potrzebujesz tylko kilku protokołów przesyłania plików, a nie powłok, użyj chroot plus scponly lub rssh (Google scponly chrootlub rssh chrootpowinien doprowadzić cię do poradników).
Gilles 'SO - przestań być zły'

Co powiesz na korzystanie z list ACL?
fpmurphy

Odpowiedzi:


19

Wygląda na to, że chcesz, aby Twój müşteriler miał dostęp do przesyłania plików do folderu bez faktycznego udostępniania ich powłok. Jest to dobra rzecz, ponieważ jak zauważył binfalse , dawanie ludziom powłok z ograniczonym dostępem jest trudne, ponieważ powłoki muszą mieć dostęp do wszelkiego rodzaju rzeczy rozproszonych w systemie, aby się uruchomić.

Aby dać SFTP dostęp do określonego folderu, możesz zrobić coś takiego.

  1. Dodaj nową grupę do systemu, powiedz „sftponly”.
  2. Dodaj w systemie dowolnych użytkowników, którzy powinni mieć ograniczone prawa do tej grupy. Możesz również dać im ograniczone powłoki, takie jak / bin / true, ale nie jest to wymagane.
  3. Zmień plik konfiguracyjny ssh (Zwykle /etc/ssh/sshd_config) za pomocą tych linii
    Podsystem sftp internal-sftp

    Dopasuj grupę sftponly
        ChrootDirectory% h
        Zezwól TCPForwarding no
        X11 Spedycja nr
        ForceCommand wewnętrzna-sftp

Spowodowałoby to aktywację podsystemu sftp wewnątrz SSH i zmusiłoby członków tej grupy systemów do korzystania tylko z tego systemu podczas logowania. Chrootowałoby ich również do swoich katalogów domowych. Możesz zmienić to na podfolder ich domowych katalogów, dodając coś takiego ChrootDirectory %h/musteri_sftp, aby nie mogli zobaczyć reszty plików systemowych, ale logowali się bezpośrednio do specjalnego podfolderu swojego katalogu domowego.

Kolay gelsin.


Öncelikle teşekkürler. ;) Jak już wspomniałeś, skonfigurowałem SFTP, ale mam problem z iptables. Oto moja zasada. -> RH-Firewall-1-INPUT -m stan - stan NOWY -m tcp -p tcp --port 21 -j AKCEPTUJ
Cell-o

1
Birşey değil. Choć FTP będzie korzystać z portu 21, SFTP jest ftp jak protokół, który biegnie przez kanał SSH, więc to będzie korzystać z portu SSH, który domyślnie jest 22.
Caleb

Zauważ, że powinieneś również zlokalizować i skomentować wszelkie wcześniej istniejące polecenia podsystemu (np. Podsystem sftp / usr / lib / openssh / sftp-server)
CnrL,

Rozwiązałem mój problem ORAZ nauczyłem się kilku przydatnych zwrotów po turecku! Premia!
eimajenthat

2

Moim zdaniem jest to bardzo trudne, jeśli nie niemożliwe. Gdy użytkownik łączy się przez SSH, przynajmniej potrzebuje powłoki, w twoim przypadku bash. Aby wykonać /bin/bash, potrzebuje uprawnień dostępu /bin. bashsam musi przeczytać niektóre rzeczy z /etc(np. /etc/bash.bashrc), więc użytkownik potrzebuje również dostępu do /etc. Zakładając, że użytkownik nie tylko chce kręcić się w tym katalogu, może chcieć przeczytać plik, ale na przykład, aby wykonać vim, potrzebuje również dostępu /usr/bin.
To tylko niewielka demonstracja, jest więcej zależności, np. Tak naprawdę nie wiem, co się stanie, jeśli użytkownik nie będzie miał dostępu do /tmp...

Powinieneś pomyśleć o swoim zamiarze. Czy chcesz tylko, aby ktoś miał dostęp do odczytu / zapisu do części twojego serwisu? Następnie możesz skonfigurować coś takiego jak FTP, aby wyeksportować określony katalog do tego użytkownika. Dzięki temu może czytać / zapisywać te pliki bez dostępu do SSH.
Kolejnym dobrym rozwiązaniem byłoby repozytorium. Na przykład skonfiguruj repozytorium GIT i pozwól użytkownikowi go sklonować. Może wprowadzić zmiany lokalnie i wysłać łatkę. Możesz zdecydować, czy zastosować tę poprawkę, czy też nie, wycofanie łat na błędy jest również bardzo łatwe.


rbashjest przeznaczony do tego właśnie.
bahamat

To nazywa się ograniczoną powłoką . Ale ponieważ Cell-o chce tylko zezwalać na przesyłanie plików, nie jest to właściwe narzędzie.
Gilles 'SO - przestań być zły'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.