Narzędzia użytkownika

Narzędzia witryny


so:files_basics

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
so:files_basics [2023/03/06 13:06]
jkonczak [Uprawnienia dostępu do plików]
so:files_basics [2023/03/12 22:40] (aktualna)
jkonczak
Linia 158: Linia 158:
 ~~Zadanie.#​~~ Stwórz katalog i usuń go używając ''​rm''​. ~~Zadanie.#​~~ Stwórz katalog i usuń go używając ''​rm''​.
  
-===== Użytkownicy,​ uprawnienia do plików ​ ===== 
- 
-==== Użytkownicy i grupy ==== 
- 
-W uniksopodobnych systemach istnieją użytkownicy i grupy. \\ 
-Użytkownicy identyfikowani są po numerycznych identyfikatorach **uid** (//user identifier//​),​ które są mapowane na nazwy użytkowników. 
-\\ 
-Podobnie grupy mają identyfikatory numeryczne o nazwie **gid** (//group identifier//​),​ które też są mapowane na nazwy grup. 
- 
-Każdy użytkownik jest w jednej podstawowej grupie (nazywanej jego grupą podstawową,​ //primary group//) i może należeć do dowolnie wielu grup (nazywanych jego grupami dodatkowymi,​ //​supplementary groups//). 
- 
-Lista dostępnych użytkowników i grup oraz powiązania uid/gid z nazwami zwykle są czytane z plików ''/​etc/​passwd''​ i ''/​etc/​groups'',​ ale po odpowiedniej konfiguracji może być pobierana też z innych źródeł. \\ 
-<​small>​Np. można wykorzystać serwer LDAP, czy kontroler domeny AD za pośrednictwem programu ''​winbindd''​. Więcej informacji na [[https://​en.wikipedia.org/​wiki/​Name_Service_Switch|tutaj]]. \\ Hasła lokalnych użytkowników i grup są przechowywane w ''/​etc/​shadow''​ i ''/​etc/​gshadow''</​small>​ 
- 
-W systemie plików zapisane są uidy i gidy (a nie nazwy użytkowników),​ stąd np. podłączenie dysku z jednego komputera do drugiego przypisze pliki innym nazwom użytkowników i grup jeżeli mapowania uid/gid na nazwy nie są identyczne na obu systemach. \\ <​small>​To dotyczy również kontenerów (sic!).</​small>​ 
- 
-<​html><​small></​html>​ 
- 
-Dla procesów uniksopodobne systemy przechowują efektywny, zapisany i rzeczywisty uid (analogicznie gid). 
-\\ 
-Dla zwykłych procesów te identyfikatory są równe, dla procesów które zmieniały użytkownika mogą być różne. Więcej informacji na [[https://​en.wikipedia.org/​wiki/​User_identifier|tutaj]]. 
-\\ 
-W tej chwili zakres uid'​ów i gid'​ów w Linuksie to 0÷(2<​sup>​32</​sup>​-2) 
- 
-<​html></​small></​html>​ 
- 
-Użytkownik o uid równym **0** nazywany jest **superużytkownikiem** (//​superuser//​) i ma zwyczajowo nadaną nazwę **[[https://​pl.wikipedia.org/​wiki/​Root|root]]**. 
- 
-Żeby sprawdzić swoją nazwę użytkownika,​ można skorzystać z komendy ''​**whoami**''​. \\ 
-Do sprawdzenia listy grup służy komenda ''​**groups** [//​użytkownik//​]''​. Bez argumentów wyświetla grupy bieżącego użytkownika. 
- 
-~~Zadanie.#​~~ Przetestuj działanie komendy ''​whoami''​. 
- 
-~~Zadanie.#​~~ Sprawdź listę grup w której jesteś. Sprawdź listę grup w której jest użytkownik student. 
- 
-<​html><​small></​html>​ 
- 
-Komenda ''​**id** [//​użytkownik//​]''​ wyświetla nazwy i numery użytkownika,​ jego grupy podstawowej i grup dodatkowych. 
- 
-Informację o użytkowniku można wyciągnąć poleceniem ''​getent passwd //​użytkownik//'',​ o grupach – ''​getent group //​grupa//''​. 
- 
-~~Zadanie.#​~~ Sprawdź jaki masz uid i gid, zarówno poleceniem ''​id''​ jak i ''​getent''​. 
- 
-<​html></​small></​html>​ 
- 
- 
-Zmiana hasła użytkownika jest wykonywana przy pomocy komendy **''​passwd''​**. \\ <​small>​Root może przy pomocy ''​passwd //​user//''​ ustawić hasło każdego użytkownika,​ może też zmienić czas ważności hasła bądź zablokować konto.</​small>​ 
- 
-<​html><​small></​html>​ 
- 
-Podstawowe komendy administracyjne do zarządzania użytkownikami to: 
-  * dodawanie nowego użytkownika:​ ''​useradd [-m] [-g //grupa//] //​nazwa//''​ 
-  * dodawanie nowej grupy: ''​groupadd ​ //​nazwa//''​ 
-  * dodanie użytkownika do grupy: ''​gpasswd -a //​użytkownik//​ //​grupa//''​ 
-  * zmiana/​usunięcie użytkownika/​grupy:​ ''​usermod''​ / ''​userdel''​ / ''​groupmod''​ / ''​groupdel''​ 
-  ​ 
-<​html></​small></​html>​ 
-  ​ 
-==== Użytkownicy w systemie, historia logowania, komunikacja ==== 
- 
-Listę osób bieżąco używających systemu można wyświetlić komendą **''​w -n''​** oraz ''​who''​. 
- 
-Historię logowań można wyświetlić używając polecenia ''​**last** [-n //​ile_ostatnich//​] [//​username//​]''​. 
- 
-~~Zadanie.#​~~ Zaloguj się po ssh na polluksa. Sprawdź jacy inni użytkownicy są zalogowani. 
- 
-~~Zadanie.#​~~ Na polluksie sprawdź jacy trzej użytkownicy logowali się ostatnio. 
- 
-~~Zadanie.#​~~ Na polluksie sprawdź kiedy ostatnio logował się użytkownik root. 
- 
-<​html><​small></​html>​ 
- 
-~~Zadanie.#​~~ Sprawdź jacy użytkownicy byli zalogowaniu na polluksie w chwili ''​2023-03-03 13:​30''​ 
- 
-<​html></​small></​html>​ 
- 
-Komendą ''​**write** //​użytkownik//​ [//​terminal//​]''​ można wysłać tekst do wybranego użytkownika (kończąc wpisany tekst przez EOF, zwykle //​Ctrl+d//​). 
-\\ 
-Spowoduje to wyświetlenie mu podanego testu poprzedzonego komunikatem "​message from…"​ w terminalu. 
-\\ 
-Otrzymywanie takich wiadomości można zablokować (bądź odblokować) komendą ''​**mesg {n|y}**''​. 
- 
-Można też wysłać wiadomość do wszystkich użytkowników komendą ''​wall''​. 
- 
-~~Zadanie.#​~~ Napisz do sąsiada wiadomość. Zobacz na własnym ekranie wiadomość wysłaną od kogoś. 
- 
-<​html><​small></​html>​ 
- 
-Istnieje też komenda ''​[[https://​en.wikipedia.org/​wiki/​Talk_(software)|talk]] //​użytkownik//''​ pozwalająca na rozmowę między dwoma użytkownikami. 
- 
-<​html></​small></​html>​ 
- 
-==== Przełączenie się na innego użytkownika ==== 
- 
-Posiadając odpowiednie uprawnienia i/lub znając odpowiednie hasło (w zależności od ustawień systemu) można przełączyć się na innego użytkownika bądź wykonać komendę jako inny użytkownik. 
- 
-Komenda ''​**su** [-] [//​użytkownik//​]''​ po autoryzacji uruchamia domyślną powłokę dla podanego użytkownika (domyślnie roota). \\ 
-Komenda ''​su -c //komenda// [-] [//​użytkownik//​]''​ po autoryzacji uruchamia w domyślnej powłoce dla podanego użytkownika (domyślnie roota) podaną komendę. \\ 
-''​su''​ jest dostępna w każdym uniksopodobnym systemie. 
-W domyślnych ustawieniach Linuksa komenda ''​su''​ wymaga podania hasła użytkownika docelowego (i w niektórych dystrybucjach przynależności do odpowiedniej grupy, zwykle ''​wheel''​). 
- 
-Na wielu dystrybucjach instalowana jest też komenda ''​sudo''​ która ma na celu zezwolenie wybranym użytkownikom na wykonywanie wybranych komend z uprawnieniami wskazanych użytkowników. Do autoryzacji ''​sudo''​ wykorzystuje hasło bieżącego bądź docelowego użytkownika. 
-W niektórych dystrybucjach komenda ''​sudo''​ jest nadużywana do zastąpienia komendy ''​su''​. 
- 
-~~Zadanie.#​~~ Zaloguj się na podany przez prowadzącego serwer przez ssh (prawdopodobnie ''​ssh user//​N//​@fe80::​1%br0''​). Zmień użytkownika na ''​root''​. Zmień użytkownika na innego ''​user//​N//''​. 
- 
-<​html><​small></​html>​ 
- 
-Root może też korzystać z komend ''​runuser''​ i ''​setpriv''​ do uruchamiania komend z innym uid/​gid/​[[https://​linux.die.net/​man/​7/​capabilities|uprawnieniami]]. 
- 
-<​html></​small></​html>​ 
- 
-==== Uprawnienia dostępu do plików ==== 
- 
-=== Rodzaje i zapis uprawnień === 
- 
-W uniksopodobnych systemach dostęp do pliku określają trzy podstawowe uprawnienia:​ odczytu (__**r**__ead),​ zapisu (__**w**__rite) i wykonania (e__**x**__ecute). 
-\\ 
-Każde z tych uprawnień jest przyznawane osobno właścicielowi pliku (__**u**__ser),​ grupie pliku (__**g**__roup) i pozostałym użytkownikom (__**o**__thers). 
-\\ 
-Dodatkowo można ustawić trzy uprawnienia specjalne: set-user-id (sgid, __**s**__), set-group-id (sgid, __**s**__) i sticky (__**t**__). 
- 
-Prawo do wykonania dla pliku oznacza możliwość uruchomienia go (jako skryt, program etc.), dla katalogu – wejścia do niego. 
- 
-Suid/sgid nadany zwykłym plikom oznacza, że po uruchomieniu proces będzie działać z efektywnym uid/gid właściciela pliku. 
-\\ 
-<​small>​ 
-Zauważ że skrypt są interpretowane przez inny program, nie uruchamiane. Nadanie skryptowi suid/sgid nie ma wpływu na jego działanie. 
-\\ 
-Suid pozwala np. zwykłemu użytkownikowi zmienić hasło (czyli zmienić plik /etc/shadow do którego zwykły użytkownik nie ma dostępu). 
-\\ 
-Sgid pozwala np. zwykłemu użytkownikowi uruchamiać maszyny wirtualne w VirtualBoxie czy analizować pakiety sieciowe w Wiresharku. 
-</​small>​ 
- 
-[[https://​en.wikipedia.org/​wiki/​Sticky_bit|Sticky bit]] nadany katalogowi D oznacza, że plik X z katalogu D może usunąć tylko właściciel pliku X bądź katalogu D. 
-\\ 
-<​html><​small></​html>​ 
-Sticky bit ustawiany jest w katalogu ''/​tmp''​ i innych, gdzie każdy użytkownik może tworzyć pliki o to, by tylko właściciel (bądź root) mogli usunąć pliki. 
- 
-Suid/sgid dla innych plików niż zwykłe i sticky bit dla innych plików niż katalogi nie mają spójnego znaczenia w uniksopodobnych systemach. 
- 
-Przy montowaniu systemu plików można ustawić opcję ''​nosuid''​ która wyłącza działanie suid/sgid 
- 
-<​html></​small></​html>​ 
- 
-Uprawnienia są przechowywane jako liczba, gdzie wartości kolejnych bitów oznaczają (od najstarszego bitu): prawa specjalne (w kolejności suid, sgid, sticky), i prawa dla użytkownika,​ grupy, innych (w kolejności odczyt, zapis, wykonanie). 
-\\ 
-Numerycznie uprawnienia zapisuje się w systemie ósemkowym, np: ''<​color #​f000f0>​4</​color><​color #​800000>​7</​color><​color #​008000>​5</​color><​color #​000080>​1</​color>''​ gdzie kolejne cyfry oznaczają uprawnienia <color #​f000f0>​specjalne</​color>​ (tutaj: suid), <color #​800000>​użytkownika</​color>​ (tutaj: wszystkie), <color #​008000>​grupy</​color>​ (tutaj: odczyt i wykonanie) i <color #​000080>​innych</​color>​ (tutaj: żadne). 
- 
-Tekstowo uprawnienia zapisuje się jako: ''<​color #​800000>​rwx</​color><​color #​008000>​rwx</​color><​color #​000080>​rwx</​color>'',​ gdzie kolejne trójki to właśnie uprawnienia <color #​800000>​użytkownika</​color>,​ <color #​008000>​grupy</​color>​ i <color #​000080>​innych</​color>​. ​ 
-\\ 
-Brak danego uprawnienia zapisuje się przez **''​-''​**. 
-\\ 
-Zwykle przed tak zapisanymi uprawnieniami pojawia się dodatkowa litera określająca typ pliku. 
-\\ 
-Uprawnienia specjalne zapisuje się na pozycji uprawnień wykonania: suid i prawo do wykonanie to ''​s'',​ suid i brak prawa do wykonania to ''​S''​ na pozycji użytkownika. Analogicznie prezentowany jest sgid na pozycji grupy, i sticky bit z literami ''​t''​ i ''​T''​ na pozycji pozostałych. 
-\\ 
-Przykładowo:​ ''​rw-r--r--''​ oznacza że użytkownik ma prawo zapisu i odczytu, a pozostali tylko do odczytu (równoważne ''​644''​),​ 
-\\ 
-a ''​rwx--x--x''​ pozwalają właścicielowi na odczyt, zapis i wykonanie pliku, a grupie i pozostałym tylko na wykonanie (''​711''​). 
- 
-Aby zobaczyć szczegółowe informacje o pliku, w tym uprawnienia,​ można wykonać ''​**stat** //​plik//''​. 
-\\ 
-Uprawnienia są też wyświetlane w wynikach ''​ls -l''​ i ''​tree -p''​. 
-\\ 
-Wszystkie powyższe polecenia dodają na początek uprawnień literę określającą rodzaj pliku. 
- 
-~~Zadanie.#​~~ Sprawdź jakie uprawienia mają (na twoim komputerze):​ 
-  * twój katalog domowy 
-  * podkatalog ''​.ssh''​ w twoim katalogu domowym 
-  * plik ''​.bash_history''​ w twoim katalogu domowym 
-  * plik ''/​etc/​passwd''​ i ''/​etc/​shadow''​ 
-  * katalog ''/​tmp''​ 
-  * plik ''/​usr/​bin/​passwd''​ i ''/​usr/​bin/​write''​ 
- 
-~~Zadanie.#​~~ Sprawdź jakie mają uprawnienia i jakim są rodzajem plików: 
-  * ''/​var/​run''​ 
-  * ''/​dev/​sda''​ lub ''/​dev/​nvme0n1''​ 
-  * ''/​dev/​null''​ 
-  * ''/​run/​initctl''​ 
-  * ''/​run/​rpcbind.sock''​ 
-  ​ 
-=== Zmiana uprawnień, grupy i użytkownika pliku === 
- 
-Domyślnie uprawnienia nadawane plikom i katalogom określa maska którą można odczytać poleceniem ''​**umask**''​ (i zmienić dla bieżącej powłoki poleceniem ''​umask //​oktalnie//''​). 
- 
-Do zmiany uprawnień służy komenda ''​**chmod** //​uprawnienia//​ //​plik//''​. 
-\\ 
-''​chmod''​ przyjmuje uprawnienia w postaci ósemkowej, np. ''​chmod 644 plik''​ lub w postaci symbolicznej. \\ 
-Postać symboliczna to oddzielone przecinkami wyrażenia na które składa się: 
-  * litera ''​u'',​ ''​g'',​ ''​o''​ lub ''​a''​ (user, group, others lub __**a**__ll - wszyscy) 
-  * operacja ''​+'',​ ''​-''​ lub ''​=''​ (dodaj, usuń lub ustaw te prawa) 
-  * uprawnienia ''​r'',​ ''​w'',​ ''​x'',​ ''​s''​ lub ''​t''​. 
-Przykładowo ''​u+x,​o=''​ doda użytkownikowi prawo do zapisu i ustawi brak praw dla innych. 
-\\ 
-<​small>​Pominięcie litery ''​[ugoa]''​ przed operacją ma specjalne znaczenie, szczegóły w podręczniku systemowym.</​small>​ 
- 
-Właściciel pliku będący w kliku grupach może użyć komendy ''​**chgrp** //grupa// //​plik//''​ do zmiany grupy do której należy plik. 
- 
-Tylko root może zmienić właściciela (i grupę) pliku poleceniem ''​**chown** [//​właściciel//​][:​[//​grupa//​]] //​plik//''​. 
- 
-Zarówno ''​chmod'',​ ''​chgrp''​ i ''​chown''​ przyjmują przełączniki ''​-R''​ (''​--recursive''​) dla rekursywnej zmiany i ''​--reference=//​plik//''​ dla ustawienia uprawnień/​grupy/​właściciela identycznego jak we wskazanym pliku. 
- 
-//​Ćwiczenia wykonuj na podanym przez prowadzącego serwerze. \\ Do tworzenia plików możesz wykorzystać np. komendę // ''​fortune > //​plik//''​. 
- 
-~~Zadanie.#​~~ Stwórz plik. Ustaw takie prawa dostępu, żeby tylko właściciel mógł odczytać plik. 
-\\ 
-Sprawdź poprawność nadanych praw przełączając się na innych użytkowników. 
- 
-~~Zadanie.#​~~ Stwórz plik. Ustaw korzystając z ósemkowego zapisu takie prawa dostępu, żeby właściciel mógł zmodyfikować i odczytać plik, a grupa mogła tylko odczytać plik. Sprawdź poprawność nadanych praw. 
- 
-~~Zadanie.#​~~ Stwórz plik. Ustaw korzystając z symbolicznego zapisu takie prawa dostępu, żeby właściciel mógł zmodyfikować i odczytać plik, a grupa mogła tylko odczytać plik. 
- 
-~~Zadanie.#​~~ Zmień grupę pliku z poprzedniego zadania. 
- 
-~~Zadanie.#​~~ Stwórz plik. Ustaw takie prawa dostępu, żeby tylko właściciel i pozostali mogli odczytać plik. Sprawdź czy osoba należąca do grupy pliku może go odczytać. 
- 
-~~Zadanie.#​~~ Stwórz katalog ze zwykłym plikiem w środku. Odbierz prawo do wykonywania katalogu. Spróbuj wylistować katalog, wejść do katalogu i wyświetlić plik bez wchodzenia do katalogu. 
- 
-~~Zadanie.#​~~ Zmień prawa dostępu katalogu na ''​u=rwx,​go=rx''​. Stwórz w tym katalogu zwykły plik. Wyświetl plik jako inny użytkownik. Wyświetl zawartość katalogu jako inny użytkownik. \\ Następnie zmień prawa do katalogu ''​u=rwx,​go=x''​. Spróbuj ponownie wyświetlić plik i zawartość katalogu jako inny użytkownik. 
- 
-~~Zadanie.#​~~ Stwórz katalog z prawami dostępu ''​777''​ i stwórz w nim dwa pliki. Jednemu z nich ustaw prawa ''​600''​. Z innego użytkownika spróbuj usunąć oba pliki. 
- 
-~~Zadanie.#​~~ W katalogu użytkownika A z prawami dostępu ''​777''​ stwórz jako użytkownik B dwa katalogi: jeden pusty, jeden z plikiem w środku. Spróbuj usunąć te katalogi jako użytkownik A. 
- 
-~~Zadanie.#​~~ Czy możesz zmienić nazwę katalogu K który nie dał się usunąć w poprzednim zadaniu? Czy możesz przenieść katalog K do innego? Czy możesz przenieść katalog zawierający K do innego? 
- 
-~~Zadanie.#​~~ Stwórz plik i katalog z plikiem w środku i odbierz wszystkim trzem wszystkie uprawnienia. Zmień użytkownika na root i spróbuj wyświetlić oba pliki. 
- 
-~~Zadanie.#​~~ Z roota zmień właściciela wybranego pliku. Następnie zmień grupę innego pliku na ''​www-data''​. 
- 
-==== Data utworzenia, modyfikacji,​ dostępu ==== 
- 
-Linuksowe system plików zwykle przechowują datę zmiany metadanych (//​change//,​ ctime), zmiany treści (//​modify//,​ mtime) i ostatniego dostępu (//​access//,​ atime) dla każdego pliku. Niektóre systemy plików dodatkowo przechowują też czas utworzenia pliku. 
-\\ 
-<​small>​Montując system plików często wyłącza się rejestrowanie czasu ostatniego dostępu podając opcję ''​noatime''​ lub ustawia zmianę tego czasu tylko w szczególnych przypadkach podając opcję ''​relatime''​. Komenda ''​mnt''​ i ''​findmnt''​ wyświetlają z jakimi opcjami zamontowano system plików.</​small>​ 
- 
-Polecenie ''​stat //​plik//''​ pokazuje te czasy. 
- 
-Komenda ''​touch //​plik//''​ ustawia czas dostępu i modyfikacji pliku, domyślnie na teraz. 
-\\ 
-Podając ''​-d //​data//''​ lub ''​--reference=//​plik//''​ można wybrać inną datę, a ''​-a'',​ ''​-c''​ i ''​-m''​ wybierają który czas zmodyfikować. 
-\\ 
-Jeśli plik docelowy nie istnieje, domyślnie komenda ''​touch''​ go stworzy. Jest to często używane do tworzenia pustych plików. 
- 
- 
-~~Zadanie.#​~~ Sprawdź daty dla pliku ''/​var/​log/​wtmp''​ 
- 
-~~Zadanie.#​~~ Zmień daty do swojego katalogu domowego. 
- 
-<​html><​small></​html>​ 
- 
-~~Zadanie.#​~~ Zmień datę zmiany zawartości wybranego pliku na ''​13:​30 PDT Saturday month ago''​. 
- 
-<​html></​small></​html>​ 
- 
-===== Edycja linii poleceń ​ ===== 
- 
-Bash (i wiele innych programów) korzysta do odczytywania komend ze standardowego wejścia biblioteki [[https://​en.wikipedia.org/​wiki/​GNU_Readline|readline]]. 
-\\ 
-Część programów z przyczyn licencyjnych wybiera do tego samego celu [[https://​thrysoee.dk/​editline/​|libedit]]. 
- 
-Readline pozwala na wygodną edycję linii poleceń i tworzenie historii poleceń. 
- 
-Lista sensownych skrótów klawiszowych do edycji linii poleceń jest tutaj: https://​readline.kablamo.org/​emacs.html 
-\\ 
-Pełna lista komend i przypisanych do nich skrótów jest w podręczniku systemowym (''​man readline''​ i ''​man bash''​). 
-\\ 
-Konwencja zapisu skrótów klawiszowych to: 
-  * ''​^//​x//''​ lub ''​C-//​x//''​ to //Ctrl+x// (uwaga:''​^//​X//''​ lub ''​C-//​X//''​ to //​Ctrl+Shift+x//​),​ 
-  * ''​M-//​x//''​ to zwykle //Alt-x// (patrz: https://​en.wikipedia.org/​wiki/​Meta_key),​ 
-  * ''//​a//​ //​b//''​ to wciśnięcie po skrócie //a// skrótu //b//. 
- 
-Bash domyślnie dopisuje historię wykonanych poleceń do pliku ''​~/​.bash_history''​ w momencie wyjścia z powłoki. 
-\\ 
-Historię (tą z pliku połączoną z bieżącą) można wyświetlić komendą ''​history''​. (W ''​man bash_builtins''​ znajduje się opis przełączników.) 
- 
-<​html><​small></​html>​ 
- 
-Do wygodnego przeglądania historii można też użyć programu [[https://​dvorka.github.io/​hstr/​|hstr]] 
- 
-<​html></​small></​html>​ 
- 
-~~Zadanie.#​~~ Jakim skrótem czyści się ekran? 
- 
-~~Zadanie.#​~~ Jakimi skrótami wyszukuje się wstecz w historii? 
- 
-~~Zadanie.#​~~ Jakim skrótem przesuwa się kursor o jedno słowo? 
- 
-<​html><​small></​html>​ 
- 
-~~Zadanie.#​~~ Jakim złożeniem skrótów przesuwa się kursor o 5 słów? 
- 
-~~Zadanie.#​~~ Jakim skrótów wstawia się ostatnie słowo z poprzedniego polecenia w historii? 
- 
-~~Zadanie.#​~~ Jakim złożeniem skrótów wstawia się trzecie od końca słowo z poprzedniego polecenia w historii? 
- 
-~~Zadanie.#​~~ Jakim skrótem zamienia się kolejnością to słowo z poprzednim? 
- 
-<​html></​small></​html>​ 
- 
-===== Edycja plików w konsoli ===== 
- 
-=== vi i vim === 
- 
-''​vi''​ jest często jedynym domyślnie instalowanym edytorem tekstowym. 
- 
-''​vim''​ to ulepszona wersja ''​vi''​. 
- 
-Żeby nauczyć się ''​vim'',​ uruchom ''​vimtutor''​. 
- 
- 
-<​html><​small></​html>​ 
- 
-''​vi''​ jest wpisane w standard [[https://​pubs.opengroup.org/​onlinepubs/​9699919799/​utilities/​vi.html|POSIX]]. 
-\\ 
-Jest też częścią minimalistycznych zestawów narzędzi takich jak busybox i toybox. 
- 
-<​html></​small></​html>​ 
- 
-~~Zadanie.#​~~ Przejdź całą pierwszą lekcję w ''​vimtutor''​. 
- 
-<​html><​small></​html>​ 
- 
-~~Zadanie.#​~~ Przejdź pozostałe lekcje w ''​vimtutor''​. 
- 
-=== nano === 
- 
-Nano jest stosunkowo prostym edytorem tekstowym. 
- 
-Podstawowe skróty są wyświetlone na dole ekranu. 
- 
-Więcej na: https://​www.nano-editor.org/​docs.php 
- 
-=== Emacs === 
- 
-[[https://​www.gnu.org/​software/​emacs/​|Emacs]] jest [[https://​en.wikipedia.org/​wiki/​Editor_war|odwiecznym rywalem]] ''​vim''​a w konkurencji programów do edytowania tekstu w konsoli. 
- 
-Po wpisaniu ''​emacs''​ możesz wybrać tutorial skrótem //Ctrl+h t//. 
- 
-=== Inne === 
- 
-  * [[https://​joe-editor.sourceforge.io/​joe]] 
-  * mcedit – edytor zintegrowany z [[https://​en.wikipedia.org/​wiki/​Midnight_Commander|mc]] 
-  * [[https://​micro-editor.github.io/​|micro]] 
-  * [[https://​neovim.io/​|neovim]] 
-  * [[https://​helix-editor.com/​|hx]] 
-  ​ 
-<​html></​small></​html>​ 
  
   ​   ​
so/files_basics.1678104411.txt.gz · ostatnio zmienione: 2023/03/06 13:06 przez jkonczak