в чем разница между umask и chmod

13

Я полностью запутался между umask и chmod. Оба используются, чтобы дать разрешения файлам. Но где именно разница и когда их использовать.

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

umask: umask используется для установки прав доступа к файлам по умолчанию. Эти разрешения будут использоваться для всех последующих файлов при их создании. chmod: используется для изменения прав доступа к файлам и каталогам.

Насколько я понимаю, если, например, создан файл test.doc.

По умолчанию unix выдает файлу 022 код umask.

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

Теперь, что, если я использую Umask 666 для того же файла.

Какая разница, когда я использую CHMOD 666 и Umask 666

user548781
источник
2
umaskустанавливает переменную среды, которая автоматически устанавливает права доступа для вновь создаваемых файлов . chmodизменяет разрешения существующих файлов .
DavidPostill
1
@DavidPostill. Нет, umaskне устанавливает «переменную среды». Он устанавливает маску создания режима файла текущей среды выполнения оболочки.
fpmurphy
@ fpmurphy1 Спасибо за разъяснения :)
DavidPostill

Ответы:

11

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

chmodоднако необходимо, чтобы файл был создан до запуска.

Поэтому, если вы запустите umask, это никак не повлияет на существующие файлы.

NKN
источник
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 не очень практично, поскольку позволяет устанавливать только биты (execute), но для нечитаемых файлов ...)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
Sz.
источник
0

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

Что-то такое.

PanPikuś
источник
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-что не имеет особого смысла.

Ниже вы найдете отличное описание восьмеричного значения, которое вы можете найти здесь от Somnath Muluk, а также с великолепными источниками.

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
R4zZ
источник