Понимание chmod: разница между u+x и +x
Команда chmod используется для назначения разрешений для файлов и каталогов в системе Linux. Chmod может принимать множество различных синтаксисов, таких как символический режим и абсолютный режим, поэтому изучение всех различных способов использования chmod может быть немного запутанным. Когда дело доходит до предоставления пользователю разрешений на выполнение, часто используются параметры u+x
и +x
из-за их простого и понятного синтаксиса. Но знаете ли вы разницу между этими двумя вариантами?
В этом уроке вы узнаете о различиях между опциями chmod u+x
и +x
в командной строке Linux. Мы также в общих чертах рассмотрим синтаксис этой команды, чтобы вы получили фундаментальное понимание того, как быстро и эффективно использовать chmod для назначения разрешений на чтение, запись и выполнение пользователям или группам в вашей системе Linux.
В этом уроке вы узнаете:
- Разница между опциями
u+x
и+x
дляchmod
- Как использовать символический синтаксис
chmod
для назначения разрешений пользователю, группе и другим учетным записям - Как параметр
umask
влияет на командуchmod +x
?
Разница между опциями chmod u+x и +x
Короткий ответ
Если вы спешите и вас не интересуют нюансы команды chmod
, вот ответ, который вы ищете:
u+x
назначит права на выполнение пользователю (владельцу) файла.+x
назначит права на выполнение файла всем пользователям вашей системы.
Более подробное объяснение
Начнем с рассмотрения следующей команды:
$ chmod u+x file.sh
Теперь мы можем разобрать его, начиная с первого варианта — u
. При назначении разрешений для файла с помощью chmod
и синтаксиса символьного режима мы можем использовать u
для назначения разрешений текущему пользователю (владельцу) файла. В список общих опций входят:
u
=текущий uсер/владелецg
=группа g, которой принадлежит файл.o
=все другие учетные записи пользователейa
=всевсе пользователи (пользователь, группа и все остальные вместе взятые)
После указания того, кому мы хотим назначить разрешения (пользователю, группе, другим или всем), следующим символом в наших параметрах является знак +
плюс. Это (интуитивно) означает, что мы добавляем разрешения. Поскольку символ +
идет после буквы u
, мы знаем, что добавляем разрешения для пользователя. В этом месте мы могли бы использовать:
+
=добавить разрешения-
=убрать разрешения=
=назначить указанные разрешения
Наконец, последний символ в наших параметрах — это x
, который представляет разрешения выполнения. Теперь, когда мы разобрали значение каждого символа, мы можем определить, что параметры u+x
добавляют разрешения на выполнение для пользователя файла. Имейте в виду, что для этой части опций можно использовать следующие опции:
r
=разрешения на чтениеw
=права на записьx
=разрешения на выполнение
Итак, что будет означать, если мы укажем +x
в наших параметрах chmod
, не указав явно, для кого мы хотим добавить разрешения на выполнение?
$ chmod +x file.sh
В большинстве ситуаций (см. ниже) использование +x
эквивалентно использованию a+x
. Другими словами, он назначит разрешения на выполнение всем пользователям (пользователю, группе и всем остальным).
Изменение значений umask приведет к разным результатам
К приведенному выше ответу есть одно большое предостережение, связанное с настройкой umask
в системе Linux.
$ umask
0002
Настройка umask
для 0002
, как в примере выше, означает, что +x
действительно будет эквивалентен a+x
, как обсуждалось ранее. Параметр 0002
является umask
по умолчанию в большинстве систем Linux, но вы можете столкнуться с разными результатами в зависимости от того, какой дистрибутив вы используете или как настроена система.
Мы можем получить дополнительные разъяснения, добавив параметр -S
к команде umask
:
$ umask -S
u=rwx,g=rwx,o=rx
Допустим, вместо этого для нашего параметра umask
установлено значение 0003
. С этой настройкой a+x
и +x
для chmod
определенно дадут нам разные результаты.
$ umask 0003
Затем мы можем проверить настройку:
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r
Теперь, когда для umask
установлено значение 0003
, команда chmod +x
будет назначать разрешения на выполнение только пользователю и группе.
Заключительные мысли
В этом уроке мы узнали о разнице между параметрами u+x
и +x
для команды chmod
в системе Linux. Мы также увидели полный список подобных параметров, которые мы можем использовать с командой chmod
, чтобы назначать или отзывать разрешения на чтение, запись и выполнение файлов для пользователя, группы и других учетных записей. Наконец, мы узнали о влиянии параметра umask
на назначение разрешений в Linux.