LINUX.ORG.RU
ФорумAdmin

Задать r/o переменную для пользователя из-под рута при pam_exec

 


0

3

Возможно ли такое сделать? Права в MAte управляются через dconf, и он через переменную $DCONF_PROFILE узнаёт, какой профиль загружать, например админский или юзерский. Можно как-то на этапе логина задавать для логинящегося пользователя такую переменную, в идеале только для чтения? Через pam_exec пробовал, но он от имени рута выполняется, и пользователь этой переменной не видит. Если прописывать в /etc/environment, то для всех пользователей переменная будет одинаковая. А логиниться могут и юзеры и админы одновременно.

Перемещено hobbit из general

Ответ на: комментарий от pfg

Это всё похоже на какой-то бег по бескрайнему полю с бесконечным числом граблей. :( Поместил в .profile скрипт:

export DCONF_PROFILE=user

groups $USER | grep -i «admin» && export DCONF_PROFILE=admin

Теперь GDM вылетает сразу после логина. Хотя в терминале этот скрипт работает.

Deepdig
() автор топика

Можно как-то на этапе логина задавать для логинящегося пользователя такую переменную, в идеале только для чтения?

Только для чтения - нельзя, каждый процесс сам хозяин своих переменных и волен писать туда что угодно. Что касается просто прописывания то я бы в xsession скрипт вставил куда-то до того места где он DE запускает. Или, если mate запускается не бинарником а скриптом (не знаю акой у тебя дистр и как в нём сделано) - то в него.

firkax ★★★★★
()
Ответ на: комментарий от pfg

Что интересно, даже если просто вставить туда (в ~/.profile):

export DCONF_PROFILE=cat ~/.mode

Всё равно вылетает. Странно.

Пробовал вставить скрипт в etc/gdm/postlogin, presession, но всё это исполняется из-под рута, и в сессии пользователя переменная не видна.

Куда же вставить скриптик, чтобы добавить переменную при логине Mate…

Deepdig
() автор топика

Это не подойдет?

$ cat ~/.config/environment.d/60-envvars.conf           
XDG_CONFIG_HOME="$HOME/.config"
XDG_DATA_HOME="$HOME/.local/share"
XDG_CACHE_HOME="$HOME/.cache"
XDG_STATE_HOME="$HOME/.local/state"

В Гноме это точно работает, как там в других ДЕ не знаю.

MoldAndLimeHoney ★★
()
Последнее исправление: MoldAndLimeHoney (всего исправлений: 1)
Ответ на: комментарий от Deepdig

Критикуя - предлагай.

Тут предлагать нечего.

Заодно и поучусь

ЛОР место где помогают тем кто что-то делает сам, а не тащит тонны выхлопов с гопоты с криком «помогите найти ошибку в ДНК».

anc ★★★★★
()
Ответ на: комментарий от anc

Вас похоже гопота покусала, везде она мерещится. Этот недоскрипт я сам и написал, мне он самому не особо нравится, потому и прошу - покажите как сделать красиво.

Deepdig
() автор топика
Ответ на: комментарий от yars068

Нет, мне просто надо управлять Mate через dconf, для этого нужна переменная, которая зависит от наличия доменного пользователя в определённой группе.

Deepdig
() автор топика
Ответ на: комментарий от Deepdig

К сожалению, в Mate нет такого файла и папки

так создай. Эти папки управляются не Mate или любым другим DE, а сустемд. https://wiki.archlinux.org/title/Systemd/User#Environment_variables

Если пользуешься greetd, то он по умолчанию делает source ~/.profile при логине, т.ч. переменные можно задать в этом файле.

Lrrr ★★★★★
()
Ответ на: комментарий от Lrrr

Да, собс-но нашёл где я дурак (а в целом я в этом и не сомневался). .profile замечательно работает, просто я сразу объявлял там боевую переменную DCONF_PROFILE, при запуске MATE dconf не находил профиля с таким названием и препятствовал запуску. Всем спасибо, узнал много нового. Красивого скрипта всё жду ;)

Deepdig
() автор топика