J'ai besoin d'un équivalent de gksu en 18.04


23

J'ai lu beaucoup de discussions sur la suppression de gksu de nombreuses versions de Linux, y compris Ubuntu 18.04. Beaucoup déclarent que gksu est une abomination et qu'aucun utilisateur ne devrait jamais avoir besoin d'utiliser quelque chose comme ça. J'ai 2 exemples où, pour autant que je sache, je dois avoir quelque chose qui me permet d'exécuter en tant que root (pas seulement pour éditer des fichiers).

Tout d'abord, j'ai besoin de démarrer mysql uniquement après l'ouverture d'un dossier crypté sur la commande (GUI). Cela signifie avoir un script exécuté par le système de cryptage qui démarre le service mysql. Cela doit être fait en tant que root, donc j'utilise gksu dans ce script de démarrage qui me demande un mot de passe. Sinon, comment puis-je démarrer un service à partir d'un système GUI?

J'exécute également des sauvegardes système Ubuntu en tant que root, sinon de nombreux fichiers système ne peuvent pas être sauvegardés. Le fichier de bureau utilise donc gksu pour démarrer la sauvegarde.

pkexec semble compliqué, nécessitant des fichiers de stratégie. Est-ce la seule alternative, et si oui, pourquoi est-ce plus sûr?

D'autres réponses à des questions similaires ne semblent pas répondre aux problèmes individuels que les gens ont maintenant que gksu n'est plus (ou plus difficile à trouver ...). Je pense que de telles questions d'utilisateurs non experts bénéficieraient de réponses plus détaillées. J'en ai maintenant et j'aimerais donc répondre à ma propre question.


Fonctionne-t-il pkexecpour vous au lieu de gksu?
Thomas Ward

@karel a accepté, bien que ce message n'indique pas clairement le «remplacement» pkexec. (il faut chasser pour ça)
Thomas Ward

2
Vous pouvez également essayer d'utiliser sudo -H GUI-programet si Wayland il y a ce lien, cela pourrait être utile, ... il existe des solutions de contournement, si vous avez un outil GUI, qui fonctionne bien pour vous et nécessite des autorisations élevées.
sudodus

3
Il s'agit d'un sujet controversé mais, en résumé, l'exécution d'applications graphiques en tant que root est un risque pour la sécurité. Bien que vous, et beaucoup d'autres, ne soyez pas d'accord avec cela, l'exécution d'applications graphiques en tant que root est déconseillée par Ubuntu et de nombreuses distributions. Ubuntu est en train d'écrire des solutions alternatives, pkexec et d'autres politiques. Vous pouvez déposer un rapport de bogue et les développeurs travailleront sur une solution aux programmes qu'ils estiment devoir le faire, tels que les gestionnaires de packages. Ceci est complexe car il implique X et Wayland. Utilisez également des applications non graphiques ou écrivez les vôtres. Le chiffrement ne nécessite pas de GUI
Panther

J'utilise gnome-encfs-manager, qui fournit une interface graphique pour monter des dossiers cryptés. Il prévoit l'exécution d'un script lorsque le lecteur est monté. Dans ce script, je dois démarrer mysql. Sinon, comment puis-je faire cela? En ce qui concerne Wayland, ne pas autoriser les guis synaptiques ou partiels est ridicule du point de vue d'un utilisateur de bureau domestique ordinaire. Ils sont précieux. Les systèmes peuvent être si sûrs que personne ne veut les utiliser - il y a un équilibre, et dans ce cas particulier (wayland), l'utilisateur doit avoir raison.
pastim

Réponses:



8

