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

279
Pithikos

Я пытаюсь научиться использовать 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-). Таким образом, в одном случае это действует как маска для отрицания, а во втором случае оно просто дает результат из того, что я понимаю. Почему это неоднозначное поведение?

3

1 ответ на вопрос

1
jjlin

That's just how the behavior of umask is defined:

If -S is specified, the message shall be in the following format:

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

where the three values shall be combinations of letters from the set { r, w, x}; the presence of a letter shall indicate that the corresponding bit is clear in the file mode creation mask.

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

It seems logical that being able to display the mask in both forms would be useful, though admittedly the umask(1) man page is not terribly clear on what the -S option does.

Похожие вопросы