Hatred's Log Place

DON'T PANIC!

Oct 1, 2008 - 2 minute read - Comments - linux

umask: дефолтные права к новосозданным файлам

На заметку.

Можно заметить что когда вы создаёте новый файл, к примеру, из тела програмы, при помощи fopen/open (без задания прав доступа), или командой touch из командной оболочки, этот файл приобретает какие-то предустановленные права. Значение этих прав доступа определяются значение umask.

Посмотреть текущее значение umask можно соответствующей командой:

$ umask
0026

При таком значении, права новых файлов будут 0640 - чтение/запись для владельца, чтение для группы и запрет доступа для всех остальных. Специальные биты сброшены (первый 0)

Вычисляются значения umask следующим образом:

0666 - <нужная маска> = <значение umask>

В нашем примере:

0666 - 0640 = 0026

Обычно в Linux-системах, которые я видел в последнее время, значение umask - 0022 (путем несложных вычислений получаем права доступа - 0644). Мне кажется, что не во всех случаях целесообразно разрешать ВСЕМ доступ на чтение к файлу, тем более, что иногда на сервере дается chmod +x на домашний каталог пользователя, дабы web-сервер смог получить доступ к ~/public_html (как там подробнее настраивать, это уже личное дело каждого).

Зачастую значение umask задается в стартовых скриптах, либо, в скриптах входа в оболочку. Так, в случае Archlinux значение umask задается в файле /etc/profile. Локально значение umask можно изменить в файле ~/.profile или, к примеру, ~/.bash_profile

Ну и в заключение, не сколько от себя, так, вроде, всегда было в RedHat, в качестве группы пользователя рекоменду создавать индивидуальную группу, соответствующую имени пользователя, а уже когда надо - дораздавать права.