Вычисление umask и chmod, установка sticky bit

Вычисление umask и chmod, установка sticky bit umask (от англ. user file creation mode mask — маска режима создания пользовательских файлов) — функция среды POSIX, изменяющая права доступа, которые присваиваются новым файлам и директориям по умолчанию. Режим полного доступа для файлов — 666, для директорий — 777. Многие оболочки UNIX предоставляют команду umask, которая влияет на все дочерние процессы, исполняемые в этой оболочке.

Фактически, umask указывает, какие биты следует сбросить в выставляемых правах на файл — каждый установленный бит umask запрещает выставление соответствующего бита прав. Исключением из этого запрета является бит исполняемости, который для каталогов выставляется особо. umask 0 означает, что следует (можно) выставить все биты прав (rwxrwxrwx), umask 777 запрещает выставление любых прав.

По умолчанию umask в OpenBSD 4.9 имеет значение 022, что выражается в правах доступа на каталоги 755 и на файлы 644. Для того что бы выяснить текущее значение umask нужно выполнить эту команду без параметров:

umask
022

UMASK обычно определяется в /home/user/.profile or /etc/profile за исключением редких случаев когда можно/нужно определить umask для отдельного процесса. Для начала вспомним команду chmod.

Вычисление chmod

Права указываются в формате chmod 0755, значение каждой цифры:

  • 0 - первая цифра управляет sticky bit-ом, 0=снят, 1=установлен;
  • 7 - вторая цифра от 0 до 7 определяет права владельца, как правило всегда 7 для каталогов и 6 для файлов;
  • 5 - третья цифра от 0 до 7 определяет права групп, как правило всегда 5 для каталогов и 4 для файлов;
  • 5 - четвёртая цифра от 0 до 7 определяет публичные права, как правило всегда 5 для каталогов и 4 для файлов;

Значение цифр в диапазоне от 0 до 7:

  • 0 - Нет никаких прав;
  • 1 - Разрешить выполнение (или поиск по каталогам);
  • 2 - Разрешить запись;
  • 3 - Разрешить запись и выполнение;
  • 4 - Разрешить чтение;
  • 5 - Разрешить чтение и выполнение;
  • 6 - Разрешить чтение и запись;
  • 7 - Разрешить чтение, запись и выполнение / поиск других.

Установка sticky bit

Впервые sticky bit появился в пятой редакции UNIX в 1974 году для использования в исполняемых файлах. Он применялся для уменьшения времени загрузки наиболее часто используемых программ. После закрытия программы код и данные оставались в памяти, а следующий запуск происходил быстрее.

Сегодня sticky bit используется в основном для директорий, чтобы защитить в них файлы. Из такой директории пользователь может удалить только те файлы, владельцем которых он является. Примером может служить директория /tmp, в которой запись открыта для всех пользователей, но нежелательно удаление чужих файлов. Установка атрибута sticky bit производится утилитой chmod.

chmod 1777 ./dirname
# or
chmod +t ./dirname
 

Снятие атрибута sticky bit:

chmod 0777 ./dirname
# or
chmod -t ./dirname
 

Способ вычисления umask

 

Задать umask для пользователя можно в файле /home/user/.profile банальным добавлением строки:

vi /home/user/.profile
....
umask 022
 

Нужно помнить, что когда umask определяется в /home/user/.profile, то для вступления изменений в силу нужно выйти и снова войти в систему!

Так же следует взять во внимание, что umask установленный в /home/user/.profile или /etc/profile действует только для консольного режима создания файлов и каталогов и не распространяется на файлы/каталоги загружаемые по FTP или SFTP!

Автор: Олег Головский


Добавить комментарий


Защитный код
Обновить

2 megabytes