Je sais qu'il y aurait des réponses à cela ailleurs, mais je n'en ai trouvé aucune assez claire et simple pour que je puisse résoudre ce problème. J'ai donc fouillé dans de nombreux endroits et j'ai trouvé ça. Je ne comprends toujours pas pourquoi la communauté Linux a décidé de rendre la vie si difficile pour nous, simples utilisateurs de bureau (et j'ai essayé de comprendre de nombreuses explications), mais c'est la vie. J'utilise l'interface graphique pour à peu près tout, en utilisant uniquement la fenêtre du terminal lorsque cela est nécessaire. Pour autant que je sache, les solutions utilisant les options sudo ne sont pas utiles. J'ai donc des .desktopfichiers et des scripts qui font tous les travaux que j'utilise régulièrement.

Il existe deux solutions de base.

1. Réinstaller gksu

Cette solution peut ou non durer. Les techniciens anti-gksu peuvent trouver un moyen de l'arrêter. Mais en attendant, téléchargez 2 .debfichiers depuis libgksu (x64) et gksu (x64) . Installez libgksu2 puis gksu à l'aide de gdebi ou de l'outil d'installation que vous souhaitez utiliser. Cela a fonctionné pour moi.

2. Utilisation pkexec

En tant que solution (espérons-le) à plus long terme, j'ai réussi à faire fonctionner pkexec pour les outils dont j'ai besoin.

  1. Pour démarrer un service à partir d'un script. Il s'avère que ni gksu ni pkexec ne sont nécessaires. Juste start service xyzet il vous demandera votre mot de passe.

  2. Pour modifier des fichiers racine ou ouvrir nautilus en tant que root, consultez Comment exécuter Gedit et Nautilus en tant que root avec pkexec au lieu de gksu - Web Upd8 . Cela fournit deux fichiers «polkit» pour pkexec, qui vous permettent d'utiliser un script contenant pkexec geditpour éditer un fichier racine, et de même pour nautilus. Les instructions sont toutes sur cette page Web. J'utilise maintenant «filemanager-actions» pour fournir des actions de clic droit pour exécuter gedit ou nautilus en tant que root.

  3. J'exécute deja-dup en tant que root pour les sauvegardes du système principal. Je le fais rarement, à l'exclusion /home(car /homeje fais des sauvegardes fréquentes qui n'ont pas besoin d'un accès root). Pour que cela fonctionne, j'ai pris une copie du fichier utilisé à l'étape 2 pour gedit et l'ai édité pour deja-dup. Je ne comprends pas vraiment le contenu, mais cela fonctionne, à la fois pour les sauvegardes et pour restaurer les fichiers, en utilisant pkexec backupun script lancé à partir d'un fichier .desktop. J'ai ajouté ce nouveau fichier à /usr/share/polkit-1/actionscontenant:

    <?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>
    

    Notez qu'il existe un autre fichier deja-dup dans ce répertoire, qui prétend aider à la restauration des fichiers, mais je n'ai pas pu le faire fonctionner. Ce nouveau fichier doit avoir un nom unique, tel que org.gnome.DejaDupNew.policy.

Pour l'instant, je cours sans gksu. Je vais essayer de continuer…


La commande pour démarrer la sauvegarde était pkexec deja-duppour moi, après avoir ajouté le fichier comme vous l'avez décrit. La boîte de dialogue me permet de choisir d'abord les paramètres, ce qui est génial.
wbloos

La mise en place d'un fichier de stratégie /usr/share/polkit-1/actionsétait en effet le moyen de créer un lanceur de bureau avec des pkexecautorisations élevées . Voici un autre exemple .
Serge Stroobandt

4

Nautilus Admin ( nautilus-admin ) est une simple extension Python pour le gestionnaire de fichiers Nautilus qui ajoute des actions administratives au menu contextuel:

  • Ouvrir en tant qu'administrateur: ouvre un dossier dans une nouvelle fenêtre Nautilus exécutée avec des privilèges d'administrateur (root).
  • Modifier en tant qu'administrateur: ouvre un fichier dans une fenêtre Gedit fonctionnant avec des privilèges d'administrateur (root).

Pour installer Nautilus Admin dans toutes les versions actuellement prises en charge d'Ubuntu, ouvrez le terminal et tapez:

sudo apt install nautilus-admin

J'ai testé toutes les alternatives à gksu en 18.04 pour d'autres applications que Files et Gedit, et celle qui semble fonctionner le plus régulièrement est:

sudo -H appname &> / dev / null

pkexecest le meilleur remplacement pour gksu quand il fonctionne car il offre une sécurité plus élevée, mais il est très incohérent entre les différentes applications (par exemple, il ne fonctionne pas avec Gedit) et peut provoquer un crash avec certaines applications. sudo -iest inutilement difficile à gérer car il élève vos privilèges à rooter pendant une période de temps prolongée lorsque vous n'avez besoin d'être root que pour exécuter une seule commande.


3

J'utilise un script appelé sgeditqui hérite des préférences utilisateur pour la police, les onglets et les extensions. Il utilise sudo -H geditau lieu de gksu geditpour la stabilité dans l'environnement GUI. Il vous demande un mot de passe.

Avoir sudohérité des geditparamètres de votre compte utilisateur

colonne sgedit 80 droite slider.gif

Dans cet exemple, les paramètres utilisateur pour le nom de la police, la taille de la police, les taquets de tabulation, la conversion des tabulations en espaces, la surbrillance de 80 colonnes et la barre de défilement des vignettes à droite ont été hérités par sudo.

Avec regular, sudo -H geditvous ne pouvez ni définir ni enregistrer ces paramètres de configuration. Avec le script ci sgedit- dessous, les paramètres sont hérités de votre compte utilisateur.

Ce script résout également les problèmes « gksuest incorrect et n'est pas installé par défaut» et « pkexecest difficile à configurer».


Contexte

Je suis harcelé par le même problème depuis des années. Le projet de ce week-end était d'écrire le sgeditscript:

  • Appeler en utilisant sgedit filename1 filename2...
  • Obtient les paramètres gedit de l'utilisateur pour les taquets de tabulation, les polices, les retours à la ligne, etc.
  • Élève pour sudo -Hconserver la propriété des fichiers tout en obtenant les pouvoirs root.
  • Demande le mot de passe si le dernier sudo a expiré.
  • Obtient les paramètres gedit de sudo
  • Compare les différences entre les paramètres utilisateur et sudo gedit
  • Fonctionne gsettings setuniquement sur les différences (réduit 174 setcommandes à une douzaine ou moins. La prochaine fois, il s'exécutera peut-être seulement un ou deux changements, mais souvent aucun.
  • Appelle gedit comme tâche d'arrière-plan de sorte que l'invite du terminal réapparaisse immédiatement.

Script 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 $*;"

Ménagère

Copiez le script bash ci-dessus dans un nouveau fichier appelé sgedit. Je recommande de le placer dans votre $HOME/binrépertoire, c.-à-d /home/YOURNAME/bin. Vous devrez peut-être d'abord créer le répertoire.

Marquez le fichier comme exécutable en utilisant:

chmod a+x ~/sgedit

La note ~est un raccourci pour /home/YOURNAME.


0

Ubuntu 18.04: Certains programmes d'installation et d'autres nécessitent que gksudo ou gksu soient disponibles avec le même nom. Pour que cela fonctionne:

Installez la version gnome de ssh-askpass. Sans cela, la boîte de dialogue du mot de passe peut être cachée derrière une autre fenêtre:

sudo apt-get install ssh-askpass-gnome

Créez un nouveau fichier my-gksudo.sh:

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

contenu du fichier:

export SUDO_ASKPASS=/usr/bin/ssh-askpass

Créez de nouveaux fichiers gksudo et gksu avec un contenu identique:

sudo -H gedit /usr/bin/gksudo

et

sudo -H gedit /usr/bin/gksu

contenu du fichier pour les deux:

sudo -A $@

Rendez gksudo et gksu exécutables:

sudo chmod +x /usr/bin/gksudo

Et

sudo chmod +x /usr/bin/gksu

Redémarrez l'ordinateur.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.