Права доступа по умолчанию: значение umask

Когда пользователь создает файл или каталог, назначаемые права доступа зависят от значения umask. Команда umask является встроенной функцией интерпретатора команд, которая отменяет (маскирует) определенные биты прав доступа.

Кстати...

Процесс назначения файлу или каталогу прав доступа выглядит следующим образом. Программа (например, touch), создающая элемент файловой системы, задает восьмеричный код прав доступа к нему. Пусть это будет 666. Но прежде чем это значение будет записано в индексный дескриптор файла, к нему применяется значение umask. Допустим, оно равно 022. Тогда код прав доступа будет 644. Обычно говорят, что это результат вычитания значения umask. Так проще запоминать, но это не совсем правильно.

В действительности запрашиваемый код доступа побитово умножается на обратное значение umask (дополнение до единицы). Это не так сложно, как кажется. Давайте подробно рассмотрим весь процесс. Обе логические операции — умножение (&&) и дополнение до единицы (') — являются бинарными. Определение операции логического умножения.

Таким образом, при "вычитании" 027 (000010111) из 666 (110110110) получаем 640 (110100000).

В Red Hat 7.2 стандартное значение umask задается в файле /etc/profile. В соответствии с его установками пользователям с приватными группами соответствует значение 002, а всем остальным пользователям — значение 022. Во втором случае это означает, что для программ типа mkdir и vi права доступа к каталогам задаются равными 755 (rwxrxrx), а права доступа к файлам — равными 644 (rwr—г—). Это не самый лучший вариант, поскольку любой пользователь может читать (и, следовательно, копировать) каталоги и файлы. Если вы придерживаетесь политики "все, что явно не разрешено, — запрещено", задайте значение umask равным хотя бы 027. В этом случае все биты последнего, третьего триплета будут сброшены. В случае необходимости всегда можно поменять права доступа с помощью команды chmod.

К сожалению (по крайней мере, с точки зрения безопасности), любой пользователь или процесс может задать значение umask для своего интерпретатора команд. Все, что может сделать системный администратор, — поместить более "строгое" значение umask, например 027, в глобальный файл инициализации интерпретатора, но пользователь легко переопределит эту установку командой

$ umask 022 или же поместит эту команду в локальный файл инициализации интерпретатора, например $Н0МЕ/.profile. Поскольку umask — встроенная команда интерпретатора, нелегко ограничить ее использование. Единственный способ сделать это — убедить пользователей в том, что предложенное им значение — в их же интересах.

Большинство жалоб, связанных с открытым доступом к файлам, можно избежать, если правильно сконфигурировать группы. В конце концов, более "строгое" значение umask заставит пользователей задуматься всякий раз, когда им захочется предоставить открытый доступ к файлу или каталогу.

Права доступа к системным файлам и каталогам

В основном права доступа к системным файлам и каталогам остаются неизменными, т.е. такими, какими они были заданы на момент инсталляции системы или системного программного обеспечения. Менять их приходится лишь при обнаружении какихлибо брешей.

Контроль надлежащих прав доступа к системным файлам и каталогам требует немалых усилий. К счастью, есть специальные утилиты, помогающие делать это. Особенно полезна программа Bastille. Но этого недостаточно. Необходимо постоянно следить за выявлением новых брешей и быть в курсе последних событий. Очень часто атаки злоумышленников основаны на том, что системные файлы и каталоги имеют определенные права доступа, заданные по умолчанию. Старайтесь сразу после публикации очередного отчета о выявленной "дыре" оперативно ее устранять.


Ведете ли вы блог?

Да
Нет
Планирую


Результаты опроса

Новостной блок