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

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

93
задан 9 March 2011 в 02:55

45 ответов

Просто выполнение +x применит его ко всем флагам: [user, [group, [others.

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

19
ответ дан 4 August 2018 в 19:53
  • 1
    Я обещаю, что сначала проверил руководство, но не видел его, так как я пропустил описание и спрыгнул до вариантов. Я вижу их сейчас :-) – schwiz 9 March 2011 в 03:41
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. [ ! d7] $ 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.

1
ответ дан 4 August 2018 в 19:53

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

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

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

7
ответ дан 6 August 2018 в 03:56

Просто выполнение + x применит его ко всем флагам: [user, [group, [others.

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

19
ответ дан 6 August 2018 в 03:56
  • 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 авг. 5 01:45 file1 -rw-rw-rw- 1 ravexina ravexina 0 авг. 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 авг. 5 01:47 file1 -rw-rw-rw- 1 ravexina  ravexina 0 авг. 5 01:47 file2  

Как вы можете видеть, chmod игнорировал umask , а файл1 пошел t исполняемый бит для его владельца, но второй ничего не сделал, потому что он рассматривает значение umask.

1
ответ дан 6 August 2018 в 03:56
  • 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 авг. 5 01:45 file1 -rw-rw-rw- 1 ravexina ravexina 0 авг. 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 авг. 5 01:47 file1 -rw-rw-rw- 1 ravexina  ravexina 0 авг. 5 01:47 file2  

Как вы можете видеть, chmod игнорировал umask , а файл1 пошел t исполняемый бит для его владельца, но второй ничего не сделал, потому что он рассматривает значение umask.

1
ответ дан 7 August 2018 в 21:54

Просто выполнение + x применит его ко всем флагам: [user, [group, [others.

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

19
ответ дан 7 August 2018 в 21:54

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

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

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

7
ответ дан 7 August 2018 в 21:54
  • 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 авг. 5 01:45 file1 -rw-rw-rw- 1 ravexina ravexina 0 авг. 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 авг. 5 01:47 file1 -rw-rw-rw- 1 ravexina  ravexina 0 авг. 5 01:47 file2  

Как вы можете видеть, chmod игнорировал umask , а файл1 пошел t исполняемый бит для его владельца, но второй ничего не сделал, потому что он рассматривает значение umask.

1
ответ дан 10 August 2018 в 10:09

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

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

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

7
ответ дан 10 August 2018 в 10:09

Просто выполнение + x применит его ко всем флагам: [user, [group, [others.

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

19
ответ дан 10 August 2018 в 10:09
  • 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 авг. 5 01:45 file1 -rw-rw-rw- 1 ravexina ravexina 0 авг. 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 авг. 5 01:47 file1 -rw-rw-rw- 1 ravexina  ravexina 0 авг. 5 01:47 file2  

Как вы можете видеть, chmod игнорировал umask , а файл1 пошел t исполняемый бит для его владельца, но второй ничего не сделал, потому что он рассматривает значение umask.

1
ответ дан 13 August 2018 в 16:29

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

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

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

7
ответ дан 13 August 2018 в 16:29
  • 1
    извините, но эта вещь тоже не сработала для меня. Я пробовал это с помощью sudo и не работал на моем компьютере. [D0] askubuntu.com/questions/178231/how-to-set-permission-in-ubuntu – Anirudha Gupta 20 August 2012 в 23:39
  • 2
    @AnkitGupta Я не уверен, что вы говорите. Мой комментарий не был предназначен для решения проблемы в другом Q & amp; A. Вместо этого попробуйте попросить разъяснений. Измените свой вопрос, чтобы сказать, что вы пробовали. Покажите результат. – belacqua 21 August 2012 в 00:00

Просто выполнение + x применит его ко всем флагам: [user, [group, [others.

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

19
ответ дан 13 August 2018 в 16:29
  • 1
    Я обещаю, что сначала проверил руководство, но не видел его, так как я пропустил описание и спрыгнул до вариантов. Я вижу их сейчас :-) – schwiz 9 March 2011 в 03:41

Требования

Прежде всего, я предлагаю вам прочитать эти вопросы и ответы, приведенные ниже:

Это поможет вам понять все необходимые части, которые вам нужно знать.


Короткая версия

  • 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
12
ответ дан 9 October 2018 в 11:15

Другие вопросы по тегам:

Похожие вопросы: