Когда дело доходит до создания исполняемого файла файла, между чем различие chmod 755
и chmod +x
и когда я использовал бы который? Я до сих пор только использовал chmod +x
и я просто считал что-то, и это использовало chmod 755
и я не мог сказать, было ли лучше использовать chmod 755
или chmod +x
.
Чтобы смочь сравнить их, мы должны посмотреть на них с той же точки зрения, таким образом:
chmod +x
равно chmod ugo+x
(На основе umask
значение)chmod 755
равно chmod u=rwx,go=rx
Во-первых необходимо знать что:
+
средства добавляют это разрешение к другим полномочиям, которые уже имеет файл.=
средства игнорируют все полномочия, устанавливают их точно, поскольку я обеспечиваю.
читайте = 4, запишите = 2, выполнитесь = 1
Вот бинарная логика позади него (если Вам интересно):
Symbolic: r-- -w- --x | 421
Binary: 100 010 001 | -------
Decimal: 4 2 1 | 000 = 0
| 001 = 1
Symbolic: rwx r-x r-x | 010 = 2
Binary: 111 101 101 | 011 = 3
Decimal: 7 5 5 | 100 = 4
/ / / | 101 = 5
Owner ---/ / / | 110 = 6
Group ------/ / | 111 = 7
Others ---------/ | Binary to Octal chart
Используя +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 +x
добавляет выполнить разрешение для всех пользователей к существующим полномочиям.
chmod 755
наборы 755
разрешение для файла.
755
полные полномочия средств для владельца и читают и выполняют разрешение для других.
Другой способ посмотреть на него (который я нахожу легче понять) является этим chmod +x
устанавливает полномочия относительно, тогда как chmod 755
устанавливает их абсолютно.
После chmod 755
работал на файле, его полномочия будут 755, или rwxr-xr-x
.
chmod +x
просто возьмет существующие полномочия и добавит, выполняют полномочия в файл.
Я рекомендую рассмотреть chmod страницу справочника для полной детали. Вы просто видите два различных режима работы, доступные с командой chmod для выполнения той же задачи изменяющихся полномочий.
Восьмеричный режим использует числа и устанавливает все полномочия файла. Текстовый режим использует буквы и обычно используется, чтобы просто изменить существующие полномочия.
chmod 755
наборы rwxr-xr-x
в то время как chmod +x
корректирует полномочия так, чтобы владелец, группа и мир всем добавили исполняемые полномочия. Принятие разрешения файла по умолчанию rwxr--r--
это скорректировало бы его к тем же полномочиям как 755 из rwxr-xr-x
.
Различие - то, какие полномочия установлены и какой режим Вы используете для установки их.
С chmod +x
Вы устанавливаете исполняемый бит для всех - владелец, группа владельца и другие пользователи. Это известно как символьный режим. Заключить в кавычки man chmod
:
Оператор + заставляет выбранные биты режима файла быть добавленными к существующим битам режима файла каждого файла; - заставляет их быть удаленными; и = заставляет их быть добавленными и заставляет неупомянутые биты быть удаленными за исключением того, что неупомянутый пользователь аппарата каталога и идентификационные биты группы не затронуты.
С chmod 755
Вы используете восьмеричные числа, двоичное представление которых используется для установки определенных битов полномочий. Сначала (слева) 3 бита соответствуют полномочиям владельца, средние 3 к полномочиям группы, и в последний раз (самый правый) соответствуют полномочиям всех других пользователей. Порядок битов всегда является тем же, read,write,execute
или rwx
Таким образом точно потому что порядок является тем же, отдельное число при преобразовании в двоичное представление установит биты полномочий, для которых соответствующий позиционный бит в числе равняется 1 и сбросил тот, который является 0. Конкретно:
7
111 в двоичном файле, таким образом, Вы устанавливаете все чтение, запишите и выполните биты для владельца; rwx
установлен.5
101 в двоичном файле, таким образом, Вы устанавливаете чтение и выполняете, но отключаете биты записи, и так как это 5 для группы и других пользователей, те две категории будут иметь те же полномочия. Таким образом r-x
установлен.Вот маленькая демонстрация:
bash-4.3$ touch file1 file2
bash-4.3$ chmod +x file1
bash-4.3$ chmod 755 file2
bash-4.3$ ls -l file1 file2
-rwxrwxr-x 1 xieerqi xieerqi 0 7月 6 13:54 file1
-rwxr-xr-x 1 xieerqi xieerqi 0 7月 6 13:54 file2
Одно важное различие - то, что chmod + подвергается umask ограничениям, и <восьмеричный> chmod не.
Рассмотрите следующий пример:
$ ls -l foo bar
---------- 1 gowenfawr users 0 Jul 7 16:40 bar
---------- 1 gowenfawr users 0 Jul 7 16:39 foo
$ umask
0022
$ chmod +w bar
$ umask 0002
$ chmod +w foo
$ ls -l foo bar
--w------- 1 gowenfawr users 0 Jul 7 16:40 bar
--w--w---- 1 gowenfawr users 0 Jul 7 16:39 foo
$
Так, если Вы хотите внести изменение дельты в полномочия способом, это соответствует Вашим umask настройкам, используйте '+' синтаксис. Но если Вы хотите установить его абсолютно без учета на umask, используйте <восьмеричный> формат и поймите, что необходимо указать все биты и не только дельту.
В дополнение к этим красивым ответам я хочу упомянуть маленькое, но вероятно важное различие. Команда chmod 755 file
эквивалентно chmod 0755 file
. Если мы выполним эту команду на файле, который имеет SETUID-разрядный или SETGID-разрядный набор, то она удалит SETUID/SETGID-bit. chmod +x file
оставит нетронутое SETUID/SETGID-bit. Мы видим это в следующем примере:
~$ touch test ~$ chmod u+s test ~$ ll test -rwSrw-r-- 1 mook mook 0 Sep 14 00:49 test ~$ chmod +x test ~$ ll test -rwsrwxr-x 1 mook mook 0 Sep 14 00:49 test ~$ chmod 755 test ~$ ll test -rwxr-xr-x 1 mook mook 0 Sep 14 00:49 test