Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
so:intro [2023/03/05 15:18] jkonczak |
so:intro [2024/02/20 12:53] (aktualna) jkonczak [Dopasowywanie nazw plików] |
||
---|---|---|---|
Linia 58: | Linia 58: | ||
* Apple w swoich systemach (np. MacOS) dostarcza zmodyfikowane narzędzia z BSD [[https://opensource.apple.com/releases/|[1]]] [[https://github.com/apple-oss-distributions/file_cmds|[2]]] [[https://github.com/apple-oss-distributions/text_cmds|[3]]] | * Apple w swoich systemach (np. MacOS) dostarcza zmodyfikowane narzędzia z BSD [[https://opensource.apple.com/releases/|[1]]] [[https://github.com/apple-oss-distributions/file_cmds|[2]]] [[https://github.com/apple-oss-distributions/text_cmds|[3]]] | ||
* Minimalistyczne i wbudowane systemy często używają [[https://www.busybox.net/downloads/BusyBox.html|BusyBox]]a | * Minimalistyczne i wbudowane systemy często używają [[https://www.busybox.net/downloads/BusyBox.html|BusyBox]]a | ||
- | * Android używa [[https://www.landley.net/toybox/|toybox]]a [[https://cs.android.com/android/platform/superproject/+/master:external/toybox/toys/posix/|[4]]] | + | * Android używa [[https://www.landley.net/toybox/|toybox]]a [[https://cs.android.com/android/platform/superproject/main/+/main:external/toybox/toys/posix/|[4]]] |
* Dłuższa lista alternatywnych zestawów jest np. tutaj: [[https://wiki.archlinux.org/title/core_utilities]] | * Dłuższa lista alternatywnych zestawów jest np. tutaj: [[https://wiki.archlinux.org/title/core_utilities]] | ||
<html></small></html> | <html></small></html> | ||
Linia 77: | Linia 77: | ||
* programy dołączane do środowisk graficznych Linuksa: [[https://docs.xfce.org/apps/terminal/start|xfce4-terminal]], [[https://en.wikipedia.org/wiki/GNOME_Terminal|GNOME Terminal]], [[https://konsole.kde.org/|konsole]] | * programy dołączane do środowisk graficznych Linuksa: [[https://docs.xfce.org/apps/terminal/start|xfce4-terminal]], [[https://en.wikipedia.org/wiki/GNOME_Terminal|GNOME Terminal]], [[https://konsole.kde.org/|konsole]] | ||
* MacOS domyślne używa aplikacji [[https://en.wikipedia.org/wiki/Terminal_(macOS)|Terminal]] | * MacOS domyślne używa aplikacji [[https://en.wikipedia.org/wiki/Terminal_(macOS)|Terminal]] | ||
- | * popularne są też wyjeżdżające z góry terminale przywoływane/chowane prostym skrótem klawiszowym:\\ [[https://apps.kde.org/yakuake/|yakuake]] / [[http://guake-project.org/|guake]] / [[https://github.com/lanoxx/tilda|tilda]] | + | * popularne są też wyjeżdżające z góry terminale przywoływane/chowane prostym skrótem klawiszowym:\\ [[https://apps.kde.org/yakuake/|yakuake]] / [[http://guake-project.org/|guake]](([[https://web.archive.org/web/20230709030453/http://guake-project.org/|Kopia strony domowej projektu z archive.org]], [[https://github.com/Guake/guake/|github]])) / [[https://github.com/lanoxx/tilda|tilda]] |
<html></small></html> | <html></small></html> | ||
Linia 101: | Linia 101: | ||
W tej chwili wszystkie istotne systemy operacyjne (włącznie z Windows) mają domyślnie zainstalowaną komendę ''ssh''. | W tej chwili wszystkie istotne systemy operacyjne (włącznie z Windows) mają domyślnie zainstalowaną komendę ''ssh''. | ||
- | <html><small></html> | + | <small> |
SSH (Secure SHell) szyfruje cały ruch. Poprzednik SSH – telnet – wszystko, włącznie z hasłami, wysłał czystym tekstem. | SSH (Secure SHell) szyfruje cały ruch. Poprzednik SSH – telnet – wszystko, włącznie z hasłami, wysłał czystym tekstem. | ||
- | <html></small></html> | + | Przy uwierzytelnianiu hasłem, klient musi wysłać do serwera swoje hasło. |
+ | \\ | ||
+ | Krytyczne dla bezpieczeństwa jest sprawdzenie przez klienta że faktycznie | ||
+ | komunikuje się z docelowym serwerem, a nie z podszywającym się pod niego | ||
+ | serwerem który, odpowiednio spreparowany, pozwoli wykraść hasło | ||
+ | ([[https://docs.ssh-mitm.at/user_guide/authentication.html#id2|gotowe narzędzie]]) | ||
+ | i/lub przechwycić sesję. | ||
+ | \\ | ||
+ | Do sprawdzania tożsamości serwera używa się [[https://pl.wikipedia.org/wiki/Kryptografia_klucza_publicznego|kryptografii asymetrycznej]]: | ||
+ | serwer ma swój (tajny) klucz prywatny i na początku każdego połączenia wysyła | ||
+ | klientowi klucz publiczny, a klient weryfikuje czy klucz wysłany przez serwer | ||
+ | odpowiadający posiadanemu kluczowi prywatnemu. | ||
+ | \\ | ||
+ | Dlatego klient SSH przy pierwszym połączeniu do każdego serwera prosi | ||
+ | użytkownika o sprawdzenie klucza, następnie dopisuje go do bazy kluczy | ||
+ | (w OpenSSH trzymanej w pliku ''~/.ssh/known_hosts'') | ||
+ | i sprawdza przy każdym kolejnym połączeniu. | ||
+ | </small> | ||
~~Zadanie.#~~ Uruchom emulator terminala. Wykonaj komendy ''date'' i ''echo $SHELL''. | ~~Zadanie.#~~ Uruchom emulator terminala. Wykonaj komendy ''date'' i ''echo $SHELL''. | ||
Linia 259: | Linia 275: | ||
<html></small></html> | <html></small></html> | ||
+ | |||
+ | ==== Wildcard, regex, … ==== | ||
+ | <small> | ||
+ | |||
+ | W informatyce wykorzystuje się wyrażenia opisujące oczekiwany wynik, do których | ||
+ | następnie mogą być dopasowane dane. | ||
+ | \\ | ||
+ | Przykładowo //linie, które zaczynają się od słowa, po których następuje znak | ||
+ | równości// można zwykle zapisać wyrażeniem regularnym ''^\w+=''. | ||
+ | \\ | ||
+ | (Takiego wyrażenia można użyć zarówno do wybrania pasujących linii z pliku jak | ||
+ | i sprawdzenia czy podana linia pasuje.) | ||
+ | |||
+ | Istnieje wiele pomysłów jak mają wyglądać i działać takie wyrażenia. | ||
+ | |||
+ | W powłoce najczęściej wykorzystuje się | ||
+ | //[[https://pl.wikipedia.org/wiki/Wieloznacznik|wildcard]]//y | ||
+ | i [[https://en.wikipedia.org/wiki/Regular_expression|wyrażenia regularne]]. \\ | ||
+ | |||
+ | Składnia i implementacja zarówno wildcardów jak i wyrażeń regularnych różni się | ||
+ | między aplikacjami / językami programowania. | ||
+ | \\ | ||
+ | W powłoce używa się składni opisanej m. inn. w podręczniku systemowym: | ||
+ | ''[[https://man7.org/linux/man-pages/man7/glob.7.html|man 7 glob]]'', | ||
+ | ''[[https://man7.org/linux/man-pages/man7/regex.7.html|man 7 regex]]'' | ||
+ | |||
+ | </small> | ||
==== Dopasowywanie nazw plików ==== | ==== Dopasowywanie nazw plików ==== | ||
- | Przetwarzając tekst wpisany przez użytkownika powłoka próbuje zastąpić każde słowo zawierające znaki **''*''**, **''?''** lub wyrażenia w kwadratowych nawiasach **''[…]''**. Każde słowo zawierający takie znaki jest nazywane [[https://en.wikipedia.org/wiki/Glob_(programming)|glob]]em. | + | Przetwarzając tekst wpisany przez użytkownika powłoka próbuje zastąpić nazwami pasujących plików każde słowo zawierające znaki **''*''**, **''?''** lub wyrażenia w kwadratowych nawiasach **''[…]''**. Każde słowo zawierający takie znaki jest nazywane [[https://en.wikipedia.org/wiki/Glob_(programming)|glob]]em. |
- | ''*'' rozwija się do dowolnego tekstu , ''?'' rozwija się do dowolnego znaku, ''[ace]'' rozwija się do ''a'', ''c'', lub ''e'', natomiast ''[f-h]'' do ''f'', ''g'', lub ''h''. | + | ''*'' rozwija się do dowolnego tekstu \\ |
+ | ''?'' rozwija się do dowolnego znaku \\ | ||
+ | ''[ace]'' rozwija się do ''a'', ''c'', lub ''e'' \\ | ||
+ | ''[f-h]'' do ''f'', ''g'', lub ''h'' | ||
Jeżeli istnieje co najmniej jeden plik pasujący do globa, to powłoka zastępuje glob wszystkimi pasującymi nazwami plików. Jeżeli żaden plik nie pasuje, to glob pozostaje niezmieniony. | Jeżeli istnieje co najmniej jeden plik pasujący do globa, to powłoka zastępuje glob wszystkimi pasującymi nazwami plików. Jeżeli żaden plik nie pasuje, to glob pozostaje niezmieniony. |