Napisane przez mediologia dnia . Wysłane Rozdział 6 - Prawa .

6.4 Oktalna modyfikacja praw pliku (2)


Prawa dostępu do plików w systemie Linux są często mylące dla początkujących użytkowników, ponieważ można je przedstawić dwoma sposobami; literowo i liczbowo, przy czym w tym drugim przypadku stosujemy system binarny, to właśnie ten zapis sprawia użytkownikom kłopoty. Z poniższej tabelki wynika, że aby użytkownik miał wszystkie prawa – czytania zapisania egzekwowania pliku – musi się to wyrażać sumą:

400+200+100 analogicznie dla użytkowników grupy  :  40+20+10 i dla pozostałych  :  4+2+1

400 →  prawo czytania dla właściciela pliku

200 →  prawo pisania dla właściciela pliku

100 →  prawo egzekwowania pliku przypisane jego właścicielowi

040 →  prawo czytania dla grupy użytkowników

020 →  prawo pisania dla grupy użytkowników

010 →  prawo egzekwowania pliku przypisane grupie użytkowników

004 →  prawo czytania przypisane innym użytkownikom

002 →  prawo pisania przypisane innym użytkownikom

01 →  prawo egzekwowania przypisane innym użytkownikom

02

 

Polecenie chmod pozwala zmienić prawa przy pomocy wartości wyrażonych w kodzie binarnym np. jak nadać wszystkie prawa właścicielowi pliku plikb, prawa do czytania i egzekwowania tego pliku grupie do której należy jego właściciel, i prawo do czytania pliku innym użytkownikom systemu? 

$    chmod    754     plikb

 

System dziesiętny różni się zasadniczo od swoich poprzedników (np. zapisu rzymskiego, systemu Azteków opartego na 5 itd.). Za Charlesem Petzold można go scharakteryzować w następujący sposób:

1. dziesiętny system liczbowy jest systemem pozycyjnym, co oznacza, że określona cyfra reprezentuje różną wartość zależnie od swego miejsca w liczbie. Miejsce cyfry jest więc równie, jak jej rzeczywista wartość.. Zarówno liczba 200 jak i 20000 mają na początku tylko jedną dwójkę, jednak wiemy, że dwadzieścia tysięcy jest większe od dwustu

2. praktycznie wszystkie systemy powstałe przed systemem dziesiętnym (lub indoarabskim), mają coś czego on nie ma, a mianowicie specjalny symbol oznaczający liczbę 10 (np. X w rzymskim). W systemie dziesiętnym nie ma specjalnego symbolu 10.

3. Wszystkim systemom liczbowym brakuje symbolu 0. System dziesiętny natomiast posługuje się – jako jedyny – symbolem zera. Zero – choć może nam to się wydawać dziwne – jest bez wątpienia jednym z najważniejszych wynalazków w historii liczb i matematyki. Dzięki niemu możemy rozróżniać liczby biorąc pod uwagę ich zapis pozycyjny, 45  od   405  czy od  450. Zero ułatwia także wiele operacji matematycznych, które są niewygodne w innych systemach : np. mnożenie czy dzielenie.

 

Rozłóżmy na czynniki pierwsze liczbę  5854 którą wymawia się jako „pięć tysięcy osiemset pięćdziesiąt cztery” co można zapisać w następujący sposób:

Przedstawienie I

pięć tysięcy

osiemset

pięćdziesiąt

cztery

 

W postaci liczbowej możemy naszą liczbę przedstawić w następujący sposób:

Przedstawienie II

5854  =   5000  +  800  +  50    +   4

 

Zapis ten może być jeszcze bardziej szczegółowy:

 

Przedstawienie III

5854  =       5×1000

+ 8×100

+ 5×10

+ 4×1

 

Można ten zapis przedstawić używając potęg:

Przedstawienie IV

5854 =        5×10³

+ 8×10²

+ 5×10¹

+ 4×10º

 

Pamiętaj, że dowolna liczba do potęgi  0  równa się  1

Każda pozycja w wielocyfrowej liczbie ma szczególne znaczenie, przypatrz się uważnie poniższemu rysunku

Potęga      6   5   4   3   2   1  0

5 | 8 | 5 | 4 | 8 | 9 | 3

 

!!!!!!!!!!!!!!!!!!!!  →  liczba jedności

!!!!!!!!!!!!!!!!  →  liczba dziesiątek

!!!!!!!!!!!!!  →  liczba setek                                    V

!!!!!!!!!  →  liczba tysięcy

!!!!!!  →  liczba dziesiątek tysięcy

!!!  →  liczba setek tysięcy

!  →  liczba milionów

 

Każda pozycja  - i jest to zasada najważniejsza - odpowiada określonej potędze dziesięciu. Jednak wniosek jest następujący- notacja pozycyjna, którą powyżej przedstawiliśmy działa także w innych nie dziesiętnych systemach. System dziesiętny posługuje się dziesięcioma symbolami:

0  1  2  3  4  5  6  7  8  9  (podstawa systemu   =  10)

 

System binarny tylko dwoma

0 1  (podstawa systemu    =  2)

 

Spróbujmy zastosować zasady notacji pozycyjnej do jakiejkolwiek liczby wyrażonej kodem binarnym. Podstawą systemu dziesiętnego jest liczba dziesięć (10 cyfr). Podstawą systemu binarnego jest liczba dwa (dwie cyfry)

 

Potęga liczby binarnej: 3 2 1 0
Liczba wyrażona kodem binarnym: 1 0 1 0

 

Wartość liczby binarnej w systemie  10     1×2³ + 2² + 2¹ + 2º10 

5854 =  5×10³  + 8×10² +   5×10¹4×10º

 

Powróćmy teraz do nadawania praw przy pomocy  wartości wyrażonych przez kod binarny. Prawa dla użytkownika, prawa dla grupy, prawa dla innych użytkowników systemu wyrażane są w formie trzech liter np. nadanie wszystkich możliwych praw właścicielowi pliku zapisujemy:

rwx →  które w formie binarnej będzie miało wartość 111   =

rw- →  w formie binarnej będzie miało wartość 110

r-- →   w formie binarnej będzie miało wartość 100

--- w formie binarnej będzie miało wartość 000

 

Podsumujmy: cyfra binarna jest zapisem praw nadanych właścicielowi, grupie i innym użytkownikom systemu.

 

 

System dziesiętny system binarny system octal     system hexa    
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10

 

 

Kurs Linux - Oktalna modyfikacja praw pliku w Linuxie