chmod — изменение прав доступа к файлам и каталогам. Введение.

Часть 1

Стандартно файл или каталог имеет владельца пользователя и владельца группу. Увидеть их можно командой ls с ключом -l

Как мы видим, владельцы файла:
file01 — пользователь teacher и группа teacher
file02 — пользователь teacher и группа users
file03 — пользователь teacher и группа wheel

Отдельные права на файлы и каталоги могут быть определены для пользователя, группы и всех остальных. В свою очередь эти права могут быть на:
чтение — r (read)
запись — w (write)
исполнение — x (eXecute)

Смотрим на пример и видим, что права на любой из файлов:
пользователь (user): «rw-«, т.е. read,write — читать и писать
группа (group): «r—«, т.е. read — читать
остальные (others): «r—«, read — читать

Чтобы изменить права, используется команда chmod (change mode). Давайте разрешим группе запись в файл file01, а у остальных заберём права на чтение: chmod g+w,o-r file01
И что всё это значит?
группе (g (group)) добавили (+) права на запись (w(write)): g+w
остальным (o(others)) убрали (-) права на чтение (r(read): o-r

Систематизируем:
добавляем права знаком полюс: «+»
убираем права знаком минус: «-«

все (all) обозначаются буквой «a»
пользователь обозначается буквой «u:
группа (group) буква «g»
остальные (others) буква «o»

Примеры:
Разрешить всем чтение файла: chmod a+r file01
Запретить всем запись в файл: chmod a-w file01
Разрешить пользователю и группе запись в файл: chmod u+w,g+w file01
Разрешить всем чтение и исполнение файла, а пользователю ещё и запись в него: chmod a+r+w,u+w file01

Часть 2

Права на исполнение.

Если файлу дать права на исполнение, то его можно будет запустить как программу. Любой файл, даже картинку, даже текстовый документ 🙂 Впрочем, всё равно получится ерунда, если запустить картинку, как программу — исполнение прервётся с ошибкой.

Как и с правами на чтение и запись, права на исполнение можно задавать отдельно для владельца, для группы, для остальных или для всех.

Создадим пустой файл под названием file и зададим на него права на исполнение для владельца и группы:

touch file
chmod u+x,g+x file

Уберём права на исполнение для группы:

chmod g-x file

Попробуйте убрать права на исполнение у всех. Попробуйте дать права на исполнение всем.

Директории

С правами на исполнение файлов всё понятно: если дать права на исполнение, файл можно запустить, как программу. Но что делать с директориями? Их же нельзя запускать…
А происходит вот что: для директорий права на исполнение трактуется, как право на переход в папку.

Создайте папку с подпапкой, уберите права на исполнение и проверьте:

mkdir -p folder/subfolder
chmod a-x folder
ls folder/
cd folder/

Часть 3

Права в числовом виде

Часто, во избежании громоздкой конструкции, права можно задавать в числовом виде.

Например:

chmod 644 file.txt
chmod 644 file.txt