Terminal Linux dla początkujących – polecenia przydatne w administracji i cyberbezpieczeństwie.

Poznaj terminal Linux od praktycznej strony: poruszanie się po katalogach, uprawnienia, procesy, sieć i logi. Sprawdź, jak bezpiecznie używać sudo, tworzyć kopie danych i łączyć się przez SSH. Utrwal podstawy dzięki minićwiczeniom i wskazówkom.
11 listopada 2026
blog

Wprowadzenie: terminal w administracji i bezpieczeństwie Linuksa

W terminalu możesz sprawdzić stan serwera, rozpoznać przyczynę awarii i zauważyć oznaki nieautoryzowanej aktywności — także wtedy, gdy system nie ma interfejsu graficznego. To podstawowe narzędzie administratora Linuksa, ale jego skuteczność nie wynika z liczby zapamiętanych poleceń. Ważniejsze jest rozumienie, co dana operacja zrobi, na jakim systemie zostanie wykonana i jakie może mieć konsekwencje.

Terminal, powłoka i sesja zdalna — czym się różnią?

Terminal zapewnia tekstowy interfejs do pracy z systemem. Wpisywane w nim polecenia interpretuje powłoka, na przykład Bash, która uruchamia programy i pozwala łączyć ich działanie. Te pojęcia bywają używane zamiennie, choć oznaczają różne elementy środowiska pracy. Nie każde polecenie jest też częścią samej powłoki — wiele z nich to osobne narzędzia zainstalowane w systemie.

Możesz pracować lokalnie, na własnym komputerze, albo zdalnie, na przykład przez SSH. Po nawiązaniu połączenia z serwerem polecenia wpisywane w tej sesji wykonują się na serwerze, a nie na komputerze, przy którym siedzisz. Podobny wygląd okien łatwo prowadzi do pomyłek, dlatego przed zmianami trzeba potwierdzić, z którym hostem i kontem pracujesz.

Do czego terminal przydaje się w administracji i bezpieczeństwie?

W administracji terminal służy przede wszystkim do konfiguracji, utrzymania dostępności i diagnozowania problemów. W cyberbezpieczeństwie pomaga ocenić stan systemu, wykrywać nieprawidłowości i zbierać informacje potrzebne do zbadania incydentu. Często wykorzystuje się te same narzędzia, ale w innym celu: administrator szuka przyczyny niedostępności usługi, a analityk sprawdza, czy zakłócenie może mieć związek z nieuprawnionym działaniem.

Zasady bezpiecznej pracy od pierwszej sesji

  • Ćwicz w środowisku testowym. Do nauki wybierz maszynę wirtualną bez ważnych danych. Jej migawka ułatwi powrót do wcześniejszego stanu po błędzie.
  • Korzystaj z minimalnych niezbędnych uprawnień. Zwykłe konto powinno być domyślnym wyborem. Uprawnienia administracyjne zwiększają również zasięg skutków pomyłki.
  • Rozumiej polecenie przed uruchomieniem. Nie wklejaj bez sprawdzenia instrukcji z internetu, zwłaszcza gdy pobierają i od razu uruchamiają skrypty. Nieznane opcje weryfikuj w dokumentacji odpowiedniej dla zainstalowanej wersji narzędzia.
  • Oddziel sprawdzanie od wprowadzania zmian. Najpierw ustal stan systemu i zakres planowanej operacji. Przed zmianą ważnej konfiguracji przygotuj kopię zapasową oraz sposób jej przywrócenia.
  • Chroń dane i przestrzegaj zakresu upoważnienia. Hasła, tokeny i inne sekrety wpisane w poleceniu mogą trafić do historii powłoki lub być widoczne w informacjach o procesach. Testy bezpieczeństwa wykonuj wyłącznie na systemach, do których masz odpowiednie upoważnienie.

Przy podejrzeniu incydentu unikaj pochopnego „sprzątania” systemu. Usuwanie plików lub restartowanie usług może zatrzeć ślady potrzebne do analizy. Zapisuj wykonane działania i stosuj obowiązujące procedury reagowania — szybka interwencja nie zawsze jest bezpieczniejsza od świadomego zabezpieczenia informacji.

Poruszanie się po systemie plików i praca z plikami oraz katalogami

W terminalu wiele operacji odnosi się do katalogu, w którym aktualnie pracujesz. Zanim zaczniesz szukać plików konfiguracyjnych lub przeglądać zawartość serwera, ustal swoje położenie w systemie. Do podstawowej orientacji służą trzy polecenia: pwd pokazuje bieżącą lokalizację, cd pozwala ją zmienić, a ls wyświetla zawartość katalogu. W Cognity często słyszymy pytania, jak sprawnie poruszać się po systemie plików Linuksa — odpowiadamy na nie także na blogu.

Ścieżki: jak Linux wskazuje lokalizację pliku

System plików Linuksa tworzy jedno drzewo, którego początkiem jest katalog główny /. Pod nim znajdują się między innymi /etc, przechowujący konfigurację systemu i wielu usług, /home, zawierający zwykle katalogi domowe zwykłych użytkowników, oraz /var, przeznaczony na dane zmieniające się podczas pracy systemu. Znajomość tych lokalizacji ułatwia zawężenie poszukiwań.

Ścieżka bezwzględna zaczyna się od ukośnika i wskazuje lokalizację niezależnie od bieżącego katalogu — przykładem jest /etc/ssh. Ścieżka względna opisuje położenie względem miejsca, w którym pracujesz. Pojedyncza kropka oznacza katalog bieżący, dwie kropki — katalog nadrzędny, a tylda jest zwykle rozwijana przez powłokę do ścieżki katalogu domowego użytkownika. W typowych systemach plików Linuksa wielkość liter ma znaczenie: Dokumenty i dokumenty to różne nazwy.

