В чем разница между "chmod +x" и "chmod 755"?

Короткая версия:

Чтобы иметь возможность сравнивать их, мы должны смотреть на них с одной и той же точки зрения, так что:

  • chmod +x равно chmod ugo+x (На основе umask значение)
  • chmod 755 равно chmod u=rwx,go=rx

Объяснение:

Во-первых, вы должны знать, что:

  1. + означает добавление этого разрешения к другим разрешениям, которые уже есть у файла.
  2. = означает игнорировать все разрешения, установить их точно так, как я предоставляю.

    • Таким образом, все "чтение, запись, выполнение, sticky bit, suid и guid" будут проигнорированы, и будут установлены только те, которые указаны.
  3. чтение = 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.

enter image description here