Как отключить устройство gphoto2 как root - PullRequest
0 голосов
/ 27 февраля 2020

Как обычный пользователь, я вижу свою смонтированную камеру с gio mount,

user@localhost $ gio mount -l
Volume(0): NIKON DSC D3200
  Type: GProxyVolume (GProxyVolumeMonitorGPhoto2)
  Mount(0): NIKON DSC D3200 -> gphoto2://%5Busb%3A002,007%5D/
    Type: GProxyShadowMount (GProxyVolumeMonitorGPhoto2)
Mount(1): NIKON DSC D3200 -> gphoto2://%5Busb%3A002,007%5D/
  Type: GDaemonMount

Но при переключении на root она становится невидимой

root@localhost $ gio mount -l
Volume(0): Filesystem root
  Type: GUnixVolume
  Mount(0): Filesystem root -> file:///
    Type: GUnixMount

Так что запускается скрипт как root, я не могу отключить камеру с помощью следующей команды,

gio mount -s gphoto2

1 Ответ

1 голос
/ 27 февраля 2020

Это потому, что GIO использует другой бэкэнд для перечисления монтирований при запуске как root, потому что демоны GVFS, которые обеспечивают (например) поддержку gphoto2, запускаются в пользовательском сеансе (на сеансовой шине D-Bus), а не в системе -широкий. Поэтому root не может с ними разговаривать.

Запустите ваш сценарий как не-root, или вам придется выполнить некоторые операции, чтобы предоставить вашему сценарию явный доступ к вашей шине сеанса D-Bus ( но тогда он будет работать только тогда, когда ваш пользовательский сеанс активен).

Вам не нужны права root для отображения или размонтирования монтирования GIO: разрешение на это контролируется polkit, и вы должны получить запросить авторизацию, если это не разрешено по умолчанию.

...