Короткая версия:
Чтобы иметь возможность сравнивать их, мы должны смотреть на них с одной и той же точки зрения, так что:
-
chmod +x
равноchmod ugo+x
(На основеumask
значение) -
chmod 755
равноchmod u=rwx,go=rx
Объяснение:
Во-первых, вы должны знать, что:
-
+
означает добавление этого разрешения к другим разрешениям, которые уже есть у файла. -
=
означает игнорировать все разрешения, установить их точно так, как я предоставляю.- Таким образом, все "чтение, запись, выполнение, sticky bit, suid и guid" будут проигнорированы, и будут установлены только те, которые указаны.
-
чтение = 4, запись = 2, выполнение = 1
-
Вот двоичная логика, стоящая за этим (если вам интересно):
Symbolic: r-- -w- --x | 421Binary: 100 010 001 | -------Decimal: 4 2 1 | 000 = 0 | 001 = 1Symbolic: rwx r-x r-x | 010 = 2Binary: 111 101 101 | 011 = 3Decimal: 7 5 5 | 100 = 4 / / / | 101 = 5Owner ---/ / / | 110 = 6Group ------/ / | 111 = 7Others ---------/ | Binary to Octal chart
-
С помощью +x
вы говорите, чтобы добавить (+
) исполняемый бит (x
) владельцу, группе и другим лицам.
- это равно
ugo+x
илиu+x,g+x,o+x
- Если вы не укажете, кто из владельцев, групп или других лиц является вашей целью, в случае
x
он рассмотрит их все. И, как отметил @ Rinzwind, он основан наumask
значение, оно добавляет бит к единицамumask
позволяет. помните, что если вы укажете цель, напримерo+r
затемumask
больше не имеет никакого эффекта. - Это не касается других модов (разрешений).
- Вы также могли бы использовать
u+x
чтобы добавить исполняемый бит только владельцу.
С помощью 755
вы указываете:
- >7 --
u=rwx
(4+2+1 для владельца) - >5 --
g=rx
(4+1 для группы) - >5 --
o=rx
(4+1 для других)
Так chmod 755
это как: chmod u=rwx,g=rx,o=rx
или chmod u=rwx,go=rx
.