Ответ 1
Нет реальной несогласованности, так как связь между umask
и chmod
может быть записана чисто с помощью уравнений. По-видимому, umask
устанавливает противоположность chmod
, он был создан так же в прежние времена.
Пример: 022
(обычный umask
) создает 755
. Он работает следующим образом:
-
7 - 0 = 7
становится первым байтом -
7 - 2 = 5
становится вторым и третьим байтами
Используя этот пример, umask 777
создает файл с chmod 000
, umask 112
будет равен chmod 664
. Насколько мне известно, это произошло потому, что изначально была создана команда umask
, чтобы указать, какие биты разрешения будут иметь файл NOT после его создания (отсюда и инверсия).
В то время как это может раздражать, ему действительно не сложно привыкнуть. Подумайте, как бы вы chmod
ваши файлы и вычитали байт из 7
, и вы получите значение umask
. Или, когда вы находитесь в среде IDE, написав свой код, не используйте umask
, а скорее создайте файл (с по умолчанию umask
, конечно), а затем используйте вместо этого в Python os.chmod()
.