-1

Ubuntu 18.04 完全从其存储库中删除了 gksu 包。

这背后的原因是 gksu 被认为只能以这种方式使用:

gksu gedit /some/root/setting

但是 gksu 还有其他用法。Gksu 是一个重要的程序,因为与 sudo 或 pkexec 等图形程序不同,它可以防止其他程序窃取焦点

因此,当您想使用简单的 cli sudo 输入密码时,会弹出一些聊天窗口,发生的情况是密码输入到聊天窗口中(如果您暂时不看屏幕),并且您的 root密码发送给你的聊天伙伴。它发生在我身上一次,我不希望它再次发生。

这就是为什么 gksu 在安全方面是理想的,我经常在命令行级别使用它。所以不要启动 gedit,而是做命令行的东西,例如 apt-get update && apt-get upgrade 或执行一些 bash 脚本。

不,pkexec 不是 gksu 的替代品,因为 1)它不执行脚本,只执行二进制文件和 2)它不会阻止其他程序窃取焦点。

其次,您还可以使用 gksu 以安全的方式询问非 root 密码。例如:

ccrypt -K `gksu -p --message "Password:"` -d data.tar

所以我的问题是:在这些情况下,可以使用什么程序替代 gksu?

4

2 回答 2

1

您仍然可以通过以下方式获取 gksu:

wget http://mirrors.kernel.org/ubuntu/pool/universe/libg/libgksu/libgksu2-0_2.0.13~pre1-9ubuntu2_amd64.deb

sudo apt install ./libgksu2-0_2.0.13~pre1-9ubuntu2_amd64.deb

wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gksu/gksu_2.0.2-9ubuntu1_amd64.deb

sudo apt install ./gksu_2.0.2-9ubuntu1_amd64.deb
于 2019-01-03T00:31:36.877 回答
0

这个答案只处理gksu gedit,没有别的。

除了 Ubuntu 17.10 的消失之外gksu,我还有长期存在的问题,我的字体名称、字体大小、制表位、将制表符转换为空格等的常规用户设置从未转移到sudo/gksudo并且我总是不得不重置它们。

此外sudo,没有用于编辑首选项的顶级菜单。

我编写的脚本不仅允许类似gksu使用,gedit而且还可以将我的用户gedit首选项复制到sudo帐户中。

您将需要更改一行代码:

nohup gedit -g 1300x840+1+1220 $@ &>/dev/null &

这会将窗口1像素定位在右侧和1220像素下方。您可能更喜欢1+1而不是1+1220.

窗口大小设置为1300像素宽乘840像素高。您可能更喜欢更小或更大的尺寸,具体取决于显示器分辨率和 HiDPI。所以改变1330x840你的喜好。

#!/bin/bash

# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as sudo using $USER preferences
# DATE: June 17, 2018.

# Must not prefix with sudo when calling script
if [[ $(id -u) == 0 ]]; then
    zenity --error --text "You cannot call this script using sudo. Aborting."
    exit 99
fi

# Get user preferences before elevating to sudo
gsettings list-recursively | grep -i gedit | grep -v history | \
    grep -v docinfo | \
    grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings

sudoFunc () {

    # Must be running as sudo
    if [[ $(id -u) != 0 ]]; then
        zenity --error --text "Sudo password authentication failed. Aborting."
        exit 99
    fi

    # Get sudo's gedit preferences
    gsettings list-recursively | grep -i gedit | grep -v history | \
        grep -v docinfo | \
        grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
    diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
    sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
    chmod +x /tmp/gedit.gsettings.diff
    bash -x /tmp/gedit.gsettings.diff  # Display override setting to terminal
#    nohup gedit $@ &>/dev/null &
    nohup gedit -g 1300x840+1+1220 $@ &>/dev/null &
#              Set the X geometry window size (WIDTHxHEIGHT+X+Y).

}

FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"

exit 0

在路径中的某处创建 bash 脚本,并使用以下命令将其标记为可执行文件:

sudo chmod a+x /path/to-script/sgedit

然后调用它使用:

sgedit <file-name>

而不是旧系统:

gksu gedit <file-name>

HTH

于 2018-09-05T00:22:57.340 回答