Часть 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.txtchmod 644 file.txt