Różnice

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

Odnośnik do tego porównania

pl:dydaktyka:unix:lab_pliki_i_polecenia [2013/10/21 12:06]
ikaf [Dowiązania symboliczne]
pl:dydaktyka:unix:lab_pliki_i_polecenia [2019/06/27 15:50]
Linia 1: Linia 1:
-====== Praca z plikami i poleceniami ====== 
  
-<​code>​ 
-- Po czym rozpoznać Unixa? 
-- Kot przebiegający po klawiaturze wpisuje poprawną komendę... 
-                       /* nadesłał: Grzegorz Mucha, IS 2012 */ 
-</​code>​ 
- 
- 
- 
-===== DO PRZYGOTOWANIA ===== 
-Samodzielnie należy przed tym laboratorium przygotować:​ 
-    * praca z man, 
-    * przeczytać artykuł //​{{:​pl:​dydaktyka:​unix:​gjn-dokumentacja.pdf|Korzystanie z dokumentacji GNU/​Linux}}//​ 
-    * przeanalizować w jaki sposób wyglądają strony man, z jakich części się składają? 
-===== WPROWADZENIE ===== 
- 
- 
-==== Uruchamianie programów ==== 
- 
-    * Pliki programów są przechowywane w systemie plików. 
-    * Każdy plik programu w systemie ma nazwę (//case sensitive//​). 
-    * Program jest uruchamiany przez powłokę poprzez podanie nazwy jego pliku. 
-    * Powłoka zapewnia mechanizmy kontroli pracy uruchamianych zadań (ang. //job//), programów. 
-    * Powłoka zapewnia mechanizmy przekazywania wyników pracy zadań. 
-==== Argumenty poleceń ==== 
- 
-    * Polecenia mogą przyjmować argumenty. 
-    * Argumenty mogą być obowiązkowe (np. nazwa pliku) lub opcjonalne (tzw. opcje). 
-    * Niektóre opcje przyjmują dodatkowe argumenty (obowiązkowe,​ lub opcjonalne). 
-    * Nazwy opcji maja format długi i krótki. 
-    * Argumenty są //case sensitive//​. 
-    * Spis opcji programu jest podany w man lub przez opcje <​code>​-h|--help</​code>​ 
-    * Kolejność można zmieniać, przestawianie 
-    * opcje można scalać. 
- 
-==== Opcje - przykłady ==== 
-Format długi, krótki: 
- 
-  ls -a ; ls --all 
- 
-Przestawianie:​ 
- 
-  ls -a -l ; ls -l -a 
- 
-Argumenty: 
- 
-  ls --ignore=\*.png ; ls -I \*.png 
- 
-Scalanie: 
- 
-DOBRZE: 
-  ls -al ; ls -la ; ls -alI \*.png 
-ŹLE!!! 
-  ls -Ila \*.png 
- 
-==== Praca z plikami ==== 
-System plików ma strukturę drzewiastą:​ 
- 
-  / 
-  /bin 
-  /bin/bash 
-  /home 
-  /home/gjn 
-  /​home/​gjn/​plik 
-  /​home/​gjn/​katalog/​plik 
- 
-==== Praca z plikami ==== 
- 
-    * Jest zawsze tylko jedna taka struktura podczas pracy systemu. 
-    * W związku z tym zawsze jest bezwzględny początek ///// systemu plików. 
-    * Inne systemy mogą być włączane jako kolejne gałęzie. 
-    * Katalog bieżący: //.// katalog nadrzędny //..// 
-    * Katalog jest plikiem! 
- 
-==== Nazewnictwo ==== 
- 
-    * Wszystkie pliki i katalogi mają nazwy będące ciągami znaków alfanumerycznych. 
-    * Nazwy mogą być długie i są //case sensitive//​. 
-    * Katalogi rozdziela się znakiem ///// (ang. //slash//). 
-    * Ścieżka dostępu to nazwa pliku pozwalająca na jego umiejscowienie. 
-    * Pełna (bezwzględna) ścieżka określa jego położenie względem początku drzewa, zaczyna się od /////, np. ///​etc/​X11/​XF86config//​. 
-    * Względna ścieżka określa położenie względem katalogu bieżącego. 
-    * ''​~user''​ oznacza katalog domowy użytkownika ''​user''​ (mechanizm na poziomie powłoki, nie systemu plików!) 
- 
-==== Polecenia dotyczące plików ==== 
-  * **cp** kopiowanie 
-  * **mv** przenoszenie,​ zmiana nazwy 
-  * **rm** usuwanie 
-  * **touch** zakładanie pustego, modyfikacja daty 
-  * **file** typ pliku 
- 
-==== Polecenia dotyczące katalogów ==== 
- 
-  * **cd** zmiana bieżącego 
-  * **pwd** podanie bieżącego 
-  * **mkdir** zakładanie 
-  * **rmdir** usuwanie (pustego!) 
-  * **ls** pokazywanie zawartości 
-  * **du** pokazywanie objętości (również pliku) 
- 
-==== Metaznaki ==== 
-W nazwach plików do których użytkownik odwołuje się w powłoce można używać 2 znaków specjalnych,​ które zastępują ciągi znaków w nazwie pliku (ścieżce dostępu): 
- 
-    * znak ''?''​ zastępuje dokładnie jeden znak, 
-    * znak ''​*''​ zastępuje ciąg znaków o dowolnej (w tym zerowej) długości. 
- 
-==== Prawa dostępu ==== 
- 
-    * Każdy plik ma określone prawa dostępu regulujące jaki dostęp mają do niego użytkownicy. 
-    * Podstawowe atrybuty pliku określają możliwości jego: 
-          * odczytu //read// 
-          * zapisu //write// 
-          * uruchamiania //execute// 
- 
-==== Właściciele pliku ==== 
- 
-    * Każdy plik ma właściciela i jest przypisany do grupy właścicieli. 
-    * Z tego punktu widzenia użytkownicy systemu dzielą się na: 
-          * właściciela //​user// ​ 
-          * grupę właścicieli //group// 
-          * pozostałych użytkowników //others// 
-            (//others = all - user - group//) 
- 
- 
-====  Atrybuty pliku ==== 
-Wynik polecenia ''​ls -l'':​ 
-<​code>​ 
-  -rwxrwxrwx N uzytkownik grupa rozmiar data nazwa 
-</​code>​ 
- 
-Prawa dostępu 
-<​code>​ 
-   ​- ​  ​rwx ​  ​rwx ​  rwx 
-  TYPE USER GROUP OTHERS 
-</​code>​ 
- 
-Typy plików: ''​TYPE:​ - d b c l p s''​ 
- 
-==== Przykład atrybutów ==== 
-Przykład: 
-<​cli> ​ 
-$ ls -l cruise 
--rw-r--r-- 1 tom staff 683 Jul 4 2000 cruise 
-$ ls -l /tmp/cruise 
--rwxr-xr-x 1 tom staff 783 Jul 4 2000 /tmp/cruise 
-</​cli>​ 
-==== SUID, SGID i sTicky bit ==== 
-  * SUID - //set user id// - pozwala na uruchomienie danego pliku z prawami właściciela tego pliku 
-<cli> 
-$ ls -l /​usr/​bin/​passwd ​ 
--rwsr-xr-x 1 root root 31704 lis 14 15:41 /​usr/​bin/​passwd 
-</​cli>​ 
-  * SGID - //set group id// - pozwala na uruchomienie danego pliku z prawami grupy tego pliku  ​ 
-  * SGID - //set group id// - w przypadku katalogu, sprawia, że nowotworzone pliki, należą do tej grupy, do której należy katalog, a nie do grupy z uprawnieniami której pracuje użytkownik 
-  * sTicky bit - pliki w katalogu z ustawionym sticky bit mogą być usuwane lub zmieniane tylko przez właściciela danego pliku lub katalogu 
-<cli> 
-$ ls -l | grep tmp 
-drwxrwxrwt ​ 22 root root 12288 lis 14 15:41 tmp 
-</​cli>​ 
- 
-==== Zmiana praw dostępu ==== 
- 
-    * Prawa dostępu zmienia się przy pomocy polecenia **chmod** (ang. //change mode//): 
-      chmod prawa nazwa_pliku 
-    * gdzie prawa: ''​ugoa +-= rwx [, ugoa +-= rwx]''​ 
-    * Na przykład: 
-<cli> 
-chmod u+r cruise; chmod u-w cruise 
-chmod g+x,o-r cruise 
-chmod u+s,g+s,+t tmp/ 
-</​cli>​ 
-    * administrator może zmieniać właściciela **chown** i grupę **chgrp** pliku. 
- 
- 
-==== Numeryczne prawa dostępu ==== 
- 
-  r=4, w=2, x=1 
-  su=4, sg=2, t=1 
-  chmod NNNN plik 
- 
-na przykład: 
-<cli> 
-chmod 755 plik 
-chmod u=rwx,​g=rx,​o=rx plik 
-chmod 644 plik 
-chmod u=rw,​g=r,​o=r plik 
-chmod 44 plik 
-chmod 0044 plik 
-</​cli>​ 
-==== Domyślne prawa, umask ==== 
-<cli> 
-$ umask  
-0022 
-$ umask -S 
-u=rwx,​g=rx,​o=rx 
-$ touch nowy1 ; ls -l nowy1  
--rw-r--r-- ​ 1 gjn gjn 0 Feb 26 20:39 nowy1 
-$ umask 700 ; touch nowy2 ; ls -l nowy2 
-----rw-rw- ​ 1 gjn gjn 0 Feb 26 20:40 nowy2 
-$ umask 077 ; touch nowy3 ; ls -l nowy3 
--rw------- ​ 1 gjn gjn 0 Feb 26 20:40 nowy3 
-$ umask 000 ; touch nowy4 ; ls -l nowy4 
--rw-rw-rw- ​ 1 gjn gjn 0 Feb 26 20:40 nowy4 
-</​cli>​ 
- 
-==== Prawa do katalogów ==== 
-    * //write// -> zapis do katalogu 
-    * //read// -> odczyt zawartości (spisu plików!), możliwość wykonania **ls** 
-    * //execute// -> dostęp do zawartości (plików), możliwość wykonania **cd** 
- 
-Przykład: 
-<cli> 
-$ chmod a=rx katalog 
-$ ls katalog 
-plik 
-$ cd katalog 
-$ cd .. 
-$ chmod a=r katalog ; ls katalog ​ 
-plik 
-$ cd katalog ​ 
-sh: cd: katalog: Permission denied 
-$ chmod a=x katalog ; cd katalog 
-$ ls 
-ls: .: Permission denied 
-</​cli>​ 
-==== Zmiana właściciela ==== 
- 
-  chown user  plik 
-  chgrp grupa plik 
- 
-Zmienić właściciela może tylko root. 
- 
- 
-==== - MC ==== 
-Uruchomić Midnight Commander, **mc** i zmienić prawa dostępu do wybranego pliku <​key>​C-x c</​key>​. 
- 
-==== - Dowiązania symboliczne ==== 
- 
-    * są wskaźnikami,​ skrótami do plików, 
-    * pozwalają na udostępnianie pliku pod różnymi nazwami, w różnych katalogach, 
-    * tworzenie przy pomocy ''​ln -s'':​ 
- 
-      ln -s plik dowiazanie 
- 
-    * polecenie ''​ls -L''​ wyświetla pliki na które wskazuje link symboliczny. 
-    * bez opcji ''​-s''​ -> dowiązania sztywne, 
-    * liczba dowiązań sztywnych do pliku to ''​N''​ w ''​ls -l''​ 
-<​code>​ 
-  -rwxrwxrwx N uzytkownik grupa rozmiar data nazwa 
-</​code>​ 
- 
-===== ĆWICZENIA ===== 
- 
-==== - Polecenia ==== 
- 
-    * sprawdzić w manualu opis poleceń //ls(1)// //cp(1)// //​mkdir(1)//​ //rm(1)// 
-    * jakie opcje tych poleceń wyświetlają opis argumentów?​ 
-    * w przypadku **ls** przetestować działanie opcji ''​l a A F d R'',​ w przypadku **mkdir** opcji ''​p m'',​ dla **rm** ''​f''​ i ''​R''​ 
-    * dla poznanych powyżej opcji przetestować przestawianie i łączenie 
-    * znaleźć opcje **ls**, które przyjmują argumenty; przetestować je; na co należy zwrócić uwagę przy scalaniu? 
-    * należy sprawdzić, czy nie są zdefiniowane aliasy zmieniające pracę używanych poleceń (polecenie un/alias) 
-    * przy czytaniu manuala można przełączyć sesję na pracę w języku polskim przy pomocy ''​export LANG=pl_PL''​ (o ile jest dostępny), można też spróbować ustawić inne języki, np. ''​fr_FR'',​ czy ''​de_DE''​. 
- 
- 
-==== - Pliki ==== 
- 
-    * prztestować działanie wszystkich poznanych poleceń do obsługi plików i katalogów 
-    * jak przejść do katalogu domowego na różne sposoby? 
-    * w katalogu domowym założyć taką strukturę katalogów i plików: 
- 
-      unix/ 
-      unix/lab2/ 
-      unix/​lab2/​alfa/​ 
-      unix/​lab2/​alfa/​one 
-      unix/​lab2/​beta/​ 
-      unix/​lab2/​beta/​two 
-      unix/​lab2/​beta/​prima/​ 
-      unix/​lab2/​beta/​prima/​three 
- 
-Pliki należy zakładać przy pomocy jednego z poleceń: 
- 
-      echo "jakis napis" > plik 
-      touch plik 
- 
-Wynik można sprawdzić przy pomocy **tree**. 
-    * poruszając sie po stworzonej strukturze należy przetestować działanie poleceń **cd** i **pwd** wykorzystując bezwzględne i względne ścieżki dostępu, a tym katalogi specjalne ''​.''​ i ''​..''​ 
-    * przetestować działanie metaznaków (gwiazdka, pytajnik) z poleceniem **ls** w katalogu ///​usr/​bin//​ 
-    * jak przejść do katalogu poprzedniego,​ a jak do domowego (3 sposoby)? 
-    * jak przejść do katalogu domowego podanego użytkownika?​ 
- 
- 
-==== - Prawa dostępu ==== 
- 
-    * przeczytać podręcznik do **chmod** i sprawdzić sposób działania polecenia 
-    * przetestować zmiany praw dostępu na plikach stworzonych w strukturze //​unix/​lab2//​ 
-          * odczyt testować przy pomocy ''​cat plik''​ 
-          * zapis przy pomocy ''​echo "​cos"​ >> plik''​ 
-          * uruchamianie przy pomocy ''​./​plik''​ 
-    * wykonać ćwiczenie podobne do powyższego,​ tak aby obserwować wpływ zmiany praw dostępu na możliwości dostępu do plików drugiej osoby 
-    * prawa dostępu na katalogach - ćwiczenie należy wykonywać w parach, próbując czytać pliki w katalogach drugiej osoby: czym różni się //read// od //​execute//?​ sprawdzić działanie **pwd**, **ls** i cd przy różnych kombinacjach tych praw (szczególnie:​ tylko //read//, tylko //​execute//​) 
-    * opcja ''​-R''​ polecenia **chmod** powoduje rekursywną zmianę praw dostępu do zawartości katalogu. 
-    * jakie muszą być spełnione warunki aby użytkownik A mógł tworzyć katalogi w katalogu, który należy do użytkownika B, a co wystarczy do zapisu plików w katalogu? 
-    * prawa numeryczne: sposób działania i użycie; czym się różnią od symbolicznych?​ 
-    * numeryczne prawa dostępu a polecenie umask, sprawdzić działanie dla różnych wartości. 
-    * oglądnąć bity //​SUIG/​sTicky//​ na plikach/​katalogach:​ 
- 
-      ls -ld /tmp 
-      ls -l  /​usr/​bin/​passwd 
- 
- 
-==== - Linki ==== 
- 
-    * przeczytać opis do //ln(1)// 
-    * stworzyć dowiązania symboliczne do plików przy pomocy ''​ln -s''​ 
- 
-      ln -s plik dowiazanie 
- 
-    * co się dzieje przy czytaniu, zapisywaniu,​ uruchamianiu dowiązania?​ 
-    * co przy jego usuwaniu?, a co przy usuwaniu samego pliku? 
-    * sprawdzić działanie dowiązań do katalogów; jak działa **pwd**, co dają opcje ''​P L''​ 
- 
- 
- 
- 
- 
-===== VARIA ===== 
- 
-Automatyczne generowanie listy obecności o poranku: 
-<cli> 
-gjn:~$ who|awk '​{print $1;​}'​|sort|uniq|xargs -i"​{}"​ grep "​{}"​ /​etc/​passwd|cut -d : -f5|cut -d, -f1|awk '​{print $2,​$1;​}'​ |sed s/\ /,/g |sort >​unix08-0800.cvs 
-</​cli>​ 
- 
-Jak założyć swoją stronę domową na serwerze //​student//?​ 
-<cli> 
-$ cd 
-$ mkdir public_html 
-$ echo "to jest test strony uzytkownika:​ $USER" > public_html/​index.html 
-$ chmod o+x . 
-$ chmod u+rwx,​g=,​o=x public_html 
-$ chmod a+r public_html/​index.html 
-</​cli>​ 
pl/dydaktyka/unix/lab_pliki_i_polecenia.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0