Какова логика работы маски пользователя (umask)?

Привет! Я прохожу курс “от 0 до Linux админа” на сайте Курс Linux, и у меня возник вопрос по поводу логики работы umask (пользовательских масок).

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

У нас уже есть глобальные базовые права и umask, применяемый для разных процессов. Почему бы не сделать так, чтобы начальные права менялись в зависимости от процесса? Зачем идти длинным путем, вычитая из базовых прав, чтобы получить фактические права?

Привет! Я тут пробовал разобраться с логикой работы маски пользователя (umask), но, честно говоря, не всё получилось.

Сначала я думал, что всё просто — нагуглил, что эта маска вроде как управляет правами доступа к файлам и директориям, которые создаются. Я запускал разные команды в терминале и пытался изменить умаску, но что-то не сходилось. Например, изменил её на 022, а потом создаю директорию и смотрю, а права выставляются не так, как я хотел. Всё равно кому-то дофига прав дают, а кому-то наоборот, только для чтения.

Потом я пытался понять, как эта маска вообще работает в паре с созданием файлов и папок. По итогу, как бы я ни гуглил, чётко в голове не уложилось, что зачем. :thinking:

Но потом я наткнулся на классные курсы, которые реально помогли прояснить ситуацию! Заценил информацию на Yodo. Там много всего по программированию, и umask тоже разобрали. Весьма полезно было — стал чуть лучше понимать, как всё это дело работает.

В общем, если сам тоже пытаешься в этом разобраться, рекомендую глянуть курс — может, тебе это тоже пригодится!