Блог
Изменение прав доступа по умочанию в Linux
Однажды, на одной из систем мне потребовалось изменить права по умолчанию на все создаваемые файлы и директории. Звучит просто, ведь chmod, это одна из первых команд, которые узнает начинающий линуксоид, но как изменить значение chmod по умолчанию? Вопрос и правда хороший!
Для начала немного теории для начинающих. Права доступа в linux задаются тремя цифрами chmod (на самом деле четырьмя, но сейчас нас интересуют только три):
- первая отвечает за права пользователя
- вторая за права группы
- третья за права всех остальных
Значения самих цифр такие:
- 1 - выполнение
- 2 - запись
- 3 - запись + выполнение
- 4 - чтение
- 5 - чтение + выполнение
- 6 - чтение + запись
- 7 - чтение + выполнение + запись
Обычно, права по умолчанию в NIX системах выставляются в значени 755:
- пользователь может все (читать + выполнять + записывать)
- группа может читать + выполнять
- другие тоже могут читать + выполнять
Отлично, когда с теорией покончено, можно переходить к основному вопросу, где хранится значение прав chmod по умолчанию? Дефолтное значение chmod, является частью настроек профиля пользователя, которые хранятся в файле ~/.profile. Однако, некоторые вещи наследуются из файла /etc/profile, в том числе и chmod по умолчанию.
Переходим в файл /etc/profile и находим строку с командой umask 022, именно она задает права chmod по умолчанию. Но почему именно 022? Дело в том, что дефолтные права задаются маской, а не прямым значением. Значение маски вычитается из базового значения 777.
Считаем 777 - 022 = 755 | |||
|
Пользователь | Группа | Все остальные |
Базовое значение прав | 7 | 7 | 7 |
Маска прав (umask) | 0 | 2 | 2 |
Полученные права (chmod) | 7 | 5 | 5 |
Мне требовалось сменить права по умолчанию на 770, что бы к файлам имели доступ только владелец и группа, по этому я поменял umask на 007.
Считаем 777 - 007 - 770 | |||
|
Пользователь | Группа | Все остальные |
Базовое значение прав | 7 | 7 | 7 |
Маска прав (umask) | 0 | 0 | 7 |
Полученные права (chmod) | 7 | 7 | 0 |