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