Linux podstawy
Struktura katalogów
/bin - pliki binarne, wykonywalne, np. ls, cd czy cp
/sbin - pliki binarne, wykonywalne, tylko na uprawnieniach root-a.
/boot - pliki do uruchamiania systemu: jądro, pliki bootloader-a
/dev - lista urządzeń
/etc - pliki konfiguracyjne i ustawienia systemowe
/home - katalogi użytkowników systemu
/lib - biblioteki współdzielone używane przez "programy", pliki wykonywalne z /bin i sbin
/mnt - montowanie dysków, obrazów płyt, innych miejsc storage-u
/opt - katalog na aplikacje od osób trzecich
/proc - system plików z informacjami o procesach aktualnie działających w systemie
/root - pliki użytkownika root
/var - katalog z plikami które często ulegają zmianie np. logi systemowe, strony www, pliki baz danych
/tmp - pliki które usuwane są zawsze podczas restartu systemu
/usr - pliki programów dla użytkowników systemu, pliki samodzielnie kompilowanych programów
Skrypty startowe systemu
/etc/systemd/system/* - pliki ze skryptami startowymi usług
vim /etc/systemd/system/apache.service - przykład
systemctl enable apache.service - podpięcie skryptu do auto uruchamiania
systemctl daemon-reload - przeładowanie i wczytanie podpiętych skryptów
Polecenia
ls - lista plików i katalogówls -la - lista plików z szczegółami: data utworzenia, uprawnieniach, właściciel, wielkość w bajtach itp.ls -la [nazwa-pliku] - informacje tylko o jednym plikuls -lah - pokazuje wielkości plików w MB zamiast w bajtach
du -sh [katalog] - pokazuje rozmiar katalogudu -shc [katalog] - asd
cd - wchodzenie do wskazanej ścieżki, katalogu
../ - ścieżka wstecz o jeden wyżej
touch - tworzenie nowego pliku
cat [nazwa-pliku] - wylistowanie/wypisanie w konsoli zawartości wskazanego plikucat [nazwa-pliku] | more - wylistowanie zawartości pliku z możliwością przeglądania/scrolowania
mv - przenoszenie pliku w inne miejsce, zmiana nazwy pliku
mkdir - tworzenie nowego katalogu
cp - kopiowanie pliku
rm - kasowanie wskazanego pliku-r - rekurencja, kasowanie plików znajdujących się wewnątrz drzewa-f - wyłączenie pytania o potwierdzenie usunięcia kolejnych plików z wewnątrz
rmdir - usuwanie katalogu z zawartością
which - wskazanie miejsca gdzie znajduje się plik wykonywanego polecenia
wc -l - pokazanie ile plik ma linii
Przekierowanie informacji input/output
0 - standardowy input
1 - standardowy output
2 - błędy z output-u
echo "jakaś informacja" > plik.txt - zapisanie wyniku komendy do wskazanego pliku
echo "jakaś informacja 2" >> plik.txt - dopisanie wyniku komendy do końca wskazanego pliku
ls /root/ 2>> plik.txt - zapisanie błędu z komendy do pliku
cat < plik.txt - przekierowanie danych z pliku jako dane wejścia dla komendy cat
Prawa dostępu do plików i katalogów
Opis | Litera | Znaczenie | Parametr liczbowy |
Read | r | Odczyt | 4 |
Write | w | Zapis | 2 |
eXecute | x | uruchomienie | 1 |
- | Brak uprawnień | 0 |
drwxr--r-- 2 jarekteam jarek 0 jan 1 12:00 plik.txt
d jeśli to katalog lub - jeśli to plik. l - link. c - plik specjalny. b - plik specjalny z przypisaniem.
Uprawnienie x na katalogu mówi o tym, że można do niego wejść(zrobić ls).3 kolejne znaki: rwx - uprawnienia właściciela pliku3 kolejne znaki: r-- - uprawnienia grupy do której należy plik3 kolejne znaki: r-- - uprawnienia pozostałych użytkowników systemujarekteam - nazwa grupy przypisanej do plikujarek - nazwa właściciela pliku
Wartość liczbowa uprawnień
r - 4 | w - 2 | x - 1 | r - 4 | w - 2 | x - 1 | r - 4 | w - 2 | x - 1 |
1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
4 | 2 | 1 | 4 | 0 | 1 | 4 | 0 | 0 |
4+2+1 = 7 | 4+0+1 = 5 | 4+0+0 = 4 | ||||||
7 | 5 | 4 | ||||||
chmod 754 plik.txt - ustawienie uprawnień read/write/execute dla wskazanego pliku dla właściciela, grupy oraz innych użytkowników.
Grupa | Działanie | Uprawnienie |
u właściciel | + dodawanie uprawnienia | r odczyt |
g grupa | - odbieranie uprawnienia | w zapisa |
o inni użytkownicy | = przypisywanie uprawnienia | x wykonanie |
a wszyscy |
chmod +x plik.txt - dodanie uprawnień wykonywania dla wszystkich userówchmod u+x plik.txt - dodanie uprawnień wykonywania dla właściciela plikuchmod a-w plik.txt - odebranie uprawnień odczytu dla wszystkichchmod 754 plik.txt - ustawienie uprawnień za jednym razem
Instalacja pakietów
apt - package manager debianaapt --help - help dla polecenia aptapt list --installed - lista zainstalowanych pakietówsudo apt update - pobranie informacji o aktualizacjach pakietówcat /etc/apt/sources.list - lista źródeł z których pobierane są informacje o pakietachsudo apt upgrade - uruchomienie aktualizacji pakietówapt search [nazwa-pakietu] - wyszukiwanie pakietów po nazwiesudo apt install vim - instalacja pakietu np. vim
Pakowanie plików
zip -er archiwum.zip plik1 plik2 katalog1 katalog2 - spakowanie wskazanych plików o folderów oraz zabezpieczenie archiwum hasłem.-e - opcja używana do szyfrowania archiwum-r - opcja używana do rekursywnego dodawania katalogów
unzip archiwum.zip -d ścieżka_docelowa - wypakowanie archiwum do wskazanego katalogu. Użycie bez -d wypakuje zawartość archiwum do miejsca w którym się znajdujemy.
unzip -l archiwum.zip - listuje rzeczy z archiwum bez wypakowywania
tar -cvf archiwum.tar folder/ - spakowanie folderu do archiwum.tar-c - tworzenie nowego archiwum-v - wyświetlanie komunikatów z pakowania/rozpakowania-f - podanie nazwy archiwum-x - wypakowywanie-z - kompresja gzip-j - kompresja bzip2
Pobieranie plików
wget ścieżka-do-pliku-w-internecie - pobieranie publicznego pliku
scp [z] [do] - pobieranie pliku przez sshscp -p 1234 jarek@milewski.it:/home/jarek/plik.txt /home/jarek-r - do pobierania/wysyłania katalogów-p - podanie portu ssh
Wyszukiwanie plików i katalogów
find [gdzie] -name [nazwa-pliku] - wyszukiwanie pliku, casesensitivefind [gdzie] -iname [nazwa-pliku] - wyszukiwanie pliku bez casesensitivefind [gdzie] -iname "*.txt" - wyszukiwanie plików kończących się na ".txt"find [gdzie] -size +1M - wyszukiwanie plików powyżej 1MBfind [gdzie] -type d -newer [nazwa-pliku] - wyszukiwanie katalogów nowszych niż podany plikfind [gdzie] -mtime +10 -mtime -13 - wyszukiwanie plików które są starsze niż 10 dni ale nie są starsze niż 13 dnifind ścieżka -name "nazwa" -exec polecenie {} \; - wykonanie polecenia na plikachfind . -name "plik.txt" -exec rm {} \;
Plik z użytkownikami
Plik /etc/passwd
root:x:0:0:root:/root:/bin/bash
root - nazwa użytkownikax - symbol który reprezentuje zaszyfrowane hasło0 - identyfikator użytkownika0 - identyfikator grupyroot - nazwa grupy/root - katalog domowy/bin/bash - powłoka z której korzysta user
Procesy
ps - lista procesów-e - wszystkie procesy w systemie-f - więcej informacji-u - wskazanie użytkownika-eH - zrobienie drzewa z procesów
kill -9 [PID] - ubijanie procesu
pstree - lista procesów w formie drzewa
top, htop, gtop - lista aktywnych procesów
ctrl+c - ubicie procesu w terminalu
ctrl+z - zatrzymanie procesu w terminalufg - ponownie uruchomienie procesu
Dodanie & na końcu powoduje uruchomienie procesu w tle
jobs - pokazuje jakie procesy działają w tlefg [num] - podłączenie się do wskazanego procesu w tlebg [num] - ponowne uruchomienie procesu do p[racy w tleps -ef | grep [nazwa-procesu] - wyszukiwanie procesu
Zarządzanie kluczami ssh
ssh-keygen -t rsa - generowanie kluczy cat id_rsa.pub | ssh user@server 'cat >> ~/.ssh/authorized_keys' - wysłanie klucza na inny serwer
vim /etc/ssh/sshd_config - edycja ustawień ssh, np. zmiana portusystemctl restart ssh.service - restart usługi ssh
sudo passwd -d nazwa_uzytkownika - zablokowanie użytkownikowi możliwości logowania się po haśle
Wyszukiwanie po zawartości plików
grep "[regex]" [katalog/plik] - wyszukiwanie regexa
np. grep "^abc" /home/jarek/plik.txt - wszystkie linijki zaczynające się od abc-n - pokazanie linii w której znalazło się to czego szukamy-v - wylistowanie co nie pasuje do wskazanego regexa-i - ignorowanie wielkości znaków-c - wyświetlenie tylko liczby wystąpień
ps -ef | grep [nazwa-procesu] - wyszukiwanie procesu
Przeszukiwanie logów
tail - wyświetlenie ostatniej linijki z pliku-n [num] - wyświetlenie ostatnich X linii z pliku-f - śledzi zmiany w pliku i podaje je w czasie rzeczywistymhead - to samo co tail tylko dla początku pliku
awk - przeszukiwanie plików o określonym formacie
-F <separator> lub --field-separator=<separator>: Określa separator pól w wejściowych danych. Domyślnie jest to spacja. Przykład: awk -F, '{print $1}' file.csv - używa przecinka jako separatora pól i wyświetla pierwsze pole każdego wiersza pliku file.csv.
-v <zmienna>=<wartość>: Definiuje zmienną awk i przypisuje jej wartość. Przykład: awk -v name="John" '{print "Hello,", name}' data.txt - wyświetla "Hello, John" dla każdego wiersza pliku data.txt.
NR: Reprezentuje numer bieżącego rekordu (wiersza). Przykład: awk 'NR > 1' data.txt - wyświetla wszystkie wiersze pliku data.txt, z pominięciem pierwszego wiersza.
NF: Reprezentuje liczbę pól w bieżącym rekordzie (wierszu). Przykład: awk 'NF > 3' data.txt - wyświetla wszystkie wiersze pliku data.txt, które mają więcej niż 3 pola.
BEGIN i END: Specjalne bloki BEGIN i END, które są wykonywane na początku i końcu przetwarzania pliku, odpowiednio. Przykład: awk 'BEGIN{print "Start"} {print $1} END{print "Finish"}' data.txt - wyświetla pierwsze pole każdego wiersza pliku data.txt, a na początku i końcu wyświetla "Start" i "Finish".
FILENAME: Zmienna zawierająca nazwę bieżącego przetwarzanego pliku. Przykład: awk '{print FILENAME, $0}' file1.txt file2.txt - wyświetla nazwę pliku, a następnie całą zawartość każdego wiersza plików file1.txt i file2.txt.
-i inplace lub --inplace: Edytuje plik wejściowy na miejscu, bez konieczności tworzenia pliku tymczasowego. Przykład: awk -i inplace '{gsub("foo", "bar"); print}' file.txt - zamienia każde wystąpienie "foo" na "bar" w pliku file.txt.
Sprawdzanie otwartych portów - nmap i netstat
nmap - skanowanie portów
-p <porty>: Określa skanowane porty lub zakresy portów. Przykład: nmap -p 80,443,8080 target - skanuje tylko porty 80, 443 i 8080 na celu o nazwie "target".
-A lub --all: Włącza intensywne skanowanie, które zawiera skanowanie portów, skanowanie systemu operacyjnego i skanowanie wersji usług. Przykład: nmap -A target - wykonuje intensywne skanowanie na celu o nazwie "target".
-sV lub --version-all: Skanuje usługi, aby zidentyfikować ich wersje. Przykład: nmap -sV target - wykonuje skanowanie wersji usług na celu o nazwie "target".
-sS lub --syn: Wykonuje skanowanie SYN, które jest najczęściej używane do skanowania portów w celu wykrycia otwartych usług. Przykład: nmap -sS target - wykonuje skanowanie SYN na celu o nazwie "target".
-oX <plik> lub --xml <plik>: Zapisuje wyniki skanowania w formacie XML. Przykład: nmap -oX results.xml target - zapisuje wyniki skanowania na celu o nazwie "target" w pliku "results.xml".
-T<0-5>: Określa tryb czasowy skanowania, gdzie 0 to tryb najwolniejszy, a 5 to tryb najbardziej agresywny. Przykład: nmap -T4 target - wykonuje skanowanie na celu o nazwie "target" z trybem czasowym 4.
-v lub -vv: Włącza tryb verbose, który wyświetla bardziej szczegółowe informacje o skanowaniu. Przykład: nmap -v target - wykonuje skanowanie na celu o nazwie "target" w trybie verbose.
--script <nazwa_skryptu>: Uruchamia określony skrypt nmap dla dodatkowej analizy i testowania. Przykład: nmap --script http-enum target - wykonuje skrypt http-enum na celu o nazwie "target".
-O lub --osscan-limit: Wykonuje skanowanie systemu operacyjnego, próbując zidentyfikować system operacyjny na podstawie odpowiedzi hosta. Przykład: nmap -O target - wykonuje skanowanie systemu operacyjnego na celu o nazwie "target".
netstat
neststat -plnt - wylistowanie otwartych portów na maszynie na której się znajdujemy
- z sudo pokaże name info jakie programy są uruchomione na danym porcie