Ho bisogno di un equivalente di gksu nel 18.04


23

Ho letto molti thread sulla rimozione di gksu da molte versioni di Linux, incluso Ubuntu 18.04. Molti affermano che gksu è un abominio e che nessun utente dovrebbe mai aver bisogno di usare qualcosa di simile. Ho 2 esempi in cui, per quanto ne so, devo avere qualcosa che mi permetta di eseguire come root (non solo per modificare i file).

Innanzitutto, ho bisogno di avviare mysql solo dopo aver aperto una cartella crittografata sul comando (GUI). Ciò significa avere uno script eseguito dal sistema di crittografia che avvia il servizio mysql. Deve essere fatto come root, quindi uso gksu in quello script di avvio che mi chiede una password. In quale altro modo è possibile avviare un servizio da un sistema di interfaccia grafica?

Eseguo anche i backup del sistema Ubuntu come root, altrimenti non è possibile eseguire il backup di molti file di sistema. Quindi il file desktop utilizza gksu per avviare il backup.

pkexec sembra complicato e necessita di file di criteri. È l'unica alternativa e, in tal caso, perché è più sicura?

Altre risposte a domande simili non sembrano affrontare i singoli problemi che le persone hanno ora che gksu non è più (o più difficile da trovare ...). Penso che tali domande da parte di utenti non esperti trarrebbero beneficio da risposte più dettagliate. Ora ne ho alcuni e quindi vorrei rispondere alla mia domanda.


Funziona pkexecper te invece che gksu?
Thomas Ward

@karel ha accettato, anche se quel post non indica chiaramente il "rimpiazzo" pkexec. (devi cacciarlo)
Thomas Ward

2
Puoi anche provare a usare sudo -H GUI-programe se Wayland ha questo link, questo potrebbe essere utile, ... ci sono soluzioni alternative, se hai uno strumento GUI, che funziona bene per te e ha bisogno di autorizzazioni elevate.
sudodus,

3
Questo è un argomento controverso ma, in poche parole, eseguire applicazioni grafiche come root è un rischio per la sicurezza. Sebbene tu e molti altri non siate d'accordo con questo, eseguire app grafiche come root è scoraggiato da Ubuntu e da molte distro. Ubuntu è in procinto di scrivere soluzioni alternative, pkexec e altre politiche. È possibile presentare una segnalazione di bug e gli sviluppatori lavoreranno su una soluzione ai programmi che ritengono debbano fare come i gestori di pacchetti. Questo è complesso in quanto coinvolge X e Wayland. In alternativa, usa app non grafiche o scrivi le tue. La crittografia non richiede una GUI
Panther

Uso gnome-encfs-manager, che fornisce una GUI per montare cartelle crittografate. Prevede l'esecuzione di uno script quando l'unità è montata. In quello script ho bisogno di avviare mysql. In quale altro modo posso farlo? Per quanto riguarda Wayland, non consentire le guide sinaptiche o gparted è ridicolo dal punto di vista di un normale utente desktop domestico. Sono inestimabili. I sistemi possono essere così sicuri che nessuno vuole usarli - c'è un equilibrio, e in questo caso particolare (wayland) l'utente deve avere ragione.
pastim,

Risposte:



8

So che si dice che ci siano risposte a questo altrove, ma non ho trovato nessuno di questi abbastanza chiaro e semplice da risolvere il problema. Quindi ho scavato in molti posti e ho pensato a questo. Non capisco ancora perché la comunità Linux abbia deciso di rendere la vita così difficile per noi semplici utenti desktop (e ho cercato di capire molte spiegazioni), ma questa è la vita. Uso la GUI per quasi tutto, usando la finestra del terminale solo quando necessario. Per quanto ne so, le soluzioni che usano le opzioni sudo non sono di aiuto. Quindi ho.desktop file e script che fanno tutti i lavori che uso regolarmente.

Esistono due soluzioni di base.

1. Reinstalla gksu

Questa soluzione può o non può durare. I tecnici anti-gksu possono trovare un modo per fermarlo. Ma nel frattempo, scarica 2 .debfile da libgksu (x64) e gksu (x64) . Installa libgksu2 e poi gksu usando gdebi o qualsiasi strumento di installazione che desideri utilizzare. Questo ha funzionato per me.

2. Usa pkexec