pwd, cd i ls — orientacja i przeglądanie zawartości

pwd wyświetla ścieżkę bieżącego katalogu. Przydaje się szczególnie po kilku zmianach lokalizacji lub podczas pracy w wielu sesjach terminala. To prosty sposób sprawdzenia, do jakiego miejsca będą odnosić się ścieżki względne.

cd zmienia bieżący katalog powłoki. Możesz wskazać ścieżkę bezwzględną albo względną, przejść do katalogu nadrzędnego lub wrócić do katalogu domowego — samo cd, bez argumentu, zwykle przenosi właśnie tam. Jeśli nazwa katalogu zawiera spacje, podczas wpisywania ścieżki obejmij ją cudzysłowami. Pomocne jest też uzupełnianie nazw klawiszem Tab, dostępne w popularnych powłokach: ogranicza literówki i przyspiesza nawigację.

ls pokazuje nazwy plików i podkatalogów. Bez wskazania ścieżki przegląda katalog bieżący, ale może też wyświetlić zawartość innej lokalizacji bez przechodzenia do niej. Domyślnie pomija nazwy zaczynające się od kropki, czyli tak zwane pliki ukryte. Odpowiednie opcje pozwalają je uwzględnić lub uzyskać dłuższy widok z metadanymi, na przykład rozmiarem i czasem modyfikacji. Samo wylistowanie plików nie pokazuje ich treści.

find i locate — dwa sposoby wyszukiwania

find przeszukuje wskazane drzewo katalogów podczas działania. Pozwala szukać nie tylko po nazwie, lecz także według typu obiektu, rozmiaru czy czasu modyfikacji. W administracji pomaga odnaleźć pliki konfiguracyjne, a przy sprawdzaniu podejrzanych zmian — wytypować niedawno zmodyfikowane pliki. Taka lista jest punktem wyjścia do weryfikacji, nie dowodem naruszenia bezpieczeństwa.

locate korzysta z wcześniej przygotowanej bazy ścieżek, dlatego zwykle szybko odnajduje pliki po nazwie lub fragmencie ścieżki. Wyniki mogą jednak być nieaktualne: nowy plik może jeszcze nie występować w bazie, a usunięty nadal się w niej pojawiać. Narzędzie nie jest też zainstalowane w każdej dystrybucji.

Wybierz locate do szybkiego ustalenia prawdopodobnej lokalizacji, a find do przeszukania aktualnej zawartości konkretnego obszaru. Zaczynaj od możliwie wąskiego katalogu zamiast całego systemu — ograniczysz czas wyszukiwania i liczbę nieistotnych wyników. Pamiętaj, że brak wyniku nie zawsze oznacza brak pliku: wyszukiwanie może być ograniczone dostępem do katalogów lub, w przypadku locate, stanem bazy.

Uprawnienia i własność plików oraz bezpieczne użycie sudo

Błędnie ustawione uprawnienia mogą ujawnić hasła zapisane w konfiguracji albo pozwolić nieuprawnionemu użytkownikowi zmienić skrypt uruchamiany przez administratora. Dlatego przed nadaniem dostępu warto odpowiedzieć na trzy pytania: kto ma korzystać z pliku, jakie czynności musi wykonywać i czy rzeczywiście potrzebuje uprawnień administratora. Przyznawaj tylko taki dostęp, jaki jest niezbędny do wykonania zadania.

Jak działają uprawnienia w Linuksie?

Każdy plik i katalog ma właściciela oraz przypisaną grupę. Podstawowe uprawnienia określa się osobno dla właściciela (u), grupy (g) i pozostałych użytkowników (o). Oznaczenia r, w i x mają nieco inne znaczenie zależnie od rodzaju obiektu.

UprawnieniePlikKatalog
r — odczytOdczytywanie zawartości.Wyświetlanie nazw znajdujących się w nim elementów.
w — zapisModyfikowanie zawartości.Tworzenie, usuwanie i zmienianie nazw elementów — zwykle wymaga także x.
x — wykonanieUruchamianie pliku jako programu lub skryptu.Przechodzenie przez katalog i dostęp do elementów o znanych nazwach, zgodnie z ich uprawnieniami.

Ważna różnica: brak prawa zapisu do pliku nie chroni go automatycznie przed usunięciem. Możliwość usunięcia zależy przede wszystkim od uprawnień katalogu nadrzędnego; dodatkowe ograniczenia może wprowadzać m.in. bit sticky, stosowany w katalogach współdzielonych.

chmod — zmiana praw dostępu

Polecenie chmod zmienia uprawnienia, ale nie właściciela. Zapis symboliczny pozwala wskazać konkretną zmianę, a liczbowy — ustawić cały zestaw podstawowych praw. W zapisie liczbowym odczyt ma wartość 4, zapis 2, a wykonanie 1. Sumy zapisuje się kolejno dla właściciela, grupy i pozostałych użytkowników.

chmod u+x skrypt.sh
chmod 640 raport.txt
chmod 700 prywatne

Pierwsze polecenie dodaje właścicielowi prawo wykonania skryptu, nie zmieniając pozostałych praw. Drugie pozwala właścicielowi czytać i modyfikować raport, grupie jedynie go czytać, a pozostałym nie daje dostępu. Trzecie, jeśli prywatne jest katalogiem, zapewnia dostęp wyłącznie właścicielowi w ramach podstawowych uprawnień.

