我需要18.04中的gksu


23

我已经读过很多关于gksu被从许多Linux版本中删除的线程,包括Ubuntu 18.04。许多人指出,gksu是可憎的,任何用户都不需要使用类似它的东西。我有两个示例,据我所知,我必须有一些示例可以让我以root用户身份运行(不仅用于编辑文件)。

首先,只有在(GUI)命令上打开加密文件夹后,我才需要启动mysql。这意味着由启动mysql服务的加密系统运行脚本。这必须以root用户身份完成,因此我在要求我输入密码的启动脚本中使用gksu。我还能如何从GUI系统启动服务?

我还以root用户身份运行Ubuntu系统备份,否则无法备份许多系统文件。因此,桌面文件使用gksu开始备份。

pkexec看起来很复杂,需要策略文件。那是唯一的选择,如果是这样,为什么它更安全?

对于类似问题的其他答案似乎并不能解决人们现在已经不再需要gksu(或更难找到...)的单个问题。我认为来自非专家用户的此类问题将从更详细的答案中受益。我现在有一些,因此想回答我自己的问题。


是否pkexec为你工作,而不是gksu
托马斯·沃德

@karel同意,尽管该帖子未明确说明“替代”为pkexec。(您必须寻找它)
托马斯·沃德

2
您也可以尝试使用sudo -H GUI-program,如果Wayland有此链接,那可能会有用,...如果您有GUI工具,则有一些变通办法,对您来说效果很好,并且需要提升的权限。
sudodus

3
这是一个有争议的主题,但是,简而言之,以root用户身份运行图形应用程序会带来安全风险。尽管您和许多其他人可能不同意这一点,但是Ubuntu和许多发行版不建议以root用户身份运行图形应用程序。Ubuntu正在编写替代解决方案,pkexec和其他策略。您可以提交错误报告,开发人员将为他们认为应该这样做的程序(例如程序包管理器)开发解决方案。这很复杂,因为它涉及X和Wayland。或者使用非图形应用程序或编写自己的应用程序。加密不需要gui
Panther

我使用gnome-encfs-manager,它提供了一个gui来挂载加密的文件夹。它提供了在安装驱动器时运行的脚本。在该脚本中,我需要启动mysql。我还能怎么做?至于Wayland,从普通的家用台式机用户的角度来看,不允许突触或gparted guis是荒谬的。他们是无价的。系统可以如此安全,以至没有人愿意使用它们-存在平衡,并且在这种特定情况下(使用者),用户必须正确。
pastim '18

Answers:



8

我知道在其他地方也有解决此问题的方法,但是我还没有找到足够清晰和简单的方法来解决此问题。所以我在许多地方挖了出来,想到了这个。我仍然不明白为什么Linux社区决定让我们这样的简单台式机用户很难过(并且我试图理解许多解释),但这就是生活。我几乎将GUI用于所有内容,仅在必要时使用终端窗口。据我所知,使用sudo选项的解决方案对此无济于事。所以我有.desktop文件和脚本可以完成我经常使用的所有工作。

有两种基本解决方案。

1.重新安装 gksu

该解决方案可能会持续,也可能不会持续。反gsu的技术人员可能会找到阻止它的方法。但与此同时,请.deblibgksu(x64)gksu(x64)下载2个文件。使用gdebi或您要使用的任何安装工具安装libgksu2,然后安装gksu。这对我有用。

2.使用 pkexec

作为(希望)较长期的解决方案,我设法使pkexec用于所需的工具。

  1. 从脚本启动服务。事实证明,不需要gksu或pkexec。公正start service xyz,它将询问您的密码。

  2. 要编辑根文件或以root用户身份打开nautilus,请参阅如何使用pkexec而不是gksu-Web Upd8作为根运行Gedit和Nautilus。这为pkexec提供了两个“ polkit”文件,使您可以使用包含pkexec gedit用于编辑根文件的脚本,以及类似的nautilus。这些说明都在该网页上。我现在使用'filemanager-actions'提供右键单击操作,以root身份运行gedit或nautilus。

  3. 我以root用户身份运行deja-dup来备份核心系统。我很少这样做/home(排除)(因为/home我经常进行不需要root访问权限的备份)。为了使它起作用,我为步骤2制作了gedit的文件副本,并为deja-dup编辑了该文件。我不太了解其中的内容,但它确实适用pkexec backup于从.desktop文件启动的脚本中的备份和还原文件。我将此新文件添加到/usr/share/polkit-1/actions包含:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD polkit Policy Configuration 1.0//EN" "http://www.freedesktop.org/software/polkit/policyconfig-1.dtd">
    
    <policyconfig>
      <icon_name>deja-dup</icon_name>
    
      <action id="org.gnome.DejaDup">
        <description gettext-domain="deja-dup">Backup</description>
        <message gettext-domain="deja-dup">Privileges are required to backup system files</message>
        <defaults>
        <allow_any>no</allow_any>
        <allow_inactive>auth_admin</allow_inactive>
        <allow_active>auth_admin</allow_active>
         </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/deja-dup</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
      </action>
    
    </policyconfig>
    

    请注意,此目录中还有另一个deja-dup文件,该文件声称有助于还原文件,但是我无法使其正常工作。这个新文件需要有一个唯一的名称,例如org.gnome.DejaDupNew.policy

