Управление на правата за достъп
Начините за представяне на права за достъп до файловете са два: символично (за да се представят правата за достъп, се използват символите “r”- за четене, “w”- за писане и “х” за изпълнение) или с осмична числова стойност.
За да покажем съдържанието на директория, в терминала въвеждаме командата
ls -l
Заедно с останалата информация, която получаваме за файла, получаваме и информация за правата за достъп.
Стартирайте терминала (Основни команди в Убунту).
Искаме да разгледаме съдържанието на директорията Music. Тогава:
- влизаме в съответната директория с помощта на командата cd
- разглеждаме съдържанието на директорията като прилагаме командата ls -l (за да се покажат скритите обекти, можем да добавим и опция -a).

Символното представяне на правата за достъп до файла е:
-rw-rw-r--или по-подробно представяне:
Флаг | Потребител | Група | Останалите |
- | rw- | rw- | r-- |
Първата тройка символи (след символа тире) посочва правата на собственика на файла, втората- правата на групата върху файла и третата- правата на всички останали. В случая, собственика има права за четене и промяна на файла, всеки член на групата- права за четене и промяна на файла, всички останали могат само да четат файла. Първото тире (нарича се още флаг) означава, че това е обикновен файл.
Възможните стойности за флага са:
тире (-) - липса на флаг;
l – символна връзка;
d- директория;
b- блоково устройство;
c- символно устройство;
p- канал, устройство fifo;
s- unix сокет (unix домейн сокет).
Всеки обект в Линукс има идентификатор и права за достъп. Идентификационният номер на потребителя се означава с UID, на групата с GID, а за отделен файл (или директория) с inod.По-подробно за флаговете- друг път.
За да видим и inode за файла или директорията, ползваме командата ls -li.

1073727- това е идентификационният номер на директорията (inode);
drwxr-xr-x – флаг за директория (d) и правата за достъп до файла;
4 – броят на твърдите връзки;
poli- име на собственика на файла;
poli- име на групата;
4096- размер на файла;
Aug 20 22:05- дата и час на последната промяна;
Desktop- име на директорията.
Командата chmod
Синтаксисът на командата chmod е следния:
chmod [за коя група][какво да прави с правата][какви права] [върху кой обект]
или
chmod [права] [върху кой обект]
където
[за коя група]- може да бъде “u” (от user- потребител, собственик на файла) или “g” (от group- групата, на която принадлежи файла), или “o” (от other- останалите потребители), или “a” (от all-всички, изброени по-горе).
[какво да прави с правата]- може да бъде “+”, за да се добавят права; може да бъде “–”, за да се отнемат права; може да бъде “=”, за да се назначат съответните права.
[какви права]- може да бъде “r”- за четене, “w”- за запис, “x”- за изпълнение.
[върху кой обект]- име на файла или път до него.
[права]- числово обозначение на правата за достъп (755, 644 и др.).
Да се върнем към файла date.txt. Съхранихме го в root директорията за документи на сървъра. Необходимо е да излезем на главната директория на файловата система и след това да влезем в желаната от нас root директория на документите на сървъра:


-rw-rw-r--
Собственика- чете и пише;
групата- чете и пише;
останалите- само четат.
Аз искам правата на собственика да се запазят, а да огранича правата на членовете на групата- да не могат да променят файла, а само да го четат.
Прилагаме написаното по-горе за командата chmod, като въвеждаме последователно в терминала командите:
chmod g=r date.txt
ls -l date.txt


Използват се числата от 0 до 7. Всяко число представя различни права. Крайният резултат се представя с прибавяне или изваждане на числата. Обикновено:
числото 4 дава права за четене (r);
числото 2 дава права за писане (w);
числото 1 дава права за изпълнение (x);
числото 0 означава няма права.
Всяка комбинация (възможните комбинации са 23 = 8) от тези три числа ще е уникална.

собственикът на файла (чете и пише) – поглеждаме колона 5 от таблицата и виждаме, че на тези права, в колона 4 съответства числото 6.
групата (чете)- поглеждаме колона 5 от таблицата и виждаме, че на тези права, в колона 4 съответства числото 4.
всички останали (четат)- поглеждаме колона 5 от таблицата и виждаме, че на тези права, в колона 4 съответства числото 4.
Следователно, в терминала трябва да въведем числото 644:

Ако не ви се ползва таблицата по-горе за пресмятане на правата за достъп до файлове или директории, можете да ползвате онлайн калкулатор, който ще направи необходимите пресмятания за вас: http://permissions-calculator.org/
За пълноценно разглеждане на директория, са необходими права за четене на директорията и достъп до файловете, т.е. минималните разумни права за достъп до директория са 5 (r-x). Правото за достъп 4 (r--) ви дава възможност на разглеждате само името на файла, без неговите атрибути, т.е. няма да можете да видите нито размера на файла, нито неговия тип.
На практика за директориите се използват само три режима: 7 (rwx), 5 (r-x) и 0 (---).
Много любопитно право за достъп до директория е 3 (-wx). То ви позволява да правите всичко в директорията, но не ви позволява да прочетете имената на обектите в директорията, т.е. ако не са ви известни имената на обектите в тази директория, нищо не можете да направите с тях (дори да искате да ги покажете с маска *, маската няма да помогне- имената са недостъпни).
В директория с права за достъп 3 (-wx) можете да създавате нови директории и файлове, да премахвате директории и файлове (ако знаете името им), да четете, променяте, стартирате файл (ако имате достатъчно права за това и отново, ако знаете неговото име). Можете да променяте правата за достъп до файлове и директории (ако знаете имената им).
Не си и помисляйте обаче, че директория с такива права за достъп може да се използва за съхранение на секретни документи. Имената на файловете и директориите в нея не можете да получите, но ако се опитате да създадете обект с име, което вече съществува- опитът ще е несполучлив.
В PHP има вградени функции за промяна на правата за достъп до файл и собствеността на файла. Това са функциите chown () и chmod ().
|
Няма коментари:
Публикуване на коментар