此gksu用法无可替代

时间:2018-08-04 17:43:06

标签: ubuntu ubuntu-18.04 gksudo

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

其背后的原因是,认为gksu仅以这种方式使用:

gksu gedit /some/root/setting

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

因此,当您想使用简单的cli sudo键入密码,并弹出一些聊天窗口时,会发生这样的情况:将密码输入到聊天窗口中(如果您暂时不看屏幕),您的根密码就会发送给您的聊天好友。它发生在我身上一次,我不希望它再次发生

这就是为什么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?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

此答案仅涉及library(devtools) source_url("https://raw.github.com/tonybreyal/Blog-Reference-Functions/master/R/bingSearchXScraper/bingSearchXScraper.R") ,没有其他内容。

除了gksu gedit在Ubuntu 17.10中的消失之外,我还遇到了长期存在的问题,我的常规用户设置(如字体名称,字体大小,制表位,将制表符转换为空格等)从未被继承到gksu / sudo,我总是需要重置它们。

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

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

您将需要更改一行代码:

sudo

这会将窗口右移nohup gedit -g 1300x840+1+1220 $@ &>/dev/null & 像素,向下1像素。您可能更喜欢1220而不是1+1

窗口大小设置为1+1220像素宽乘以1300像素高。您可能更喜欢更大或更小尺寸,具体取决于显示器分辨率和HiDPI。因此,将840更改为您的偏好。

1330x840

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

#!/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

然后调用它使用:

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

代替以前的系统:

sgedit <file-name>

HTH