Как навсегда изменить режим umask?

Вопрос или проблема

Я прочитал несколько статей, таких как эта старая о том, как изменить режим umask, но все еще не могу разобраться с этим на 100%. У меня установлена Ubuntu 14.04 с ядром Xenial с умолчательным umask 0002, и моя цель – установить umask 0027 на постоянной основе по всей системе. Как мне это сделать? Какой будет лучший способ это осуществить?

Спасибо @waltinator за то, что указал мне правильное направление.

Отсюда я понял, как легко установить режим umask на 0027: просто выполните в терминале:

sudo gedit /etc/login.defs

или с помощью nano, который вам удобнее.

Найдите строку:

Prefix these values with "0" to get octal, "0x" to get hexadecimal.

ERASECHAR   0177
KILLCHAR    025
UMASK       027

Отредактируйте последнюю строку, касающуюся UMASK, это установит umask на 0007. Чтобы изменения вступили в силу, просто выйдите и войдите обратно в систему.

Обратите внимание на строки выше: Если USERGROUPS_ENAB установлен на “yes”, это изменит значение по умолчанию для UMASK…используется в качестве групповых прав, например, 022 станет 002

Итак, для того чтобы umask 0027 вступил в силу, спуститесь до строки:

USERGROUPS_ENAB yes

и измените её на:

USERGROUPS_ENAB no

Готово. После того как вы вышли и вошли обратно, выполните в терминале umask, и он покажет вам режим 0027.

Теперь создайте новый файл с помощью touch в терминале:

touch testfile

Теперь проверьте права:

stat -c %a ~/testfile

Это должно вернуть 640

ОБНОВЛЕНИЕ

Существует еще один простой способ:

nano ~/.bashrc

Добавьте

#Установить режим umask
umask 0027

Закрыть и сохранить, выйти и войти обратно. Должно сработать и для вас.

Простая команда man -k umask должна была привести вас к чтению man pam_umask, которая частично говорит:

DESCRIPTION
pam_umask - это модуль PAM для установки маски создания файла
текущей среды. Umask влияет на умолчательные права доступа, назначаемые
новосозданным файлам. 

Там также говорится,

The PAM module tries to get the umask value from the following places
   in the following order:

   ·   umask= argument

   ·   umask= entry in the user's GECOS field

   ·   UMASK= entry from /etc/default/login

   ·   UMASK entry from /etc/login.defs (influenced by USERGROUPS_ENAB in
       /etc/login.defs)

Я использовал ответ JoKeR, чтобы добиться системного umask 027, но я был осведомлен, что, когда я использовал USERGROUPS_ENAB no, это требовало больше управления группами. Поэтому я чувствую, что нашел лучший ответ, в основном:

  1. Убедитесь, что пакет pam-modules установлен; это сделает модуль pam_umask доступным.
  2. Убедитесь, что в /etc/pam.d/common-session есть строка вида
    session optional pam_umask.so

    чтобы модуль pam_umask был включен.

  3. В соответствии с мануалом pam_umask, умолчательный umask определяется при входе в систему, проверяя каждое из следующих мест, по порядку:
    • Твёрдое системное значение по умолчанию, установленное в /etc/pam.d/common-session. Чтобы установить
      его таким образом, замените строку из этого файла, упомянутую ранее, на
      эту:

      session optional pam_umask.so umask=027
    • Запись в поле GECOS конкретного пользователя в /etc/passwd переопределяет мягкое системное значение по умолчанию для этого конкретного пользователя. Создайте эту запись с помощью команды вида:
      chfn --other="umask=027" username
    • Строка вида UMASK=027 в /etc/default/login (возможно, вам придется создать этот файл) устанавливает мягкое системное значение по умолчанию.
    • Значение UMASK из /etc/login.defs. Это значение также используется для
      другого (вычисление прав доступа на домашний каталог нового
      пользователя, который создается; см. комментарии в /etc/login.defs
      для получения более подробной информации). Таким образом, лучше избегать опоры на это для установки
      значения umask по умолчанию для обычных входов, чтобы отделить их.

Так что теперь я использую первый вариант (системное значение по умолчанию, установленное в /etc/pam.d/common-session), и оно работает очень хорошо.

Удачи, друзья 🙂

Ответ или решение

Чтобы изменить значение umask на постоянной основе в Ubuntu 14.04, вы можете следовать указанным ниже шагам. Сам umask определяет стандартные разрешения для создаваемых файлов и каталогов, и его настройка позволит вам контролировать, какие разрешения по умолчанию будут установлены.

Способ 1: Изменение файла /etc/login.defs

  1. Откройте терминал.

  2. Отредактируйте файл /etc/login.defs, использовав текстовый редактор, например gedit или nano:

    sudo gedit /etc/login.defs
  3. Найдите строчку, содержащую UMASK:

    UMASK       002
  4. Измените её на:

    UMASK       027
  5. Обратите внимание на параметр USERGROUPS_ENAB. Если он установлен в yes, это повлияет на значение umask:

    USERGROUPS_ENAB yes

    Измените его на:

    USERGROUPS_ENAB no
  6. Сохраните изменения и выйдите из редактора.

  7. Выйдите из системы и войдите обратно, чтобы изменения вступили в силу.

Способ 2: Изменение файла ~/.bashrc

Если предыдущий метод не подходит для вас, вы можете настроить umask для вашего пользователя:

  1. Откройте файл ~/.bashrc в текстовом редакторе:

    nano ~/.bashrc
  2. В конец файла добавьте строку:

    # Установить режим umask
    umask 027
  3. Сохраните изменения и закройте редактор.

  4. Выполните команду:

    source ~/.bashrc

Способ 3: Использование PAM

Если вы хотите установить umask для всех пользователей системы, могут пригодиться настройки PAM:

  1. Убедитесь, что пакет pam-modules установлен.

  2. Откройте файл /etc/pam.d/common-session и добавьте или измените следующую строку:

    session optional pam_umask.so umask=027
  3. Если необходимо установить umask для конкретного пользователя, откройте файл /etc/passwd и измените поле GECOS для этого пользователя:

    chfn --other="umask=027" username

Проверка изменений

После выполнения вышеуказанных шагов вы можете проверить текущее значение umask, выполнив команду:

umask

Это должно вернуть 027.

Примечание

Убедитесь, что вы понимаете, как работает umask. Настройка umask на 027 означает, что новые файлы будут созданы с разрешениями 640 (rw-r—–), а новые каталоги — с разрешениями 750 (rwxr-x—). Эти значения обеспечивают, что только владелец файла может читать и изменять его, а группа имеет доступ только для чтения.

Если у вас возникнут вопросы или трудности, не стесняйтесь обращаться за помощью!

Оцените материал
Добавить комментарий

Капча загружается...