Лекция
Сразу хочу сказать, что здесь никакой воды про umask, и только нужная информация. Для того чтобы лучше понимать что такое umask, дополнительные атрибуты, lsattr, chattr , настоятельно рекомендую прочитать все из категории Операционная система LINUX.
На прошлой лекции мы рассмотрели основные права объектов и команды, которые позволяют управлять этими правами. Прежде чем пойдем дальше, хочу показать одно применение команды chmod, для раздачи прав для каталогов и файлов. Например, у нас есть каталог с большим количеством музыкальных файлов. Необходимо, чтобы для всех каталогов свойство x было установлено (так как необходимо в эти каталоги заходить), а на файлах не установлено (так как музыкальные файлы не должны интерпретироваться как исполняемые).Эта задача решается всего двумя командами chmod:
igor@adm-ubuntu:~$ sudo chmod -R 644 ./Музыка/
igor@adm-ubuntu:~$ sudo chmod -R a+X ./Музыка/
Команды необходимо обязательно выполнять от имени администратора, так как забрав право x у каталога команда не сможет зайти в него, чтобы изменить свойства для подкаталога и файлов. Первая команда забирает право x для всех объектов внутри каталога (для этого используется ключ R), аналог команды в мнемоническом исполнении sudo chmod -R a-x ./Музыка/ . Во второй команде выражение a+X (”икс большое”), установит права только для объектов типа каталог. Как видите все просто. И еще один пример если необходимо скопировать права файла и назначить их другому файлу, то для этого существует ключ reference:
igor@adm-ubuntu:~/linux$ chmod –reference=file.txt file1.txt
В результате файл file1.txt будет иметь такие же права как и file.txt.
Давайте теперь поговорим о правах вновь созданных объектов. Если вы создаете объект, то ему присваиваются определенные права заданные по умолчанию. Задаются они при помощи числового шаблона. По умолчанию шаблон равен 0022. Изменить шаблон можно командой umask. Наберите эту команду без параметров, чтобы увидеть текущий шаблон:
igor@adm-ubuntu:~/linux$ umask
0022
Как видим сейчас шаблон равен 0022. Об этом говорит сайт https://intellect.icu . Числа соответствуют трем триадам прав. Выполнив команду umask 0127вы измените шаблон на указанный. Но как применяется данный шаблон? Здесь нужно запомнить два правила:
Если вы создаете файл то значение маски отнимается от значения 0666, а если создаете каталог, то значение маски отнимается от значения 0777. Если быть точным то выполняется операция не вычитания, а XOR. Технические специалисты меня должны понять, для остальных рекомендую придерживаться схемы вычитания:0666 отнять 0022 будет 0644 (rw-r–r–). Именно такие права будут назначены вновь созданному файлу. Или0777 отнять 0022 будет 0755 (rwxr-xr-x) для каталога. Также рекомендую запомнить правило, что цифра 7 в шаблоне запрещает все права для своей триады прав объекта. То есть если вы установите umask в 0777, то никакие права не будут установлены:
igor@adm-ubuntu:~/linux$ umask 0777
igor@adm-ubuntu:~/linux$ touch file3.txt
igor@adm-ubuntu:~/linux$ ls -l
итого 20
———- 1 igor igor 0 2009-10-23 12:48 file3.txt
Самый простой способ освоить этот механизм это потренироваться в установке разных значений шаблона при помощи команды umask и посмотреть какие права будут выдаваться вновь создаваемым файлам или каталогам. Тем более, что каждый пользователь может сам устанавливать свой собственный шаблон. То есть шаблон храниться для каждого пользователя отдельно. По умолчанию он равен 0022, но если один пользователь изменит его на другое значение, то у второго пользователя шаблон не изменится. Это тоже нужно понимать и учитывать. О команде umask все, перейдем к следующему вопросу.
Поговорим о дополнительных правах объектов в родной файловой системе Linux - ext2/ext3. Праваrwxrwxrwx, о которых мы говорили раньше назначаются всем объектам всех поддерживаемых файловых систем в Linux. Если файловая система не поддерживает такие права (например та же FAT), то они устанавливаются искусственно. Для родной файловой системы Linux - ext2/ext3 определены дополнительные атрибуты (биты) для объектов. Хочу сразу отметить, что в подавляющем большинстве случаев вам не придется с ними работать, но знать о том, что они есть нужно. Коротко опишем некоторые из них.
A - не обновлять время доступа к объекту. Теоретически установка этого атрибута должна повысить производительность файловой системы и соответственно системы в целом.
а - указывает, что в файл можно добавлять информацию, но нельзя удалять.
d - указывает на то, что не нужно делать резервные копии файла. Файл будет проигнорирован командой dump.
i - указывает на то, что файл нельзя удалять и модифицировать.
s - указывает, что при удалении файла место где был размещен файл будет перезаписано нулями.
u - указывает на то, что при удалении файла его нужно куда-то сохранить.
Существуют и другие атрибуты. О них вы можете прочесть в справке. Там же вы можете увидеть, что атрибуты s и u пока не реализованы в ext2/ext3. Возможно они поддерживаются в ext4.
Для просмотра дополнительных атрибутов существует команда lsattr. Если вы выполните команду lsattr /, то увидите дополнительные права для файловых систем ext2/ext3 и увидите сообщение об ошибке для других файловых систем. Изменять дополнительные атрибуты можно командой chattr. Принцип работы схож с командойchmod. Например, chattr +A file.txt добавит атрибут А к файлу file.txt.
Прочесть о дополнительных атрибутах вы можете по команде man chattr.
В качестве домашнего задания попробуйте найти где задается значение umask.
Пожалуйста, пиши комментарии, если ты обнаружил что-то неправильное или если ты желаешь поделиться дополнительной информацией про umask Надеюсь, что теперь ты понял что такое umask, дополнительные атрибуты, lsattr, chattr и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Операционная система LINUX
Из статьи мы узнали кратко, но содержательно про umask
Комментарии
Оставить комментарий
Операционная система LINUX
Термины: Операционная система LINUX