Использование Gnome 3.18. Я делюсь файлами между другими членами семьи, но по умолчанию umask в моем дистрибутиве (archlinux) есть 0022
. Таким образом, каждый созданный файл / каталог недоступен для записи в нашей общей группе.
Я пытался поставить umask 0002
в /etc/profile
но гном сессия все еще использует 0022
. Тем не менее, это работает для оболочки bash для входа в систему.
Я также попытался добавить эту строку в /etc/pam.d/system-auth
:
session required pam_umask.so umask=0002
она имеет тот же эффект, что и в /etc/profile
. Я старался
Если я вручную изменяю маску в оболочке терминала gnome, то запускаю из нее приложение, скажем, gedit, тогда созданные у него файлы имеют необходимые разрешения. Если я запускаю gedit из меню gnome, это не так. Поэтому я действительно хочу установить umask для сессии gnome, и я не могу найти, где это сделать.
РЕДАКТИРОВАТЬ (чтобы ответить на комментарий Жиля): я использую gdm 3.18 в качестве DM. Я также попытался добавить строку pam_umask в /etc/pam.d/gdm-launch-environment
. Все остальные gdm-*
файлы содержат session
включения из system-auth
файла, поэтому им не нужно больше. Это ничего не меняет.
/etc/login.defs
содержит, UMASK 077
но также USERGROUPS_ENAB yes
который должен установить umask
либо 0077
либо 0007
для пользователей, основной группой которых является имя пользователя.
Единственный файл, который содержит 022
для umask в /etc
это, /etc/profile
но это была моя первая попытка.
Что касается /etc/Xsession.d
, у меня нет этого каталога. Кроме того, поскольку wayland теперь является сервером отображения по умолчанию, я не уверен, что umask должен быть установлен как часть инициализации X, даже если я все еще использую его сам.
/etc/Xsession.d
или другой файл/etc/pam.d
(я предполагаю, что вы хотите установить это для всей системы). Или возможно/etc/login.defs
.tty
илиssh
логины, и они в основном те же, на самом деле (используяpam_umask
). Они не работают с моей сессией гномов. Так что я не могу никому давать награду. Я не знаю, относится ли это к gnome в Xorg на archlinux. Я протестирую с другими дистрибутивами, когда у меня будет время.Ответы:
Некоторые приложения Gnome запускаются с помощью
systemd --user
, в этом случае umask устанавливается systemd0022
независимо от настроенного значения для pam_umask . Я не знаю каких-либо обходных путей, но я открыл проблему на системном трекере github. Эта проблема также сообщается в Gnome bugzilla .Umask set using
pam_umask
работает как положено для приложений, которые не запускаютсяsystemd --user
.В Ubuntu bugzilla предлагается один обходной путь для размещения переопределений службы systemd для всех уязвимых приложений.
Чтобы исследовать это самостоятельно
Вы можете перечислить процессы, запущенные в вашей системе, в древовидном формате (родительские / дочерние процессы), используя:
Найдите PID для: (1) экземпляра вашей сессии systemd --user ; (2) запущенное им приложение , такое как gedit, которое покажет systemd --user как дочерний процесс ; и (3) процесс в вашем сеансе, не запущенный systemd --user .
Сравните umasks, указанные в procfs :
Systemd --user себя (1) и процессов не запущенных ею (3) должна иметь правильные биты полномочий , который был установлен на pam_umask . Процессы, запущенные systemd --user (2), будут иметь маску
0022
.источник
Проблема в том, что упомянуто Себастом. Я перепробовал много вещей, но затем я нашел обходной путь, который заключается в перезаписи UMask (для каждого пользователя) dbus:
В открывшемся файле просто напишите:
Файл сохраняется в .config / systemd / user / dbus.service.d / override.conf и переопределяет umask по умолчанию для dbus, который, как я предполагаю, наследуется от systemd --user, так как dbus запускается им. Просто выйдите из системы и войдите снова, и приложения gnome должны использовать указанный umask. Просто обходной путь, но он работает для меня.
источник
Вместо этого
umask
вы можете использоватьusergroups
опцию, для которойpam_umask
у этого пользователя и группы те же разрешения, что и у классического unix-способа совместного использования папок.источник
Чтобы установить umask по умолчанию для всей системы, вы должны включить его в первую очередь, что довольно хорошо объяснено здесь:
Ссылка выше для Debian и Ubuntu, но то же самое для всех других систем Linux.
Чтобы включить его umask (который может быть уже на месте), вам нужно добавить строку в
/etc/pam.d/common-session
:После включения вы можете установить его в:
Я вижу, вы уже нашли этот файл, поэтому все, что вам нужно сделать, это установить:
И установите его UMASK на 0002 или как хотите.
Это установит значение по умолчанию для всей системы, что означает, что все пользователи будут получать umask оттуда, если они специально не установят иное в своих .profile или .bashrc
источник
common-*
общие настройки. Arch, как RedHat, используетsystem-auth
для этого файл. Во всяком случае, я пытался ваше предложение о добавленииsession optional pam_umask.so
и иUMASK 002
в ,/etc/login.defs
как я ожидал, и как сpam_umask.so umask=0002
, он работал на TTYlogin
сессии (или через SSH) , но Gnome установить0022
биты полномочий , как всегда. Gnome должен использовать внутреннюю настройку umask, или archlinux использует одну… Я попробую другой дистрибутив, чтобы увидеть, возникает ли проблема тоже.Для сеанса входа в систему: добавьте
umask 0002
в свой$HOME/.profile
(или/etc/profile
).Для сеанса Gnome: добавьте
umask 0002
в свой$HOME/.gnomerc
источник
РЕДАКТИРОВАТЬ: Чтобы заставить systemd установить umask сессии gnome, я создал файл umask.conf в /etc/systemd/system/display-manager.service.d/ со следующими строками:
После перезагрузки компьютера это позволяет всем процессам
user.slice
соответствовать требуемому umask. Выйти не было достаточно, чтобы изменения вступили в силу, поэтому я бы посоветовал перезагрузить ваш компьютер перед выполнением тестов на umasks процесса.Info Дополнительная информация:
источник
/etc/systemd/system/gdm.service.d/umask.conf
содержащего только один,[Service]\nUMask=0002
должно быть достаточно.Просто хотел добавить, что
pam_umask
справочные страницы предоставляют довольно хорошую информацию, чтобы помочь вам выяснить, откуда исходит ваш umask. В частности:Как кто-то сказал, вы должны установить это в
common-session
файле в каталоге/etc/pam.d
.Обратите внимание, что логины, которые не используют pam (например, те, которые используют
getty
илиlogin
будут иметь свой umask черезlogin.defs
.источник
При установке Fedora 29 с Gnome я обнаружил, что программы, запускаемые с панели запуска Gnome, оставляют файлы для чтения, другие, 0022. Пэм, по-видимому, использует /etc/login.defs, как указано выше. Однако редактирование маски там, 0077, не изменило поведение Gnome. Я также должен был отредактировать / etc / profile и / etc / bashrc - оба значения вернули значение 0022.
Было бы хорошо, если бы в Fedora было одно место для этого, но записи в / etc / profile и / etc / bashrc по-разному устанавливают маску для пользователей с идентификаторами выше или ниже 200, поэтому кажется, что одна маска не подходит всем.
Хотя на данный момент это исправление, проблема не полностью решена, так как пользователь gnome по-прежнему не может настроить свой собственный umask, поскольку он применяется к приложениям, запускаемым из средства запуска gnome. Кажется, у Gnome должна быть опция config для этого umask. (Может быть, но я не нашел.)
источник
У меня есть обходной путь по крайней мере на Fedora 31:
источник