Umask действует как набор разрешений, которые приложения не могут устанавливать для файлов. Это маска создания режима файла для процессов и не может быть установлена для самих каталогов. Большинство приложений не будут создавать файлы с установленными разрешениями на выполнение, поэтому они будут иметь значение по умолчанию 666
, которое затем будет изменено с помощью umask.
Так как вы установили umask для удаления битов чтения / записи для владельца и битов чтения для других, по умолчанию, например, 777
в приложениях, будут предоставлены права доступа к файлу 133
. Это будет означать, что вы (и другие) можете выполнить файл, а другие смогут записать в него.
Если вы хотите, чтобы файлы не были доступны для чтения / записи / выполнения кем-либо, кроме владельца, вы должны использовать umask, например, 077
чтобы отключить эти разрешения для группы и других пользователей.
Напротив, использование umask 000
сделает вновь созданные каталоги доступными для чтения, записи и просмотра для всех (разрешения будут 777
). Такой umask крайне небезопасен, и вы никогда не должны устанавливать umask 000
.
По умолчанию umask в Ubuntu 022
означал, что вновь созданные файлы доступны для чтения всем, но только для записи владельцу:
user@computer:~$ touch new-file-name
user@computer:~$ ls -dl new-file-name
-rw-r--r-- 1 user user 0 Apr 1 19:15 new-file-name
Начиная с Ubuntu Oneiric (11.10), umask по умолчанию был смягчен 002
, что расширяет доступ на запись для группы владельца:
user@computer:~$ touch new-file-name
user@computer:~$ ls -dl new-file-name
-rw-rw-r-- 1 user user 0 Apr 1 19:15 new-file-name
Просмотр и изменение umask
Чтобы просмотреть текущие настройки umask, откройте терминал и выполните команду:
umask
Чтобы изменить настройку umask текущей оболочки на что-то другое, скажем, 077, выполните:
umask 077
Чтобы проверить, работает ли этот параметр или нет, вы можете создать новый файл (права доступа к существующему файлу не будут затронуты) и показать информацию о файле, запустите:
user@computer:~$ touch new-file-name
user@computer:~$ ls -dl new-file-name
-rw------- 1 user user 0 Apr 1 19:14 new-file-name
Параметр umask наследуется процессами, запущенными из одной оболочки. Например, запустите текстовый редактор GEdit, выполнив gedit
в терминале, и сохраните файл с помощью gedit. Вы заметите, что на вновь созданный файл влияет та же настройка umask, что и в терминале.
Вариант использования: многопользовательская система
Если вы работаете в системе, которая используется несколькими пользователями, желательно, чтобы другие не могли читать файлы в вашем домашнем каталоге. Для этого умаск очень полезен. Отредактируйте ~/.profile
и добавьте новую строку с:
umask 007
Чтобы изменения ~/.profile
вступили в силу, необходимо повторно войти в систему . Затем вам нужно изменить существующие права доступа к файлам в вашем домашнем каталоге, удалив бит чтения, записи и выполнения для всего мира. Откройте терминал и выполните:
chmod -R o-rwx ~
Если вы хотите, чтобы этот параметр umask применялся ко всем пользователям в системе, вы можете отредактировать общесистемный файл профиля по адресу /etc/profile
.
app_mode 666 rw- rw- rw-
umask 644 --0 -00 -00
file_mode 022 --- -w- -w-