Когда дело доходит до создания файла исполняемого файла , что является разницей между chmod 755
и chmod +x
и когда бы использовать какие? Я до сих пор только использовал, chmod +x
и я просто прочитал что-то, и это использовало, chmod 755
и я не мог сказать, было ли это лучше использовать chmod 755
или chmod +x
.
command-line
permissions
chmod
Darth4212
источник
источник
chmod +x
устанавливает все исполняемые флаги без изменения других разрешений.chmod 755
устанавливает RWXR-XR-XОтветы:
Укороченная версия:
Чтобы иметь возможность сравнивать их, мы должны смотреть на них с той же точки зрения, поэтому:
chmod +x
равноchmod ugo+x
(на основеumask
стоимости)chmod 755
равноchmod u=rwx,go=rx
Объяснение:
Во-первых, вы должны знать, что:
+
означает добавить это разрешение к другим разрешениям, которые уже есть у файла.=
значит игнорировать все разрешения, установить их именно так, как я предоставляю.чтение = 4, запись = 2, выполнение = 1
Вот бинарная логика (если вам интересно):
Используя
+x
вы говорите, чтобы добавить (+
) исполняемый бит (x
) для владельца, группы и других.ugo+x
илиu+x,g+x,o+x
x
этого будут рассмотрены все из них. И, как указал @Rinzwind, он основан наumask
значении, он добавляет бит к тому, чтоumask
позволяет. помните, что если вы укажете цель как,o+r
тоumask
больше не будет иметь никакого эффекта.u+x
только для добавления исполняемого бита для владельца.Используя
755
вы указываете:u=rwx
(4 + 2 + 1 для владельца)g=rx
(4 + 1 для группы)o=rx
(4 + 1 для других)Так
chmod 755
как:chmod u=rwx,g=rx,o=rx
илиchmod u=rwx,go=rx
.источник
chmod 755
вы устанавливаете эти биты И вы также очищаете все биты suid / sgid / sticky (которые могли быть там) (например: НИКОГДАchmod 755 /tmp
). 755 всегда следует рассматривать как 0755, т.chmod +x
добавляет разрешение на выполнение для всех пользователей к существующим разрешениям.chmod 755
устанавливает755
разрешение для файла.755
означает полные права для владельца и права на чтение и выполнение для других.источник
Другой способ взглянуть на это (который мне кажется более понятным) заключается в том, чтобы
chmod +x
установить относительные разрешения относительно , аchmod 755
установить их абсолютно .После
chmod 755
запуска файла его права доступа будут 755 илиrwxr-xr-x
.chmod +x
просто возьмет существующие разрешения и добавит разрешения на выполнение в файл.источник
Я рекомендую просмотреть справочную страницу chmod для более подробной информации. Вы просто видите два различных режима работы, доступных с помощью команды chmod для выполнения одной и той же задачи по изменению прав доступа.
Восьмеричный режим использует числа и устанавливает все права доступа к файлу. Символьный режим использует буквы и обычно используется только для изменения существующих разрешений.
chmod 755
setrwxr-xr-x
whilechmod +x
настраивает разрешения так, чтобы у владельца, группы и мира были добавлены исполняемые разрешения. Предполагая, что для файла по умолчанию установленоrwxr--r--
такое же разрешение, как и для 755rwxr-xr-x
.источник
Разница в том, какие права доступа установлены и какой режим вы используете для их установки.
При этом
chmod +x
вы устанавливаете исполняемый бит для всех - владельца, группы владельцев и других пользователей. Это известно как символический режим. Процитируюman chmod
:При
chmod 755
использовании восьмеричных чисел, двоичное представление которых используется для установки определенных битов разрешений. Первые (слева) 3 бита соответствуют разрешениям владельца, средние 3 - разрешениям группы, а последний (самый правый) - разрешениям всех других пользователей. Порядок битов всегда одинаков,read,write,execute
или,rwx
таким образом, именно потому, что порядок одинаков, индивидуальное число при преобразовании в двоичное представление будет устанавливать биты разрешения, для которых соответствующий позиционный бит в числе равен 1, и сбрасывать тот, который равен 0 . В частности:7
- 111 в двоичном, так что вы устанавливаете все биты чтения, записи и выполнения для владельца;rwx
установлено.5
равно 101 в двоичном, так что вы устанавливаете чтение и выполнение, но отключаете биты записи, и, поскольку оно равно 5 для группы и других пользователей, эти две категории будут иметь одинаковые разрешения. Такr-x
установлено.Вот небольшая демонстрация:
источник
Одним из важных отличий является то, что chmod + подчиняется ограничениям umask, а chmod <octal> - нет.
Рассмотрим следующий пример:
Итак, если вы хотите внести дельта-изменения в разрешения таким образом, чтобы это соответствовало вашим настройкам umask, используйте синтаксис «+». Но если вы хотите установить его абсолютно безотносительно к umask, используйте формат <octal> и поймите, что вы должны указать все биты, а не просто дельта.
источник
В дополнение к этим красивым ответам я хочу упомянуть небольшое, но, вероятно, важное отличие. Команда
chmod 755 file
эквивалентнаchmod 0755 file
. Если мы запустим эту команду для файла, в котором установлен бит SETUID или SETGID, он удалит бит SETUID / SETGID.chmod +x file
оставит бит SETUID / SETGID нетронутым. Мы можем видеть это в следующем примере:источник