расставляй правильно приоритеты и не отвлекайся на мелочи

Что такое umask и как установить права на файл или директорию

Очередной пост из серии: всегда хотел это понять, … Подглядел вот здесь, довольно легкое и доходчивое объяснение того, как посчитать umask, если знаешь какие права в итоге должен иметь твой файл или директория. Как правило, при администрировании Linux систем, больше приходится сталкиваться с фактическими правами, а вот с umask возникают некоторые трудности. Автор оригинальной статьи сам немного запутался, но я все исправил.

Как установить umask по умолчанию?

Узнать текущее значение вашей umask можно просто:

$ umask
$ 0022

Umask для всех пользователей по умолчанию устанавливается в файлах /etc/.bashrc или /etc/.profile. После процедуры начальной инсталляции Linux он равен 0022 (022) или 0002 (002).
Просто добавьте или измените строку с umask:

umask 022

Изменения вступят в силу при следующем входе.

Что такое 0022 и 0002?

По умолчанию umask 0002 используется для обычного пользователя. С этой маской права по умолчанию, для директории, равны 775, а для файла 664.

Для суперпользователя (root) umask по умолчанию равен 0022. С этой маской права по умолчанию, для директории, равны 755, а для файла 644.

Базовые права для директорий, это 0777 (rwxrwxrwx) и для файлов 0666 (rw-rw-rw).

Как посчитать (определить) права файла для маски 022 (пользователь root):
Права по умолчанию: 666
Вычитаемое значение umask: 022 (-)
Итоговые права: 644

Как посчитать (определить) права директории для маски 022 (пользователь root):
Права по умолчанию: 777
Вычитаемое значение umask: 022 (-)
Итоговые права: 755

Вывод

Таким образом umask «отбирает» необходимые права в нужных разрядах: 7-ка полностью все, 2-ка права на запись, 0 оставляет по умолчанию. По-моему очень просто и понятно.

К примеру вот такие команды:

$ umask 077
$ touch file.txt
$ ls -l file.txt

приведут к такому результату:

-rw------- 1 hb hb 0 2010-02-19 05:21 file.txt

И напоследок, пример umask с различными (наиболее часто используемыми) значениями и результирующие (итоговые) права:

Значение umask User Group Others
0000 all all all
0007 all all none
0027 all r none
0077 all none none
12 комментариев на статью:
  1. darkhan:

    Как сделать по отдельным пользователям права по умолчанию 775 при созданий папки или файла.
    это profile пользователя. Что тут нужно сделать ? Ведь почти все закомментированно.

    # ~/.profile: executed by the command interpreter for login shells.
    # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
    # exists.
    # see /usr/share/doc/bash/examples/startup-files for examples.
    # the files are located in the bash-doc package.

    # the default umask is set in /etc/profile; for setting the umask
    # for ssh logins, install and configure the libpam-umask package.
    #umask 022

    # if running bash
    if [ -n «$BASH_VERSION» ]; then
    # include .bashrc if it exists
    if [ -f «$HOME/.bashrc» ]; then
    . «$HOME/.bashrc»
    fi
    fi

    # set PATH so it includes user’s private bin if it exists
    if [ -d «$HOME/bin» ] ; then
    PATH=»$HOME/bin:$PATH»
    fi

  2. установить права на файл « iPhone 4 в Google.ru:

    […] 19 фев 2010 – Что такое umask и как установить права на файл или директорию. Очередной пост из серии: всегда хотел это понять, … Подглядел вот … Перейти на сайт […]

  3. ОЛОЛО:

    НЕ ПРАВИЛЬНО!!!
    ТЫ УБЛЮДОК! Я ИЗ-ЗА ТЕБЯ СИСТЕМУ ЗАПОРОЛ!!!!

  4. unfalse:

    Второй раз натыкаюсь на объяснение работы umask как вычитания. Это не совсем верно. Привожу комментарий одного пользователя:

    >> при создании файла результирующий набор бит прав доступа вычисляется как 0666 & ~umask(побитово).
    т.е. при umask=0022 имеем:
    ~0022 -> 7755 (инверсия бит)
    7755 ? 0666 ->0644 (побитовое И)
    Насчет вычитания это случайное совпадение.

    • admin:

      Спасибо.
      Смысл в первом абзаце: … легкое и доходчивое объяснение …

      Что проще запомнить и применять, логические операции по формуле C: (P&(~Q)) или применять обычное арифметическое вычитание приводящие к аналогичному результату?

      Мне проще второе, Вам, наверное, первое, я не возражаю :-)

  5. unfalse:

    Вот посмотрите примеры из википедии, там ни слова про вычитание:
    https://ru.wikipedia.org/wiki/Umask

    Т.е. сначала проводится операция побитового отрицания значения umask, а затем, полученное значение вычисляется как побитовое И со значением прав создаваемого файла или каталога.

    • admin:

      В английской версии этой страницы вообще очень много умных и полезных «буков» и то-же ни слова про вычитание, но … суть не в этом … я уже ответил выше —^

  6. valeriy:

    Расчет прав доступа руководствуясь правилом: побитовое И между унарным дополнением аргумента маски (используя побитовое НЕ) и режимом полного доступа. Режим полного доступа для директорий — 777, для файлов — 666.
    Для директории:
    777 И (НЕ 022) = (111 111 111) И НЕ(000 010 010) = (111 111 111) И (111 101 101) = (111 101 101) = (rwx r-x r-x) = 755
    Для файла:
    666 И (НЕ 022) = (110 110 110) И НЕ(000 010 010) = (110 110 110) И (111 101 101) = (110 100 100) = (rw- r— r—) = 644

  7. Павел:

    автору респект, нападки умников считаю излишними

Ответить
Обязательные поля помечены *