如何基于 pkexec 创建新的“gksu”命令?

如何基于 pkexec 创建新的“gksu”命令?

当我在谷歌搜索“gksu gedit”时,最热门的条目之一(如何以 root 身份运行 gedit 和 nautilus) 建议不宜gksu使用以下方式:

gksu 自 2009 年以来一直没有更新,现在也不推荐使用了。事实上,Ubuntu 不再默认安装 gksu(尽管许多人可能安装了它,因为有些应用程序仍然依赖它),甚至可能在某个时候被完全删除。

AskUbuntu 的链接(为什么 gksu 不再默认安装?) 建议pkexec应该使用,但没有提供清晰简洁的步骤来做到这一点。

如何在gsu支持和gedit的新包装器 shell 脚本中使用 pkexec nautilus

我觉得最合适的包装脚本gsu是因为我的“肌肉记忆”就是一直打字gksu,而我不想必须打字pkexec

此外,我希望那些烦人的gtk警告信息消失。我还希望终端提示立即返回,而不是等待编辑器或文件管理器结束。

非盟重复:我搜索了许多问答,但没有一个要求(或提供如何)为gsu包装脚本提供完整的解决方案来调用pkexec和安装所有必要的策略工具包并摆脱讨厌的 gtk 警告并立即获得终端提示……所有答案都在一个答案中。

答案1

pkexec在使用之前geditnautilus您需要复制 polkit 规则以支持它们。这将在 Ubuntu 17.04 中自动完成,但同时您需要wget它们。

Nautilus 政策工具包

wget https://raw.githubusercontent.com/hotice/webupd8/master/org.gnome.nautilus.policy -O /tmp/org.gnome.nautilus.policy
sudo cp /tmp/org.gnome.nautilus.policy /usr/share/polkit-1/actions/

Gedit 策略工具包

wget https://raw.githubusercontent.com/hotice/webupd8/master/org.gnome.gedit.policy -O /tmp/org.gnome.gedit.policy
sudo cp /tmp/org.gnome.gedit.policy /usr/share/polkit-1/actions/

“gsu” bash 脚本替换“gksu”

pxexec创建 bash 脚本是使用有点熟悉的术语调用的两种方法之一gsu。在您的路径之一中创建此文件:

#!/bin/bash

# Usage: gsu gedit file1 file2...
#  -OR-  gsu natuilus /dirname

# & is used to spawn process and get prompt back ASAP
# > /dev/null is used to send gtk warnings into dumpster

COMMAND=$1 # extract gedit or nautilus

pkexec "$COMMAND" "${@:2}" &> /dev/null&

保存文件并将其标记为可执行文件chmod +x gsu

现在,您无需键入内容gksu来编辑 grub 配置,而是可以使用:

gsu gedit /etc/default/grub

“gsu”作为“pkexec”的别名来替换“gksu”

创建别名是pxexec使用有点熟悉的术语来调用的第二个选项gsu。打开文件~/.bashrc并搜索alias。您将看到以下内容:

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

在最后一行之后添加以下内容:

alias gsu='pkexec'

保存文件并退出。

相关内容