Линукс – права приступа фајл систему

Права приступа, GNU/Linux ОS (у даљем тексту Линукс) – Приступ ресурсима под Линуксом је строго контролисан, а овај текст је намењен корисницима који желе да се детаљније упознају са начином на који Линукс контролише приступ ресурсима фајл система.

Фајл систем представља срж сваког оperaтивног система, а контрола приступа објектима фајл система односно директоријумима и фајловима је од кључног значаја.

Контрола приступа заправо подразумева скуп корисника којима је омогућен приступ фајловима и директоријумима, као и ниво приступа, односно скуп предефинисаних акција које сваки од тих корисника може да изврши над њима.

Контрола приступа на нивоу фајл система заснива се на власништву над објектима (што ћемо касније детаљније објаснити), а основно је да се права приступа иницијално додељују сваком фајлу и директоријуму приликом креирања (касније их је могуће изменити) и на основу тих права се одређује ниво приступа датим објектима.

Права приступа над директоријумима и фајловима се излиставају уз помоћ наредбе „ls“ (list).

У овом примеру коришћена је наредба „ls“ са аргументом“ –l“ (long) чиме се добија нешто детаљнији приказ. За сваки објекат дате су следеће информације:

  • Тип објекта („d“ за директоријум,“–“ за фајл, „l“ за симболички линк итд.)
  • Права приступа за три власничке категорије (нпр. rwxr-xr-x)
  • Број хард линкова на фајл
  • Назив власника објекта и назив групе којој објекат припада
  • Величина објекта, датум и време
  • Име објекта („dir1“, „dir2“, „file1“, „file2“)

Власништво над објектима

Први карактер од првих десет излаза наредбе „ls“ даје тип објекта, па тако за објекте „dir1“ и „dir2“ може да се закључи да су то директоријуми, а за „file1“ и „file2“ да су фајлови. Преосталих девет карактера представља права приступа за три власничке категорије, а то су: власник (owner), група (group) и остали (others). По три карактера су предвиђена за дефинисање права власничких категорија и то редом: власника, групе и свих осталих.

Власник – корисник који је креирао објекат, под условом да superuser (root) није мењао власништво над објектом.

Група – представља групу којој је додељено власништво над објектом и она је најчешће примарна група власника објекта. Сваки корисник на Линуксу мора да припада само једној примарној групи, а поред ње може да припада и неограниченом броју других група. Објекти фајл система за разлику од корисника система могу да припадају само једној групи, као и да поседују само једног власника.

Остали – сви остали корисници који нису власници објекта, а не припадају ни групи којој објекат припада.

За сваку власничку категорију постоје следећа права:

  • право читања (р – read)
  • право писања (w – write)
  • право извршења (x – execute)

Позиција права је стриктно одређена и увек је на првој позицији право читања, на другој право писања и на трећој право извршења. Уколико се на било којој позицији уместо неког од наведених права налази цртица (-), дато право је укинуто. Оно што је јако битно је да се права директоријума и фајлова битно разликују.

На основу горње слике, узимајући у обзир први карактер (-) може се закључити да је „file1“ фајл. На основу следећа три карактера одређена су власничка права (rw), што значи да власник фајла, у овом случају корисник it-modul, има право читања (r), модификовања (w), али нема право извшавања (x) фајла. У принципу извршно право се користи само над извршним фајловима, као што су наредбе, скрипте или сервиси, а над осталим типовима фајлова (нпр. текст фајлови) оно није потребно.

Следећа три карактера показују да група поседује само право читања (r), што значи да корисници који припадају групи којој је „file1“ додељен, а то је у овом случају група it-modul, имају само право читања (r) фајла, али немају право модификације (w), нити извршавања (x). Следећа три карактера представљају права свих осталих који нису власници фајла, односно не припадају групи којој је додељено власништво над фајлом.

У овом примеру сви остали корисници имају право читања (r), а немају права модификације (w) и извршавања (x). За „file2“ се види да има иста права приступа као и „file1“, а оно што их разликује је што је власник „file2“ корисник mika, а група којој је додељено власништво над фајлом је mika. Већ смо заључили да су „dir1“ и „dir2“ директоријуми пошто је први карактер „d“. Власник директоријума „dir1“ је корисник it-modul, а група којој је додељено власништво над директоријумом је it-modul. Власник директоријума „dir2“ је корисник pera, а група којој је додељено власништво над директоријумом „dir2“ је pera.

Права везана за директоријуме „dir1“ и „dir2“ су идентична. Право уписа дато је само власнику објекта, а сви остали корисници имају право коришћења директоријума, што значи право да се позиционирају на директоријум (cd /test), право читања (излиставања) садржаја и модификовања или извршавања фајлова, у зависности од постојећих права над тим фајловима.

