- Команда umask в Linux
- Права доступа в Linux
- Как работает umask
- Что такое umask и как установить права на файл или директорию
- Что такое umask?
- Как установить umask по умолчанию?
- Что такое umask равное 0022 и 0002?
- Итоги
- Калькулятор umask
- Umask Command in Linux
- Calculate the value of UMASK
- Get the current umask value
- Another way to set the umask value
- Conclusion
Команда umask в Linux
Права доступа к файлам и папкам в Linux – это часть стандарта POSIX. В связи с этим нам доступен ряд команд, таких как chmod, chown, chgrp и umask. В этой статье будет рассмотрена команда umask Linux. Эта команда задаёт набор прав, которые будут применены к файлам и директориям при их создании.
Настройки заданные командой будут действовать только для новых файлов. В этой статье будет рассмотрена команда umask Linux, её основные параметры, а также способы применения их на практике.
Права доступа в Linux
Поскольку команда umask используется для настройки прав по умолчанию, надо сначала разобраться какие есть права. Как было сказано ранее, Linux следует стандартам POSIX, что делает его UNIX-совместимой операционной системой. В общем случае права доступа в UNIX разбиты на три категории:
Каждая категория имеет три вида прав, причём эти права имеют отличия для файлов и каталогов. Для файлов:
Вы можете посмотреть список прав командой для файлов в любом текущем каталоге такой командой:
Вы увидите что-то вроде -rwxrw-r—, где первый символ служит для обозначения папок и символических ссылок, а последующие символы можно разбить на группы по три, для категорий u, g и o соответственно.
С файлами всё понятно, но для каталогов параметры r и x могут вносить некоторую неясность. Если запретить чтение списка файлов (r), то вы не сможете открыть каталог, но при этом можете открыть и изменить файл, если знаете его имя, также доступно создание новых файлов. Если запретить открытие файлов (x), то вы не сможете открыть каталог и прочитать файлы в нём, но при этом с помощью команды ls вы получите список файлов без какой-либо конкретики в виде прав и размера файлов.
По умолчанию новые файлы будут иметь права -rw-rw-r—, где первый прочерк говорит о том, что перед нами файл. Для папок же права будут выглядеть следующим образом: drwxrwxr-x, где d говорит о том, что мы имеем дело с папкой (l будет означать символическую ссылку).
Права могут быть выражены не только в виде последовательности букв, но и в восьмеричном виде, например, для -rw-rw-r— запись будет выглядеть вот так: 0664. Права для файла по умолчанию в Linux в восьмеричном формате записываются как 0666, а для каталога 0777. В этом случае 0 ничего не означает, а каждая цифра означает набор прав для определённой группы. Сначала владелец, потом группа, а потом все остальные. Но благодаря маске в Linux по умолчанию для файла выставляются права 0664, а для директории 0775. Именно на установку этих значений влияет команда umask. Подробнее о правах доступа к файлам можете узнать из нашей статьи.
Как работает umask
Команда umask задаёт маску прав для новых файлов и каталогов. При создании любого файла операционная система запрашивает маску прав и рассчитывает маску на основе неё. По умолчанию стоит маска 0002, Первая цифра ни на что не влияет и является пережитком синтаксиса языка C. Дальше цифры аналогичны правам доступа в Linux: первая — владелец, вторая — группа и третья — все остальные. Эта маска используется для расчета прав файла. Если не вдаваться в подробности, то рассчитывается всё довольно просто, от максимальных прав отнимается маска и получаются права для файла. Фактически, получается, что маска содержит права, которые не будут установлены для файла. Поэтому права по умолчанию для файла будут 666 — 002 = 664, а для каталога — 777 — 002 = 775.
Каждую цифру маски 002 можно перевести в двоичную систему. Последняя 2 описывает категорию other и в двоичной системе выглядит как 010. Биты читаются слева направо и описывают права rwx. В данном примере 1 означает запрет на запись, а нули разрешают чтение и выполнение. Если будет стоять битовая маска 100, то получится 4 в восьмеричной системе, то это будет означать запрет на чтение.
Важное замечание, что с помощью маски не получится разрешить выполнение файлов. Флаг x с помощью маски можно установить только для каталогов. Поскольку права файла рассчитываются на основе прав 666, в которых выполнение уже отключено rw-rw-rw, то маска тут уже ничего сделать не может. Зато для каталогов всё работает, потому что используются права 777. Для наглядности маску по умолчанию можно представить в виде таблицы:
Что такое umask и как установить права на файл или директорию
Очередной пост из серии «Ликбез». Всегда хотел это понять, но вечно что-то мешало.
Подглядел вот здесь, довольно легкое и доходчивое объяснение (прошу не путать ликбез с академическим толкованием) того, как посчитать umask, если знаешь какие права в итоге должен иметь твой файл или директория. Как правило, при администрировании Linux систем, нам больше всего приходится сталкиваться с фактическими правами, а вот с umask возникают некоторые трудности. Автор оригинальной статьи сам немного запутался, но я все исправил.
Что такое umask?
При создании файла или директории, среда операционной системы присваивает им определенные права доступа по умолчанию, и umask — это пользовательская маска (user mask), которая используется для определения конечных прав доступа.
Как установить umask по умолчанию?
Сперва, нам необходимо понять, как узнать текущее значение нашей umask. Сделать это очень просто:
Umask для всех пользователей по умолчанию устанавливается в файлах /etc/.bashrc или /etc/.profile.
После процедуры начальной инсталляции Linux, по умолчанию она равна 0022 (022) или 0002 (002).
Если в этих файлах, мы просто добавим или изменим строку с umask:
То при следующем входе мы получим новое значение umask. Если выполним эту команду в текущем сеансе, то, соответственно, изменим значение для маски на время работы сеанса.
Что такое umask равное 0022 и 0002?
В операционной системе Linux базовые права для директории равны 0777 (rwxrwxrwx), а для файла 0666 (rw-rw-rw).
По умолчанию umask 0002 используется для обычного пользователя. С этой маской права по умолчанию, для директории, равны 775, а для файла 664.
Для суперпользователя (root) umask по умолчанию равна 0022. С этой маской права по умолчанию, для директории, равны 755, а для файла 644.
Как посчитать (определить) права файла для маски 022 (пользователь root):
Права по умолчанию: 666
Вычитаемое значение umask: 022 (-)
Итоговые права: 644
Как посчитать (определить) права директории для маски 022 (пользователь root):
Права по умолчанию: 777
Вычитаемое значение umask: 022 (-)
Итоговые права: 755
Итоги
Таким образом: umask «отбирает» необходимые права в нужных разрядах: 7-ка полностью все, 2-ка права на запись, 0 оставляет по умолчанию. По-моему очень просто и понятно.
К примеру вот такие команды:
$ umask 077 $ touch file.txt $ ls -l file.txt
приведут к такому результату:
-rw------- 1 hb hb 0 2010-02-19 05:21 file.txt
И напоследок, пример umask с различными (наиболее часто используемыми) значениями и результирующие (итоговые) права:
Значение umask | Файл | Директория | ||||||
---|---|---|---|---|---|---|---|---|
Итог | Владелец | Группа | Остальные | Итог | Владелец | Группа | Остальные | |
0000 | 666 | rw- | rw- | rw- | 777 | rwx | rwx | rwx |
0002 | 664 | rw- | rw- | r— | 775 | rwx | rwx | r-x |
0022 | 644 | rw- | r— | r— | 755 | rwx | r-x | r-x |
0007 | 660 | rw- | rw- | — | 770 | rwx | rwx | — |
0077 | 600 | rw- | — | — | 700 | rwx | — | — |
0027 | 640 | rw- | r— | — | 750 | rwx | r-x | — |
0277 | 400 | r— | — | — | 500 | r-x | — | — |
Калькулятор umask
Конечно-же, ограниченный упрощенный метод подсчета и приведенная таблица не способны покрыть множество вариантов значений umask, поэтому, для более полной и четкой картины, предлагаю вам воспользоваться следующим наглядным инструментом:
«Онлайн umask калькулятор»
19 февраля, 2010 , 23:55
handyblogger[at]gmail.com
Umask Command in Linux
UMASK in a Linux system stands for User Mask. It is the default permission of a file or directory when they are created in your Linux machine.
Most Linux distros have a default value of UMASK is 022.
This article will show you the detail of the UMASK and the way to use it.
Calculate the value of UMASK
The minimum and maximum values of umask for a directory are 000 and 777 respectively. The minimum and maximum values of umask for a file are 000 and 666 respectively. The following table describes some of the common values:
To get a better understanding of how to use UMASK in Linux, let’s analyze the following example:
If the value of umask is 077, it means:
0 – the Owner has Read, Write and Execute permission
7 – the Group has no Permissions
7 – Others have no Permissions
Get the current umask value
You can get the current value of umask by simply running the command:
Another way to set the umask value
Besides the method of using numeric value for umask, you can configure the umask by alphabetic value as:
$ ls -ld test-folder file-test
Conclusion
You’ve already gone through the details of how to use UMASK in the Linux system.
Thanks for reading. If you have any concerns, feel free to leave your comment and let me know.
Karim Buzdar holds a degree in telecommunication engineering and holds several sysadmin certifications including CCNA RS, SCP, and ACE. As an IT engineer and technical author, he writes for various websites.