Nie traktuj chmod 777 jako rozwiązania błędu „Permission denied”: przyznaje wszystkim odczyt, zapis i wykonanie. Zachowaj też ostrożność z opcją -R, która zmienia uprawnienia rekurencyjnie. Pliki i katalogi zwykle potrzebują różnych ustawień.

chown — właściciel i grupa

Polecenie chown zmienia właściciela lub przypisaną grupę. Nie zastępuje chmod: określa, do kogo odnoszą się istniejące prawa. Przykładowo poniższe polecenie przypisuje plik właścicielowi root i grupie root:

sudo chown root:root raport.txt

To przykład składni, nie zalecenie dla zwykłych dokumentów. Zmiana właściciela zazwyczaj wymaga uprawnień administratora. W przypadku plików używanych przez usługę błędna własność może uniemożliwić jej działanie, dlatego nie zmieniaj właścicieli całych drzew katalogów bez sprawdzenia wymagań.

umask — ograniczenia dla nowych plików

umask określa, które uprawnienia mają zostać wyłączone podczas tworzenia nowych obiektów. Nie zmienia istniejących plików i nie nadaje praw, których aplikacja nie zażądała.

umask 027

Przy standardowych żądaniach aplikacji i braku domyślnych list ACL takie ustawienie daje nowym plikom prawa 640, a katalogom 750. Pozostali użytkownicy nie otrzymują dostępu, natomiast grupa może czytać pliki oraz przeglądać katalogi. Polecenie działa w bieżącej powłoce i procesach, które dziedziczą po niej maskę — nie ustawia jej automatycznie dla całego systemu.

sudo i visudo — kontrolowane podnoszenie uprawnień

sudo pozwala wykonać polecenie jako inny użytkownik, domyślnie jako root, zgodnie z przyznaną polityką. Nie jest zabezpieczeniem przed pomyłką: błędna ścieżka lub argument nadal mogą spowodować szkody. Podnoś uprawnienia dla konkretnego polecenia zamiast pracować stale w powłoce administratora.

Politykę sudo edytuj przez visudo, a nie bezpośrednio zwykłym edytorem. Narzędzie blokuje równoczesną edycję i sprawdza składnię przed zaakceptowaniem zmian. Osobną kontrolę konfiguracji wykonasz drugim z poniższych poleceń:

sudo visudo
sudo visudo -c

Poprawna składnia nie oznacza jednak bezpiecznej polityki. Ograniczaj dozwolone polecenia i ich argumenty; uważaj na programy umożliwiające uruchomienie powłoki lub zapis do plików systemowych. Nie włączaj szerokiego dostępu bez hasła wyłącznie dla wygody. Przy zmianach na zdalnym serwerze zachowaj działającą sesję administratora i sprawdź nowe zasady w oddzielnym połączeniu, zanim ją zamkniesz.

💡 Pro tip: Zanim użyjesz sudo lub zmienisz uprawnienia po błędzie „Permission denied”, sprawdź całą ścieżkę poleceniem namei -l /ścieżka/do/pliku. Przyczyną może być brak prawa x do któregoś z katalogów nadrzędnych — wtedy zmiana praw samego pliku nie pomoże.

Filtrowanie i przetwarzanie danych w terminalu: grep, awk, sed oraz potoki i przekierowania

Gdy polecenie zwraca setki wierszy, ręczne przeglądanie wyniku utrudnia znalezienie istotnych informacji. W terminalu możesz od razu odfiltrować potrzebne wpisy, wybrać konkretne kolumny lub zmienić fragmenty tekstu. W administracji i cyberbezpieczeństwie pomaga to ograniczyć szum informacyjny oraz przygotować dane do dalszej analizy. Podstawowy zestaw narzędzi tworzą grep, awk i sed — każde z nich sprawdza się w nieco innym zadaniu. W Cognity omawiamy filtrowanie i przetwarzanie danych zarówno od strony technicznej, jak i praktycznej — zgodnie z realiami pracy uczestników.

NarzędziePodstawowe zastosowanieKiedy je wybrać?
grepWyszukiwanie wierszy pasujących do wzorca.Gdy chcesz znaleźć określony komunikat lub wykluczyć niepotrzebne wpisy.
awkPrzetwarzanie pól, czyli wydzielonych części wiersza.Gdy interesują Cię wybrane kolumny, warunki lub proste obliczenia.
sedPrzekształcanie tekstu, między innymi zamiana jego fragmentów.Gdy potrzebujesz powtarzalnej zmiany bez ręcznej edycji każdego wiersza.

grep: wybieranie potrzebnych wierszy

grep przeszukuje tekst i domyślnie wypisuje całe wiersze zawierające dopasowanie. Opcja -n dodaje numery wierszy, -i ignoruje wielkość liter, a -v odwraca wybór: pokazuje wiersze, które nie pasują do wzorca.

grep -n -F 'ERROR' raport.txt

To polecenie wyświetli wiersze pliku raport.txt zawierające dosłowny tekst ERROR, wraz z ich numerami. Opcja -F wyłącza interpretowanie wzorca jako wyrażenia regularnego. Jest przydatna przy wyszukiwaniu adresów IP lub innych ciągów zawierających kropki, które w wyrażeniach regularnych mają specjalne znaczenie. Wzorce warto ujmować w pojedyncze cudzysłowy, aby powłoka nie interpretowała zawartych w nich znaków.

awk i sed: wybór pól oraz zmiana tekstu

awk traktuje każdy wiersz jako rekord podzielony na pola. Domyślnie rozdziela je na podstawie białych znaków, takich jak spacje i tabulatory. Oznaczenia $1, $2 i kolejne wskazują poszczególne pola, natomiast $0 oznacza cały wiersz.

