яка різниця між умаскам і чмодом


13

Я повністю заплутаний між umask і chmod. Обидва використовуються для надання дозволів файлам. Але де саме різниця і коли їх використовувати.

Я прочитав онлайн-документацію, але обидва мені так само виглядають.

umask: umask використовується для встановлення дозволів на файли за замовчуванням. Ці дозволи використовуватимуться для всіх наступних файлів під час їх створення. chmod: використовується для зміни дозволів файлів і директорій.

Як я розумію, якщо, наприклад, створено файл test.doc.

За замовчуванням unix надає файлу код 022 umask.

Тепер, коли я змінюю його на chmod 666 test.doc, я можу змінити рівень дозволу цього файлу.

Що робити, якщо я використовую umask 666 для того ж файлу.

Яка різниця це відбувається, коли я використовую chmod 666 та umask 666


2
umaskвстановлює змінну середовища, яка автоматично встановлює дозволи для файлів для новостворених файлів . chmodзмінює дозволи на існуючі файли .
DavidPostill

1
@DavidPostill. Ні, umaskне встановлюється "змінна середовище". Це робиться, це встановити маску створення файлового режиму поточного середовища виконання оболонки.
fpmurphy

@ fpmurphy1 Дякую за роз’яснення :)
DavidPostill

Відповіді:


11

Різниця полягає в тому, що umaskтягне за собою лише нові файли . Як ви заявляли, umask встановлює дозволи за замовчуванням, які матимуть файл / каталог під час створення, але згодом umaskна них більше не впливає.

chmodоднак потрібно створити файл перед його запуском.

Тому, якщо запустити umask, це не матиме ніякого впливу на існуючі файли.


2
Ви не можете використовувати umaskфайл, він не має fileаргументу.
DavidPostill

Правильно, переписав цю частину.
nKn

4

umaskсильно відрізняється від chmodнасправді.

  1. Важлива відмінність поки не згадується: chmodвстановлює, але umask очищає (обмежує) дозвольні біти. Ось чому його називають "маска" (як у "бітмаска").

  2. Як писав Давид , umaskце налаштування конфігурації (на рівні процесу), тому воно не застосовується до будь-яких конкретних файлів (на відміну від chmod).

  3. Що призводить нас до ще одного важливого моменту: umaskне обмежується файлами. Він також застосовується при створенні каталогів. (Див., Наприклад, цю відповідь .)

  4. Також важливо, щоб chmodпоточна настройка не впливала на саму команду umask.

Тепер, до вашого прикладу, що umask 666робити:

Він покаже поточному процесу (наприклад, вашій оболонці), що будь-які нові об’єкти файлової системи повинні бути створені з видаленимиR + Wбітами (4 + 2 = 6) (з будь-яких дозволів, явно або явно запитуваних при створенні). (Отже, 666 - це не дуже практичне значення, оскільки воно дозволяє встановлювати (виконувати) біти, але для нечитабельних файлів ...)X

Наприклад:

$ touch foo; ls -la foo
-rw-r--r-- ... foo   <-- default permissions

$ umask 666
$ touch bar; ls -la bar
---------- ... bar   <-- perms. after the new umask (restriction) is set
$ mkdir foodir; ls -la | grep foodir
d--x--x--x ... dir   <-- not very practical for dirs, either

$ chmod 777 bar; ls -la bar
-rwxrwxrwx .... bar* <-- chmod happily ignores the current umask

$ umask 022
$ touch bong; ls -la bong
-rw-r--r-- ... bong  <-- (so, it seems this was the default umask)

$ chmod 666 bong; ls -la bong
-rw-rw-rw- ... bong  <-- no surprise of any kind here

1

UMASK = chmod 777 - umask-дозволи

umask 022 => 777 - 022 => chmod 755
umask 077 => 777 - 077 => chmod 700
umask 002 => 777 - 002 => chmod 775
umask 007 => 777 - 007 => chmod 770
umask 027 => 777 - 027 => chmod 750
umask 177 => 777 - 177 => chmod 600

Щось схоже.


0

Дозвіл для каталогів / файлів за замовчуванням - umask 022, тоді каталоги встановлюються за замовчуванням з дозволом 755 ( drwx-rw-rw), а файли - з 644 ( -rw-r--r--). В основному ви віднімаєте восьмеричне значення потрібного дозволу від 777 для каталогу та від 666 для файлу. Отже, з наведеного вище прикладу:

(directory) umask 022 => 777 - 022 = 755

(file) umask 022 => 666 - 022 = 644

Ви можете знайти результат umask octalкоманди у джерелі при використанні umask , залежно від вісімки та якщо це файл чи каталог.

Джерело

Однак якщо ви шукаєте chmod 022 <file>каталог, ви повинні отримати таке: d----w--w-що не мало б особливого сенсу.

Нижче ви знайдете чудовий опис восьмеричної величини, яку ви можете знайти тут Сомната Мулука з великими джерелами.

N   Description                      ls   binary    
0   No permissions at all            ---  000
1   Only execute                     --x  001
2   Only write                       -w-  010
3   Write and execute                -wx  011
4   Only read                        r--  100
5   Read and execute                 r-x  101
6   Read and write                   rw-  110
7   Read, write, and execute         rwx  111
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.