HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>При создании файла или каталога ему присваивается набор прав доступа по умолчанию. Для обычного файла режим доступа составляет rw- rw- rw- (в двоичном представлении: 110 110 110, в восьмеричном представлении: 6 6 6), для каталога - rwx rwx rwx (в двоичном представлении: 111 111 111, в восьмеричном представлении: 7 7 7).</p>
1 <p>При создании файла или каталога ему присваивается набор прав доступа по умолчанию. Для обычного файла режим доступа составляет rw- rw- rw- (в двоичном представлении: 110 110 110, в восьмеричном представлении: 6 6 6), для каталога - rwx rwx rwx (в двоичном представлении: 111 111 111, в восьмеричном представлении: 7 7 7).</p>
2 <p>Но если мы попробуем создать новый файл, то увидим, что режим доступа по умолчанию к нему немного отличается:</p>
2 <p>Но если мы попробуем создать новый файл, то увидим, что режим доступа по умолчанию к нему немного отличается:</p>
3 <p>Дело в том, что в процесс определения режима доступа ко вновь создаваемым файлам (каталогам) вмешивается так называемая маска umask (<strong>u</strong>ser file creation mode<strong>mask</strong>), значение которой равно 0002. Это значение по умолчанию в Ubuntu (для других дистрибутивов оно может отличаться: например, в Debian равно 0022) и, как мы это увидим в дальнейшем, его можно изменять.</p>
3 <p>Дело в том, что в процесс определения режима доступа ко вновь создаваемым файлам (каталогам) вмешивается так называемая маска umask (<strong>u</strong>ser file creation mode<strong>mask</strong>), значение которой равно 0002. Это значение по умолчанию в Ubuntu (для других дистрибутивов оно может отличаться: например, в Debian равно 0022) и, как мы это увидим в дальнейшем, его можно изменять.</p>
4 <p>Как же формируется итоговый набор прав доступа к новым файлам с учётом действия umask? Давайте рассмотрим это на примере создания нового файла. При этом, для большей наглядности и понимания, режим прав доступа к файлу будем рассматривать в двоичном представлении, а в значении маски 0002 нас будут интересовать только последние три цифры 002 заданные в восьмеричном представлении (лидирующая цифра (0 в данном примере) нас сейчас не интересует).</p>
4 <p>Как же формируется итоговый набор прав доступа к новым файлам с учётом действия umask? Давайте рассмотрим это на примере создания нового файла. При этом, для большей наглядности и понимания, режим прав доступа к файлу будем рассматривать в двоичном представлении, а в значении маски 0002 нас будут интересовать только последние три цифры 002 заданные в восьмеричном представлении (лидирующая цифра (0 в данном примере) нас сейчас не интересует).</p>
5 <p>Маску можно посмотреть с помощью соответствующей команды umask:</p>
5 <p>Маску можно посмотреть с помощью соответствующей команды umask:</p>
6 <p>Итак, полный режим доступа к файлу (без учёта маски):</p>
6 <p>Итак, полный режим доступа к файлу (без учёта маски):</p>
7 <p>rw- rw- rw- (110 110 110)</p>
7 <p>rw- rw- rw- (110 110 110)</p>
8 <p>Значение маски (в двоичном представлении):</p>
8 <p>Значение маски (в двоичном представлении):</p>
9 <p>000 000 010 (повторимся, нас сейчас интересуют только три последних позиции маски 0 0 2)</p>
9 <p>000 000 010 (повторимся, нас сейчас интересуют только три последних позиции маски 0 0 2)</p>
10 <p>Итоговый режим доступа (с учётом маски):</p>
10 <p>Итоговый режим доступа (с учётом маски):</p>
11 <p>rw- rw- r-- (110 110 100)</p>
11 <p>rw- rw- r-- (110 110 100)</p>
12 <p>А теперь наглядно сопоставим измения в табличке:</p>
12 <p>А теперь наглядно сопоставим измения в табличке:</p>
13 <p>Права доступа к файлу задаются девятью позициями (3 позиции для владельца файла + 3 для группы + 3 для остальных пользователей). Значению каждой позиции сопоставляются значения маски: если внимательно присмотреться, то можно заметить, что в тех позициях, где значение в маске равно единице, происходит "сброс" соответствующего атрибута прав доступа. То есть, соответствующее право доступа в конкретной позиции (где в маске встречается единица) аннулируется - таким образом формируется итоговый режим прав доступа.</p>
13 <p>Права доступа к файлу задаются девятью позициями (3 позиции для владельца файла + 3 для группы + 3 для остальных пользователей). Значению каждой позиции сопоставляются значения маски: если внимательно присмотреться, то можно заметить, что в тех позициях, где значение в маске равно единице, происходит "сброс" соответствующего атрибута прав доступа. То есть, соответствующее право доступа в конкретной позиции (где в маске встречается единица) аннулируется - таким образом формируется итоговый режим прав доступа.</p>
14 <p>В примере выше маска 000 000 010 аннулирует восьмую (право на запись w для остальных пользователей) позицию режима доступа к файлу. Именно поэтому rw- rw- rw- трансформируется в rw- rw- r-- (или, если в двоичном представлении: 110 110 110 трансформируется в 110 110 100).</p>
14 <p>В примере выше маска 000 000 010 аннулирует восьмую (право на запись w для остальных пользователей) позицию режима доступа к файлу. Именно поэтому rw- rw- rw- трансформируется в rw- rw- r-- (или, если в двоичном представлении: 110 110 110 трансформируется в 110 110 100).</p>
15 <h2>Изменение маски</h2>
15 <h2>Изменение маски</h2>
16 <p>Маску легко изменить. В рамках текущей сессии это делается путём передачи нового значения команде umask:</p>
16 <p>Маску легко изменить. В рамках текущей сессии это делается путём передачи нового значения команде umask:</p>
17 <p>В этом примере мы фактически "обнулили" маску, установив все нули. Теперь маска никак не будет воздействовать на исходный режим доступа, устанавливаемый по умолчанию (нет единиц в маске - значит нигде не будет производиться аннулирование правил доступа!).</p>
17 <p>В этом примере мы фактически "обнулили" маску, установив все нули. Теперь маска никак не будет воздействовать на исходный режим доступа, устанавливаемый по умолчанию (нет единиц в маске - значит нигде не будет производиться аннулирование правил доступа!).</p>
18 <p>Теперь попробуем создать новый файл file2:</p>
18 <p>Теперь попробуем создать новый файл file2:</p>
19 <p>При "нулевой" маске итоговый режим доступа к созданному файлу соответствует полному режиму по умолчанию rw- rw- rw- (т.е. маска никак на него не воздействовала). Сравните это с режимом доступа к файлу с именем file1, который мы создали ранее, когда маска была равна 000 000 010.</p>
19 <p>При "нулевой" маске итоговый режим доступа к созданному файлу соответствует полному режиму по умолчанию rw- rw- rw- (т.е. маска никак на него не воздействовала). Сравните это с режимом доступа к файлу с именем file1, который мы создали ранее, когда маска была равна 000 000 010.</p>
20 <p>В табличном виде это выглядит так:</p>
20 <p>В табличном виде это выглядит так:</p>
21 <h3>Задача</h3>
21 <h3>Задача</h3>
22 <p>Допустим, мы<strong>не хотим</strong>, чтобы для вновь создаваемых файлов<strong>участники их группы имели право на запись</strong>. То есть нам надо аннулировать это право w для группы. Для этого надо изменить маску по умолчанию 0002 (000 000 000 010) на 0022 (000 000 010 010). Обратите внимание, что сейчас мы показываем полное значение маски в формате с лидирующими нулями (см. примечание по этому поводу выше).</p>
22 <p>Допустим, мы<strong>не хотим</strong>, чтобы для вновь создаваемых файлов<strong>участники их группы имели право на запись</strong>. То есть нам надо аннулировать это право w для группы. Для этого надо изменить маску по умолчанию 0002 (000 000 000 010) на 0022 (000 000 010 010). Обратите внимание, что сейчас мы показываем полное значение маски в формате с лидирующими нулями (см. примечание по этому поводу выше).</p>
23 <p>Выше мы изменили маску на 022 (000 010 010) и создали новый файл с именем file3.</p>
23 <p>Выше мы изменили маску на 022 (000 010 010) и создали новый файл с именем file3.</p>
24 <p>Маска 000 010 010 аннулирует пятую (право на запись w для группы) и восьмую (право на запись w для остальных пользователей) позицию режима доступа к файлу. Именно поэтому rw- rw- rw- трансформируется в rw- r-- r-- (или, если в двоичном представлении: 110 110 110 трансформируется в 110 100 100). Сравните это с режимом доступа к файлу с именем file1, который мы создали ранее, когда маска была равна 002 (000 000 010), и с режимом доступа к файлу с именем file2, который мы создали, когда маска была равна 000 (000 000 000).</p>
24 <p>Маска 000 010 010 аннулирует пятую (право на запись w для группы) и восьмую (право на запись w для остальных пользователей) позицию режима доступа к файлу. Именно поэтому rw- rw- rw- трансформируется в rw- r-- r-- (или, если в двоичном представлении: 110 110 110 трансформируется в 110 100 100). Сравните это с режимом доступа к файлу с именем file1, который мы создали ранее, когда маска была равна 002 (000 000 010), и с режимом доступа к файлу с именем file2, который мы создали, когда маска была равна 000 (000 000 000).</p>
25 <h2>Заключение</h2>
25 <h2>Заключение</h2>
26 <p>Отметим напоследок, что изменение маски является достаточно редкой операцией в практике unix-пользователя. Её следует применять только тогда, когда вы точно знаете что и для какой цели делаете. Значение маски по умолчанию, как правило, является оптимальным в плане безопасности и комфорта для рядового пользователя.</p>
26 <p>Отметим напоследок, что изменение маски является достаточно редкой операцией в практике unix-пользователя. Её следует применять только тогда, когда вы точно знаете что и для какой цели делаете. Значение маски по умолчанию, как правило, является оптимальным в плане безопасности и комфорта для рядового пользователя.</p>