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


112

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

Відповіді:


149

Сторінка людини chmodобкладинки це.

  • u означає користувача.
  • g означає групу.
  • o виступає за інших.
  • варто для всіх.

Це означає, що chmod u+x somefileбуде надано лише власник дозволів на виконання цього файлу, тоді як chmod +x somefileце те саме, що chmod a+x somefile.

На сторінці chmod man написано:

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

Комбінація букв "ugoa" визначає, яким чином буде змінено доступ користувачів до файлу: користувача, якому належить (u), інших користувачів у групі файлу (g), інших користувачів, які не належать до групи файлів (o), або всіх користувачів (a). Якщо нічого з цього не наводиться, ефект виглядає так, як якщо б було дано "a", але біти, встановлені в 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.


Вибачте, але ця річ теж не працювала для мене. Я спробував це з судо, і не працював на моєму комп’ютері. askubuntu.com/questions/178231/how-to-set-permission-in-ubuntu
Anirudha Gupta

@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.