Добрый день!
Мы используем keyexec
в связке с xfreerdp
в Ubuntu-based дистрибутиве уже более 6 лет.
В новой версии дистрибутива Ubuntu 20.04 столкнулись с проблемой, что keyexec
работает только будучи запущенным из терминала. Если запускать его с ярлыка, вылетает с ошибкой id_key not found
(если в desktop файле указать Teminal=true
то и keyexec
работает)
При исследовании характера проблемы, обнаружилось, что gnome-terminal
выполняется отдельно от nemo-desktop
(в другом “потоке”)
cinnamon-sessio─┬─agent───2*[{agent}]
<cut>
├─nemo-desktop───3*[{nemo-desktop}]
<cut>
systemd─┬─(sd-pam)
├─dbus-daemon
<cut>
├─gnome-terminal-─┬─bash
<cut>
Я не владею терминологией и знаниями по управлению ключами в ядре, но всё выглядит так, будто потомки cinnamon-session
не имеют доступа к связке ключей пользователя root
, хотя потомки systemd (sd-pam)
имеют.
В процессе серфинга натолкнулся на такую “проблему”
Из чего сделал вывод, что systemd
начиная с версии 233
, изменил подход к работе с ключами. Вот что Поттеринг пишет:
Note that systemd these days sets up a per-service session keyring, that is not linked up to
@us
or anything else, the keychains are kept separate on purpose. If you want to link them up, then you need to do that manually now.
Дальнейшее обсуждение “проблемы”
Предполагаю, что требуются исправления в пакетах pam_keystore
и keyexec
, чтобы или линковать ключ в нужное “пространство” или/и выставлять на него необходимые права.
Кстати, пример из старой документации так-же не работает, если явно не слинковать связки:
root@cinnamon:~# keyctl request user seamus
request_key: Required key not available
root@cinnamon:~# keyctl link @us @s
root@cinnamon:~# keyctl request user seamus
662447047
root@cinnamon:~#
Я понимаю, что Калька не использует systemd
, но мне очень хотелось бы получить помощь в устранении этой проблемы.