Мне необходима работоспособность от root команды # su -l -c 'xdg-open http://www.ru' CURRENTUSER В X-ах оно работает. Для Wayland не хватает пары моментов: * Проброса $WAYLAND_DISPLAY, что одной строкой делается, как с $DISPLAY * Выставления $XDG_RUNTIME_DIR. Тут не знаю, как правильно взять, чтоб не разошлось ни с кем. Т.е. при пробросе $WAYLAND_DISPLAY команда # su -l -c 'XDG_RUNTIME_DIR=/run/user/CURRENTUSER_UID xdg-open http://www.ru' CURRENTUSER работает упешно. P.S. Я пользуюсь, чтоб из-под root в acc можно было ссылки открывать в пользовательском браузере, а не в root-овом. Например, в alterator-notes.
2 Shaba: не знаешь, systemd ставит пользователю при логине $XDG_RUNTIME_DIR?
(Ответ для Sergey V Turchin на комментарий #1) > 2 Shaba: не знаешь, systemd ставит пользователю при логине $XDG_RUNTIME_DIR? Отвечу сам. Да, pam_systemd устанавливает $XDG_RUNTIME_DIR при логине.
Следовательно, `su -l` тоже должен По схожему алгоритму с https://git.altlinux.org/gears/s/systemd.git?p=systemd.git;a=blob;f=src/login/pam_systemd.c Там прямо xsprintf(rt, "/run/user/"UID_FMT, ur->uid); , за исключением проверок в validate_runtime_directory()
Открывать сайты в веб-браузере от root кажется мне странной затеей. Проблема в том, что alterator-browser-qt запущен от root. Если была бы возможность запускать его от пользователя, а уже доступ к контенту он получал через авторизацию, как то происходит в веб-браузере, то всё было бы хорошо.
Добиться того, чтобы XDG_RUNTIME_DIR правильно выставлялся в suминус-окружении — хорошая задача, давно пора это сделать. Но это не так-то просто сделать правильно :( Этот каталог, как известно, создаётся по открытии первого сеанса некоторого uid и рекурсивно удаляется по закрытии последнего сеанса этого uid. То есть, все, кто порождают сеансы или иные окружения, где выставляется XDG_RUNTIME_DIR, должны обеспечить, что он есть. `su -l` от некоторого усера может стать первым процессом от этого усера с момента загрузки (это не про xdg-open из инсталлятора, а вообще), и в этом случае просто назначить XDG_RUNTIME_DIR нельзя, нужно обеспечить его создание кем-то привилегированным. Можно и забить, но это тогда сильноскрытое, трудноотлаживаемое ветвление между двумя ситуациями — каталог то есть, то нет, и со стороны кажется, будто от балды. Лучше одно поведение ("обеспечивать наличие"), чем два (у su и у всех остальных). Системдоиды решили, что можно этого добиться, везде включая модуль pam_systemd, который всё сделает — создаст сеанс в logind (и потом закроет сеанс в logind), тот запустит (и потом остановит) user@%i.service, у последнего зависимость "BindsTo=user-runtime-dir@%i.service After=user-runtime-dir@%i.service". Если мы не хотим включать pam_systemd в su-памсервис (can o' worms), тогда надо синхронизироваться с этим циклом.
(In reply to Антон Мидюков from comment #4) > Открывать сайты в веб-браузере от root кажется мне странной затеей. > Проблема в том, что alterator-browser-qt запущен от root. Если была бы > возможность запускать его от пользователя, а уже доступ к контенту он > получал через авторизацию, как то происходит в веб-браузере, то всё было бы > хорошо. +1. Говорят, альтератор-2 решит эту проблему?.. GUI-окна не будут работать от root?..
(In reply to Sergey V Turchin from comment #0) > Мне необходима работоспособность от root команды > # su -l -c 'xdg-open http://www.ru' CURRENTUSER > В X-ах оно работает. Можете ли вы полагаться на то, что запущен systemd? Если да, то может подойти вот такой рецепт: # systemd-run -M "$USER"@.host --user -- xdg-open http://www.ru Ещё -G по вкусу, см. help и man-страницу. > Для Wayland не хватает пары моментов: > * Проброса $WAYLAND_DISPLAY, что одной строкой делается, как с $DISPLAY > * Выставления $XDG_RUNTIME_DIR. Тут не знаю, как правильно взять, чтоб не > разошлось ни с кем. > > Т.е. при пробросе $WAYLAND_DISPLAY команда > # su -l -c 'XDG_RUNTIME_DIR=/run/user/CURRENTUSER_UID xdg-open > http://www.ru' CURRENTUSER > работает упешно. > > P.S. > Я пользуюсь, чтоб из-под root в acc можно было ссылки открывать в > пользовательском браузере, а не в root-овом. Например, в alterator-notes.
(Ответ для Антон Мидюков на комментарий #4) > Открывать сайты в веб-браузере от root кажется мне странной затеей. Мне тоже, поэтому запускаю от пользователя.
(Ответ для Антон Мидюков на комментарий #4) > всё было бы хорошо. И так всё хорошо, за исключением недоработки в su.
(Ответ для Arseny Maslennikov на комментарий #6) > Говорят, альтератор-2 решит эту проблему? Эту -- нет. Свою такую же -- да.
(Ответ для Sergey V Turchin на комментарий #8) > (Ответ для Антон Мидюков на комментарий #4) > > Открывать сайты в веб-браузере от root кажется мне странной затеей. > Мне тоже, поэтому запускаю от пользователя. То есть в предлагаемом решении в комментарии 3 будет запускаться от пользователя?
(Ответ для Arseny Maslennikov на комментарий #7) > Можете ли вы полагаться на то, что запущен systemd? Видимо, придётся.
(Ответ для Антон Мидюков на комментарий #11) > То есть в предлагаемом решении в комментарии 3 будет запускаться от > пользователя? Я о ином тут не писал.
(Ответ для Sergey V Turchin на комментарий #0) > при пробросе $WAYLAND_DISPLAY команда > # su -l -c 'XDG_RUNTIME_DIR=/run/user/CURRENTUSER_UID xdg-open http://www.ru' CURRENTUSER > работает упешно.
(Ответ для Sergey V Turchin на комментарий #14) > (Ответ для Sergey V Turchin на комментарий #0) > > при пробросе $WAYLAND_DISPLAY команда > > # su -l -c 'XDG_RUNTIME_DIR=/run/user/CURRENTUSER_UID xdg-open http://www.ru' CURRENTUSER > > работает упешно. Кстати, а в чём проблема пробрасывать $WAYLAND_DISPLAY? У alterator-browser, запущенном под root, эта переменна задана.
(Ответ для Антон Мидюков на комментарий #15) > Кстати, а в чём проблема пробрасывать $WAYLAND_DISPLAY? У alterator-browser, > запущенном под root, эта переменна задана. (Ответ для Sergey V Turchin на комментарий #0) > * Проброса $WAYLAND_DISPLAY, что одной строкой делается, как с $DISPLAY