Утилита umask (от англ. user file creation mode mask) — инструмент командной строки Linux, который используется для установки прав доступа по умолчанию для создаваемых файлов и каталогов.
В этой статье мы расскажем, как применять команду umask в операционной системе Linux.
Содержание:
- Права доступа файлов в Linux
- Синтаксис команды umask
- Объяснение работы утилиты umask
- Создание тестовых файла и каталога в Linux
- Установка нового значения для umask
- Выводы
Права доступа файлов в Linux
Для начала Вам следует знать, что права доступа файлов могут устанавливаться для их владельца, группы и других пользователей. То есть, всего три значения, которые записываются именно в таком порядке. Все пользователи могут иметь следующие права доступа на файл:
- чтение;
- запись;
- выполнение.
Важно: указанные права доступа также записываются только в таком порядке.
Разрешения файлов и каталогов можно представить в виде символьной, восьмеричной и двоичной нотаций.
Символьная нотация
Права доступа записываются с помощью букв: r — чтение, w — запись, x — выполнение, - — нет прав доступа. Набор разрешений для каждого пользователя устанавливается комбинацией из трех символов, которые содержат указанные буквы или -. В начале набора прав доступа указывается специальное значение, которое определяет тип файла: d — каталог, - — обычный файл, l — символическая ссылка. Например:
drwxr-xr-xозначает каталог (d) с разрешениями на чтение, запись и выполнение для владельца (rwx), и разрешения на чтение и выполнение для группы (r-x) и других пользователей (r-x);-rw-r--r--представляет обычный файл (-) с разрешениями на чтение и запись для владельца (rw-) и только на чтение для группы (r--) и других пользователей (r--).
Восьмеричная нотация
Права доступа записываются с помощью цифр от 0 до 7, где каждая цифра соответствует сумме разрешений: 4 — чтение, 2 — запись, 1 — выполнение, 0 — нет прав доступа. Набор разрешений для файла имеет вид трехзначного числа, каждая цифра которого означает права доступа для соответствующего пользователя. Например:
777представляет полные права доступа на файл (чтение, запись и выполнение) для владельца (4+2+1=7), группы (4+2+1=7) и других пользователей (4+2+1=7);644представляет разрешения на чтение (4) и запись (2) для владельца (4+2=6), и только на чтение для группы (4) и других пользователей (4).
Двоичная нотация
Права доступа записываются с помощью последовательности трех битов для каждого разрешения. Каждый бит соответствует определенному праву доступа: первый бит — чтение, второй бит — запись, третий бит — выполнение. Набор разрешений для каждого пользователя устанавливается соответствующей последовательностью из девяти символов (по три знака для каждого права доступа). Например:
111— полные разрешения (чтение, запись и выполнение);101— разрешения на чтение и выполнение, но не на запись.
Вот таблица, в которой показано, как соответствуют друг другу права доступа в каждой нотации:
| Разрешение | Символьная | Восьмеричная | Двоичная |
|---|---|---|---|
| Чтение | r |
4 | 100 |
| Запись | w |
2 | 010 |
| Выполнение | x |
1 | 001 |
| Нет разрешения | - |
0 | 000 |
По умолчанию в Linux установлены следующие стандартные наборы прав доступа для:
- каталога —
777(чтение, запись, выполнение для всех пользователей); - файла —
666(только чтение, запись для всех пользователей).
Важно: из-за требований безопасности операционной системы Linux, предоставление файлам права на выполнение по умолчанию не допускается. Поэтому для файлов установлен набор разрешений 666.
Синтаксис команды umask
Команда umask имеет простой синтаксис, который выглядит следующим образом:
Где:
[option]— необязательные опции;[new mask]— новое значение прав доступа по умолчанию.
Чтобы узнать, с какими разрешениями создаются файлы и директории в Linux, выполните следующую команду без опций или с параметром -S:
На скриншоте выше видно, что umask без опций вывела на экран значение 0002, а с опцией -S — u=rwx,g=rwx,o=rwx.
Объяснение работы утилиты umask
Каждая цифра umask имеет свое определение:
- Первая — «липкий» бит (дополнительный атрибут, отвечающий за безопасность файла). Мы его рассматривать в данной статье не будем.
- Вторая — права доступа файла для владельца.
- Третья — разрешение файла для группы.
- Четвертая — права доступа файла для других пользователей.
Значение записывает в восьмеричной нотации. Причем каждая цифра указывает, какие права доступа файла для определенного пользователя удалены:
0— нет удаленных разрешений;1— разрешение на выполнение удалено;2— право доступа на запись удалено;3— разрешения на запись и выполнение удалены;4— право доступа на чтение удалено;5— разрешения на чтение и выполнение удалены;6— права доступа на чтение и запись удалены;7— разрешения на чтение, запись и выполнение удалены.
Читайте также: Как копировать права доступа с одного файла в другой на Linux.
Давайте разберем на практике, как это работает. Для примера возьмем значение 0002. Уберем первый ноль из него, так как это «липкий» бит. У нас остается 002. Это разрешение указывает, что создаваемые файлы будут иметь права доступа 664 (rw-rw-r--), а каталоги — 775 (rwxrwxr-x). Как мы пришли к такому выводу:
- Для файлов — вычтем
002из666(стандартный набор прав доступа файла по умолчанию). Получим666—002=664. - Для каталогов — вычтем
002из777(стандартный набор прав доступа каталога по умолчанию). Получим777—002=775.
Важно: если в процессе вычислений выясняется, что файл может получить право на исполнение (что изначально запрещено правилами Linux, как мы сказали ранее), то ОС автоматически лишает его этого разрешения, сохраняя все остальные.
Создание тестовых файла и каталога в Linux
Давайте убедимся в том, что в нашей ОС новые файлы имеют права доступа 664 (-rw-rw-r--), а каталоги — 775 (drwxrwxr-x). Для этого создадим тестовый файл и директорию с помощью утилит touch и mkdir, соответственно:
Затем выполним команду ls -l, чтобы узнать разрешения файлов:
Читайте также: Как создать файл в Linux.
На скриншоте выше видно, что права доступа к файлу и директории соответствуют предположениям, которые мы выдвигали ранее.
Установка нового значения для umask
Для примера давайте зададим для umask значение 0123. Сделаем это с помощью следующей команды:
Набор цифр 0123 означает, что создаваемый файл будет иметь такие разрешения:
6—1=5— владелец (rw-, чтение и запись).6—2=4— группа (r--, только чтение).6—3=3— другие пользователи (r-x, чтение и исполнение) . Но так как по требованиям Linux файл не может по умолчанию иметь разрешение на исполнение, тогда другие пользователи будут иметь только право на чтение4(r--).
То есть, общий набор прав доступа для нового файла — 544 (-rw-r--r--). А создаваемые каталоги будут иметь следующие разрешения:
7—1=6— владелец (rw-, чтение и запись).7—2=5— группа (r-x, чтение и исполнение).7—3=4— другие пользователи (r--, только чтение) .
То есть, общий набор прав доступа для нового каталога — 654 (drw-r-xr--). Убедимся, что наши расчеты верны, создав новые файл и папку:
На скриншоте видно, что мы посчитали все правильно.
Важно: при установке значения umask в терминале, изменения сохраняются только для текущей сессии командной строки. Чтобы задать его на постоянной основе, следует добавить строку umask xxxx (замените xxxx соответствующими цифрами) в любое свободное место в файле .profile или .bash_profile.
Выводы
Теперь Вы знаете, что такое утилита umask и про ее функционал в Linux. Мы также показали Вам пару примеров, как устанавливать права доступа для файлов по умолчанию. Надеемся, что эта статья была полезной для Вас!
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.




