awk '{print $1, $3}' dane.txt

Przykład wypisuje pierwsze i trzecie pole każdego wiersza. Taki wybór ma sens, gdy dane mają przewidywalną strukturę. Jeśli wartości same zawierają spacje, domyślny podział może dać inny rezultat, niż oczekujesz. Separator można ustawić opcją -F, ale samo wskazanie przecinka nie wystarczy do poprawnej obsługi każdego pliku CSV, zwłaszcza z polami ujętymi w cudzysłowy.

sed przydaje się natomiast do zamiany fragmentów tekstu:

sed 's/stara_nazwa/nowa_nazwa/g' dane.txt

Instrukcja s wykonuje zamianę, a końcowe g obejmuje wszystkie dopasowania w danym wierszu, nie tylko pierwsze. Bez opcji -i plik źródłowy pozostaje niezmieniony — wynik trafia na standardowe wyjście, zwykle do terminala. To bezpieczny sposób sprawdzenia efektu przed zapisaniem zmian.

Potoki i przekierowania: łączenie etapów pracy

Potok | przekazuje standardowe wyjście jednego polecenia na standardowe wejście następnego. Pozwala budować przetwarzanie etapami:

grep -F 'ERROR' raport.txt | grep -v -F 'DEBUG'

Pierwsze polecenie wybiera wiersze zawierające ERROR, a drugie usuwa z tego wyniku wiersze zawierające DEBUG. Zwykły potok przekazuje dane ze standardowego wyjścia, ale nie przechwytuje automatycznie komunikatów ze standardowego wyjścia błędów.

  • > zapisuje standardowe wyjście do pliku; tworzy go lub opróżnia istniejący.
  • >> dopisuje wynik na końcu pliku, bez usuwania wcześniejszej zawartości.
  • 2> przekierowuje standardowe wyjście błędów, na przykład do osobnego pliku.
  • < dostarcza zawartość pliku na standardowe wejście polecenia.
grep -F 'ERROR' raport.txt > wybrane.txt 2> bledy.txt

Dopasowane wiersze trafią do wybrane.txt, a ewentualne błędy, na przykład informacja o braku pliku wejściowego, do bledy.txt. Oba pliki wyjściowe zostaną utworzone lub opróżnione.

Nie kieruj wyniku przez > do tego samego pliku, który polecenie odczytuje. Powłoka opróżnia plik docelowy przed uruchomieniem programu, co grozi utratą danych. Zapisuj przetworzony tekst do osobnego pliku i sprawdzaj rezultat. Przy analizie bezpieczeństwa zachowuj też niezmieniony materiał źródłowy: odfiltrowany wynik ułatwia pracę, ale może pomijać ważny kontekst.

5. Sieć i pobieranie danych: ss/netstat, curl/wget

Gdy aplikacja nie odpowiada przez sieć, warto rozdzielić dwa pytania: czy usługa nasłuchuje na właściwym porcie oraz czy można się z nią połączyć i otrzymać odpowiedź? Narzędzia ss i netstat pomagają sprawdzić lokalne gniazda sieciowe. Z kolei curl i wget pozwalają wysyłać żądania do serwerów i pobierać dane. To uzupełniające się zastosowania — sam otwarty port nie potwierdza jeszcze, że aplikacja działa poprawnie.

ss i netstat — sprawdzanie portów i połączeń

W większości współczesnych dystrybucji Linuksa podstawowym narzędziem do sprawdzania gniazd jest ss. Starszy netstat nadal pojawia się w dokumentacji i na utrzymywanych od lat serwerach, ale zwykle wymaga pakietu net-tools, który nie zawsze jest domyślnie zainstalowany. Na początek warto poznać jedno proste wywołanie:

ss -tuln

Opcje -t i -u wybierają odpowiednio TCP oraz UDP, -l ogranicza wynik do gniazd nasłuchujących, a -n pokazuje adresy i numery portów bez zamiany ich na nazwy. W przypadku UDP nie ma nasłuchiwania w takim samym sensie jak przy TCP — zobaczysz gniazda gotowe do odbierania datagramów, często ze stanem UNCONN. Odpowiednikiem w starszym narzędziu jest netstat -tuln.

Z perspektywy bezpieczeństwa szczególnie ważny jest adres lokalny, do którego przypisano port:

  • 127.0.0.1 lub [::1] — usługa jest dostępna przez interfejs pętli zwrotnej, czyli lokalnie na danym hoście.
  • 0.0.0.0 — usługa nasłuchuje na wszystkich lokalnych adresach IPv4.
  • [::] — usługa nasłuchuje na wszystkich lokalnych adresach IPv6; obsługa również IPv4 zależy od konfiguracji systemu i aplikacji.

Nasłuchiwanie na wszystkich adresach nie oznacza automatycznie dostępności z internetu. Znaczenie mają także zapora, routing oraz reguły sieciowe dostawcy infrastruktury. Jeśli jednak panel administracyjny miał działać wyłącznie lokalnie, adres 0.0.0.0 jest sygnałem, że należy sprawdzić jego konfigurację.

Polecenie ss -tn pokazuje nienasłuchujące gniazda TCP, w tym zestawione połączenia i ich zdalne adresy. Dodanie -p, na przykład w ss -tulpn, pozwala powiązać gniazda z procesami, o ile użytkownik ma dostęp do tych informacji. Nieznany adres lub port to punkt wyjścia do weryfikacji, a nie samodzielny dowód włamania.

curl i wget — odpowiedź serwera a pobranie pliku

