Redakcja WebInsider.pl zaprasza na WordCamp 2018 Poznań. Poznajmy się w Poznaniu!

Kiedy pisaliśmy jak połączyć się z serwerem (Linux) za pomocą protokołu SSH/SCP, tak by móc swobodnie przesyłać pliki, bez potrzeby instalowania serwera FTP, co nie tylko jest wygodniejsze – te same konta, ale i dużo bezpieczniejsze…

Dziś postaram się rozwinąć temat użytkowników, tak byśmy mogli udzielić dostępu do plików innym użytkownikom, ale bez otwierania przed nimi dostępu do shella (wiersza poleceń).

Serwer SSH/SCP jako serwer SFTP

Teoretycznie nic nie stoi na przeszkodzie, by przy standardowych ustawieniach SSH dodać nowego użytkownika, i niezbędne dane (login i hasło) przekazać koledze/znajomemu, który np. za pośrednictwem WinSCP będzie mógł połączyć się z naszym serwerem i przeglądać pliki… naszego serwera.

Ale sprawdzi się to tylko wtedy, gdy takiej osobie ufamy, gdyż ma ona dostęp do wszystkich plików na serwerze (oczywiście z ograniczeniami wynikającymi z parametrów konta), jak i może się połączyć z naszym serwerem po SSH.

Również w przypadku mniej zaawansowanych osób zazwyczaj nie potrzebujemy – a wręcz przeciwnie – wyświetlać całego drzewa plików serwera, by nie wprowadzać niepotrzebnego zamętu…

Całość pokażę na przykładzie systemu Debian i Raspberry Pi, ale z ew. lekkimi modyfikacjami powinno to działać również w innych systemach.

Grupa użytkownik z ograniczeniami

Dlatego utworzymy nową grupę użytkowników (np. sftp), która będzie miała pewne ograniczenia:

  • Dostęp tylko do zdefiniowanego katalogu, widzianego jako katalog główny (/)
  • Możliwość zapisywania plików do zdefiniowanego katalogu w swoim katalogu domowym
  • Brak dostępu do shella (powłoki, wiersza poleceń)

Na początek tworzymy nową grupę – w naszym wypadku będzie to grupa „sftp”:

sudo groupadd sftp

Nastepnie tworzymy nowego użytkownika, który w naszym przypadku nazywa się „webinsider”, a jego katalog domowy to „/sftp/webinsider”:

sudo useradd -g sftp -d /sftp/webinsider -s /dev/null webinsider

Na koniec jeszcze ustawiamy hasło:

sudo passwd webinsider

Możemy też zmodyfikować/dostosować już istniejącego użytkownika:

sudo usermod -g sftp -d /sftp/użytkownik -s /dev/null użytkownik

I nasz użytkownik (prawie gotowy)

Shell bez shella, czyli powłoka bez powłoki

Jak już wspomniałem – nasz użytkownik nie będzie mógł korzystać z shella, dlatego za pomocą tego fragmentu podstawiliśmy mu nieistniejący:

-s /dev/null webinsider

Może być jeszcze konieczne dodanie naszego fikcyjnego shella do listy dostępnych w systemie powłok:

sudo nano etc/shells

I gdzieś na końcu dodajemy linijkę:

/dev/null

Konfiguracja serwera SSH

Teraz musimy jeszcze zmodyfikować parametry serwera SSH, i w tym celu edytujemy plik konfiguracyjny:

sudo nano /etc/ssh/sshd_config

Znajdujemy linijkę:

Subsystem sftp /usr/lib/openssh/sftp-server

I zmieniamy ją na:

Subsystem sftp internal-sftp

Teraz jeszcze na końcu dodajemy:

Match Group sftp
ChrootDirectory /sftp/%u
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
Match

I możemy zrestartować serwer SSH:

sudo /etc/init.d/ssh restart

Katalogi i uprawnienia (do nich)

W naszej przykładowej konfiguracji wszystkie pliki będą przechowywane w katalogu /sftp, w którym każdy użytkownik będzie miał swój indywidualny katalog, w którym znajdzie również katalog „uploads” do wgrywania plików.

Dlatego teraz utworzymy te katalogi:

sudo mkdir /sftp/
sudo mkdir /sftp/webinsider/
sudo mkdir /sftp/webinsider/uploads

I nadamy odpowiednie uprawnienia:

sudo chown -R root:root /sftp/
sudo chown -R webinsider:sftp /sftp/webinsider/uploads

Tutaj od razu małe wyjaśnienie, dlaczego stosujemy podkatalog „uploads”, a nie bezpośrednio katalog z nazwą użytkownika – ma to związek z ograniczeniami wynikającymi z bezpieczeństwa, które w tym przypadku są nam narzucane „odgórnie” i nie ma co z nimi kombinować, bo skończy się to błędem logowania danego użytkownika.

Stąd:

  • Właścicielem katalogu /sftp/ jest użytkownik „root”
  • Użytkownik „webinsider” ma dostęp „do doczytu” do katalogu /sftp/webinsider, który jest jego katalogiem domowym
  • Użytkownik „webinsider” w swoim katalogu domowym ma katalog „uploads” (oczywiście jego nazwa może być dowolna), do którego może zapisywać pliki

A na „prawie sam koniec” na jednym ekranie szybkie dodawanie kolejnego użytkownika:

linux_scp-jako-sftp_nowy-uzytkownik01

Łączymy się

Gdy wszystko gotowe – można przystąpić do konfiguracji połączenia.

Wszystkie parametry będą identyczne jak przy połączeniu SCP/SSH (adres serwera, port), z tym, że jako typ połączenia wybieramy „SFTP” i oczywiście wpisujemy poprawną nazwę użytkownika i hasło :-)

W przypadku próby połączenia po SSH (np. PuTTY) nasz użytkownik po autoryzacji utraci połączenie.

Oczywiście przed przekazaniem danych dostępowych nowemu użytkownikowi warto samodzielnie sprawdzić, czy wszystko działa tak, jak sobie założyliśmy.

A jak już dany użytkownik nie będzie potrzebny, warto go zablokować lub skasować, o czym przeczytasz na tej stronie…


Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Młody Szymon pomógł tacie zapisać się do Newslettera WebInsider.pl i... teraz idzie popływać
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Janusz i Janusz dzięki motywowi Divi od Elegant Themes koszą siano robiąc strony