[Video] v20.7. Права доступа в CLI Ubuntu. File Permissions.

Это седьмое видео о написании скриптов в коммандной оболочке – bash scripting.
В этом видео я рассказываю о Правах Доступа, для чего они нужны, как узнать какие Права Доступа установлены у какого-либо файла.

Подробнее и со всеми примерами смотрите у меня в видео.

Существует три категории владельцев у любого файла или директории. У каждой из категорий есть свой или может быть свой набор прав доступа к файлу.

* Первая группа – owner – владелец файла. Обычно это Вы или тот кто создал файл/директорию.
* Вторая группа – group – группа пользователей которая владеет файлом. Используется для предоставления доступа к файлу/директории для какой-то группы.
* Третья группа – other – все остальные пользователи в системе. Обычно данной категории присваиваются права только на чтение или вообще запретить любой доступ.

Что значат данные Права Доступа?
* Право на Чтение (Read) – если у Вас есть данное право к какому-либо файлу, то Вы сможете просмотреть содержимое данного файла, но не сможете ничего изменить.
* Право на Запись (Write) – можно добавлять, удалять какой-либо контент в файл, можем сохранять изменения. Практически всегда если у Вас есть право на Запись, то у Вас есть право на Чтение.

Если есть права на Запись, но нет прав на Чтение, то можно увидеть следующее сообщение при попытке редактирования файла:
[ Error reading text.txt: Permission denied ]
В файл можно будет добавить данные, например с помощью утилиты cat, но большинство редакторов либо не дадут работать с файлом, либо просто перезапишут содержимое новыми данными.

* Право на Исполнение (Execute) – если файл является скриптом, программой, то при наличии данного права этом скрипт или программу можно будет запусить.

Права Доступа – Чтение/Запись/Исполение имеют числовое или бинарное представление – тут кому как удобнее.
В коммандной строке можно узанить какие Права Доступа есть у какого-либо файла.
Числовые значение Прав Доступа можно представить в виде чисел:
* Право на Чтение имеет числовое значение = 4
* Право на Запись = 2
* Право на Исполнение =1

Эти числа связаны с бинарным представлением Прав доступа (4=100, 2=010, 1=001, а полный набор прав выглядит как = 111 и равен 7 в десятичной системе). Подробно в это вдаваться я не буду – материалов на тему бинарного представления Прав Доступа в Интернете много. Можете почитать самостоятельно.

Таким обрзом если файл имеет для какой-либо категории пользователей какой-то набор прав доступа, то его можно представить в числовом виде.
Например, в моём случае у тестового текстового файла text.txt Права Доступа следующие:
Владелец имеет право на Чтение, Запись, но нет прав на Исполнение (это просто текстовый файл) итого получается = 4+2+0 = 6
Группа к которой принадлежит файл имеет аналогичный набор Прав Доступа. Они равны 6.
Все остальные пользователи имеют Права только на Чтение. Получается 4+0+0 = 4.
В общем виде права доступа можно представить как 664.

Как выглядят права доступа в коммандной строке? Воспользуемся ранее рассмотренной командой ls с ключём l.
:~/MyTest$ ls -l text.txt
-rw-rw-r-- 1 alexander alexander 48 Nov 12 11:00 text.txt

Как видно в выводе данной команды – есть блок с буквами rw.

У файла text1.txt может быть другой набор Прав Доступа:
~/MyTest$ ls -l text1.txt
-rwxrwxrwx 1 alexander alexander 48 Nov 12 11:00 text1.txt

Здесь есть три блока rwx (read, write and execute). Сначала есть один прочерк, здесь может быть дополнительный указатель – например, если объект является директорией, то на этом месте будет символ d, если просто прочерк, то обычный файл.
Итак не считая первый прочерк – первый блок rwx это Права Владельца, второй Группы, третий Всех остальных.
Если на месте r,w или x стоит прочерк, то такого права у данной категории пользователя нет.

Небольшое замечание по поводу директорий – чтобы пользователю была дана возможность посмотреть содержимое директории, то у него должно быть право на Чтение и Исполнение – Чтение, чтобы просмотреть содержимое-список файлов в директории, Исполнение, чтобы была возможность перейти в эту директорию

На сегодня всё.
Удачи!

Sources:
https://www.youtube.com/watch?v=IIhh1e1fURU&index=33&list=PL7B7FA4E693D8E790
http://www.opennet.ru/docs/RUS/bash_scripting_guide/bash_scripting_guide-prog.html.gz