curl przydaje się przede wszystkim do sprawdzania odpowiedzi HTTP, pracy z API i kontrolowanego przesyłania danych. Domyślnie wypisuje pobraną treść w terminalu. wget jest wygodny do pobierania plików: standardowo zapisuje je na dysku i obsługuje między innymi wznawianie pobierania, jeśli serwer na to pozwala.

Aby sprawdzić nagłówki odpowiedzi bez pobierania treści strony, możesz użyć:

curl -I https://www.debian.org/

Opcja -I wysyła żądanie HEAD. Wynik może pokazać kod odpowiedzi, przekierowanie czy typ zawartości. Niektóre serwery obsługują jednak HEAD inaczej niż zwykłe żądanie GET, dlatego niepowodzenie tego testu nie zawsze oznacza niedostępność strony. Również odpowiedź 403 lub 404 oznacza, że otrzymano odpowiedź HTTP — problem nie musi leżeć w samym połączeniu.

Poniższe polecenia pokazują dwa alternatywne sposoby zapisania strony do pliku o wskazanej nazwie:

curl -fL --output debian.html https://www.debian.org/
wget -O debian.html https://www.debian.org/

W curl opcja -f sygnalizuje błąd dla odpowiedzi HTTP o kodzie co najmniej 400, a -L pozwala podążać za przekierowaniami. W wget wielka litera -O wskazuje plik docelowy. Wybierz jedno z poleceń i sprawdź nazwę pliku przed uruchomieniem — istniejący plik może zostać nadpisany.

Bezpieczne pobieranie danych

Korzystaj z HTTPS i nie obchodź błędów certyfikatu przez curl -k ani wget --no-check-certificate. Takie opcje wyłączają istotną część weryfikacji tożsamości serwera. Sprawdź też domenę źródłową: szyfrowane połączenie nie gwarantuje, że pobierany plik jest bezpieczny.

Nie przekazuj pobranego skryptu bezpośrednio do powłoki. Najpierw zapisz go, zweryfikuj źródło i przejrzyj zawartość. Przy pobieraniu oprogramowania sprawdzaj podpis lub sumę kontrolną opublikowaną zaufanym kanałem. Haseł i tokenów nie umieszczaj bezpośrednio w adresach URL ani argumentach poleceń — mogą trafić do historii powłoki, listy procesów lub rejestrów pośredniczących systemów.

Zarządzanie procesami i usługami: ps, top, kill/killall, systemctl

Gdy serwer zwalnia, aplikacja przestaje odpowiadać albo pojawia się podejrzana aktywność, najpierw trzeba ustalić, co faktycznie działa w systemie. Proces to uruchomiony program lub jego część, identyfikowana numerem PID. Usługa to zadanie zarządzane przez system — często działające w tle, jak serwer WWW. Jedna usługa może uruchamiać wiele procesów, dlatego zakończenie pojedynczego procesu nie zawsze oznacza zatrzymanie całej usługi.

ps i top — jednorazowy przegląd czy obserwacja na żywo?

ps pokazuje stan procesów w chwili wykonania polecenia. Przydaje się do sprawdzenia identyfikatora PID, właściciela procesu i uruchomionego polecenia. Popularny wariant ps aux wyświetla procesy wszystkich użytkowników wraz z informacjami o wykorzystaniu zasobów.

top odświeża widok cyklicznie, dlatego lepiej sprawdza się podczas obserwowania przeciążenia. Pozwala zauważyć, czy proces stale zużywa dużo CPU, czy obciążenie pojawia się tylko chwilowo. W typowej linuksowej wersji klawisz P sortuje procesy według użycia procesora, M według pamięci, a q zamyka program.

ps aux
top

Wysokie zużycie zasobów nie jest samo w sobie dowodem ataku. Może wynikać z tworzenia kopii zapasowej, aktualizacji lub normalnej pracy aplikacji. Przed reakcją sprawdź użytkownika procesu, czas jego działania oraz związek z obsługiwaną usługą. Pamiętaj też, że lista argumentów procesu może ujawnić poufne dane — nie udostępniaj bez sprawdzenia całego wyniku ps aux.

kill i killall — wysyłanie sygnałów do procesów

Nazwa kill bywa myląca: polecenie wysyła sygnał, a nie zawsze natychmiast kończy proces. Domyślny SIGTERM prosi program o zakończenie pracy i pozwala mu wykonać procedury porządkowe, np. zapisać dane. Przed wysłaniem sygnału potwierdź, że wskazany PID nadal należy do właściwego procesu.

ps -p 1234 -o pid,ppid,user,stat,comm
kill -TERM 1234

Numer 1234 jest przykładem — zastąp go zweryfikowanym PID-em. Jeżeli proces nie reaguje, po odczekaniu i ponownym sprawdzeniu sytuacji można rozważyć kill -KILL 1234, czyli odpowiednik kill -9 1234. SIGKILL traktuj jako ostateczność: program nie może go obsłużyć ani przed zakończeniem uporządkować swojej pracy, co grozi utratą niezapisanych danych.

W Linuksie killall wybiera procesy według nazwy, a nie PID-u. Może więc zakończyć kilka instancji tego samego programu. To wygodne, ale mniej precyzyjne niż wskazanie pojedynczego procesu. Zwykły użytkownik zasadniczo może sygnalizować własne procesy; podwyższone uprawnienia zwiększają zakres możliwych skutków.

systemctl — kontrola usług zarządzanych przez systemd

W dystrybucjach korzystających z systemd usługami zarządza się przez systemctl. Jeśli problem dotyczy takiej usługi, zwykle lepiej sterować nią przez menedżera niż kończyć jej proces poleceniem kill. Zależnie od konfiguracji systemd może automatycznie ponownie uruchomić zakończony proces.

