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

В прошлом я всегда ставил umask в ~/.profile, Я установил umask из 077 поэтому мои документы получают разрешение 600 (rw-------), Но установив это на ~/.profile больше не работает в Ubuntu 17.04.

Так как новые документы создаются в сеансе gnome в Ubuntu 17.04, где я могу настроить их так, чтобы они создавались с разрешением 600?

7 ответов

Чтобы установить разрешения для всех каталогов и файлов, которые создаются пользователем в любой день:

  1. sudo nano /etc/pam.d/common-session
  2. Найдите строку с "необязательным сеансом pam_umask.so"
  3. Измените это на "необязательный сеанс pam_umask.so umask=0077"
  4. Сохраните файл.
  5. Перезагружать.

Новых файлов будет 600. Новых каталогов будет 700.

Ubuntu 18.04, должен работать на 17.04 и другие

Согласно страницам руководства, есть несколько мест, где мы можем установить umask для модуля PAM, чтобы найти; это даже дает пример. Я установлю это в /etc/pam.d/login, Обратите внимание, что этот файл не существует в моей версии Ubuntu, и в этом случае мы можем его создать.

$ sudo sh -c "echo 'session optional pam_umask.so umask=0027' >> /etc/default/login"

$ more /etc/default/login
session optional pam_umask.so umask=0027

Злой Жук

Теперь, если мы перезапустим и попросим umask в терминале, мы все равно получим 0022 а не 0027 это было установлено. См. Ошибка № 1685754.

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

$ touch terminal-file
$ ls -l
-rw-r-----  1 daniel daniel    0 jan 28 21:21 gedit-file
-rw-r--r--  1 daniel daniel    0 jan 28 21:22 terminal-file

Рекомендации

Недавно я столкнулся с этим в Ubuntu 20.04 TLS и нашел решение.

      $ man -k umask
$ man pam_umask

Это даст нам расположение справочных страниц, на которых обсуждается umask — всю информацию можно найти там.

Из /etc/pam.d/common-session :

Модуль pam_umask установит umask в соответствии с системным значением по умолчанию в /etc/login.defs и пользовательскими настройками.

Это решает проблему разных настроек umask с разными оболочками, диспетчерами отображения, удаленными сеансами и т. д.

Из PAM_UMASK(8):

pam_umask — это модуль PAM для установки маски создания режима файла для текущей среды. Модуль PAM пытается получить значение umask из следующих мест в следующем порядке:

umask= запись в пользовательском поле GECOS

umask= аргумент UMASK запись

из /etc/login.defs (под влиянием USERGROUPS_ENAB в /etc/login.defs)

UMASK= запись из /etc/default/login

Обратите внимание на текст в скобках: под влиянием USERGROUPS_ENAB в /etc/login.defs.

Что такое USERGROUPS_ENAB?

Из /etc/login.defs:

Если для USERGROUPS_ENAB установлено значение «да», это изменит это значение по умолчанию UMASK для частных групп пользователей, т. е. uid совпадает с gid, а имя пользователя совпадает с именем основной группы: для них будут использоваться разрешения пользователя. в качестве групповых разрешений, например, 022 станет 002.

Если не указано, маска разрешения (umask) инициализируется значением 022.

Теперь вы можете запустить это:

      $ sudo nl /etc/login.defs | grep USERGROUPS_ENAB

чтобы дважды проверить, установлено ли для USERGROUPS_ENAB значение «да», раскомментировано ли оно (по умолчанию) и в какой строке документа вы можете его найти.

Поэтому, когда вы меняете значение по умолчанию «UMASK 022» на «UMASK 027», если для параметра USERGROUPS_ENAB установлено значение «yes», вы увидите, что для вашего umask установлено значение 007 (а не 027), так как игнорируется 2-я позиция (группа разрешения).

Решение этой проблемы простое: раскомментируйте строку, где для «USERGROUPS_ENAB» установлено значение «yes». Если вы изменили значение umask на «UMASK 027», после перезагрузки для umask будет установлено значение 027.

Вы можете убедиться в этом, запустив это в своей оболочке.

      $ umask

Подводя итог, единственный файл конфигурации, который имеет значение, — это /etc/login.defs .

Установите желаемое значение umask и обязательно раскомментируйте строку USERGROUPS_ENAB, чтобы также изменить разрешения группы.

Надеюсь это поможет.

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

Это буквально то, что ваш ~/.profile говорит. Вы перелогали когда-то изменилось? Это должно работать нормально.

Также:

This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login exists.

Собственно подтвердил проблему на только что установленном Ubuntu 17.04. Даже полное обновление все еще вызывает эту проблему, и даже ~/.bash_profileигнорируется, кажется, проблема в том, что интерпретатор команд не читает эти файлы после входа в систему.

Ты можешь использовать ~/.bashrc на данный момент, который все еще работает нормально и читается во время входа в систему.

Поэтому, немного покопавшись, кажется, что bash больше не запускается по умолчанию с параметром --login, что означает, что он не читает ~/.profile. Начиная новый bash с umask в ~ /.profile с bash --login устанавливает umask правильно, начиная bash без него, хотя игнорирует ~/.profile. Не уверен, что было изменено, но это кажется мне ошибкой, если не было намеренно изменено.

Если вы используете GDM, он не читает ~/.profile как LightDM делает. И терминал обычно открывает не входящую в систему оболочку. Чистый эффект заключается в том, что ~/.profile вообще не загружается при открытии терминала после входа в систему с помощью GDM.

Или:

  • вставьте свои настройки в ~/.bashrc, или же
  • настройте терминал на запуск оболочки входа или
  • переключиться на LightDM

У меня есть обходной путь, по крайней мере, на Fedora 31:

sudo vi /etc/profile.d/umask.sh
umask <your_umask>

sudo vi /etc/login.defs
UMASK <your_umask>

sudo vi /usr/local/bin/systemd-user
/usr/lib/systemd/systemd --user

sudo chmod a+x /usr/local/bin/systemd-user

sudo vi /usr/lib/systemd/system/user@.service
ExecStart=-/usr/local/bin/systemd-user

В Ubuntu 18.04.3 я попытался создать /etc/default/login с участием session optional pam_umask.so umask=0027 как говорит Дэниел, но у меня это не сработало, вместо этого я изменил маску в /etc/login.defs и это сработало.

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

Другие вопросы по тегам