Почему Umask использует эту сложную систему счисления?

Я пытаюсь научиться использовать Umask, но это кажется таким сложным.

Помимо всех вычитаний, которые я должен делать в своей голове отдельно для каталогов и файлов каждый раз, когда вижу значение маски, umask в разное время кажется другим (см. Ниже).

Например, если у меня есть маска

umask
0002

это также можно рассматривать как

umask -S
u=rwx,g=rwx,o=rx

Почему умаск дает rwxrwxr-x и не -------w- в этом случае? Когда мне дают 0002, я должен рассчитать разрешения для файлов по 666-002 и каталогов по 777-002. Не должен тогда umask -S дайте мне аналогичную вещь, чтобы я мог рассчитать с. Например negation-of(-------w-), Таким образом, в одном случае он действует как маска для отрицания, а во втором случае он просто дает результат из того, что я понимаю. Почему это неоднозначное поведение?

1 ответ

Вот только как поведение umask определено:

Если указан -S, сообщение должно иметь следующий формат:

"u =% s, g =% s, o =% s \ n",,,

где три значения должны быть комбинациями букв из множества { r, w, x}; наличие буквы должно указывать на то, что соответствующий бит сброшен в маске создания режима файла.

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/umask.html)

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

Другие вопросы по тегам