'chmod u + x' против 'chmod + x'


113

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

Ответы:


150

Справочная страница chmodохватывает это.

  • ты выступает за пользователя.
  • г обозначает группу.
  • о выступает за других.
  • А означает для всех.

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

Страница руководства chmod гласит:

Формат символического режима есть [ugoa...][[+-=][rwxXstugo...]...][,...]. Можно указать несколько символических операций, разделенных запятыми.

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


У меня есть маленький вопрос, в чем разница между + x и, скажем, 111. Это делает оба исполняемых
TheBro21

Это потому, что 1 является восьмеричной нотацией, которая обозначает разрешение на выполнение. 111 означает исполняемый файл для пользователя, группы и других.
Октавиан Дамиан

Отличный чистый ответ
m4heshd

Эффект масок важен, он chmod +x fileотличается от других chmod a+x file- см. Подробности в ответе Равексины.
Cinnam

19

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

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


Обещаю, что сначала проверил руководство, но не увидел его, так как пропустил описание и переключился на варианты. Я вижу их сейчас, хотя :-)
Натан Шверманн

14

Требования

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

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


Укороченная версия

  • 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

7

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

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

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


извините, но эта вещь не работает для меня. Я попробовал это с sudo и не получил это работает на моем компьютере. askubuntu.com/questions/178231/how-to-set-permission-in-ubuntu
Гупта

@AnkitGupta Я не уверен, что ты говоришь. Мой комментарий не был предназначен для устранения проблемы в другом вопросе и ответах. Попробуйте вместо этого попросить разъяснений к ответам. Измените свой вопрос, чтобы сказать, что вы пытались. Покажите вывод.
Белаква

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и file1 получил исполняемый бит для своего владельца, однако второй ничего не сделал, потому что рассматривает значение umask.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.