3. 9. 2017.

Datoteke, atributi, dozvole










Ko je ko u sistemu fajlova?
U prošlom broju smo se dotakli teme organizacije fajl-sistema pod Linuksom, gde smo pokušali na da jednostavan način objasnimo jednu od stvari koje dosta zbunjuju nove korisnike tog operativnog sistema, a koji su ranije koristili Windows. U ovom broju ćemo pokušati da objasnimo još neke stvari koje se po načinu realizacije razlikuju od onoga što gledamo na Windowsima.

Sve je fajl
Što se Windowsa tiče, stvar je jednostavna i jasna. Fajl-sistem se sastoji od fajlova (datoteka) i direktorijuma (foldera) pomoću kojih se fajlovi organizuju u logičke celine. Linuks ima malo drugačiju filozofiju (ili drugačiju arhitekturu operativnog sistema), pa pod fajlove ne ubraja samo tipične datoteke sa podacima (txt, doc, mp3, jpg), već i sve ono što ima formu niza binarnih informacija. Stoga, Linux čak i tastaturu predstavlja kao datoteku, pošto se njen ulaz tretira kao niz karaktera. Pod fajlove ulaze i hard-diskovi, kernel strukture podataka, štampači, serijski portovi, programi za emulaciju terminala i dosta drugih stvari. Hardverski uređaji se kod Linuxa logički dele u dve grupe fajlova. Prva se odnosi na uređaje koji rade sa nizovima karaktera, dok se druga grupa odnosi na takozvane blok uređaje, u koje najčešće spadaju jedinice masovne memorije, kao što su hard-diskovi ili fleš memorije. Naziv su dobili po tome što se na tim uređajima podaci čitaju i pišu u blok formatu, a ne direktnom manipulacijom pojedinačnih bajtova.

Linuks generalno poznaje tri vrste fajlova: standardne fajlove, direktorijume i specijalne fajlove.

Prve dve kategorije nije potrebno predstavljati, pa ćemo se baviti samo specijalnim fajlovima. U njih spadaju:
• Kanali ili cevi (p) predstavljaju specijalni tip fajlova koji funkcionišu po principu bafera FIFO (First In First Out). Njihovim korišćenjem možemo odrediti da izlaz sa jednog procesa ide na ulaz drugog. U pitanju su fajlovi koji se često koriste za razmenu podataka između različitih programa ili između različitih procesa u okviru jednog programa.
• Soketi (s) su još jedan od „egzotičnih” tipova fajlova koje srećemo u Linuksu. Obavljaju sličnu funkciju kao kanali, samo što se ovde radi o dvostranoj komunikaciji. Iako se radi o fajlovima koji su vidljivi unutar fajl-sistema, njima jedino mogu pristupati procesi sa kojima su povezani.
• Linkovi (l) imaju funkciju da ukazuju na poziciju nekog fajla u fajl-sistemu, slično kao što to rade prečice (Shortcuts) u Windowsu. Linuks razlikuje dve vrste linkova. Prvi se nazivaju simboličkim linkovima i sadrže lokaciju fajla na koji se pozivaju. Drugi tip linkova su hard linkovi i oni u okviru indeksnog deskriptora dodatno nose zapis o fajlu na koji ukazuju. Izmene urađene bilo na originalu ili na hard linku biće prikazane bez obzira na to koji od njih pozivamo. Isto tako, ukoliko obrišemo originalni fajl, hard link će preuzeti njegovu funkciju.
• Blok uređaji (b) i karakter uređaji (c) su ukratko objašnjeni u prethodnom delu testa.

Atributi fajl-sistema
Kao što Windows ima sopstvene atribute fajlova kojima se pristupa komandom attrib (vuče koren iz DOS-a), tako i Linux ima svoje, a njima se pristupa preko komande chattr (change attributes). Uz njenu pomoć možemo na jednostavan način promeniti stanje željenog atributa. Uz chattr treba spomenuti i komandu lsattr (list attributes), čija je funkcija da prikaže trenutno stanje atributa u nekom direktorijumu. Ilustracije radi, izvršili smo ovu komandu nad direktorijumom /bin i dobili smo podatke prikazane na ilustraciji (gore desno).