Struktura katalogów /bin podstawowe programy takie jak bash czy cat /boot jądro systemu oraz pliki niezbędne do poprawnego uruchomienia systemu /etc pliki konfiguracyjne (np. /etc/passwd, /etc/group) /root katalog domowy administratora systemu /home katalogi domowe użytkowników (najczęściej na oddzielnej partycji) pliki konfiguracyjne użytkownika (np..bashrc.bash_profile.bashhistory) /lib biblioteki współdzielone /lost+found pliki/katalogi odtworzone podczas naprawiania systemu /tmp pliki tymczasowe programów /mnt, /mount, /media proponowany punkt montowania różnych systemów plików np. zewnętrznych urządzeń/nośników /sbin programy administracyjne /proc pliki, w których zapisane są informacje o działającym systemie np. używanych przerwaniach, wykorzystywanej pamięci /var pliki robocze (np. dzienniki systemowe, poczta, kolejki wydruków) /dev pliki reprezentujące urządzenia, np. Urządzenia blokowe odczyt/zapis danych blokami danych (sektorami/kilobajtami, klastrami) : - hda, hdb, sda... dyski IDE - hda1, hda2, sda1, sda2... - partycje na powyższych dyskach - s*, np. sda, sdb,... dyski SCSI, SATA, USB - fd dyskietka (fd0 partycja na dyskietce) Urządzenia znakowe odczyt/zapis danych znak po znaku/bajt po bajcie - /dev/tty0, /dev/tty1, /dev/pts/0, /dev/pts/1, /dev/pty* terminale i pseudoterminale - /dev//ttys0, ttys1,... - porty COM - /dev/null - czarna dziura - /dev/random, /dev/urandom generatory liczb losowych - /dev/zero generator zer - /dev/modem, /dev/ppp modem,... i wiele innych, w zależności np. od dystrybucji Prawa dostępu $ ls -al właściciel grupa rozmiar -rw------- 1 asawicka staff 6627 22 lut 22:37.bash_history -rw-r--r-- 1 asawicka staff 173 23 sie 2012.bash_profile drwxr-xr-x 2 asawicka staff 68 1 gru 2012 Applications -rw-r--r-- 2 asawicka staff 0 1 mar 06:28 plik.txt -rw-r--r-- 2 asawicka staff 0 1 mar 06:28 plik2.txt lrwxr-xr-x 1 asawicka staff 8 1 mar 06:29 plik_symb.txt -> plik.txt liczba twardych dowiązań do pliku np. d katalog - zwykły plik l dowiązanie symboliczne c urządzenie znakowe b urządzenie blokowe modification time czas zmiany zawartości ls -l access time czas dostępu (np.czytania, zapisu) ls -ul change time czas zmiany informacji o pliku np. zmiany praw dostępu (ale zmiany zawartości też) ls -cl
421421421 rwxrwxrwx u g o pierwsza trójka uprawnienia dla właściciela druga trójka uprawnienia dla grupy trzecia trójka uprawnienia dla wszystkich pozostałych Plik: r - możliwość czytania zawartości pliku w - możliwość zmiany zawartości pliku x - możliwość wykonywania pliku Katalog: r - możliwość listowania zawartości katalogu (ls katalog TAK, ale ls -al NIE) w - możliwość dodawania i usuwania plików (dodatkowo potrzebne x) x - możliwość dostępu do konkretnego pliku w katalogu (zgodnie z uprawnieniami do tego pliku), nie daje możliwości listowania katalogu, przykładowo: jeśli znamy nazwę pliku i mamy uprawnienia do zapisu możemy wykonać np.cat >>katalog123/plik.txt Polecenia związane z prawami dostępu: chmod zmiana praw dostępu dla pliku/katalogu chmod [u g o a][+ - =][r w x] plik.txt chmod 744 plik.txt -podanie praw w postaci liczby w systemie ósemkowym, co oznacza rwxr--r-- chmod o+w-x plik.txt powoduje dodanie prawa do zapisu i odebranie prawa do wykonywania do pliku dla pozostałych użytkowników chmod go-x plik.txt powoduje odebranie praw do wykonywania pliku dla grupy i pozostałych chmod a+r plik.txt powoduje dodanie prawa do odczytu pliku dla wszystkich chgrp id_grupy plik zmiana grupy pliku chown id_usera:id_grupy plik zmiana właściciela pliku umask zmienia /wyświetla maskę dla nowych plików/katalogów (w systemie Linux uprawnienia dla tworzonego pliku to rw-rw-rw- (bez maski) i dla tworzonego katalogu - rwxrwxrwx (bez maski)) - przykładowo: polecenie umask 022 spowoduje, że nowo utworzone pliki będą miały uprawnienia -rw-r--r--, zaś nowo utworzone katalogi będą miały uprawnienia drwxr-xr-x
SUID - proces ma uprawnienia właściciela pliku (na plikach wykonywalnych) chmod 4764 SGID - proces ma uprawnienia grupy pliku (na plikach wykonywalnych) chmod 2764 lub dziedziczenie grupy właściciela katalogu przez nowo tworzone pliki/katalogi zamiast grupy użytkownika (na katalogach) Sticky - pliki mogą być usuwane/zmieniana nazwa tylko przez właściciela pliku chmod 1764 plik.txt lub katalogu, w którym się znajduje/superusera (zazwyczaj na katalogach) Dowiązania twarde ln plik_zródłowy plik_docelowy dowiązanie twarde jest nierozróżnialne od oryginalnego pliku każda zmiana dokonana w pliku/na pliku jest widoczna we wszystkich dowiązaniach twardych (nie odnoszą się do katalogów) symboliczne ln -s plik_zródłowy plik_docelowy dowiązanie symboliczne zawiera nazwę pliku/katalogu na który wskazuje Zadania (na koncie student na maszynach wirtualnych lub np. w /tmp na mushelce):: utwórz 2 dowiązania twarde do dowolnego pliku tekstowego, wylistuj z opcją -l katalog w którym znajduje się plik i dowiązanie co uległo zmianie? usuń plik oryginalny co uległo zmianie? zmień zawartość jednego z utworzonych dowiązań sprawdź, czy drugie też ma zmienioną zawartość utwórz dowiązanie symboliczne do pliku tekstowego, wyświetl te dowiązanie, następnie usuń plik i spróbuj ponownie wyświetlić dowiązanie. zmień uprawnienia dostępu do pliku, tak by wszyscy mogli czytać i pisać w pliku, ale by wykonywać mogła go tylko grupa i Ty sprawdź jaka jest maska praw dostępu ustaw taką maskę, by nowo tworzony plik miał uprawnienia -rw-r----- Informacje o systemie uname -a wyświetlenie informacji o systemie (o jądrze systemu, komputerze nazwa, typ procesora, nazwa dystrybucji itp.) mount wyświetlenie zamontowanych systemów plików (polecenie służy również do montowania) du wyświetlenie zestawienia informacji na temat miejsca zajętego przez poszczególne katalogi np. du --max-depth=2 -h -x -wyświetlenie w ludzkiej formie (K,M,G) rozmiarów katalogów 2 poziomy w głąb od bieżącego, bez przechodzenia
zamontowanych systemów plików du -s ~/Desktop/ ~/Downloads/-wyświetlenie rozmiaru dla poszczególnych argumentów df - wyświetlenie informacji o zamontowanych systemach plików rozmiar, ilość wolnego i zajętego miejsca, punktach montowania (df -h) lsof - lista otwartych plików Zadania: sprawdź, jakie systemy plików zostały zamontowane sprawdź, które dwa z podkatalogów katalogu domowego zajmują najwięcej miejsca sprawdź, który z dysków mushelki ma największą pojemność Procesy ps polecenie pokazujące procesy w systemie np. ps ax wszystkie procesy w systemie ps axjf wszystkie procesy w postaci drzewa ps xjf własne procesy w postaci drzewa ps -u username - procesy danego użytkownika pstree procesy w postaci drzewa kill nr_procesu zabicie procesu (wysłanie sygnału do procesu, domyślnie TERM) kill 24156 kill -9 24156 wysłanie sygnału KILL top/htop informacje o działających procesach killall nazwa - zabicie wszystkich procesów wykonujących program o danej nazwie uruchamianie procesu w tle - & np. xclock &, sleep 1000 & ^Z wstrzymanie procesu, ^C zakończenie procesu/wysłanie sygnału INT jobs wyświetla zlecenia- job'y bg nr_joba przesłanie zlecenia w tło fg nr_joba przesłanie zlecenia na pierwszy plan Zadania: - uruchom konsolę i edytor tekstu - na drugiej konsoli wyświetl wszystkie swoje procesy, odszukaj numer procesu edytora i spróbuj zabić ten proces uruchom htop, posortuj procesy po właścicielu
uruchom kilkukrotnie w tle sleep liczba_sekund, wyświetl wszystkie procesy, zabij wszystkie procesy sleep jednym poleceniem, ponownie wyświetl wszystkie procesy i upewnij się, że wszystkie sleep zostały zabite Poszukiwanie programów/plików which lokalizacja programów (locate) find znajdowanie plików/katalogów w systemie find -name "*.txt" -type f wyszuka pliki tekstowe w oraz pod katalogiem bieżącym find public_html -xdev -maxdepth 2 -type d wyszuka wszystkie katalogi co najwyżej 2 poziomy pod katalogiem public_html (bez przechodzenia na zamontowane systemy plików opcja xdev) Zadania: znajdź w swoim katalogu domowym (i podkatalogach) wszystkie katalogi, których nazwa zawiera ciąg znaków SOP (wielkość liter nie ma znaczenia odszukaj w manualu do polecenia find jaka opcja to zapewni) Przekierowanie wejścia wyjścia: program ma trzy podstawowe strumienie wejścia-wyjścia - standardowe wejście - standardowe wyjście - standardowe wyjście diagnostyczne przekierowanie standardowego wyjścia ls -1>katalog.txt zapisze listę plików katalogu do pliku wc -l katalog.txt wypisze liczbę linii w pliku oraz jego nazwę na terminal wc -l katalog.txt >>katalog.txt - dopisze powyższą informacje do pliku przekierowanie standardowego wejścia ls -1>katalog.txt zapisze listę plików katalogu do pliku wc -l <katalog.txt wypisze liczbę linii w pliku na terminal wc -l <katalog.txt >>katalog.txt - możemy samą liczbę plików dopisać do pliku przekierowanie standardowego wyjścia diagnostycznego find / -name "sk*" -type f >pliki.txt 2>bledy.txt przekierowanie standardowego wyjścia i wyjścia diagnostycznego find. -name ala.txt >wszystko.txt 2>&1 przetwarzanie potokowe cat >imiona.txt ala ola ala ola ela hela ola
ala ela stefan olek roman ^D sort <imiona.txt >posortowane.txt more posortowane.txt uniq <posortowane.txt >rozne.txt more rozne.txt wc -l <rozne.txt LUB sort <imiona.txt uniq wc -l cat imiona.txt sort uniq wc -l Zmienne środowiskowe : ZMIENNA=123 set env export ZMIENNA set env echo $ZMIENNA $HOME, $USER, $PATH, Pierwszy skrypt plik skryptu plik tekstowy #!/bin/bash #komentarz. echo Pierwszy skrypt echo Mój katalog domowy to $HOME nadanie praw wykonywania chmod u+x skrypt1.sh uruchomienie./skrypt1.sh Polecenie read - czytanie ze standardowego wejścia echo Podaj wartosc zmiennej read zmienna echo Podales $zmienna echo Podaj co najmniej 3 słowa
read pierwsze drugie reszta echo Pierwsze słowo to $pierwsze echo Drugie slowo to $drugie echo A reszta to $reszta Argumenty skryptu: $1, $2,..., $0 nazwa pliku skryptu, $@ - wszystkie argumenty $# - liczba argumentów Obliczanie wartości wyrażeń: $[ ] np. SUMA=$[23+12] echo $SUMA SUMA=$[SUMA+3] echo $SUMA polecenie expr np. WYNIK=`expr 6 + 3` WYNIK=`expr $WYNIK \* 3` echo $WYNIK Wykorzystanie wyniku polecenia: `...` np. echo Moj katalog biezacy to `pwd` rm `find. -name "*.old"` Dodatkowe polecenia przydatne do zadań: grep wzorzec plik wyszukiwanie wzorca w pliku np. -i (bez rozróżniania wielkości liter) -l (tylko nazwy plików), cut - do wycinania fragmentu z każdej linii wejścia np. -c (znaki) -d (separator) -f (pola) wc zliczanie w pliku np.: -c (bajty) -w (słowa) -l (linie) sort sortowanie np. -n (numerycznie)
-t (separator) -k (pozycja klucza) uniq usuwa powtarzające się wiersze () head, tail zwraca początkowe/końcowe n-linii np. -n (liczba linii) tr - zamiana lub usuwanie znaków np. tr -s " " " " zamienia ciągi spacji na pojedyncze spacje. Zadania: napisz skrypt, który zsumuje 4 liczby podane przez użytkownika (1) napisz polecenie, które wypisze same rozmiary i nazwy plików w bieżącym katalogu (2), napisz polecenie, które poda liczbę plików w bieżącym katalogu (3), napisz polecenie, które wyszuka w pliku z kodem linie zawierające słowo while (wielkość liter nie ma znaczenia) wraz z numerami linii (4) napisz polecenie, które wypisze różne czasy modyfikacji katalogów w katalogu domowym (5), napisz polecenie, które wypisze nazwę pliku (lub katalogu), który został zmodyfikowany jako ostatni (6). napisz skrypt, który z 8mej i 10-tej linii pliku podanego jako pierwszy argument utworzy plik o nazwie podanej jako drugi argument (7), napisz skrypt, który wypisze rozmiar największego pliku w w bieżącym katalogu (8), napisz polecenie, które wypisze listę loginów użytkowników wraz z ich numerami (uid) posortowane numerycznie wg uid (9), napisz skrypt, które poda oddzielnie liczbę wszystkich katalogów i plików w katalogu domowym (10), napisz polecenie, które poda pojemność największego zamontowanego systemu plików (11) napisz skrypt, który wypisze łączną liczbę różnych linii we wszystkich plikach z rozszerzeniem.sh oraz wypisze te linie, które się nie powtarzają (12), napisz polecenie, które wypisze wszystkie linie zawierające login użytkownika w plikach w katalogu bieżącym (13)