Разлике права приступа фајлова и директоријума

За фајлове:

  • Право читања (r) конкретно значи да корисник може да прочита, штампа или копира фајл.
  • Право писања (w) значи да корисник може да модификује садржај фајла. Многи погрешно поистовећују ово право са правом брисања фајла. Корисник може да обрише фајл само ако има право писања над директоријумом у коме се фајл налази.
  • Право извршења (x) значи да корисник може да изврши фајл уколико је он извршног типа.

За директоријуме:

  • Право читања (r) значи да корисник може да прочита садржај директоријума (наредба „ls“), али ово право му није довољно за извршење наредбе „ls -l“ која даје опширнији списак. За то је потребно и право (x) над директоријумом.
  • Право писања (w) значи да корисник може да модификује садржај директоријума, односно да може да додаје нове и брише постојеће фајлове, као и да креира и брише поддиректоријуме. Међутим, ово право не омогућава брисање самог директоријума, за тако нешто би било потребно право писања над родитељским директоријумом.
  • Право извршавања (x) омогућава кориснику да се позиционира на дати директоријум (команда „cd“), као и приказивање продуженог списка („ls –l“) и коришћење претраге командом „find“. Практично говорећи да би корисник могао да нормално користи неки директоријум мора да има додељена и права читања и права извршавања (r-x).

Логика одређивања права приступа

Редослед за одређивање права приступа, када корисник жели да приђе одређеном фајлу, је следећи. Прва провера је да ли је он власник. Ако јесте, корисник прилази објекту са власничким правом, у супротном проверава се да ли корисник припада групи којој је додељено власништво над фајлом. Уколико јој припада, корисник прилази објекту са правима дефинисаним за ту групу. У супротном се примењују права одређена за све остале.

Специјални атрибути фајлова и директоријума

Специјални атрибути су setuid (SUID), setgid (SGID) и sticky bit (t). Они омогућавају проширење досад наведених могућности Линукс дозвола над објектима фајл система.

Често се у пракси јавља потреба да се неком кориснику омогући покретање неке апликацију са правима другог корисника. То се постиже употребом setuid-а и setgid-а. На пример, кориснику се омогућава да креира резервне копије података без откривања superuser лозинке или коришћење DVD player-a без superuser привилегија. Потребно је да се на наредбе за бекап система, односно mount-овање DVD уређаја постави setuid, setgid или оба.

Често се на дељеним директоријумима права дефинишу тако да корисници могу да креирају нове и бришу постојеће фајлове, без обзира на то коме ти фајлови припадају. Помоћу sticky bit-а поставља се ограничење да, каква год права над директоријумом поседује, кориснику није дозвољено брисање фајлова чији он није власник.


Специјални атрибути фајлова на ext2/ext3/ext4 фајл систему:

А (Don’t update access time) – забрањује измену времена последњег приступа

а (Append only) – дозвољава додавање нових података у фајл, без измене постојећих

c (Compressed) – фајл се компресован смешта на диск

d (No dump)- фајл се не архивира

i (Immutable) – фајл не може да се модификује или брише

s (secure deletion) – безбедно брисање

S (Sync) – приликом измене садржаја фајла промена се моментално уписује на диск, без кеширања

t (Tail-merge) – неискоришћени фрагменти последњег блока фајла не могу да се доделе другом фајлу

u (Undelete) – приликом брисања фајла чува се његов садржај, па је могуће повратити обрисани фајл


Линукс ACL-ови (Access Control Lists)

Објектима фајл система додељују се три сета дозвола за три власничке групе (власник, група и остали). Поред тога за неке специфичније потребе може да се користити setuid, setgid и sticky bit. У већини случајева то је сасвим довољно. Међутим, за комплексне ситуације, да би се заобишла ограниченост традиционалног начина дефинисања права приступа, могу се употребити ACL-ови.

ACL-ови омогућавају дефинисање права приступа на нивоу индивидуалних корисника и/или група. Укључују се у самом кернелу и подржани су од ReiserFS, Ext2, Ext3, Ext4, JFS и XFS фајл система. Виндовс оperaтивни систем омогућава у старту коришћење ACL-ова на нивоу корисника и група, па је уобичајена улога Линукс ACL-ова када рецимо Виндовс мрежни сервер замењујемо Линукс системом.

Текст је преузет са угашеног блога ИТ модул и оригинални аутор овог текста је Владимир Благојевић. Компјутераш ИТ блог објављује текстове са тог блога како ризница знања са те локације не би отишла у заборав.