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³ + 0×2² + 1×2¹ + 0×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