Come soluzione (si spera) a più lungo termine, sono riuscito a far funzionare pkexec con gli strumenti di cui ho bisogno.

  1. Per avviare un servizio da uno script. Si scopre che non è necessario né gksu né pkexec. Giusto start service xyze ti chiederà la password.

  2. Per modificare i file root o per aprire nautilus come root, vedere Come eseguire Gedit e Nautilus come root con pkexec invece di gksu - Web Upd8 . Questo fornisce due file 'polkit' per pkexec, che ti permettono di usare uno script contenente pkexec geditper modificare un file root, e allo stesso modo per nautilus. Le istruzioni sono tutte su quella pagina web. Ora sto usando 'filemanager-actions' per fornire azioni del tasto destro per eseguire gedit o nautilus come root.

  3. Corro deja-dup come root per i backup del sistema principale. Lo faccio di rado, escluso /home(poiché /homeeseguo backup frequenti che non richiedono l'accesso come root). Per farlo funzionare ho preso una copia del file usato nel passaggio 2 per gedit e l'ho modificato per deja-dup. Non capisco davvero il contenuto, ma funziona, sia per i backup che per ripristinare i file, usando pkexec backupin uno script avviato da un file .desktop. Ho aggiunto questo nuovo file a /usr/share/polkit-1/actionscontenente:

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

    Nota che c'è un altro file deja-dup in questa directory, che sostiene di aiutare con il ripristino dei file, ma non sono riuscito a farlo funzionare. Questo nuovo file deve avere un nome univoco, ad esempio org.gnome.DejaDupNew.policy.

Per il momento sto correndo senza gksu. Proverò ad andare avanti ...


Il comando per avviare il backup è stato pkexec deja-dupper me, dopo aver aggiunto il file come descritto. La finestra di dialogo mi consente di scegliere prima le impostazioni, il che è fantastico.
Wbloos,

Inserire un file di criteri /usr/share/polkit-1/actionsera davvero il modo di creare un programma di avvio desktop con pkexecautorizzazioni elevate . Ecco un altro esempio .
Serge Stroobandt,

4

Nautilus Admin ( nautilus-admin ) è una semplice estensione Python per il file manager Nautilus che aggiunge alcune azioni amministrative al menu di scelta rapida:

  • Apri come amministratore: apre una cartella in una nuova finestra di Nautilus in esecuzione con i privilegi di amministratore (root).
  • Modifica come amministratore: apre un file in una finestra di Gedit in esecuzione con i privilegi di amministratore (root).

Per installare Nautilus Admin in tutte le versioni attualmente supportate di Ubuntu aprire il terminale e digitare:

sudo apt install nautilus-admin

Ho provato tutte le alternative a gksu nel 18.04 per altre applicazioni oltre a Files e Gedit, e quella che sembra funzionare in modo più coerente è:

sudo -H nome app &> / dev / null

pkexecè il miglior sostituto di gksu quando funziona perché fornisce una maggiore sicurezza, ma è molto incoerente tra le diverse app (ad esempio non funziona con Gedit) e può causare crash con alcune app. sudo -iè inutilmente difficile da gestire perché eleva i privilegi di root per un periodo di tempo prolungato quando è necessario solo essere root per eseguire un singolo comando.


3

Uso uno script chiamato sgeditche eredita le preferenze dell'utente per font, schede ed estensioni. Utilizza sudo -H geditinvece di gksu geditstabilità nell'ambiente della GUI. Richiede una password.

Hai sudoereditato le geditimpostazioni del tuo account utente

sgedit 80 colonna destra slider.gif

In questo esempio sono state ereditate le impostazioni utente per il nome del carattere, la dimensione del carattere, i punti di tabulazione, la conversione di schede in spazi, l'evidenziazione di 80 colonne e la barra di scorrimento della miniatura sul lato destro sudo.

Con regolarità sudo -H geditnon è possibile effettuare né salvare queste impostazioni di configurazione. Con lo script sotto sgeditle impostazioni vengono ereditate dal tuo account utente.

Questo script risolve anche i problemi " gksuè danneggiato e non installato per impostazione predefinita" e " pkexecè difficile da configurare".


sfondo

Sono stato assillato dallo stesso problema per anni. Il progetto di questo fine settimana è stato quello di scrivere la sgeditsceneggiatura:

  • Chiama usando sgedit filename1 filename2...
  • Ottiene le impostazioni gedit dell'utente per tabulazioni, caratteri, ritorno a capo, ecc.
  • Si eleva per sudo -Hpreservare la proprietà dei file ottenendo i poteri di root.
  • Richiede la password se è scaduto l'ultimo sudo.
  • Ottiene le impostazioni gedit di sudo
  • Confronta le differenze tra le impostazioni utente e sudo gedit
  • Funziona solo gsettings setsulle differenze (riduce 174 setcomandi a una dozzina o meno. La prossima volta viene eseguito forse solo una o due modifiche ma spesso nessuna.
  • Chiama gedit come attività in background in modo tale che il prompt del terminale riappaia immediatamente.

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

Faccende domestiche

Copia lo script bash sopra in un nuovo file chiamato sgedit. Consiglio di inserirlo nella tua $HOME/bindirectory, ad es /home/YOURNAME/bin. Potrebbe essere necessario creare prima la directory.

Contrassegna il file come eseguibile utilizzando:

chmod a+x ~/sgedit

Nota ~è una scorciatoia per /home/YOURNAME.


0

Ubuntu 18.04: alcuni programmi di installazione e altri richiedono gksudo o gksu per essere disponibili con lo stesso nome. Per far funzionare questi:

Installa la versione gnome di ssh-askpass. Senza questo la finestra di dialogo della password potrebbe essere nascosta dietro un'altra finestra:

sudo apt-get install ssh-askpass-gnome

Crea nuovo file my-gksudo.sh:

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

contenuto del file:

export SUDO_ASKPASS=/usr/bin/ssh-askpass

Crea nuovi file gksudo e gksu con contenuto identico:

sudo -H gedit /usr/bin/gksudo

e

sudo -H gedit /usr/bin/gksu

contenuto del file per entrambi:

sudo -A $@

Rendi eseguibile gksudo e gksu:

sudo chmod +x /usr/bin/gksudo

E

sudo chmod +x /usr/bin/gksu

Riavvia il computer.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.