'chmod u + x' по сравнению с 'chmod + x'

77

В чем разница между chmod u+x и только chmod +x ? Я видел тонну учебников, которые говорят использовать u + x для создания исполняемых скриптов. Однако u не упоминается в справке или руководстве chmod. Опускание u тоже не имеет никакого эффекта. Это просто устаревший аргумент? Спасибо.

    
задан schwiz 08.03.2011 в 23:30
источник

4 ответа

111

Страница man chmod охватывает эту.

  • u обозначает пользователя.
  • g обозначает группу.
  • o означает другие.
  • a обозначает все.

Это означает, что chmod u+x somefile предоставит только владельцу разрешения на выполнение этого файла, тогда как chmod +x somefile будет таким же, как chmod a+x somefile .

Страница man chmod говорит:

  

Формат символического режима   %код%.   Несколько символических операций могут быть   заданные, разделенные запятыми.

     

Комбинация букв 'ugoa'   контролирует доступ пользователей к   файл будет изменен: пользователь, который   владеет (u), другими пользователями в файле   группа (g), другие пользователи не в   группу файлов (o) или всех пользователей (a). Если   ни одно из них не приводится, эффект   как будто дано «а», но биты, которые   устанавливаются в umask, не затрагиваются.

    
ответ дан Octavian Damiean 08.03.2011 в 23:33
источник
18

Просто выполнение +x применит его ко всем флагам: [u] ser, [g] roup, [o] thers.

Введите man chmod для получения дополнительной информации.

    
ответ дан matpie 08.03.2011 в 23:34
7

chmod u+x сделает исполняемый файл для вашего пользователя (он добавит его только вашему пользователю, хотя он может быть уже исполнен владельцем группы или «другим»).

chmod +x или chmod a+x ('все плюс исполняемый бит') делает файл исполняемым всеми.

Если вы сделаете это в каталоге, вместо этого он сделает поиск каталогов. I.e., вы можете перечислить содержимое каталога, на которое у вас есть разрешение + x.

    
ответ дан belacqua 08.03.2011 в 23:51
1
  • 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.

    
ответ дан Ravexina 04.08.2017 в 23:21