Poniższe przykłady dotyczą serwera Nginx, jeśli jego jednostka jest zainstalowana jako nginx.service. Operacje zmieniające stan usługi mogą wymagać uprawnień administratora.

systemctl status nginx.service
sudo systemctl stop nginx.service
sudo systemctl start nginx.service
sudo systemctl restart nginx.service

status pozwala sprawdzić bieżący stan, stop zatrzymuje usługę, a start ją uruchamia. restart oznacza zatrzymanie i ponowne uruchomienie, więc może przerwać obsługę użytkowników. Nie należy mylić tych działań z enable i disable, które służą do konfigurowania automatycznego uruchamiania jednostki: bez dodatkowych opcji nie uruchamiają ani nie zatrzymują jej od razu.

Przed interwencją oceń skutki. Zatrzymanie usługi odpowiedzialnej za zdalny dostęp może odciąć możliwość dalszej administracji. Przy podejrzeniu incydentu bezrefleksyjny restart lub zakończenie procesu może natomiast zniszczyć ulotne ślady. Jeśli sytuacja na to pozwala, najpierw utrwal podstawowe informacje o procesie i stanie usługi, a następnie dobierz działanie do zagrożenia i procedur reagowania.

Logi i diagnostyka incydentów: journalctl i podstawy analizy logów

Gdy usługa przestaje działać albo pojawia się podejrzenie nieautoryzowanego dostępu, logi pomagają odtworzyć przebieg zdarzeń. Rejestrują m.in. uruchamianie usług, błędy aplikacji, próby uwierzytelnienia i komunikaty jądra. Pojedynczy wpis jest wskazówką, nie gotową diagnozą — jego znaczenie zależy od czasu wystąpienia, źródła oraz tego, co wydarzyło się przed nim i po nim.

Journal systemd a tradycyjne pliki logów

W dystrybucjach korzystających z systemd podstawowym narzędziem do przeglądania dziennika jest journalctl. Udostępnia wpisy zbierane przez systemd-journald wraz z metadanymi, takimi jak czas, nazwa jednostki systemd, identyfikator procesu czy priorytet komunikatu. Dzięki temu można zawęzić analizę do konkretnej usługi, przedziału czasu, bieżącego uruchomienia systemu albo komunikatów jądra. Możliwe jest też obserwowanie nowych wpisów na bieżąco, co ułatwia powiązanie błędu z wykonywaną czynnością.

Nie wszystkie zdarzenia muszą jednak trafiać do tego dziennika. Aplikacje mogą zapisywać własne logi tekstowe, często w katalogu /var/log, lub przekazywać je do zewnętrznego systemu. Nazwy i lokalizacje plików zależą od dystrybucji oraz konfiguracji. Journal i pliki tekstowe mogą częściowo zawierać te same informacje, ale nie należy zakładać, że jedno źródło zawsze zastępuje drugie.

Jak rozpocząć analizę podejrzanego zdarzenia

Zamiast przeglądać cały dziennik, najpierw określ objaw i przybliżony moment jego wystąpienia. Następnie sprawdź kilka minut przed zdarzeniem i po nim; w razie potrzeby poszerz zakres. Taka kolejność ogranicza szum informacyjny i pomaga zbudować oś czasu.

  • Ustal czas i jego kontekst. Przy porównywaniu logów z różnych maszyn uwzględnij strefy czasowe oraz możliwe rozbieżności zegarów. Bez tego łatwo pomylić kolejność zdarzeń.
  • Wybierz właściwe źródło. Błąd uruchomienia usługi sprawdzaj w jej dzienniku, problemy sprzętowe w komunikatach jądra, a podejrzane logowania w zapisach mechanizmu uwierzytelniania.
  • Szukaj powiązań. Porównuj konta użytkowników, adresy źródłowe, identyfikatory procesów i treść komunikatów. Seria nieudanych logowań, po której następuje udane logowanie, wymaga weryfikacji, ale sama nie dowodzi przejęcia konta.
  • Nie ograniczaj się do błędów. Wpisy informacyjne mogą dokumentować udane logowanie lub uruchomienie usługi. Z kolei wysoki priorytet komunikatu nie oznacza automatycznie incydentu bezpieczeństwa.

Zachowanie logów i ostrożność we wnioskowaniu

Brak wpisu nie oznacza, że zdarzenie nie wystąpiło. Logowanie mogło być wyłączone, starsze dane usunięte przez mechanizm retencji, a dostęp do części zapisów ograniczony uprawnieniami. Trwałość dziennika systemd również zależy od konfiguracji — przy przechowywaniu wyłącznie w pamięci ulotnej wpisy nie przetrwają restartu.

Jeśli podejrzewasz incydent, zabezpiecz dostępne zapisy przed rotacją lub usunięciem. Zachowaj oryginały, pracuj na kopiach i odnotuj źródło oraz czas pozyskania danych. Nie edytuj materiału źródłowego, aby „uporządkować” analizę. Logi mogą zawierać dane osobowe, tokeny lub inne informacje poufne, dlatego ogranicz ich udostępnianie, a do konsultacji przygotuj osobną, zanonimizowaną kopię. W notatkach wyraźnie oddzielaj potwierdzone zdarzenia od hipotez — to podstawa rzetelnej diagnozy.

8. Archiwizacja, kopie i zdalny dostęp: tar, gzip, rsync oraz SSH

Spakowanie katalogu, wykonanie kopii zapasowej i przesłanie plików na serwer to trzy różne zadania. Archiwum ułatwia przechowywanie danych, synchronizacja pozwala sprawnie aktualizować ich kopię, a SSH zabezpiecza komunikację z drugim komputerem. W administracji Linuksem narzędzia te często współpracują, ale żadne z nich samo w sobie nie gwarantuje możliwości odzyskania danych.

