Ответ
Число 666 (в восьмеричной системе, что соответствует rw-rw-rw- в символьном представлении) — это базовая маска разрешений для новых обычных файлов в Unix-подобных системах. Она задает максимально возможные разрешения, которые файл мог бы получить.
Однако итоговые права определяются формулой: Фактические_права = Базовая_маска & ~umask (где & — побитовое И, ~ — побитовое НЕ).
Роль umask:
umask (user file creation mask) — это маска, которая вычитает (запрещает) определенные биты прав из базовой маски в целях безопасности. Типичное значение umask — 022.
Пример расчета:
# Базовая маска для файла: 666 (в двоичном виде: 110 110 110)
# Значение umask: 022 (в двоичном виде: 000 010 010)
# Инвертируем umask: ~022 = 755 (в двоичном: 111 101 101)
# Применяем побитовое И:
# 110 110 110 (666)
# & 111 101 101 (~022)
# = 110 100 100 (644 в восьмеричной) -> rw-r--r--
$ umask 022
$ touch newfile.txt
$ ls -l newfile.txt
# -rw-r--r-- 1 user group 0 ... newfile.txt # Права 644
Ключевые моменты:
- Для каталогов базовая маска — 777 (
rwxrwxrwx). Сumask=022новый каталог получит права755(rwxr-xr-x). umask— это настройка оболочки (shell) или процесса. Ее можно изменить в сессии (umask 027) или установить глобально в конфигурационных файлах оболочки (.bashrc,.profile).- Некоторые программы (например, компиляторы для исполняемых файлов или
ssh-keygen) могут явно устанавливать другие права (например,755или600), игнорируяumask.