Как установить `umask` для всей сессии gnome?

Есть два подхода. Другие уже упоминали tee. Второй подход - это команда "script" и ее варианты, которые записывают все, что отправляется в stdout процессов. Если вам нужно перенаправление в скрипте, то используйте

#!/bin/bash
{
echo start
echo "My first name is $1"
echo "My surname is $2"
echo "Total number of arguments is $#"
echo end
} | tee logfile
12
11.01.2016, 09:52
5 ответов

Вместо изменения umask вы можете использовать параметр usergroups для pam_umask , с этот пользователь и группа имеют те же разрешения, что и классический способ unix для совместного использования папок.

# /etc/pam.d/login or
# /etc/pam.d/common-session or system-auth
session optional pam_umask.so usergroups
2
20.08.2021, 12:15

Для сеанса входа в систему: добавьте umask 0002 в свой $ HOME / .profile (или / etc / profile ).

Для сеанса Gnome: добавьте umask 0002 в свой $ HOME / .gnomerc

1
20.08.2021, 12:15

Некоторые приложения Gnome запускаются systemd --user,в этом случае umask устанавливается systemd на 0022независимо от настроенного значения для pam _umask . Я не знаю никаких обходных путей, но я открылпроблемув системе отслеживания проблем systemd github. Об этой проблеме также сообщается вGnome bugzilla.

Маска Umask, установленная с помощью pam_umask, работает должным образом для приложений, которые не запускаются с помощью systemd --user.

В отношении Ubuntu bugzilla предлагается один обходной путь, заключающийся в переопределении службы systemd для всех уязвимых приложений.

Обновление:pam _umask должно работать должным образом для systemd версии 246 и новее. Новые выпуски дистрибутива должны поставляться с версией, в которой ошибка исправлена.


Расследовать это самому

Вы можете перечислить процессы, запущенные в вашей системе, в формате дерева (родительские/дочерние процессы ), используя:

pstree -Tapu

НайдитеPIDдля:(1)экземпляра вашего сеанса systemd --пользователя ;(2)запускаемое им приложение , такое как gedit, которое будет отображаться как дочерний процесс для systemd --пользователя ; и(3)процесс в вашем сеансе не запущен пользователем systemd --.

Сравните umasks , указанные в procfs:

grep Umask /proc/<pid>/status

systemd --пользователь сам(1)и процессы не запущенные им(3)должны иметь правильный umask который был установлен pam _umask . Процессы, запущенные пользователем systemd --(2 ), будут иметь umask 0022.

7
20.08.2021, 12:15

При установке Fedora 29 с помощью Gnome я обнаружил, что программы, запускаемые с помощью средства запуска Gnome, оставляют файлы, другие для чтения, 0022. Очевидно, Pam использует /etc/login.defs, как отмечалось выше. Однако редактирование там маски 0077 не изменило поведения Гнома. Мне также пришлось отредактировать /etc/profile и /etc/bashrc -, оба из которых возвращали значение 0022.

Было бы неплохо, если бы в Fedora было одно место для этого, но записи в /etc/profile и /etc/bashrc устанавливают маску по-разному для пользователей с ID выше или ниже 200, так что кажется, что одна маска не подходит все.

Хотя на данный момент это исправление,проблема не решена полностью, поскольку пользователь gnome по-прежнему не может установить свою собственную маску umask, поскольку она применяется к приложениям, запускаемым из панели запуска gnome. Кажется, у Gnome должна быть опция конфигурации для этого umask. (Может и есть, но я не нашел.)

0
20.08.2021, 12:15

У меня есть обходной путь по крайней мере на 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
0
20.08.2021, 12:15

Теги

Похожие вопросы