Какая разница между 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.