Debian

The ULTIMATE OS

Get Adobe Flash player

Потребителски рейтинг: 5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

Права върху файловете и работа с тях

Всяка една операционна система има определена структура на директориите и всяка директория има определена функция. В Линукс има два типа директории: системни и потребителски. Системни са тези директории, които се създават при инсталирането на операционната система. Такива например са директориите /dev, /bin, /lib, /etc и т.н. Потребителски са директориите, които се създават от потребителите на операционната система с цел да пазят собствена информация в тях. Такива са директориите /home/ и всички поддиректории вътре в нея.

Относно основните директории и техните цели може да прочетете в статията тук

Но да започнем обясненията с правата върху директориите и файловете.

В повечето директории обикновения потребител има права за четене, но не и за запис. Някои директории (като директорията /root и някои от директориите с логове) обикновения потребител няма никакви права. Обикновения потребител има пълни права единствено над файловете в собствената му директория (/home/username) и над собствените права в /tmp директорията. Тази организация затруднява значително инсталирането на зловредни програми (например вируси), тъй като те ще имат достъп единствено до файловете на потребителя, който ги изпълнява.

Досега многократно се спомена понятието права на потребителя и сега ще изясним какво е това право на потребителя на извърши определено действие, видовете права и това как се задават. Във всяка Линукс система има няколко вида потребители организирани в групи. Всеки файл може да задава три вида права за потребителя, три за групата и три за всички останали. Тези права са:

  1. право за четене (r)
  2. право за запис (w)
  3. право за изпълнение (х)

Ето казаното в таблична форма:

Собственик

Група

Всички останали

r

w

x

r

w

x

r

w

x

Правата на всеки файл може да се видят с командата ls -l. Ето пример на нейният изход:

#ls -l

drwx------ 40 vasil users 1024 Sep 8 14:51 .

drwxr-xr-x 7 root root 1024 Aug 18 19:23 ..

-rw-r--r-- 1 vasil users 30 Sep 8 18:17 sample.txt

drwxr-xr-x 2 vasil users 1024 Sep 8 18:19 sample

Тук файловете, които започват с d всъщност са директории, а sample.txt е единствения истински файл. В този пример файла sample.txt има следните права:

  1. собственика на файла е vasil и той може както да чете, така и да записва в него. Тук трябва да се отбележи, че групата към която принадлежи един файл може да не съвпада с групата на собственика на файла.
  2. групата на файла е users и всички в тази група могат да четат от файла.
  3. всички останали могат да четат файла.

Ако разгледаме директориите, ще видим че те имат флаг за изпълнение (execution). Тук обаче този флаг има друго значение, а именно – право за търсене (search). Ако един потребител няма това право, то той не може да отваря директорията, но все още има достъп до файловете в нея. За да може да прочете един файл в този случай обаче, е необходимо потребителя да знае името на файла и пълният път до него.

Освен тези права файла може да има още един флаг – SUID и GUID. Файл с такива флагове се изпълнява с привилегиите на потребителя или с привилегиите на групата, която изпълнява файла. Тези флагове се считат за много опасни и тяхното използване трябва да се ограничава.

Командите, които променят собственика и/или групата на файла и неговите права са съответно chown и chmod. Ако трябва да се променят правата на sample.txt, така че да бъде изпълним от всички, то трябва да се напише следното:

#chmod +x ./sample.txt

Синтаксиса на командата е много прост: + включва, а изключва даден флаг. Чрез r, w и x се уточнява кой флаг трябва да се промени.

По този начин се променя даденото право глобално. А ако трябва да се промени само за собственика или групата например? В този случай пред знака + или – се постява опция чии права трябва да се променят, като опциите са следните: 

u – собственика (user) 

g – групата (group)  

а – всички (all), като това е опцията по подразбиране.

Ето и пример за премахване на правото за изпълнение от файла за всички останали потребители:

#chmod o-x ./sample.txt

Командата позволява свободно комбиниране на опциите, например:

#chmod u+rwx ./sample.txt

Нека отново разгледаме правата на един файл, като където флага е включен ще поставим еденица, а там където е изключен – 0.

#ls -l ./sample.txt

-rwxr-xr-- 1 vasil users 30 Sep 8 18:45 sample.txt

Собственик

Група

Всички останали

r

w

x

r

w

x

r

w

X

1

1

1

1

0

1

1

0

0

Сега нека разгледаме тази последователност от нули и еденици като три двоични числа – 111, 101 и 100:

Собственик

Група

Всички останали

r

w

x

r

w

x

r

w

X

1

1

1

1

0

1

1

0

0

111

101

100

Двоичната аритметика показва, че това са числата 7, 5 и 4. Причината за всичко това е, че оригиналния синтаксис на командата chmod e (от UNIX):

#chmod 744 ./sample.txt

Това ще установи на файла правата в таблицата в долната таблица:

Собственик

Група

Всички останали

r

w

x

r

w

x

r

w

X

1

1

1

1

0

0

1

0

0

111

100

100

7

4

4

Този синтаксис е по-сложен, но и много по-гъвкъв от типичния Линукс стил. Чрез този метод е възможна промяната на всички права едновременно, нещо което не може да се постигне по първият начин. Начина на образуване на правата е следния: 

4 – четене

 2 – запис 

1 – изпълнение/търсене

След това е достатъчно да се съберат числата отговарящи за съответните права. Например право за четене и запис се дава като се съберат 4+2=6.

Освен промяна на правата, понякога се налага да се променят и собственика или групата на файла. Това става с командата chown.

#chown petar ./sample.txt
#ls -l ./sample.txt

-rwxr-xr-- 1 gosho users 30 Sep 8 18:55 sample.txt

След тази промяна потребителя vasil вече не притежава файла и съответно не може да си върне неговата собственост. Това може да направи или petar или root.

Промяната на групата става чрез командата chgrp:

#chgrp root ./sample.txt
#ls -l ./sample.txt

-rwxr-xr-- 1 gosho root 30 Sep 8 19:02 sample.txt

Освен с chgrp и промяната на групата може да стане и чрез chown (което препоръчвам). В този случай собственика и групата се променят едновременно:

#chown vasil:users ./sample.txt
#ls -l ./sample.txt 

-rwxr-xr-- 1 dino users 30 Sep 8 19:02 sample.txt

ИЗТОЧНИК: Не съм писал статията изцяло аз. Даже трябва да спомена, че е сглабяна от няколко места в интернет, като идеята ми беше да бъде колкото се възможно по-пълна и ясна а и в същото време да си спестя малко "къртовска" работа при набиратне на текста и стилизирането му.

Търсене

Точно време

Кой е на линия

В момента има 92  гости и няма потребители и в сайта