В чем разница между chmod u+x
и только chmod +x
? Я видел тонну учебников, которые говорят использовать u + x для создания исполняемых скриптов. Однако u
не упоминается в справке или руководстве chmod. Опускание u тоже не имеет никакого эффекта. Это просто устаревший аргумент? Спасибо.
Эта страница man chmod
охватывает это.
Это означает, что chmod u+x somefile
предоставит только владельцу разрешения на выполнение этого файла, тогда как chmod +x somefile
будет таким же, как chmod a+x somefile
.
В man-странице chmod говорится:
Формат символического режима -
[ugoa...][[+-=][rwxXstugo...]...][,...]
. Можно указать несколько символических операций, разделенных запятыми.Комбинация букв «ugoa» управляет доступом пользователей к файлу: пользователь, который владеет им (u), другими пользователями в группу файлов (g), других пользователей, не входящих в группу файлов (o), или всех пользователей (a). Если ни одно из них не задано, эффект будет таким, как если бы дано «a», но биты, заданные в umask, не затрагиваются.
blockquote>
chmod u+x file
означает добавление исполняемого бита к владельцу файла при игнорировании umask
(ваш мод будет установлен без вопросов). chmod +x file
означает добавление исполняемый бит для владельца, группы и других при рассмотрении umask
(сначала проверьте с помощью umask
, затем примените моды, это может иметь разные эффекты, основанные на значении umask). создадим два файла:
$ touch file1 file2
$ ls -l file1 file2
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:45 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:45 file2
Теперь я установил umask
в «111» для удаления исполняемых битов: umask 111
.
$ chmod u+x file1
$ chmod +x file2
$ ls -l file1 file2
-rwxrw-rw- 1 ravexina ravexina 0 Aug 5 01:47 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:47 file2
Как вы видите, chmod
проигнорировал umask
, а файл1 получил исполняемый бит для своего владельца, но второй ничего не сделал, потому что он рассматривает значение umask.
chmod u+x
сделает исполняемый файл для вашего пользователя (он добавит его только вашему пользователю, хотя он может быть уже исполнен владельцем группы или «другим»).
chmod +x
или chmod a+x
(«все плюс исполняемый бит») делает файл исполняемым всеми.
Если вы сделаете это в каталоге, вместо этого он сделает поиск каталогов. I.e., вы можете перечислить содержимое каталога, на которое у вас есть разрешение + x.
Просто выполнение +x
применит его ко всем флагам: [user, [group, [others.
Тип man chmod
для получения дополнительной информации.
Прежде всего, я предлагаю вам прочитать эти вопросы и ответы, приведенные ниже:
Это поможет вам понять все необходимые части, которые вам нужно знать.
chmod +x
равна chmod ugo+x
(На основании значения umask
) chmod a+x
равно chmod ugo+x
(Без учета значения umask
) Результат chmod a+x
заключается в том, чтобы установить исполняемый бит для всех (владелец, группа, другие), легко?
Однако с chmod +x
это немного сложно, он говорит, что использует значение umask
и на основе этого значения добавляет x
всем, кто разрешен.
Итак, если umask
моей среды: 0002
:
$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx
В этой ситуации будет добавлено x
пользователю (владельцу), группе и другим пользователям (что является ситуацией по умолчанию для большинства системы), это точно так же, как chmod ugo+x
или то же, что и chmod a+x
, или в более подробной форме:
chmod u+x,g+x,o+x
Можете ли вы определить связь между chmod u+x,g+x,o+x
и выходом umask -S
?
Теперь давайте изменим umask
текущей оболочки на 0003
:
$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r
Как вы теперь видите, только владелец и группа получат исполняемый бит и а не другие. Это означает, что chmod +x
теперь равно chmod u+x,g+x
или chmod ug+x
.
Что произойдет, если я запустил chmod +w
в файле после установки umask
- 0003
?
Как и раньше, это влияет только на user
и group
файла, потому что 3 также удаляет разрешение на запись (2).
Он имеет тот же эффект, когда вы удаляете бит как chmod -w
:
$ mkdir test
$ stat -c %A test
drwxrwxr-x
$ umask
0002
$ chmod +w test
$ stat -c %A test
drwxrwxr-x
$ chmod a+w test
$ stat -c %A test
drwxrwxrwx
$ chmod -w test
chmod: test/: new permissions are r-xr-xrwx, not r-xr-xr-x
$ stat -c %A test
dr-xr-xrwx
chmod +x file
отличным отchmod a+x file
- см. Ответ Равешины для деталей. – Cinnam 2 December 2017 в 00:50