我目前没有gksu。我会继续下去...


pkexec deja-dup在添加了您描述的文件之后,启动备份的命令对我来说是正确的。该对话框确实让我首先选择了设置,这很棒。
wbloos

放入策略文件/usr/share/polkit-1/actions确实是创建具有提升pkexec权限的桌面启动器的方法。这是另一个例子
Serge Stroobandt,

4

Nautilus Admin(nautilus-admin)是Nautilus文件管理器的简单Python扩展,在右键单击菜单中添加了一些管理操作:

  • 以管理员身份打开:在新的Nautilus窗口中打开一个具有管理员(root)特权的文件夹。
  • 以管理员身份编辑:在Gedit窗口中打开一个具有管理员(root)特权的文件。

要在当前所有受支持的Ubuntu版本中安装Nautilus Admin,请打开终端并输入:

sudo apt install nautilus-admin

除文件和Gedit之外,我还测试了18.04中gksu的所有替代方法,供其他应用程序使用,最有效的方法是:

须藤-H appname&> / dev / null

pkexec是gksu的最佳替代品,因为它可以提供更高的安全性,但可以提供更高的安全性,但是在不同的应用程序中却非常不一致(例如,它不适用于Gedit),并且可能导致某些应用程序崩溃。sudo -i不必要地很难管理,因为当您仅需要root用户才能运行单个命令时,它会延长您的root用户特权一段时间。


3

我使用了一个名为的脚本sgedit,该脚本继承了字体,标签和扩展名的用户首选项。它用于sudo -H gedit代替gksu geditGUI环境中的稳定性。提示输入密码。

sudo继承你的用户帐户gedit设置

sgedit 80列右slide.gif

在此示例中,字体名称,字体大小,制表位,将制表符转换为空格,80列突出显示和右侧缩略图滑块的用户设置已被继承sudo

常规情况下,sudo -H gedit您无法进行或保存这些配置设置。使用下面的脚本sgedit,设置将从您的用户帐户继承。

该脚本还解决了“ gksu错误且默认情况下未安装”和“ pkexec难以设置”的问题。


背景

多年来,我一直被同一个问题困扰。这个周末的项目是编写sgedit脚本:

  • 致电使用 sgedit filename1 filename2...
  • 获取用户的制表符停靠点,字体,换行符等的gedit设置。
  • 提升为sudo -H保留文件所有权,同时获得root权限。
  • 如果最后一个sudo超时,则请求密码。
  • 获取sudo的gedit设置
  • 比较用户和sudo gedit设置之间的差异
  • gsettings set仅在差异上运行(将174个set命令减少到十几个或更少。下一次运行时,也许只进行一两个更改,但通常不执行任何更改。
  • 调用gedit作为后台任务,以使终端提示符立即重新出现。

Bash脚本 sgedit

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

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

家政

将上面的bash脚本复制到一个名为的新文件中sgedit。我建议将其放在您的$HOME/bin目录中/home/YOURNAME/bin。您可能必须先创建目录。

使用以下命令将文件标记为可执行文件:

chmod a+x ~/sgedit

注意~是的快捷方式/home/YOURNAME


0

Ubuntu 18.04:某些安装程序确实需要gksudo或gksu才能使用相同的名称。要使这些工作:

安装的gnome版本ssh-askpass。否则,密码对话框可能会隐藏在另一个窗口后面:

sudo apt-get install ssh-askpass-gnome

创建新文件my-gksudo.sh

sudo -H gedit /etc/profile.d/my-gksudo.sh

文件内容:

export SUDO_ASKPASS=/usr/bin/ssh-askpass

创建具有相同内容的新文件gksudo和gksu:

sudo -H gedit /usr/bin/gksudo

sudo -H gedit /usr/bin/gksu

两者的文件内容:

sudo -A $@

使gksudo和gksu可执行:

sudo chmod +x /usr/bin/gksudo

sudo chmod +x /usr/bin/gksu

重新启动计算机。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.