殺死 Xorg 後的授權問題

殺死 Xorg 後的授權問題

因為 Xorg 掛起或因為一些奇怪的內存洩漏它使用了 4GB 內存,所以我殺死了它並且它正常重新啟動。我只需要透過 Slim 再次登錄,但此後直到下次重新啟動為止,我遇到了幾個授權問題,例如:

  • 當嘗試透過 Thunar 或 Nemo 安裝 USB 拇指驅動器時,只需單擊位置列表中的設備,我會得到

    無法安裝「Transcend」 無權執行操作。

  • 當嘗試掛起、關閉等時,例如使用xfce4-session-logout --suspend它只會鎖定螢幕而不是掛起,但sudo pm-suspend確實有效。這就是為什麼我猜這也是一個授權問題。

為什麼會出現這種情況?難道是我登入了兩次,因為殺死 Xorg 沒有正確註銷我?某處有鎖嗎?如何才能像重新啟動時那樣再次進行安裝和暫停工作?

根據 JdeBP 的建議,一些附加資訊:我正在使用

  • Linux 4.5.0-1-amd64 #1 SMP Debian 4.5.1-1 (2016-04-14) x86_64 GNU/Linux
  • 主要是 Debian sid 和 XFCE 4.12
  • systemd 如下所示ps -p 1

  • loginctl顯示:

    SESSION        UID USER   SEAT
         1       1000 mxm    seat0
    1 sessions listed.
    
  • 我確實有 polkitd 正在運行。dpkg -l '*policy*'節目policykit-1 0.105-17

  • 至於桌面總線的類型,我嘗試過dpkg -l '*bus*'(只顯示那些看起來很重要的)

    ii  dbus                     1.10.12-1  amd64  simple interprocess messaging system (daemon and util
    ii  dbus-x11                 1.10.12-1  amd64  simple interprocess messaging system (X11 deps)
    ii  libdbus-1-3:amd64        1.10.12-1  amd64  simple interprocess messaging system (library)
    ii  libdbus-1-3:i386         1.10.12-1  i386   simple interprocess messaging system (library)
    ii  libdbus-glib-1-2:amd64   0.108-1    amd64  simple interprocess messaging system (GLib-based shar
    ii  libdbus-glib-1-dev       0.108-1    amd64  simple interprocess messaging system (GLib interface)
    ii  libdbusmenu-glib4:amd64  12.10.2-1  amd64  library for passing menus over DBus
    ii  libdbusmenu-gtk3-4:amd64 12.10.2-1  amd64  library for passing menus over DBus - GTK+ version
    ii  qdbus                    4:4.8.7+dfsg-9  amd64  Qt 4 D-Bus tool
    

xfce4-session-logout --suspend當它不起作用時,會產生以下日誌行:

  • /var/log/{kern.log,syslog,messags}

    12 月 18 日 01:52:06 pc xfce4-notifyd[22273]:無法連線到輔助匯流排:無法連線到套接字 /tmp/dbus-awJrGEr9me:連線被拒絕

    似乎這不是實際的問題,只是顯示通知的問題,但也許它暗示了另一個問題?notify-send "test" "test"不過,工作沒有問題。

  • /var/log/secure我讀到的針對PolicyKit的內容是空的。

Nemo 安裝失敗後我找不到任何日誌訊息。我檢查了所有內容/var/log/ dmesg並且還~/.xsession-errors

首先我嘗試了dbus-monitor非工作xfce4-session-logout --suspend命令。它給出的不多,它顯示xfce4-session-logout將 DBus 訊息發送到 xfce-session manager,而 xfce-session manager 反過來,查看源代碼,將 DBus 訊息發送到 systemd,這沒有用 來顯示dbus-monitor,所以我用選項嘗試了它--system,似乎顯示使用 polkit 與 systemd(?) 進行通訊:

method call time=1482033095.691432 sender=:1.1956 -> destination=org.freedesktop.login1 serial=19 path=/org/freedesktop/login1; interface=org.freedesktop.login1.Manager; member=Suspend
   boolean true
method call time=1482033095.691713 sender=:1.0 -> destination=org.freedesktop.DBus serial=214 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixUser
   string ":1.1956"
method return time=1482033095.691733 sender=org.freedesktop.DBus -> destination=:1.0 serial=57 reply_serial=214
   uint32 1000
method call time=1482033095.691913 sender=:1.0 -> destination=org.freedesktop.DBus serial=215 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixUser
   string ":1.1956"
method return time=1482033095.691929 sender=org.freedesktop.DBus -> destination=:1.0 serial=58 reply_serial=215
   uint32 1000
method call time=1482033095.692129 sender=:1.0 -> destination=org.freedesktop.PolicyKit1 serial=216 path=/org/freedesktop/PolicyKit1/Authority; interface=org.freedesktop.PolicyKit1.Authority; member=CheckAuthorization
   struct {
      string "system-bus-name"
      array [
         dict entry(
            string "name"
            variant                string ":1.1956"
         )
      ]
   }
   string "org.freedesktop.login1.suspend"
   array [
   ]
   uint32 1
   string ""
method call time=1482033095.692546 sender=:1.12 -> destination=org.freedesktop.DBus serial=410 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixUser
   string ":1.0"
method return time=1482033095.692564 sender=org.freedesktop.DBus -> destination=:1.12 serial=272 reply_serial=410
   uint32 0
method call time=1482033095.692919 sender=:1.12 -> destination=org.freedesktop.DBus serial=411 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixUser
   string ":1.1956"
method return time=1482033095.692936 sender=org.freedesktop.DBus -> destination=:1.12 serial=273 reply_serial=411
   uint32 1000
method call time=1482033095.693205 sender=:1.12 -> destination=org.freedesktop.DBus serial=412 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixUser
   string ":1.1956"
method return time=1482033095.693231 sender=org.freedesktop.DBus -> destination=:1.12 serial=274 reply_serial=412
   uint32 1000
method call time=1482033095.693404 sender=:1.12 -> destination=org.freedesktop.DBus serial=413 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixProcessID
   string ":1.1956"
method return time=1482033095.693420 sender=org.freedesktop.DBus -> destination=:1.12 serial=275 reply_serial=413
   uint32 10534
method call time=1482033095.693977 sender=:1.12 -> destination=org.freedesktop.DBus serial=414 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixProcessID
   string ":1.1956"
method return time=1482033095.693994 sender=org.freedesktop.DBus -> destination=:1.12 serial=276 reply_serial=414
   uint32 10534
method call time=1482033095.694460 sender=:1.12 -> destination=org.freedesktop.DBus serial=415 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixUser
   string ":1.1956"
method return time=1482033095.694478 sender=org.freedesktop.DBus -> destination=:1.12 serial=277 reply_serial=415
   uint32 1000
method call time=1482033095.694663 sender=:1.12 -> destination=org.freedesktop.DBus serial=416 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixProcessID
   string ":1.1956"
method return time=1482033095.694677 sender=org.freedesktop.DBus -> destination=:1.12 serial=278 reply_serial=416
   uint32 10534
method call time=1482033095.695290 sender=:1.12 -> destination=org.freedesktop.DBus serial=417 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixProcessID
   string ":1.1956"
method return time=1482033095.695307 sender=org.freedesktop.DBus -> destination=:1.12 serial=279 reply_serial=417
   uint32 10534
method call time=1482033095.695791 sender=:1.12 -> destination=org.freedesktop.DBus serial=418 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixUser
   string ":1.1956"
method return time=1482033095.695808 sender=org.freedesktop.DBus -> destination=:1.12 serial=280 reply_serial=418
   uint32 1000
method call time=1482033095.696095 sender=:1.12 -> destination=org.freedesktop.DBus serial=419 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixProcessID
   string ":1.1956"
method return time=1482033095.696112 sender=org.freedesktop.DBus -> destination=:1.12 serial=281 reply_serial=419
   uint32 10534
method call time=1482033095.696641 sender=:1.12 -> destination=org.freedesktop.DBus serial=420 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixProcessID
   string ":1.1956"
method return time=1482033095.696658 sender=org.freedesktop.DBus -> destination=:1.12 serial=282 reply_serial=420
   uint32 10534
method call time=1482033095.697047 sender=:1.12 -> destination=org.freedesktop.DBus serial=421 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixProcessID
   string ":1.1956"
method return time=1482033095.697063 sender=org.freedesktop.DBus -> destination=:1.12 serial=283 reply_serial=421
   uint32 10534
method call time=1482033095.697365 sender=:1.12 -> destination=org.freedesktop.DBus serial=422 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixProcessID
   string ":1.1956"
method return time=1482033095.697381 sender=org.freedesktop.DBus -> destination=:1.12 serial=284 reply_serial=422
   uint32 10534
method return time=1482033095.697637 sender=:1.12 -> destination=:1.0 serial=423 reply_serial=216
   struct {
      boolean false
      boolean true
      array [
         dict entry(
            string "polkit.retains_authorization_after_challenge"
            string "1"
         )
      ]
   }
method call time=1482033095.697882 sender=:1.0 -> destination=org.freedesktop.DBus serial=217 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixUser
   string ":1.1956"
method return time=1482033095.697901 sender=org.freedesktop.DBus -> destination=:1.0 serial=59 reply_serial=217
   uint32 1000
error time=1482033095.697991 sender=:1.0 -> destination=:1.1956 error_name=org.freedesktop.DBus.Error.InteractiveAuthorizationRequired reply_serial=19
   string "Interactive authentication required."
method call time=1482033097.707153 sender=:1.2260 -> destination=org.freedesktop.DBus serial=1 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=Hello
method return time=1482033097.707178 sender=org.freedesktop.DBus -> destination=:1.2260 serial=1 reply_serial=1
   string ":1.2260"
signal time=1482033097.707194 sender=org.freedesktop.DBus -> destination=(null destination) serial=433 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string ":1.2260"
   string ""
   string ":1.2260"
signal time=1482033097.707212 sender=org.freedesktop.DBus -> destination=:1.2260 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.2260"
method call time=1482033097.707800 sender=:1.2260 -> destination=org.freedesktop.DBus serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.PolicyKit1',interface='org.freedesktop.DBus.Properties',member='PropertiesChanged',path='/org/freedesktop/PolicyKit1/Authority',arg0='org.freedesktop.PolicyKit1.Authority'"
method return time=1482033097.707832 sender=org.freedesktop.DBus -> destination=:1.2260 serial=3 reply_serial=2
method call time=1482033097.707900 sender=:1.2260 -> destination=org.freedesktop.DBus serial=3 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.PolicyKit1',interface='org.freedesktop.PolicyKit1.Authority',path='/org/freedesktop/PolicyKit1/Authority'"
method return time=1482033097.707920 sender=org.freedesktop.DBus -> destination=:1.2260 serial=4 reply_serial=3
method call time=1482033097.708001 sender=:1.2260 -> destination=org.freedesktop.DBus serial=4 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',path='/org/freedesktop/DBus',arg0='org.freedesktop.PolicyKit1'"
method return time=1482033097.708020 sender=org.freedesktop.DBus -> destination=:1.2260 serial=5 reply_serial=4
method call time=1482033097.708137 sender=:1.2260 -> destination=org.freedesktop.DBus serial=5 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=StartServiceByName
   string "org.freedesktop.PolicyKit1"
   uint32 0
method return time=1482033097.708163 sender=org.freedesktop.DBus -> destination=:1.2260 serial=6 reply_serial=5
   uint32 2
method call time=1482033097.708484 sender=:1.2260 -> destination=org.freedesktop.DBus serial=6 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner
   string "org.freedesktop.PolicyKit1"
method return time=1482033097.708504 sender=org.freedesktop.DBus -> destination=:1.2260 serial=7 reply_serial=6
   string ":1.12"
method call time=1482033097.708797 sender=:1.2260 -> destination=:1.12 serial=7 path=/org/freedesktop/PolicyKit1/Authority; interface=org.freedesktop.DBus.Properties; member=GetAll
   string "org.freedesktop.PolicyKit1.Authority"
method return time=1482033097.709126 sender=:1.12 -> destination=:1.2260 serial=424 reply_serial=7
   array [
      dict entry(
         string "BackendName"
         variant             string "local"
      )
      dict entry(
         string "BackendVersion"
         variant             string "0.105"
      )
      dict entry(
         string "BackendFeatures"
         variant             uint32 1
      )
   ]
method call time=1482033097.709509 sender=:1.2260 -> destination=:1.12 serial=8 path=/org/freedesktop/PolicyKit1/Authority; interface=org.freedesktop.PolicyKit1.Authority; member=EnumerateActions
   string ""
method return time=1482033097.712396 sender=:1.12 -> destination=:1.2260 serial=425 reply_serial=8
   array [
      [ ... 1800 lines of structs with policyKit actions ... ]
   ]
method call time=1482033097.720322 sender=:1.2260 -> destination=:1.12 serial=9 path=/org/freedesktop/PolicyKit1/Authority; interface=org.freedesktop.PolicyKit1.Authority; member=CheckAuthorization
   struct {
      string "unix-process"
      array [
         dict entry(
            string "pid"
            variant                uint32 10534
         )
         dict entry(
            string "start-time"
            variant                uint64 71999741
         )
         dict entry(
            string "uid"
            variant                int32 1000
         )
      ]
   }
   string "org.xfce.session.xfsm-shutdown-helper"
   array [
      dict entry(
         string "user"
         string "root (root)"
      )
      dict entry(
         string "command_line"
         string "/usr/lib/x86_64-linux-gnu/xfce4/session/xfsm-shutdown-helper --suspend"
      )
      dict entry(
         string "program"
         string "/usr/lib/x86_64-linux-gnu/xfce4/session/xfsm-shutdown-helper"
      )
      dict entry(
         string "polkit.gettext_domain"
         string "polkit-1"
      )
   ]
   uint32 1
   string ""
method call time=1482033097.720691 sender=:1.12 -> destination=org.freedesktop.DBus serial=426 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixUser
   string ":1.2260"
method return time=1482033097.720713 sender=org.freedesktop.DBus -> destination=:1.12 serial=285 reply_serial=426
   uint32 0
method return time=1482033097.720734 sender=:1.12 -> destination=:1.2260 serial=427 reply_serial=9
   struct {
      boolean false
      boolean true
      array [
      ]
   }
signal time=1482033097.720788 sender=org.freedesktop.DBus -> destination=:1.2260 serial=5 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameLost
   string ":1.2260"
signal time=1482033097.720811 sender=org.freedesktop.DBus -> destination=(null destination) serial=434 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string ":1.2260"
   string ":1.2260"
   string ""

相關內容