tar i gzip: porządkowanie danych i zmniejszanie ich rozmiaru

tar łączy pliki i katalogi w jedno archiwum, zachowując ich strukturę oraz część metadanych, takich jak uprawnienia. gzip służy do kompresji: zmniejsza rozmiar danych, lecz nie zbiera samodzielnie całego drzewa katalogów w jeden plik. Dlatego oba narzędzia często stosuje się razem, tworząc archiwa z rozszerzeniem .tar.gz.

Takie archiwum przydaje się do przenoszenia projektu lub zachowania stanu wybranego katalogu przed zmianami. Nie należy jednak mylić kompresji z ochroną poufności: gzip nie szyfruje danych. Archiwum zawierające konfigurację, hasła lub klucze wymaga odpowiednio zabezpieczonego miejsca przechowywania, a w razie potrzeby również szyfrowania.

Przed rozpakowaniem archiwum sprawdź jego zawartość i ścieżki zapisanych plików. Materiały z nieznanego źródła rozpakowuj bez uprawnień administratora, do osobnego katalogu roboczego. Pozwala to ograniczyć ryzyko nadpisania ważnych danych; szczególnej uwagi wymagają nietypowe ścieżki oraz dowiązania.

rsync: sprawne kopiowanie, ale nie automatycznie bezpieczny backup

rsync kopiuje i synchronizuje dane lokalnie lub między komputerami. Przy kolejnych uruchomieniach może ograniczyć przesyłanie do różnic, dlatego sprawdza się przy regularnym aktualizowaniu dużych zbiorów. Do bezpiecznego przesyłania przez sieć można wykorzystać połączenie SSH — sam wybór rsync nie oznacza jeszcze, że transmisja jest szyfrowana.

Najważniejsze jest poprawne rozpoznanie źródła i miejsca docelowego. Znaczenie ma nawet ukośnik na końcu ścieżki źródłowej: wpływa na to, czy kopiowana będzie zawartość katalogu, czy katalog jako element struktury docelowej. Przed właściwą operacją warto wykonać przebieg próbny, który pokaże planowane działania bez wprowadzania zmian.

Synchronizacja może przenieść na kopię również skutki pomyłki. Opcja usuwania plików nieobecnych w źródle potrafi skasować potrzebne dane w miejscu docelowym. Dlatego backup powinien uwzględniać wcześniejsze wersje, niezależne miejsce przechowywania oraz regularne próby odtworzenia. Kopia na tym samym dysku nie zabezpieczy przed jego awarią.

SSH, klucze oraz przesyłanie plików przez scp i sftp

SSH zapewnia szyfrowany zdalny dostęp do komputera. Podczas pierwszego połączenia trzeba zweryfikować odcisk klucza hosta, porównując go z wartością uzyskaną z zaufanego, niezależnego źródła. Bezrefleksyjne zaakceptowanie komunikatu oznacza rezygnację z istotnej kontroli tożsamości serwera. Nie ignoruj też późniejszego ostrzeżenia o zmianie tego klucza — najpierw ustal przyczynę.

Uwierzytelnianie kluczem wykorzystuje parę: klucz publiczny trafia na serwer, a prywatny pozostaje pod kontrolą właściciela. Klucza prywatnego nie wysyłaj innym osobom ani nie dodawaj do repozytorium. Warto zabezpieczyć go silnym hasłem; agent SSH może ułatwić korzystanie z niego bez ciągłego ponawiania tego hasła.

Do przesyłania plików przez SSH służą między innymi scp i sftp. Pierwsze narzędzie jest wygodne przy prostym kopiowaniu, drugie oferuje interaktywną pracę z plikami na serwerze. SFTP nie jest zwykłym FTP z włączonym szyfrowaniem — to odrębny protokół.

Mini-ćwiczenia i typowe błędy początkujących

W Cognity łączymy teorię z praktyką — dlatego zagadnienia archiwizacji, synchronizacji i zdalnego dostępu rozwijamy także w formie ćwiczeń na szkoleniach. Samodzielną naukę warto zacząć od prostych zadań na danych testowych, których utrata nie spowoduje szkód.

  • Archiwizacja: przygotuj katalog z kilkoma nieistotnymi plikami, utwórz skompresowane archiwum i odtwórz je w innym miejscu. Sprawdź kompletność oraz zawartość odzyskanych plików.
  • Synchronizacja: wykonaj próbny przebieg rsync między dwoma katalogami testowymi. Porównaj planowane rezultaty dla ścieżki źródłowej z końcowym ukośnikiem i bez niego, zanim uruchomisz kopiowanie.
  • Zdalny dostęp: na własnej maszynie wirtualnej lub serwerze, do którego masz upoważnienie, zweryfikuj klucz hosta, skonfiguruj logowanie kluczem i prześlij nieszkodliwy plik przez SFTP.

Najczęstsze błędy to uznawanie archiwum za pełny backup, zamiana źródła z celem, pochopne włączanie usuwania podczas synchronizacji i akceptowanie ostrzeżeń SSH bez sprawdzenia. Dobra zasada brzmi: najpierw zweryfikuj cel i przewidywany skutek operacji, potem ją wykonaj, a na końcu sprawdź rezultat.

💡 Pro tip: Przed synchronizacją uruchom rsync -ani katalog/ kopia/ — opcja -n włącza przebieg próbny bez zmian w danych, a -i pokazuje planowane operacje. Jeśli zamierzasz użyć --delete, uwzględnij tę opcję również w próbie i sprawdź pozycje oznaczone jako *deleting, zanim wykonasz polecenie bez -n.

