Какая разница между chmod u+x
и просто chmod +x
? Я видел тонну обучающих программ, в которых говорится, что u+x
скрипты должны выполняться. Однако, опущение u
, похоже, не имеет никакого эффекта.
Какая разница между chmod u+x
и просто chmod +x
? Я видел тонну обучающих программ, в которых говорится, что u+x
скрипты должны выполняться. Однако, опущение u
, похоже, не имеет никакого эффекта.
Ответы:
Справочная страница chmod
охватывает это.
Это означает, что chmod u+x somefile
предоставит только владельцу разрешения на выполнение этого файла, в то chmod +x somefile
время как то же самое, что и chmod a+x somefile
.
Страница руководства chmod гласит:
Формат символического режима есть
[ugoa...][[+-=][rwxXstugo...]...][,...]
. Можно указать несколько символических операций, разделенных запятыми.Комбинация букв «ugoa» определяет, какие права доступа пользователей к файлу будут изменены: пользователь, которому он принадлежит (u), другие пользователи в группе файла (g), другие пользователи, не входящие в группу файла (o), или все пользователи (а). Если ничего из этого не дано, эффект будет таким, как если бы было указано «а», но биты, установленные в umask, не будут затронуты.
chmod +x file
отличается от других chmod a+x file
- см. Подробности в ответе Равексины.
Простое выполнение +x
применяет его ко всем флагам: [u] ser, [g] roup, [o] thers.
Введите 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 u+x
сделает исполняемый файл для вашего пользователя (он добавит его только для вашего пользователя, хотя он может быть уже исполняемым владельцем группы или «другим»).
chmod +x
или chmod a+x
(«все плюс исполняемый бит») делает файл исполняемым для всех.
Если вы сделаете это с каталогом, он сделает каталог доступным для поиска. Т.е. вы можете перечислить содержимое каталога, на который у вас есть + x разрешение.
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
и file1 получил исполняемый бит для своего владельца, однако второй ничего не сделал, потому что рассматривает значение umask.