Вопрос или проблема
Я прочитал несколько статей, таких как эта старая о том, как изменить режим 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
, это требовало больше управления группами. Поэтому я чувствую, что нашел лучший ответ, в основном:
- Убедитесь, что пакет pam-modules установлен; это сделает модуль pam_umask доступным.
- Убедитесь, что в /etc/pam.d/common-session есть строка вида
session optional pam_umask.so
чтобы модуль pam_umask был включен.
- В соответствии с мануалом 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. Чтобы установить
Так что теперь я использую первый вариант (системное значение по умолчанию, установленное в /etc/pam.d/common-session), и оно работает очень хорошо.
Удачи, друзья 🙂
Ответ или решение
Чтобы изменить значение umask на постоянной основе в Ubuntu 14.04, вы можете следовать указанным ниже шагам. Сам umask определяет стандартные разрешения для создаваемых файлов и каталогов, и его настройка позволит вам контролировать, какие разрешения по умолчанию будут установлены.
Способ 1: Изменение файла /etc/login.defs
-
Откройте терминал.
-
Отредактируйте файл
/etc/login.defs
, использовав текстовый редактор, напримерgedit
илиnano
:sudo gedit /etc/login.defs
-
Найдите строчку, содержащую
UMASK
:UMASK 002
-
Измените её на:
UMASK 027
-
Обратите внимание на параметр
USERGROUPS_ENAB
. Если он установлен вyes
, это повлияет на значение umask:USERGROUPS_ENAB yes
Измените его на:
USERGROUPS_ENAB no
-
Сохраните изменения и выйдите из редактора.
-
Выйдите из системы и войдите обратно, чтобы изменения вступили в силу.
Способ 2: Изменение файла ~/.bashrc
Если предыдущий метод не подходит для вас, вы можете настроить umask для вашего пользователя:
-
Откройте файл
~/.bashrc
в текстовом редакторе:nano ~/.bashrc
-
В конец файла добавьте строку:
# Установить режим umask umask 027
-
Сохраните изменения и закройте редактор.
-
Выполните команду:
source ~/.bashrc
Способ 3: Использование PAM
Если вы хотите установить umask для всех пользователей системы, могут пригодиться настройки PAM:
-
Убедитесь, что пакет pam-modules установлен.
-
Откройте файл
/etc/pam.d/common-session
и добавьте или измените следующую строку:session optional pam_umask.so umask=027
-
Если необходимо установить umask для конкретного пользователя, откройте файл
/etc/passwd
и измените поле GECOS для этого пользователя:chfn --other="umask=027" username
Проверка изменений
После выполнения вышеуказанных шагов вы можете проверить текущее значение umask, выполнив команду:
umask
Это должно вернуть 027
.
Примечание
Убедитесь, что вы понимаете, как работает umask. Настройка umask на 027
означает, что новые файлы будут созданы с разрешениями 640
(rw-r—–), а новые каталоги — с разрешениями 750
(rwxr-x—). Эти значения обеспечивают, что только владелец файла может читать и изменять его, а группа имеет доступ только для чтения.
Если у вас возникнут вопросы или трудности, не стесняйтесь обращаться за помощью!