Najczęściej zadawane pytania i odpowiedzi odnośnie Terminal Linux dla początkujących – polecenia przydatne w administracji i cyberbezpieczeństwie.

Od jakich poleceń zacząć naukę terminala Linux?

Naukę terminala Linux zacznij od pwd, cd i ls, czyli poleceń pozwalających ustalić położenie i poruszać się po katalogach. Ćwicz na maszynie wirtualnej bez ważnych danych, korzystając ze zwykłego konta użytkownika.

  • pwd pokazuje ścieżkę bieżącego katalogu.
  • cd pozwala przejść do innej lokalizacji.
  • ls wyświetla zawartość wskazanego katalogu.

Następnie poznaj wyszukiwanie plików przez find i filtrowanie tekstu za pomocą grep.

Jak naprawić błąd „Permission denied” w terminalu Linux?

Błąd „Permission denied” diagnozuj przez sprawdzenie uprawnień pliku oraz wszystkich katalogów w jego ścieżce, zamiast od razu używać sudo. Polecenie namei -l /ścieżka/do/pliku pomaga zauważyć brak prawa przechodzenia przez katalog nadrzędny. Sprawdź też właściciela i grupę. Dopiero po ustaleniu przyczyny zmień niezbędne prawa przez chmod lub własność przez chown. Nie stosuj chmod 777 jako uniwersalnej naprawy, ponieważ nadmiernie rozszerza dostęp.

Dlaczego locate nie znajduje pliku, który istnieje w systemie?

Polecenie locate może nie znaleźć istniejącego pliku, ponieważ korzysta z wcześniej przygotowanej bazy ścieżek, a nie przeszukuje systemu na bieżąco. Nowo utworzony plik może jeszcze nie być uwzględniony w tej bazie. Jeśli potrzebujesz sprawdzić aktualną zawartość katalogów, użyj find i zawęź wyszukiwanie do prawdopodobnej lokalizacji. Uwzględnij również uprawnienia: ograniczony dostęp do katalogów może sprawić, że wyszukiwanie nie obejmie wszystkich plików.

Jak sprawdzić otwarte porty w Linuksie i ich dostępność z internetu?

Lokalne porty i gniazda sprawdzisz poleceniem ss -tuln, ale jego wynik nie potwierdza dostępności usługi z internetu. Adres 127.0.0.1 oznacza dostęp przez pętlę zwrotną, natomiast 0.0.0.0 wskazuje nasłuchiwanie na wszystkich lokalnych adresach IPv4. Dostęp z zewnątrz zależy również od zapory, routingu i reguł dostawcy infrastruktury. Wariant ss -tulpn pomaga powiązać gniazda z procesami, jeśli masz odpowiednie uprawnienia do odczytu tych informacji.

Kiedy użyć kill, a kiedy systemctl do zatrzymania programu?

Do zatrzymania usługi zarządzanej przez systemd używaj systemctl stop, a do wysłania sygnału konkretnemu procesowi — kill. Menedżer usług uwzględnia konfigurację jednostki; zakończenie samego procesu może spowodować jego automatyczne ponowne uruchomienie. Przed użyciem kill sprawdź PID i zacznij od sygnału SIGTERM, który pozwala programowi uporządkować pracę. SIGKILL, czyli kill -9, traktuj jako ostateczność ze względu na ryzyko utraty niezapisanych danych.

Jak rozpocząć analizę logów przy podejrzeniu włamania do Linuksa?

Analizę logów przy podejrzeniu włamania zacznij od ustalenia czasu zdarzenia i zabezpieczenia dostępnych zapisów. W systemach z systemd korzystaj z journalctl, ale uwzględnij również osobne logi aplikacji.

  • Sprawdź wpisy sprzed zdarzenia i bezpośrednio po nim.
  • Porównaj konta użytkowników, adresy źródłowe i identyfikatory procesów.
  • Uwzględnij strefy czasowe oraz rozbieżności zegarów.

Pracuj na kopiach i oddzielaj potwierdzone fakty od hipotez. Pojedynczy błąd logowania nie dowodzi przejęcia konta.

Czy rsync wystarczy do wykonania bezpiecznej kopii zapasowej?

Samo użycie rsync nie gwarantuje bezpiecznej kopii zapasowej, ponieważ synchronizacja może przenieść do miejsca docelowego również skutki błędów. Szczególnej ostrożności wymaga opcja --delete, która usuwa pliki nieobecne w źródle. Przed kopiowaniem wykonaj przebieg próbny z opcją -n i sprawdź kierunek synchronizacji. Skuteczny backup powinien uwzględniać wcześniejsze wersje danych, niezależne miejsce przechowywania oraz regularne próby odtworzenia. Kopia na tym samym dysku nie chroni przed jego awarią.

Co zrobić, gdy SSH ostrzega o zmianie klucza hosta?

Gdy SSH ostrzega o zmianie klucza hosta, najpierw ustal przyczynę i zweryfikuj tożsamość serwera, zamiast automatycznie akceptować nowy klucz. Porównaj jego odcisk z wartością uzyskaną z zaufanego, niezależnego źródła. Sama zmiana nie przesądza o ataku, ale wymaga wyjaśnienia przed kontynuowaniem połączenia. Ta kontrola dotyczy serwera, nie Twojej pary kluczy użytkownika; klucz prywatny nadal powinien pozostawać wyłącznie pod Twoją kontrolą.

icon

Formularz kontaktowyContact form

Imię *Name
NazwiskoSurname
Adres e-mail *E-mail address
Telefon *Phone number
UwagiComments