Как установить umask по умолчанию в Ubuntu 17.04?
В прошлом я всегда ставил umask в ~/.profile, Я установил umask из 077 поэтому мои документы получают разрешение 600 (rw-------), Но установив это на ~/.profile больше не работает в Ubuntu 17.04.
Так как новые документы создаются в сеансе gnome в Ubuntu 17.04, где я могу настроить их так, чтобы они создавались с разрешением 600?
7 ответов
Чтобы установить разрешения для всех каталогов и файлов, которые создаются пользователем в любой день:
- sudo nano /etc/pam.d/common-session
- Найдите строку с "необязательным сеансом pam_umask.so"
- Измените это на "необязательный сеанс pam_umask.so umask=0077"
- Сохраните файл.
- Перезагружать.
Новых файлов будет 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, и теперь все пользователи создают файлы с полным разрешением также для своей группы.