Поддержка Консалтинг Обучение Jamf Pro Блог

Билль о правах

Андрей Раньков 29.05.2009

Уэн Вильямс и Брюс Ли в сериале «Зеленый Шмель»

Почему при работе на сервере в некоторых файлах, созданных для общего пользования, невозможно сохранять изменения?

Причина в правах. Каждому файлу или папке в системе назначены права. Они определяют, что могут делать с этим файлом разные категории пользователей — могут ли они его читать, изменять, исполнять. Поскольку права должны быть назначены для каждого объекта файловой системы, когда вы создаете новую папку или файл, им сразу же присваиваются определенные права. Владелец, то есть создающий этот объект пользователь имеет полные права, группа владельца и все остальные пользователи — право на чтение.

Есть два способа указывать права — традиционные права UNIX (подробнее) и более современная, гибкая и сложная система — ACL, списки контроля доступа (подробнее). Традиционные UNIX-права есть у каждого объекта, ACL могут быть, а могут и не быть. Именно UNIX-права обязательно присваиваются каждому файлу и каждой папке при создании.

Эти права записываются двумя способами — буквами (три группы по три буквы) или цифрами (три цифры), каждая группа или цифра соответствует правам пользователя, его группы и всех остальных. Числовое выражение прав — это сумма прав на чтение (4), запись (2) и исполнение (1) каждой из этих категорий (пользователь, группа, остальные). Понятно, что меняться, они могут от 0 (0+0+0, никаких прав) до 7 (1+2+4 права на всё). То есть права на чтение для всех, на чтение и запись для группы и все права для пользователя выглядят так: 764.

Новый файл создается с такими правами — 666 (4+2 — чтение и запись), а новая папка — с правами 777 (право на исполнение — это возможность “заходить” в директорию, просматривать ее содержимое). Затем из этих прав вычитается umask — это настройка операционной системы, которая определяет права на новые файлы и папки по умолчанию. Если вы не изменяли значение umask, оно равно 022. Значение umask определяет, какие права убрать с нового файла, то есть, когда вы создадите новый файл, из его прав — 666 — будет вычтена umask 022, и файл будет создан с правами  644. Вы сможете делать с ним что угодно, а ваши коллеги и близкие смогут его только читать. Подробнее об этом на сайте Apple.

Это может доставить пользователям некоторые неудобства. Например, созданный пользователем на сервере файл может быть доступен на запись только тому, кто его создал, а остальные могут его только читать, и поэтому вынуждены пересохранять его под другим именем. Если бы значение umask было равно 002, ваши коллеги получили бы право на изменение и всё работало бы.

Чтобы изменить значение umask, можно создать файл /etc/launchd-user.conf с единственной строчкой “umask 002” (ссылка выше), или использовать небольшую программку, которая сделает это за вас.