unixforum.org
Gnome по какой то причине стал отображать на рабочем столе содержимое домашней папки, как это отключить?
В прошлый раз такое случилось когда я ставил кеды, но это новая установка, поставил необходимый минимум. Сначала всё работало норм и вот вылез этот глюк.
Спасибо сказали:
Rootlexx Бывший модератор Сообщения: 4444 Статус: GNU generation ОС: Debian GNU/Linux
Re: Значки на рабочем столе в Gnome
Сообщение Rootlexx » 27.01.2010 19:31
Установите опцию GConf /apps/nautilus/preferences/desktop_is_home_dir в значение «ложь». Сделать это можно, либо используя gconf-editor, либо выполнив команду:
gconftool --type boolean --set /apps/nautilus/preferences/desktop_is_home_dir false
Спасибо сказали:
williamwolos Сообщения: 16 ОС: Ubuntu 10.04 Beta 2
Re: Значки на рабочем столе в Gnome
Запустил gconf-editor, нужная опция была отключена, то есть папок не должно было быть. Я галочку поставил, перелогинился, затем убрал и снова перелогинился. Не помогло.
Спасибо сказали:
Rootlexx Бывший модератор Сообщения: 4444 Статус: GNU generation ОС: Debian GNU/Linux
Re: Значки на рабочем столе в Gnome
Сообщение Rootlexx » 28.01.2010 19:20
Что выведет команда:
xdg-user-dir DESKTOP
Спасибо сказали:
williamwolos Сообщения: 16 ОС: Ubuntu 10.04 Beta 2
Re: Значки на рабочем столе в Gnome
vlad@vostro:~$ xdg-user-dir DESKTOP
/home/vlad/
Спасибо сказали:
Rootlexx Бывший модератор Сообщения: 4444 Статус: GNU generation ОС: Debian GNU/Linux
Re: Значки на рабочем столе в Gnome
Сообщение Rootlexx » 28.01.2010 20:56
28.01.2010 20:28
vlad@vostro:~$ xdg-user-dir DESKTOP
/home/vlad/
Понятно, в чём дело?
Просмотрите содержимое ~/.config/user-dirs.dirs и исправьте на нужное. Обратите внимание, что здесь указываются не локализованные имена каталогов.
Спасибо сказали:
williamwolos Сообщения: 16 ОС: Ubuntu 10.04 Beta 2
Re: Значки на рабочем столе в Gnome
Спасибо! Помогло =)
Не локализованные это всмысле не на русском? а у меня вот так выглядит:
XDG_DESKTOP_DIR=»$HOME/.desktop»
XDG_DOWNLOAD_DIR=»$HOME/downloads»
XDG_TEMPLATES_DIR=»$HOME/»
XDG_PUBLICSHARE_DIR=»$HOME/»
XDG_DOCUMENTS_DIR=»$HOME/»
XDG_MUSIC_DIR=»$HOME/»
XDG_PICTURES_DIR=»$HOME/Картинки»
XDG_VIDEOS_DIR=»$HOME/»
А можно ещё сделать чтобы монтируемые устройства на рабочий стол не кидались?
Спасибо сказали:
Rootlexx Бывший модератор Сообщения: 4444 Статус: GNU generation ОС: Debian GNU/Linux
Re: Значки на рабочем столе в Gnome
Сообщение Rootlexx » 29.01.2010 08:06
28.01.2010 22:39
А можно ещё сделать чтобы монтируемые устройства на рабочий стол не кидались?
Спасибо сказали:
katejka Сообщения: 17 ОС: ubuntu
Re: Значки на рабочем столе в Gnome
Сообщение katejka » 27.10.2013 14:00
Прошу прощения, что поднимаю, повторять не хочется темы.
Такая проблема — ничего не помогает убрать директории с раб.стола.
в gconf-editor нет ключей, которыми можно скрыть директории с десктопа, прописать как их грамотно — не знаю, как смогла — так не сработали, не программер я, я так, балуюсь.
в общем картинка такая
xdg-user-dir DESKTOP
/root/Desktop
и странно
~/.config/user-dirs.dirs
bash: /root/.config/user-dirs.dirs: Отказано в доступе
спасибо.
хотелось бы освоить и быть верхом на этом коне)))
Спасибо сказали:
Rootlexx Бывший модератор Сообщения: 4444 Статус: GNU generation ОС: Debian GNU/Linux
Re: Значки на рабочем столе в Gnome
Сообщение Rootlexx » 27.10.2013 15:25
27.10.2013 14:00
xdg-user-dir DESKTOP
/root/Desktop
27.10.2013 14:00
~/.config/user-dirs.dirs
bash: /root/.config/user-dirs.dirs: Отказано в доступе
Спасибо сказали:
katejka Сообщения: 17 ОС: ubuntu
Re: Значки на рабочем столе в Gnome
Сообщение katejka » 28.10.2013 01:43
Rootlexx
в общем. я пересмотрела весь список ключей)))
и картина такова: как бы всё должно выглядеть, как я хочу, но выглядит наоборот!
например, директории прописаны скрытыми с рабочего стола, а корзина на нём, но директории таки на нём, корзина тоже)))))
так что я в непонятках.
на вопрос отвечаю — дурындолина я, от рута привыкла)
Спасибо сказали:
Rootlexx Бывший модератор Сообщения: 4444 Статус: GNU generation ОС: Debian GNU/Linux
Re: Значки на рабочем столе в Gnome
Сообщение Rootlexx » 28.10.2013 14:41
Хм. Может, у вас не nautilus эти значки выводит. Покажите вывод ps -eo args.
Спасибо сказали:
katejka Сообщения: 17 ОС: ubuntu
Re: Значки на рабочем столе в Gnome
Сообщение katejka » 28.10.2013 21:36
ойой, сама не понимаю, вот:
COMMAND
/sbin/init
[kthreadd]
[ksoftirqd/0]
[migration/0]
[watchdog/0]
[migration/1]
[ksoftirqd/1]
[watchdog/1]
[cpuset]
[khelper]
[kdevtmpfs]
[netns]
[sync_supers]
[bdi-default]
[kintegrityd]
[kblockd]
[ata_sff]
[khubd]
[md]
[kworker/0:1]
[khungtaskd]
[kswapd0]
[ksmd]
[khugepaged]
[fsnotify_mark]
[ecryptfs-kthrea]
[crypto]
[kthrotld]
[binder]
[deferwq]
[charger_manager]
[devfreq_wq]
[kworker/0:2]
[scsi_eh_0]
[scsi_eh_1]
[scsi_eh_2]
[scsi_eh_3]
[scsi_eh_4]
[scsi_eh_5]
[kworker/u:4]
[kworker/u:5]
[kworker/u:7]
[kworker/1:1]
[kworker/1:2]
[jbd2/sda1-8]
[ext4-dio-unwrit]
[flush-8:0]
upstart-udev-bridge —daemon
/sbin/udevd —daemon
[irq/42-mei]
/sbin/udevd —daemon
/sbin/udevd —daemon
[cfg80211]
[kpsmoused]
upstart-socket-bridge —daemon
[hd-audio0]
[jbd2/sda2-8]
[ext4-dio-unwrit]
dbus-daemon —system —fork —activation=upstart
/usr/sbin/modem-manager
/usr/sbin/bluetoothd
rsyslogd -c5
NetworkManager
avahi-daemon: running [ubuntu.local]
avahi-daemon: chroot helper
[krfcommd]
/usr/lib/policykit-1/polkitd —no-debug
/usr/sbin/cupsd -F
/sbin/wpa_supplicant -B -P /run/sendsigs.omit.d/wpasupplicant.pid -u -s -O /var/
/sbin/getty -8 38400 tty4
/sbin/getty -8 38400 tty5
/sbin/getty -8 38400 tty2
/sbin/getty -8 38400 tty3
/sbin/getty -8 38400 tty6
whoopsie
acpid -c /etc/acpi/events -s /var/run/acpid.socket
/usr/sbin/irqbalance
lightdm
cron
atd
/usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch -back
/usr/sbin/fsodeviced
/usr/lib/accountsservice/accounts-daemon
/usr/sbin/console-kit-daemon —no-daemon
/usr/lib/upower/upowerd
/usr/lib/i386-linux-gnu/colord/colord
lightdm —session-child 12 19
/usr/lib/rtkit/rtkit-daemon
/usr/sbin/hddtemp -d -l 127.0.0.1 -p 7634 -s | /dev/sda
/sbin/getty -8 38400 tty1
/sbin/dhclient -d -4 -sf /usr/lib/NetworkManager/nm-dhcp-client.action -pf /var/
[hci0]
/usr/bin/gnome-keyring-daemon —daemonize —login
mate-session
/usr/bin/ssh-agent /usr/bin/dbus-launch —exit-with-session mate-session
/usr/bin/dbus-launch —exit-with-session mate-session
//bin/dbus-daemon —fork —print-pid 5 —print-address 7 —session
/usr/bin/mate-settings-daemon
marco
mate-panel
/usr/lib/gvfs/gvfsd
/usr/lib/gvfs//gvfs-fuse-daemon -f /home/unanana/.gvfs
caja -n
zeitgeist-datahub
avant-window-navigator —startup
/usr/lib/polkit-mate/polkit-mate-authentication-agent-1
/usr/bin/zeitgeist-daemon
mate-power-manager
/usr/lib/mate-panel/wnck-applet
/usr/lib/mate-media/mixer_applet2
nm-applet
/usr/bin/pulseaudio —start —log-target=syslog
/usr/lib/mate-panel/notification-area-applet
/usr/lib/mate-applets/mate-cpufreq-applet
/usr/lib/mate-applets/multiload-applet-2
/usr/lib/mate-panel/clock-applet
/usr/lib/pulseaudio/pulse/gconf-helper
/usr/lib/i386-linux-gnu/gconf/gconfd-2
/usr/lib/gvfs/gvfs-gdu-volume-monitor
/usr/lib/udisks/udisks-daemon
/usr/lib/zeitgeist/zeitgeist-fts
udisks-daemon: not polling any devices
/usr/lib/gvfs/gvfs-gphoto2-volume-monitor
/usr/lib/gvfs/gvfs-afc-volume-monitor
/usr/lib/dconf/dconf-service
/usr/lib/gvfs/gvfsd-trash —spawner :1.7 /org/gtk/gvfs/exec_spaw/0
/usr/sbin/dnsmasq —no-resolv —keep-in-foreground —no-hosts —bind-interfaces
/bin/cat
/usr/lib/notify-osd/notify-osd
awn-applet -p /usr/share/avant-window-navigator/applets/quick-prefs.desktop -u 1
python /usr/share/avant-window-navigator/applets/hardware-sensors/hardware-senso
awn-applet -p /usr/share/avant-window-navigator/applets/taskmanager.desktop -u 1
python /usr/share/avant-window-navigator/applets/mail/mail.py —uid=1382036018 —
/usr/sbin/system-tools-backends
/usr/bin/gnome-screensaver —no-daemon
/usr/bin/perl /usr/share/system-tools-backends-2.0/scripts/SystemToolsBackends.p
/usr/bin/gnome-keyring-daemon —start —foreground —components=secrets
/usr/lib/chromium-browser/chromium-browser
/usr/lib/chromium-browser/chromium-browser
/usr/lib/chromium-browser/chromium-browser-sandbox /usr/lib/chromium-browser/chr
/usr/lib/chromium-browser/chromium-browser —type=zygote
/usr/lib/chromium-browser/chromium-browser —type=zygote
/usr/lib/chromium-browser/chromium-browser —type=renderer —lang=ru —force-fie
/usr/lib/chromium-browser/chromium-browser —type=plugin —plugin-path=/usr/lib/
/usr/lib/chromium-browser/chromium-browser —type=renderer —lang=ru —force-fie
/usr/lib/chromium-browser/chromium-browser —type=renderer —lang=ru —force-fie
/usr/bin/mate-screensaver —no-daemon
[kworker/1:0]
[kworker/0:0]
mate-terminal
[mate-terminal]
bash
ps -eo args
.dbus-keyrings
In BB 3.0, why is folder .dbus-keyrings created in my profile?
BleachBit version:
Your operating system:
W10 Pro 1909
- Log in or register to post comments
Tue, 12/10/2019 — 21:23
D-Bus is a messaging system
D-Bus is a messaging system used for software within one computer. For example, it can tell all the applications «a new monitor was connected.» D-Bus does not communicate with the Internet or any other computers.
BleachBit does not directly use D-Bus. BleachBit 3 included an update from GTK 2 to GTK 3, and apparently GTK 3 uses D-Bus.
It should be safe to delete .dbus-keyrings.
—
Andrew, lead developer
- Log in or register to post comments
- Test BleachBit 4.5.1 beta
- BleachBit 4.4.2 released
What is: Linux keyring, gnome-keyring, Secret Service, и D-Bus
Очень длиннопост получился.
Я долго думал – собирать ли всё в одном посте, или всё-таки разбить на несколько, ведь с одной стороны keyrings – это одна тема, D-Bus – другая, а примеры работы с SecretServices – вообще третья.
Тем не менее – решил всё-таки оставить в одном, так как со всем этим разбирался по ходу дела, и все эти темы связаны друг с другом в обсуждаемом контесте хранения конфиденциальных данных.
Вообще история появления этого поста интересна сама по себе:
- началось всё с qtkeychain и Nextcloud (см. Linux: Nextcloud клиент, qtkeychain и ошибка «The name org.freedesktop.secrets was not provided by any .service files»)
- по ходу дела увидел, что пароли от RSA ключей для SSA можно хранить в keychain (см. SSH: RSA-ключи и ssh-agent — управление SSH-ключами и их паролями и Linux: KeePass, SSH и хранение паролей RSA-ключей)
Но когда попробовал использовать gnome-keyring на Arch Linux – стокнулся с проблемами при регистрации самого сервиса и доступа к нему через ssh-agent , что заставило углубиться в вопрос.
Собственно, в этом посте рассмотрим:
- что такое keyring вообще
- какая разница между Linux keyring и GNOME keyring, и связаны ли они друг с другом
- какие реализации keyring существуют
- что такое org.freedesktop SecretService, и какое он имеет отношение к GNOME keyring
- что такое D-Bus, и куда его можно потыкать веточкой, что бы увидеть работу keyring
- и несколько примеров работы с Linux Keyring, GNOME Keyring, KWallet и KeePass в роли keyring backends
Пост ни разу не является предметным “HowTo” – он чисто обзорный, что бы получить представление об всех упомянутых компонентах.
Конкретную работу с KeePass и, возможно, GNOME Keyring для хранения данных рассмотрим в другой раз.
Весь пост писался путём долгого-долгого гугления, поэтому и в самом тексте, и в конце, будет достаточно много ссылок на документацию и материалы, которые использовались в процессе подготовки материала.
Ну и помните, что от ошибок и неточностей никто не застрахован. Welcome to the comments, if any.
Выглядел процесс примерно так:
Что такое keyring
Для начала – что такое “keyring” вообще?
In cryptography, a keyring stores known encryption keys (and, in some cases, passwords).
Much like a keyring in real life allows you to keep certain sets of keys together, a keyring in Passwords and Keys allows you to keep passwords and keys in separate groups.
a keyring service that enables internal server components and plugins to securely store sensitive information for later retrieval
The Linux key-management facility is primarily a way for various kernel components to retain or cache security data, authentication keys, encryption keys, and other data in the kernel.
Итак, понятие keyring – это механизм или конкретный сервис, предназначенный для хранения какой-либо конфиденциальной информации.
Окей, тут разобрались.
Linux keyring vs gnome-keyring
- KERNEL KEY RETENTION SERVICE
- http://www.ict.griffith.edu.au/anthony/info/crypto/passwd_caching.txt
- http://www.ict.griffith.edu.au/anthony/info/crypto/
- https://wiki.gnome.org/Projects/GnomeKeyring
- https://wiki.archlinux.org/index.php/GNOME/Keyring
Теперь перейдём к рассмотрению разницы между Linux kernel keyring и GNOME Keyring: сначала сбило с толку, ибо предполагал, что GNOME Keyring каким-то образом использует механизм keyrings ядра, но нет – это просто разные вещи.
keyrings – in-kernel key management and retention facility
Т.е, Linux keyrings – это механизм ядра для хранения конфиденциальной информации.
GNOME Keyring is a collection of components in GNOME that store secrets, passwords, keys, certificates and make them available to applications.
А GNOME Keyring – коллекция компонентов ( gnome-keyring-daemon , библиотеки, пакет seahorse , etc) для хранения конфиденциальной информации. См. архитектуру GNOME Keyring.
Отличная подборка материалов тут – Tower Floor — Encryption, в частности см. документ Caching Passwords.
Резюме
Подведём итоги различий Linux keyrings и GNOME Keyring:
- ключевая разница:
- Linux keyring – механизм ядра для “кеширования паролей” – хранит их в памяти во время активной сессии системы/пользователя
- gnome-keyring – постоянное хранилище паролей, с хранением информации на диске
- Linux keyring – хранит в памяти, т.к. секреты доступны только во время сесии – их не надо хранить постоянно
- gnome-keyring – создаёт файл на диске, как правило в каталоге ~/.local/share/keyrings/
- Linux keyring – через системные вызовы из user space в kernel space
- gnome-keyring – через DBus
- Linux keyring – keyctl , systemd-ask-password , etc
- gnome-keyring – secret-tool , любая библиотека ( python-keyring ), seahorse , etc
Реализации keyrings
Кроме того, python-keyring упоминает:
- gsheet-keyring – a backend that stores secrets in a Google Sheet. For use with ipython-secrets.
- bitwarden-keyring – a backend that stores secrets in the BitWarden password manager.
И это далеко не все.
Клиенты для работы с такими хранилищами, опять-таки – список далеко не полный:
- libsecret
- python-keyring
- Java-клиент secret-service
- qtkeychain
- secret-tool
- библиотека SecretStorage
Перехват паролей из gnome-keyting
- клиент и сервис общаются по D-Bus
- клиент запрашивает данные у SecretService ( gnome-keyring в данном случае)
- сервис через D-Bus шлёт данные клиенту
- другой процесс слушает dbus-сообщения, читает пароль
Что такое Secret Service
Ещё одно понятие, на которое пришлось немного потратить время.
Что за “Secret Service”? Какое он имеет отношение к GNOME Keyring и к KWallet?
Что он делает в Linux, и как его пощупать?
The Secret Service API allows client applications to store secrets securely in a service running in the user’s login session.
Ага, т.е. Secret Service – это не какой-то конкретный сервис, а просто спецификация, такой себе RFC, составленный проектами GNOME и KDE для определения того, как они должны реализовать API для клиентов, которые хотят использовать GNOME Keyring и к KWallet для хранения секретов.
При этом поддержка Secret Service API имеется не только у GNOME Keyring и к KWallet, но и у, например, KeePass, и других приложений.
IMHO, немного сбивает с толку само название – Secret Service, т.е. “секретный сервис”. Назвали бы его Secrets Service, т.е. “сервис секретов” – было бы куда понятнее.
Понятия Secret Service
- secret: сам пароль, или любая другая конфиденциальная информация
- item: каждый секрет плюс набор его атрибутов представляют собой item
- collection: а набор таких items преставляет собой коллекцию (аналог понятий keyring и wallet)
- коллекции и items представлены объектами D-Bus, каждый со своим уникальным path
- default collection: клиентские приложения без специальных условий должны добавлять записи в коллекцию default, которая должна быть доступна по пути /org/freedesktop/secrets/aliases/default
D-Bus
Теперь пришло время попытаться вспомнить что же такое D-Bus, и как к нему вообще обращаться.
Итак, D-Bus – один из механизмов Linux kernel IPC – Inter Process Communication, позволяющий различным процессам внутри системы передавать другу другу данные или сигналы.
- документация – https://techbase.kde.org/Development/Tutorials/D-Bus/Introduction
- ещё одна: https://dbus.freedesktop.org/doc/dbus-tutorial.html
- про транспорты в D-Bus: https://dbus.freedesktop.org/doc/dbus-specification.html#transports
- D-Bus, quick recap
- Universal standard mapping between D-Bus and URI namespaces
- D-Bus Addresses — D-Bus connection endpoints
Кратко об основных понятиях и терминах D-Bus:
- D-Bus в общем: это шина для IPC, если в предыдущих примерах по SSH-агентам использовался UNIX-сокет, тот тут используется механизм bus, см. https://www.kernel.org/doc/html/latest/driver-api/driver-model/bus.html. В свою очередь D-Bus шины могут быть:
- шина сессии (session bus)
- системная шина (system bus)
- приватные шины (private bus)
- отправка сообщения как правило приводит к вызову метода и каким-либо действиям приложения, которое этот метод предоставялет
- сообщение может быть отправлено приложением самому себе
- т.к. различные приложения могут располагаться на одной шине (или “слушать одну шину“), и при этом одно приложение может предоставлять несколько объектов, которые могут получать сообщения, то требуется механизм адресации, такой адрес в D-Bus состоит из интерфейса + сервис + имя объекта
- пример namespace – org.freedesktop.dbus
- пример адреса – unix:tmpdir=/tmp/my-app-name
- большинство интерфейсов будут указывать непосредственно на соответствующие конструкции языка, на котором написано приложение, например на интерфейс Java или виртуальный класс С++
- пример интерфейса – org.freedesktop.Introspectable
- под service тут подразумевается имя шины (в оригинале – “well-known” Bus names), но стоит учитывать что под “именем шины” подразумевается именно имя подключения к шине, но НЕ имя шины
- если у приложения более одного подключения к шине, или если приложение запущено в нескольких экземплярах – у имени сервиса может бтыь добавлен, например, PID, что бы сделать его уникальным
- пример service – org.kde.screensaver
- см. https://dbus.freedesktop.org/doc/dbus-tutorial.html#objects
- методы – это messages, которые отправляются объекту, что бы вызвать операцию в приложении, которое этот объект создало
- методы могут передавать данные в input, например аргументы, и возвращать output с какими-либо значениями, которое вернёт приложение
- всегда имеют адрес отправителя и конкретный адрес получателя
- аналогичны методам, но не привязаны к конкретному destination, и могут быть приняты любым приложением на этой же шине
- генерируются приложением, которое екпортит интерфейс
D-Bus tools
- qdbus – просмотр объектов и отправка сообщений через D-Bus
- dbus-monitor – отслеживание активности на шине
- dbus-send – отправка сообщений через D-Bus
- qdbusviewer – просмотр объектов и сообщений, входит в набор qt5-tools
- d-feet – D-Bus debugger
- bustle – D-Bus message analyser and profiler
Пример d-feet , устанавливаем:
$ sudo pacman -S d-feet
Keyrings examples
И примеры работы с разными бекендами из Python или CLI утилит.
Linux keyring
Как уже говорилось выше, Linux keyring – такой себе кеширующий механизм ядра.
Для работы с ним используются keyctl из набора keyutils , и systemd-ask-password .
- Kernel key retention service doc
- keyctl doc
Each process subscribes to three keyrings: a thread-specific keyring, a process-specific keyring, and a session-specific keyring.
Посмотрим, какие keyring доступны в моей текущей сессии:
$ keyctl show @s Session Keyring 185597501 --alswrv 1000 1000 keyring: _ses 182944921 --alswrv 1000 65534 \_ keyring: _uid.1000
$ keyctl show @u Keyring 182944921 --alswrv 1000 65534 keyring: _uid.1000
Кроме того, в файле /proc/key-users можно получить информацию обо всех хранилищах и их статистике по каждому пользователю:
$ cat /proc/key-users 0: 43 42/42 34/1000000 768/25000000 971: 1 1/1 1/200 9/20000 1000: 4 4/4 4/200 46/20000
Доступные нашему процессу ( bash , который вызывает cat ) ключи:
$ cat /proc/keys 008f6a74 I--Q--- 1 perm 1f3f0000 1000 65534 keyring _uid_ses.1000: 1 0ae78499 I--Q--- 4 perm 1f3f0000 1000 65534 keyring _uid.1000: empty 0b0ffe3d I--Q--- 225 perm 3f030000 1000 1000 keyring _ses: 1 2a28e4fe I--Q--- 33 perm 3f030000 1000 1000 keyring _ses: 1
Кейринги пользователя в текущей сессии:
$ keyctl describe @us -5: -lswrvalswrv------------ 1000 65534 keyring: _uid_ses.1000
Ключи в текущем кейринге:
$ keyctl list @us 1 key in keyring: 182944921: --alswrv 1000 65534 keyring: _uid.1000
$ keyctl add user example-key example-data @u 546850615
$ keyctl request user example-key 546850615
Получаем его ID, читаем содержимое:
$ keyctl print 546850615 example-data
keyctl() syscall
Собственно, работа keyctl утилиты заключается в выполнении системногно вызова keyctl(2) :
$ strace -e keyctl keyctl print 546850615 keyctl(KEYCTL_READ, 546850615, NULL, 0) = 12 keyctl(KEYCTL_READ, 546850615, "example-data", 12) = 12 example-data +++ exited with 0 +++
В первом вызове – keyctl(KEYCTL_READ, 546850615, NULL, 0) = 12 – выполняем сам вызов keyctl() , которому передаём operation KEYCTL_READ и ID ключа.
Окей, тут более-менее просто и понятно.
- https://www.kernel.org/doc/Documentation/security/keys.txt
- https://www.ibm.com/developerworks/library/l-key-retention/
- http://man7.org/linux/man-pages/man7/keyrings.7.html
- http://man7.org/linux/man-pages/man1/keyctl.1.html
- http://man7.org/linux/man-pages/man2/keyctl.2.html
Перейдём к keyring storages.
gnome-keyring
Очень проблемный пакет, при этом наиболее широкоиспользуемый.
Устанавливаем, если не установлен:
$ sudo pacman -S gnome-keyring
Проверяем D-Bus сервисы – ищем org.freedesktop.secrets :
$ dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames . string "org.freedesktop.secrets" .
“Ага, вот эти ребята” (с)
$ dbus-send --session --print-reply --dest=org.freedesktop.DBus /org/freedesktop/secrets org.freedesktop.DBus.Introspectable.Introspect .
Или с помощью qdbus – находим сам сервис:
$ qdbus | grep 'secrets\|keyring' org.freedesktop.secrets org.gnome.keyring
Читаем хелп qdbus :
$ qdbus --help . With 0 arguments, qdbus will list the services available on the bus With just the servicename, qdbus will list the object paths available on the service With service name and object path, qdbus will list the methods, signals and properties available on the object
Получаем описание сервиса:
$ qdbus org.freedesktop.secrets /org/freedesktop/secrets signal void org.freedesktop.DBus.Properties.PropertiesChanged(QString interface_name, QVariantMap changed_properties, QStringList invalidated_properties) method QDBusVariant org.freedesktop.DBus.Properties.Get(QString interface_name, QString property_name) method QVariantMap org.freedesktop.DBus.Properties.GetAll(QString interface_name) method void org.freedesktop.DBus.Properties.Set(QString interface_name, QString property_name, QDBusVariant value) method QString org.freedesktop.DBus.Introspectable.Introspect() method QString org.freedesktop.DBus.Peer.GetMachineId() method void org.freedesktop.DBus.Peer.Ping() .
D-Bus GetConnectionUnixProcessID
Собственно, мы хотим увидеть – кто “слушает” на том конце шины. Используем метод GetConnectionUnixProcessID :
$ qdbus --session org.freedesktop.DBus / org.freedesktop.DBus.GetConnectionUnixProcessID org.freedesktop.secrets 1278791
- выполняем вызов к сервису org.freedesktop.DBus
- передаём путь /
- вызываем метод org.freedesktop.DBus.GetConnectionUnixProcessID
- которому передаём аргументом имя сервиса, PID которого хотим узнать – org.freedesktop.secrets
И проверяем – кто такой 1278791:
$ ps xu | grep 1278791 setevoy 1278791 0.0 0.0 383876 8092 ? SLl Dec03 0:00 /usr/bin/gnome-keyring-daemon --start --foreground --components=secrets
Мы убедились, что роль Secret Service сейчас выполняет gnome-keyring . Давайте что-то подобавляем-поудаляем.
Используем python-keyring и secret-tool .
python-keyring
$ sudo pacman -S python-keyring
>>> import keyring >>> keyring.set_password("system", "username", "password") >>> keyring.get_password("system", "username") 'password'
В случае ошибок вида (может случится при первом запуске после установки gnome-keyring ):
>>> keyring.set_password("system", "username", "password") Traceback (most recent call last): . jeepney.wrappers.DBusErrorResponse: [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)
Traceback (most recent call last): . raise PromptDismissedException('Prompt dismissed.') secretstorage.exceptions.PromptDismissedException: Prompt dismissed.
Выполняем скрипт /etc/X11/xinit/xinitrc.d/50-systemd-user.sh :
$ . /etc/X11/xinit/xinitrc.d/50-systemd-user.sh
И создаём хранилище и пароль для него:
Смотрим в dbus-monitor , что происходит в D-Bus:
. method call time=1575542111.465749 sender=:1.576 -> destination=org.freedesktop.secrets serial=7 path=/org/freedesktop/secrets/aliases/default; interface=org.freedesktop.Secret.Collection; member=CreateItem array [ dict entry( string "org.freedesktop.Secret.Item.Attributes" variant array [ dict entry( string "application" string "Python keyring library" ) dict entry( string "service" string "system" ) dict entry( string "username" string "username" ) ] ) dict entry( string "org.freedesktop.Secret.Item.Label" variant string "Password for 'username' on 'system'" ) ] . struct < object path "/org/freedesktop/secrets/session/s14" >. signal time=1575542111.476006 sender=:1.220 -> destination=(null destination) serial=689 path=/org/freedesktop/secrets/collection/example_2dkeyring; interface=org.freedesktop.Secret.Collection; member=ItemCreated object path "/org/freedesktop/secrets/collection/example_2dkeyring/5" .
- sender=:1.576 – находим 1.576 в списке сервисов D-Bus – это наш Python:
- destination=org.freedesktop.secrets
наш /usr/bin/gnome-keyring-daemon , видели выше в выводе org.freedesktop.DBus.GetConnectionUnixProcessID
Проверяем в gnome-keyring с помощью, например, seahorse :
secret-tools
Ещё один вариант – использовать secret-tools .
$ secret-tool store --label=SecretToolExample username username service secret Password:
$ secret-tool lookup username username service secret password
Проверяем его в Seahorse:
KWallet
$ sudo pacman -S kwallet
$ qdbus --session org.freedesktop.DBus / org.freedesktop.DBus.GetConnectionUnixProcessID org.freedesktop.secrets 1278791 $ ps aux | grep 1278791 setevoy 1278791 0.0 0.0 384008 8048 ? SLl Dec03 0:00 /usr/bin/gnome-keyring-daemon --start --foreground --components=secrets
А почему не kwallet , почему до сих пор gnome-keyring ?
Окей, убиваем его:
$ kill 1278791
И сервис файл старый:
$ cat /usr/share/dbus-1/services/org.freedesktop.secrets.service [D-BUS Service] Name=org.freedesktop.secrets Exec=/usr/bin/gnome-keyring-daemon --start --foreground --components=secrets
Ладно – удалим gnome-keyring польностью:
$ sudo pacman -Rsn seahorse $ sudo pacman -Rsn gnome-keyring
Сервис-файла теперь нет:
$ cat /usr/share/dbus-1/services/org.freedesktop.secrets.service 2019/12/05 13:15:03 open /usr/share/dbus-1/services/org.freedesktop.secrets.service: no such file or directory
$ sudo pacman -S kwallet warning: kwallet-5.64.0-1 is up to date -- reinstalling .
Сервис-файл не создался:
$ qdbus --session org.freedesktop.DBus / org.freedesktop.DBus.GetConnectionUnixProcessID org.freedesktop.secrets Error: org.freedesktop.DBus.Error.NameHasNoOwner Could not get PID of name 'org.freedesktop.secrets': no such name
А D-Bus и Secret Service вообще подерживается в KWallet?
In brief, there is no longer a secret service implementation for KDE that I am aware of
И в документации ksecretsservice почти всё в ToDo…
Печаль. Лично мне нравятся Qt-based KDE приложения. Да и ещё более странен сам факт того, что Secret Service спецификация разрабатывалась GNOME и KDE проектами вместе, а реализована, получается, только в GNOME Keyring…
Still, мы можем использовать KWallet без Secret Service интеграции.
Запускаем менеджер кошельков:
$ kwalletmanager5
Создаём тестовый кошелёк:
Задаём пароль кошелька:
Но тут, понятноое дело, что ломается интеграция с Secret Service, например – наша Python-библиотека теперь говорит :
>>> keyring.set_password("system", "username", "password") Traceback (most recent call last): . raise value jeepney.wrappers.DBusErrorResponse: [org.freedesktop.DBus.Error.ServiceUnknown] ('The name org.freedesktop.secrets was not provided by any .service files',) The above exception was the direct cause of the following exception: Traceback (most recent call last): . raise SecretServiceNotAvailableException(data) from resp secretstorage.exceptions.SecretServiceNotAvailableException: The name org.freedesktop.secrets was not provided by any .service files During handling of the above exception, another exception occurred: Traceback (most recent call last): . raise RuntimeError("Unable to initialize SecretService: %s" % e) RuntimeError: Unable to initialize SecretService: The name org.freedesktop.secrets was not provided by any .service files
Но можно заменить keyring бекенд с SecretService и DBus на прямое указание kwallet5 , нагуглилось тут>>>:
>>> kwallet5 = keyring.backends.kwallet.DBusKeyring() >>> keyring.set_keyring(kwallet5) >>> keyring.get_keyring()
>>> keyring.set_password("system", "username", "password")
Проверяем D-Bus сообщения:
method call time=1575545736.524015 sender=:1.318 -> destination=:1.269 serial=38 path=/modules/kwalletd5; interface=org.kde.KWallet; member=writePassword int32 365838442 string "system" string "username" string "password" string "Python keyring library"
KeePass
Сам KeePass тоже может играть роль keyring backend используя Secret Storage спецификацию.
Если gnome-keyring не удалён – то будет ошибка вида “Another secret service is running“:
Удалям gnome-keyring , активируем Secret Service:
Проверяем активность D-Bus:
method call time=1575546064.021083 sender=:1.599 -> destination=org.freedesktop.DBus serial=26 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RequestName string "org.freedesktop.secrets" uint32 4 signal time=1575546064.021157 sender=org.freedesktop.DBus -> destination=(null destination) serial=258 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged string "org.freedesktop.secrets" string "" string ":1.599" signal time=1575546064.021212 sender=org.freedesktop.DBus -> destination=:1.599 serial=16 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired string "org.freedesktop.secrets" method return time=1575546064.021245 sender=org.freedesktop.DBus -> destination=:1.599 serial=17 reply_serial=26 uint32 1
Проверяем кто слушает на org.freedesktop.secrets:
$ qdbus --session org.freedesktop.DBus / org.freedesktop.DBus.GetConnectionUnixProcessID org.freedesktop.secrets 4006761 $ ps aux | grep 4006761 setevoy 4006761 2.0 0.5 475888 89656 tty1 SLl 13:40 0:02 keepassxc
И запишем что-то в базу:
$ secret-tool store --label=SecretToolExample username username service secret Password: libsecret-Message: 13:45:13.448: Remote error from secret service: org.freedesktop.DBus.Error.UnknownObject: No such object path '/org/freedesktop/secrets/aliases/default' secret-tool: No such object path '/org/freedesktop/secrets/aliases/default'
Ага, надо в настройках базы настроить внутренний путь, см. комментарий тут>>>.
В самой базе добавим новую группу:
Далее идём в Database > Database settings, и указываем локальный путь к папке, которая будет использоваться в роли Secret Service storage:
Перезапускаем KeePass, в D-Bus видно, как добавляется коллекция:
signal time=1575546948.831195 sender=:1.613 -> destination=(null destination) serial=22 path=/org/freedesktop/secrets; interface=org.freedesktop.Secret.Service; member=CollectionCreated object path "/org/freedesktop/secrets/collection/Main" signal time=1575546982.884850 sender=:1.613 -> destination=(null destination) serial=23 path=/org/freedesktop/secrets; interface=org.freedesktop.Secret.Service; member=CollectionChanged object path "/org/freedesktop/secrets/collection/Main"
$ secret-tool store --label=SecretToolExample username username service secret Password:
. method call time=1575547056.148892 sender=:1.616 -> destination=org.freedesktop.secrets serial=10 path=/org/freedesktop/secrets/aliases/default; interface=org.freedesktop.Secret.Collection; member=CreateItem array [ dict entry( string "org.freedesktop.Secret.Item.Attributes" variant array [ dict entry( string "service" string "secret" ) dict entry( string "username" string "username" ) ] ) dict entry( string "org.freedesktop.Secret.Item.Label" variant string "SecretToolExample" ) ] .
И в самом KeePass:
Ссылки по теме
keyrings, Secret Service, etc
- GNOME Keyring – GNOME project docs
- GNOME/Keyring – Arch Linux Wiki
- KDE Wallet
- Python Keyring Lib
- Manage Passwords, Encryption Keys, And More With Seahorse
- secret-tool examples
- Keychain
- Using Linux keyring secrets from your scripts
- Secret Service API Draft
- Python bindings to FreeDesktop.org Secret Service API
- Python keyring lib
- Libsecret Library Reference Manual
- Credentials located in gnome-keyring can be compromised easily
- “Please enter password for encrypted keyring” when running Python script on Ubuntu
- Use keyring to store your credentials
- In KDE Plasma, keyring uses gnome-keyring by default – просто поулыбаться
- Get started with the Linux key retention service
D-Bus
- D-Bus Tutorial
- D-Bus/Introduction
- D-Bus Specification
- D-Bus API Design Guidelines
- Introspecting D-Bus from the command-line
- Understanding D-Bus
- dbus-python tutorial
- Universal standard mapping between D-Bus and URI namespaces
- D-Bus, quick recap
Вопрос чайника по значкам
А, чёрт, Gnome3. Я просто щелкнул в эту тему из новостей, пардон.
Дык а если просто руками отредактировать *.desktop файлы соответствующие?
Да пребудет с нами Сила.
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb
http://rusrailsim.orgУчастник с: 09 января 2013
vufer
Куда копать? 🙂Копай в сторону journalctl и лога иксов. Все, что откопаешь — в студию)
И скажи, какие значки используешь: стандартные или какой-то пакет с темой?Участник с: 19 октября 2011
А, чёрт, Gnome3. Я просто щелкнул в эту тему из новостей, пардон.
Дык а если просто руками отредактировать *.desktop файлы соответствующие?
Именно часть системных значков. Те, что в панельке сверху, и в верхней части фалового менеджера.
Участник с: 19 октября 2011vufer
Куда копать? 🙂Копай в сторону journalctl и лога иксов. Все, что откопаешь — в студию)
И скажи, какие значки используешь: стандартные или какой-то пакет с темой?-- Reboot -- мар 29 06:34:24 vuferbase pulseaudio[507]: [pulseaudio] sink.c: Default and alternate sample rates are the same. мар 29 06:34:24 vuferbase pulseaudio[507]: [pulseaudio] source.c: Default and alternate sample rates are the same. мар 29 06:34:24 vuferbase pulseaudio[507]: [pulseaudio] bluetooth-util.c: org.bluez.Manager.GetProperties() failed: org.freedeskt мар 29 06:34:25 vuferbase gnome-session[451]: WARNING: Failed to start app: Unable to start application: Не удалось выполнить про мар 29 06:34:32 vuferbase goa[606]: goa-daemon version 3.6.2 starting [main.c:112, main()] мар 29 06:35:15 vuferbase gnome-keyring-daemon[449]: keyring alias directory: /home/vufer/.local/share/keyrings lines 543-590/590 (END)