有人能帮我调试以下问题吗:我有一个菜单快捷方式,可以以 root 身份启动 gnome-terminal。该快捷方式引用以下 .desktop 文件:
[Desktop Entry]
Name=Root Terminal
Exec=/usr/local/bin/root-term
Comment=Root Terminal
Terminal=false
Icon=org.gnome.Terminal
Type=Application
该脚本/usr/local/bin/root-term
基本上是一个命令(当我尝试将命令直接放入.desktop 文件时它无法正常工作,因此需要单独的脚本):
#!/bin/bash
pkexec env SSH_AUTH_SOCK=$SSH_AUTH_SOCK DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gnome-terminal
到目前为止,它运行良好。几天以来,经过一些更新(但我不知道是哪一个),我第一次单击此菜单快捷方式时,会弹出 pkexec 的密码提示,输入密码后,我必须等待几秒钟才能出现终端窗口。
这种情况仅在机器启动后第一次运行脚本时发生。后续单击此菜单项时,在回答密码提示后立即出现终端窗口。
我甚至不知道从哪里开始寻找。有什么想法吗?Ubuntu 20.04。
答案1
Root 终端的桌面文件
以下桌面文件对我有用(位于/usr/share/applications/
),在当前的 20.04.x 和 22.04.x 中,
[Desktop Entry]
Version=1.0
Name=Root Terminal
Exec=gnome-terminal --title='Root Terminal' -- sudo -i
Comment=Root Terminal
Terminal=false
Icon=org.gnome.Terminal
Type=Application
您可能想要使用sudo -iH
,但如果我理解正确的话,-H
不再需要保护可以在具有和不具有提升权限的情况下运行的图形应用程序。
编辑:gvfs 管理后端
gvfs 管理后端是一款使用 GUI 工具提升权限的好工具。在 Ubuntu 17.10(gvfs >= 1.29.4)及更新版本中,您可以使用 gvfs 管理后端。请注意,您需要完整路径,例如
thunar admin:///path/to/directory
gedit admin:///path/to/file
理论上,无论您使用什么 UI, gvfs 管理后端方法(使用 polkit)都比xhost
和更好、更安全。sudo -H
您无需以 root 身份运行整个应用程序。只有在绝对必要时才会提升权限。
答案2
基本上有同样的问题:(20.04)在 .desktop 文件中使用 pkexec 打开一个程序,该程序在首次启动时会延迟约 20 秒。
就我而言,这是由 xdg-desktop-portal 的一个错误引起的:
https://bugs.launchpad.net/ubuntu/+source/xdg-desktop-portal/+bug/1878081
其他用户报告说可以安全卸载,这为我解决了这个问题:
sudo apt remove xdg-desktop-portal