если значение umask равно 0022 каким будет значение прав доступа к новым файлам
Ordnung muß sein. Ordnung über alles (18+)
Инструменты пользователя
Инструменты сайта
Боковая панель
Навигация
Линкшэринг
socialite Display:icon facebook twitter
ALARM!
Добавить новую страницу
Реклама
Содержание
Что такое umask и как установить права на файл или директорию
Как установить umask по умолчанию?
Узнать текущее значение вашей umask можно просто:
Umask для всех пользователей по умолчанию устанавливается в файлах /etc/.bashrc или /etc/.profile. После процедуры начальной инсталляции Linux он равен 0022 (022) или 0002 (002).
Просто добавьте или измените строку с umask:
Изменения вступят в силу при следующем входе.
Что такое 0022 и 0002?
По умолчанию umask 0002 используется для обычного пользователя. С этой маской права по умолчанию, для директории, равны 775, а для файла 664.
Для суперпользователя (root) umask по умолчанию равен 0022. С этой маской права по умолчанию, для директории, равны 755, а для файла 644.
Базовые права для директорий, это 0777 (rwxrwxrwx) и для файлов 0666 (rw-rw-rw).
Как посчитать (определить) права файла для маски 022 (пользователь root):
Права по умолчанию: 666
Вычитаемое значение umask: 022 (-)
Итоговые права: 644
Как посчитать (определить) права директории для маски 022 (пользователь root):
Права по умолчанию: 777
Вычитаемое значение umask: 022 (-)
Итоговые права: 755
Вывод
Таким образом umask «отбирает» необходимые права в нужных разрядах: 7-ка полностью все, 2-ка права на запись, 0 оставляет по умолчанию. По-моему очень просто и понятно.
К примеру вот такие команды:
приведут к такому результату:
И напоследок, пример umask с различными (наиболее часто используемыми) значениями и результирующие (итоговые) права:
Команда Umask в Linux
В операционных системах Linux и Unix все новые файлы создаются с набором разрешений по умолчанию. Утилита umask позволяет вам просмотреть или установить маску создания режима файла, которая определяет биты прав доступа для вновь создаваемых файлов или каталогов.
Он используется командами mkdir, touch, tee и другими, которые создают новые файлы и каталоги.
Разрешения Linux
Прежде чем идти дальше, давайте вкратце объясним модель разрешений Linux.
В Linux каждый файл связан с владельцем и группой и имеет права доступа для трех разных классов пользователей:
К каждому классу применяются три типа разрешений:
Эта концепция позволяет указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл.
Чтобы просмотреть права доступа к файлу, используйте команду ls :
Следующие девять символов представляют разрешения, три набора по три символа в каждом. Первые наборы показывают разрешения владельца, вторые — разрешения группы, а последний набор — разрешения всех остальных.
В приведенном выше примере ( rwxr-xr-x ) означает, что владелец имеет разрешения на чтение, запись и выполнение ( rwx ), группа и другие имеют разрешения на чтение и выполнение.
Если мы представим права доступа к файлам с использованием числовой записи, мы получим число 755 :
Понимание umask
По умолчанию в системах Linux разрешения на создание по умолчанию составляют 666 для файлов, что дает права на чтение и запись пользователю, группе и другим лицам, и 777 для каталогов, что означает разрешение на чтение, запись и выполнение для пользователя, группы и другие. Linux не позволяет создавать файлы с разрешениями на выполнение.
Если вы хотите указать другое значение для каждого пользователя, отредактируйте файлы конфигурации оболочки пользователя, такие как
Чтобы просмотреть текущее значение маски, просто введите umask без аргументов:
Вывод будет включать
Значение umask содержит биты прав доступа, которые НЕ будут устанавливаться для вновь созданных файлов и каталогов.
Например, чтобы рассчитать, как umask 022 повлияет на вновь созданные файлы и каталоги, используйте:
В отличие от числовой записи, значение символьной записи содержит биты разрешений, которые будут установлены для вновь созданных файлов и каталогов.
Установка значения маски
Маска создания файла может быть задана с использованием восьмеричной или символьной записи. Чтобы сделать изменения постоянными, установите новое значение umask в глобальном файле конфигурации, таком как /etc/profile file, который повлияет на всех пользователей, или в файлах конфигурации оболочки пользователя, таких как
/.zshrc которые затронет только пользователя. Пользовательские файлы имеют приоритет над глобальными файлами.
Прежде чем вносить изменения в значение umask убедитесь, что новое значение не представляет потенциальной угрозы безопасности. Значения менее строгие, чем 022 следует использовать с большой осторожностью. Например, umask 000 означает, что любой пользователь будет иметь права на чтение, запись и выполнение для всех вновь созданных файлов.
Чтобы вычислить значение umask просто вычтите желаемые разрешения из значения по умолчанию:
Значение 777-750 = 027 : 777-750 = 027
Чтобы навсегда установить новое значение для всей системы, откройте файл /etc/profile текстовом редакторе:
и измените или добавьте следующую строку в начало файла:
Чтобы изменения вступили в силу, выполните следующую source команду или выйдите из системы и войдите в систему:
Чтобы проверить новые настройки, мы создадим один новый файл и каталог с помощью mkdir и touch :
Выводы
В этом руководстве мы объяснили разрешения Linux и как использовать команду umask для установки битов разрешений для вновь создаваемых файлов или каталогов.
Если у вас есть вопросы, оставьте комментарий ниже.
Команда 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
Каждую цифру маски 002 можно перевести в двоичную систему. Последняя 2 описывает категорию other и в двоичной системе выглядит как 010. Биты читаются слева направо и описывают права rwx. В данном примере 1 означает запрет на запись, а нули разрешают чтение и выполнение. Если будет стоять битовая маска 100, то получится 4 в восьмеричной системе, то это будет означать запрет на чтение.
Важное замечание, что с помощью маски не получится разрешить выполнение файлов. Флаг x с помощью маски можно установить только для каталогов. Поскольку права файла рассчитываются на основе прав 666, в которых выполнение уже отключено rw-rw-rw, то маска тут уже ничего сделать не может. Зато для каталогов всё работает, потому что используются права 777. Для наглядности маску по умолчанию можно представить в виде таблицы:
Вычисление прав по маске Umask
По канонам Unix вновь создаваемым файлам и папкам присваиваются права по умолчанию в зависимости от маски umask, которая назначается каждому пользователю в его конфигурационном файле bash_profile. Узнать текущее значение umask можно одноимённой командой:
Прежде чем переходить непосредственно к рассмотрению маски, отмечу, что максимально возможные права для файлов могут быть 666 (rw-rw-rw), то есть полные права на чтение и запись, а для папок — 777. Это значит, что вновь создаваемый файл не может быть сделан исполняемым — атрибут исполнения (x) можно выставить только дополнительной командой chmod.
Итак, вернёмся к маске. Как уже отмечалось выше, маска предназначена для выставления прав по умолчанию на вновь создаваемые файлы и папки. Выполняется это путём наложения её на максимально возможные права по правилу 666/777 И НЕ umask. Под наложением понимается выполнение побитовых операций над каждым из трёх разрядов прав. Рассмотрим это на конкретном примере и вычислим результат для первого разряда операции 666 И НЕ 367, т.е. 6 И НЕ 3.
Для выполнения побитовых операций перейдём к двоичному представлению. В двоичном представлении 6 И НЕ 3 выглядит как 110 И НЕ 011, причём операции производятся поэтапно, начиная с последнего операнда по принципу 110 (И (НЕ 011)).
Сначала вычислим НЕ 011:
Таким образом, получим цифру 4 в десятичном представлении двоичного числа 100. Точно так же права вычисляются и для остальных двух восьмеричных разрядов.
Можно ли без подобных выкладок быстро вычислить права на файл или папку по маске? Оказывается, очень легко. Для этого достаточно лишь знать порязрядное соответствие цифр маски цифрам прав доступа на папку или файл. Поскольку таких цифр всего восемь, то существуют следующие соответствия:
— | Маска | → | Папка | Файл |
0 | → | 7 | 6 | |
1 | → | 6 | ||
2 | → | 5 | 4 | |
3 | → | 4 | ||
4 | → | 3 | 2 | |
5 | → | 2 | ||
6 | → | 1 | 0 | |
7 | → | 0 |
Как видно из таблицы, легче всего права вычисляются для папок: для этого нужно из 7 просто вычесть значение числа в маске. В нашем случае 777-367=410.
В случае файла вычитание даст тот же результат только для чётных цифр. Для нечётных цифр выбирается меньшее чётное, т.е. для 1 → 0, для 3 → 2 и так далее. В нашем случае маска 367 приводится к виду 266 и только потом вычитается из 666, что даёт 666-266=400.
В итоге, нам не нужно никаких калькуляторов или математических способностей для вычисления прав по маске — побитовые операции легко заменяются обычными арифметическими операциями над привычными числами.
Основы привилегий Linux и использование Umask на VPS
Вступление
Привилегии в Linux позволяют владельцу файла или каталога ограничивать доступ, основываясь на отношении пользователя к файлу. По сути, привилегии создают своеобразную схему управления, которая предоставляет различные уровни доступа для разных пользователей.
Команда umask определяет привилегии, присвоенные по умолчанию файлам, созданным каждым пользователем. Она может быть изменена, чтобы обеспечить строгие ограничения доступа или, наоборот, смягчить привилегии для сценариев совместного использования файлов, в зависимости от потребностей системы и пользователя.
Данное руководство объясняет основы привилегий Linux, а также демонстрирует преимущества правильного конфигурирования umask. Также оно кратко рассматривает команду chmod как сопутствующий инструмент.
Категории привилегий
Новичкам привилегии Linux могут показаться непонятной и сложной темой. Но, ознакомившись со способами представления привилегий, можно с легкостью научиться читать и изменять привилегии файлов или каталогов.
Привилегии владельца
Первое, что нужно запомнить, чтобы понять права Linux, – данная ОС в основе является многопользовательской.
Каждый файл принадлежит ровно одному пользователю. Даже если VPS используется всего одним человеком, есть еще целый ряд различных «пользователей», созданных для запуска конкретных программ. Других пользователей системы можно просмотреть, набрав:
Файл /etc/passwd содержит строки для каждого пользователя, созданного в данной ОС. Первое поле каждой строки – имя уникального пользователя. Как можно видеть, многие имена пользователей связаны с различными сервисами и приложениями.
Работа сервисов как отдельных пользователей позволяет управлять доступом сервисов, присваивая им различные пользовательские права. Многие программы сконфигурированы на создание пользователя и выполнение всех действий с его помощью.
Привилегии группы
Вторая категория прав, которые можно присвоить в Linux, – права «группы-владельца» файла.
Как и в предыдущей категории, файл может принадлежать ровно одной группе. Каждый пользователь может состоять в нескольких группах, и каждая группа может содержать несколько пользователей.
Чтобы просмотреть группы, в которых состоит текущий пользователь, наберите:
Это выведет все группы, в которых на данный момент состоит пользователь. По умолчанию пользователь может состоять в одной или двух группах, а имя одной из них может совпадать с именем данного пользователя.
Чтобы просмотреть все группы, существующие в системе, введите:
Первое поле каждой строки – имя группы.
Linux позволяет присваивать привилегии владельца файла группе. Благодаря этому можно присвоить пользовательские права группе людей, так как только один пользователь может владеть файлом.
Другие привилегии
Последняя категория прав, которую можно присвоить в Linux, – «другие привилегии».
В данном контексте под «другими» подразумевается любой пользователь, не владеющий файлом и не состоящий в группе, которая владеет файлом.
Данная категория позволяет установить базовый уровень привилегий, который будет применяться к любому пользователю вне двух других категорий.
Типы привилегий
Каждой описанной выше категории могут быть присвоены привилегии, которые предоставляют или ограничивают права на чтение, изменение или запуск файла.
В случае с обычным файлом, права на чтение нужны, чтобы читать содержимое файла, права на изменение – чтобы менять его содержимое, права на запуск – чтобы запускать файл как скрипт или приложение.
Для каталогов права на чтение нужны, чтобы просматривать список (ls) содержимого, права на изменение – чтобы менять содержимое каталога, права на запуск – чтобы менять каталоги (cd) внутри каталога.
Linux представляет эти типы привилегий, используя два отдельных символические обозначения: буквенные и восьмеричные.
Буквенные обозначения
Буквенные обозначения легко понять, они используются несколькими распространенными программами для представления привилегий.
Каждое право представлено одной буквой:
Важно помнить о том, что буквенные обозначения прав всегда указываются в данном порядке. Предоставленное право обозначается соответствующей буквой. Если определенный доступ ограничен, это обозначается с помощью тире (-).
Сначала права предоставляются владельцу файла, затем группе, и только потом другим пользователям. Таким образом, есть три группы из трех значений.
Команда ls использует буквенные обозначения при запуске с опцией «-l» (long-format):
Первое поле выведенного результата представляет привилегии файла.
Эти данные обозначаются с помощью 10 символов. Первый на самом деле не является значением привилегии, он указывает на тип файла (тире для обычного файла, d – для каталога, и т.д.). Следующие 9 символов представляют описанные выше права. Три группы, представляющие владельца, группу и других пользователей, каждая со значениями, определяющими права на чтение, изменение и запуск.
В приведенном выше примере владелец каталога «acpi» имеет права на чтение, изменение и запуск. Группа и другие пользователи имеют права на чтение и запуск.
Файл «anacrontab» позволяет владельцу читать и вносить изменения, но члены группы и другие пользователи имеет только право на чтение.
Восьмеричные обозначения
Более кратким, но менее понятным способом представления привилегий является восьмеричное обозначение.
В данном случае каждая категория привилегий (владелец группа и другие пользователи) представлена числом от 0 до 7.
Для обозначения каждого типа прав используется определенное число, таким образом, ему задается численное значение:
Числа, связанные с типом прав, которые нужно предоставить каждой категории, нужно суммировать. Таким образом, получится число от 0 до 7 (0 означает, что никакие права не были предоставлены, 7 указывает на полные права на чтение, изменение и запуск).
К примеру, если владелец файла имеет права на чтение и изменение, то они будут представлены значением 6 в столбце владельца файла. Если группа имеет только право на чтение, то это право будет представлено символом 4.
Подобно буквенным, восьмеричные обозначения может содержать дополнительный первый символ, указывающий на тип файла. За ним следует значение прав владельца, группы, затем других пользователей.
Команда chmod является очень важной программой при использовании восьмеричных обозначений.
Использование команды Chmod
Самый популярный способ изменения прав доступа к файлу – использование восьмеричного значения с помощью команды chmod. Чтобы продемонстрировать работу команды, создадим пустой файл в домашнем каталоге:
Для начала просмотрите привилегии, установленные на данный файл во время его создания:
Если интерпретировать значения, можно увидеть, что владелец файла и группа имеют права на чтение и изменение, а другие пользователи – только права на чтение.
Если перевести это в восьмеричную систему счисления, владелец и группа будут иметь значение прав 6 (4 для чтения, плюс 2 для изменения), а другим пользователям присвоено значение 4 (для чтения). В конечном виде права представлены триплетом 664.
Предположим, этот файл содержит bash-скрипт, который нужно запустить как владелец. Теперь нужно, чтобы никто вообще, в том числе члены группы, не имел права на изменение файла и даже на его чтение.
Как можно видеть, права были присвоены верно.
При необходимости вернуть прежние привилегии можно задать chmod следующее:
Установка привилегий по умолчанию с Umask
Команда umask определяет права по умолчанию новых файлов, основываясь на «базовых» правах, установленных для каталогов и файлов.
Базовые права файлов устанавливаются значением 666, что означает право на чтение и изменение для всех пользователей. Право на запуск не предоставляется по умолчанию, поскольку большинство файлов не созданы для запуска (кроме того, присвоение права на запуск может стать причиной проблем безопасности сервера).
Права каталогов по умолчанию представлены значением 777, что означает права на чтение, изменение и запуск для вех пользователей.
Umask действует путем применения вычитаемой «маски» с базовыми правами, как показано выше. Рассмотрим ее работу на примере.
Предположим, нужно, чтобы владелец и члены группы-владельца имели право на изменение новых каталогов, а другие пользователи – нет; тогда значение прав будет775.
Теперь нужен триплет, показывающий разницу между базовыми и нужными правами. Это число 002.
Полученное число является значением umask, которое нужно применить. По совпадению, это значение команды по умолчанию во многих системах, как можно было заметить при создании файла с помощью команды touch ранее. Попробуйте снова:
С помощью команды umask можно определить другую umask.
Чтобы обезопасить систему, можно сделать так, чтобы пользователи, не владеющие файлом, вообще не имели никаких прав. Это можно сделать с помощью значения umask 077:
Если есть процесс, создающий контент общего пользования, то можно установить полные прав доступа на каждый файл и каталог, созданный ним:
По умолчанию настройки umask будут применяться только к текущей сессии оболочки. При следующем входе в систему любым новым файлам и каталогам будут заданы исходные параметры, установленные дистрибутивом системы.
Найдите уже установленное значение umask и измените его. Если такого значения пока нет, внесите в конце файла строку с необходимым значением:
Приведенное выше значение предоставляет полные права доступа владельцу, и ограничивает право на изменение остальным категориям. Отредактируйте данное значение на свое усмотрение.
Предостережения
При изменении прав важно помнить о том, что некоторые области файловой системы и некоторые процессы требуют особых прав для правильной работы. Права, не отвечающие данным требованиям, могут привести к ошибкам и прекращению работы приложений.
С другой стороны, предоставляя слишком много прав, система подвергается опасности.
Потому рекомендуется не редактировать привилегии вне домашнего каталога в случае, если вы не осведомлены о последствиях, которые могут возникнуть в связи с неправильными конфигурациями.
Еще одно правило, которое особенно важно соблюдать при конфигурировании программ вручную: всегда устанавливайте наиболее строгую политику прав доступа, не затрагивающую функциональности сервера.
Это значит, что если только один пользователь (например, сервис) нуждается в доступе к группе файлов, то нет необходимости позволять какой-либо доступ к содержимому этих файлов остальным пользователям. Особенно это касается файлов, хранящих пароли в виде простого текста.
Правильно используя права группы-владельца и добавляя необходимых пользователей в соответствующую группу, можно настроить права доступа более тонко. Если все пользователи, которым необходим доступ к файлу, являются членами группы-владельца, то категорию «другие пользователи» можно для большей безопасности лишить всех прав.