по умолчанию Отправной Биты для обычного файла (в отличие от каталога или символической ссылки) являются 0666
.Давайте разберем, что вниз в разрешениях компонентов:
0
означает, что никаких специальных разрешений (например, setuid
(4), setgid
(2), или sticky
(1)) установлены
- первый
6
(или 110
в двоичной системе) означает, что user
получает r
(первый 1
) и w
(второй 1
), но не x
(0
) по умолчанию
- второй
6
означает то же самое, что и первый 6
, но для group
вместо user
- третьего
6
означает то же самое, что и первый 6
, но others
вместо user
Теперь вы хотите изменение это по умолчанию 0125
:
0
означает, как указано выше
- не
1
(или 001
в двоичной системе) означает, что user
только получает x
но не r
или w
2
(или 010
в двоичной системе) означает, что group
только получает w
но не r
или x
5
(или 101
в двоичной системе) означает others
получить r
и x
но не w
К сожалению, единственная операция, которую разрешает umask
, - binary AND NOT
. Он не допускает целочисленного вычитания. Так как вы начинаете с 0666 (000 110 110 110)
, просто нет способа использовать AND NOT
, чтобы получить любой из этих 0
s, чтобы он превратился в 1
s.
Ближайший вы можете получить с umask
является --- -w- r--
или 0024
путем маскировки 110 (6)
из user
по умолчанию, 100 (4)
из group
по умолчанию, и 010 (2)
из others
по умолчанию. После этого каждый новый файл, который вы создаете, будет
umask 642
touch file.txt
000 110 110 110 &~
000 110 100 010
--- --- --- ---
000 000 010 100
0 0 2 4 --- -w- r-- file.txt
Если вы хотите новые файлы, то также x
разрешения, вам придется добавить их на второй стадии (или использовать что-то другое, чем touch
), например: chmod u+x,o+x file.txt
,
:: редактировать :: Причины вы будете часто видеть нечетные многозначные umask
сек потому, что каталог по умолчанию разрешения 0777
, так что пользователи могли бы хотеть, чтобы определить, что происходит с x
разрешений для тех.Но независимо от того, что x
бит вы укажите в umask
, он не может повлиять на права доступа к файлам:
umask 0027
touch file.txt
000 110 110 110 &~
000 000 010 111
--- --- --- ---
000 110 100 000
0 6 4 0 rw- r-- --- file.txt
mkdir directory
000 111 111 111 &~
000 000 010 111
--- --- --- ---
000 111 101 000
0 7 5 0 rwx r-x --- directory/
Таким образом, вы можете указать x
маски в вашем umask
, когда вы создаете новый каталог, но они не будут иметь никакого эффекта по созданию файла.
Обратите внимание, что umask применяется как побитовая операция «и» , а не вычитание. – nos
большое спасибо за ваш комментарий. –