Я полностью запутался между umask и chmod. Оба используются, чтобы дать разрешения файлам. Но где именно разница и когда их использовать.
Я прочитал онлайн-документацию, но оба они выглядят одинаково для меня.
umask: umask используется для установки прав доступа к файлам по умолчанию. Эти разрешения будут использоваться для всех последующих файлов при их создании. chmod: используется для изменения прав доступа к файлам и каталогам.
Насколько я понимаю, если, например, создан файл test.doc.
По умолчанию unix выдает файлу 022 код umask.
Теперь, когда я изменяю его на chmod 666 test.doc, я могу изменить уровень разрешений этого файла.
Теперь, что, если я использую Umask 666 для того же файла.
Какая разница, когда я использую CHMOD 666 и Umask 666
umask
устанавливает переменную среды, которая автоматически устанавливает права доступа для вновь создаваемых файлов .chmod
изменяет разрешения существующих файлов .umask
не устанавливает «переменную среды». Он устанавливает маску создания режима файла текущей среды выполнения оболочки.Ответы:
Разница в том, что
umask
влечет за собой только новые файлы . Как вы сказали, umask устанавливает разрешения по умолчанию, которые файл / каталог будет иметь во время создания, но впоследствииumask
уже не влияет на них.chmod
однако необходимо, чтобы файл был создан до запуска.Поэтому, если вы запустите
umask
, это никак не повлияет на существующие файлы.источник
umask
файл, у него нетfile
аргумента.umask
сильно отличается отchmod
, на самом деле.Важное отличие еще не было упомянуто:
chmod
устанавливает, ноumask
очищает (ограничивает) биты прав доступа. Вот почему это называется «маска» (как в «битовой маске»).Как писал Дэвид ,
umask
это параметр конфигурации (на уровне процесса), поэтому он не применяется ни к каким конкретным файлам (в отличие отchmod
).Что подводит нас к другому важному моменту:
umask
не ограничивается файлами. Это также применяется при создании каталогов. (См. Также, например, этот ответ .)Также важно, чтобы сама
chmod
команда не зависела от настроенной в данный моментumask
.Теперь к вашему примеру, что бы
umask 666
сделать:Он сообщит текущему процессу (например, вашей оболочке), что любые новые объекты файловой системы должны быть созданы с удаленными
R
+W
битами (4 + 2 = 6) (из любых разрешений, неявно или явно запрошенных при создании). (Таким образом, значение 666 не очень практично, поскольку позволяет устанавливать только биты (execute), но для нечитаемых файлов ...)X
Например:
источник
UMASK = chmod 777 - права доступа umask
Что-то такое.
источник
Разрешение по умолчанию для каталогов / файлов: 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, а также с великолепными источниками.
источник