Qual è la differenza tra gksudo e gksu?

58

C'è qualche differenza tra il comportamento di gksu foo e gksudo foo ?
Possono essere usati in modo intercambiabile?

    
posta Sid 11.01.2011 - 12:52

3 risposte

39

Entrambi i file puntano allo stesso posto:

$ ls -l /usr/bin/gksudo 
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu

... gksudo è un collegamento simbolico a gksu . Ma questo non significa che faccia le stesse cose, lontano da esso.

Le applicazioni possono rilevare il comando utilizzato per eseguirlo. Questo è in genere argv[0] nei linguaggi in stile C o $0 in script di shell in stile Bourne. L'applicazione può guardarlo e, in questo caso, in realtà cambia il modo in cui funziona. La prima indicazione di questo è nella pagina man gksu :

gksu  is  a  frontend  to  su  and gksudo is a frontend to sudo.

Se guardi nell'origine ( apt-get source gksu ) per run_mode , vedrai come lo rileva:

  { /* support gksu_sudo_run */
    gchar *myname = g_path_get_basename (argv[0]);
    if (!strcmp(myname, "gksudo"))
      run_mode = SUDO_MODE;
    g_free (myname);
  }

Puoi sovrascriverlo con gli argomenti --su-mode / -w e --sudo-mode / -S (così puoi eseguire comandi equivalenti senza aver bisogno del link simbolico gksudo ... Ma questo dipende da te.

Se vuoi sapere come queste "modalità" differiscono davvero, c'è solo un po 'di escape in gksu . Devi seguirlo in libgksu . Questa è la libreria che controlla effettivamente le autorizzazioni prima di passare al sistema.

Se non è specificata alcuna modalità (es. chiami gksu senza argomenti) quando raggiunge libgksu , controllerà Gconf (come sottolinea Stefano) e se ancora non riesce a decidere, verrà impostato di default sulla modalità su .

    
risposta data Oli 11.01.2011 - 13:22
37

In Ubuntu (!), non c'è differenza.

  • gksu normalmente accede nell'utente root ed esegue un'app in questa sessione. Tuttavia, su Ubuntu, per impostazione predefinita utilizza la "modalità sudo", che equivale all'esecuzione di gksudo . Questo perché su ubuntu, non può accedere come root di default.

  • gksudo è l'equivalente grafico di sudo (e come indica Oli, solo un collegamento simbolico a gksu)

Dalla voce gconf di gksu:

Inoltre, sulla differenza tra sudo e gksudo:

% Bl0ck_qu0te%     
risposta data Stefano Palazzo 11.01.2011 - 13:18
14

So che questo è un thread vecchio, ma sono stato chiesto di dirti su una sottile ma essenziale differenza tra gksu e gksudo .

Anche se ho guardato a lungo e con difficoltà, non riesco a trovare una differenza documentata da nessuna parte, eppure esiste. Inoltre non ho scoperto perché c'è una differenza. L'ho trovato nel modo più duro quando ho eliminato per errore alcuni file di sistema proprio a causa di questa differenza (discussa in una discussione nei forum di Ubuntu ) - Stavo usando gksu , ma da allora mi sono assicurato di usare sempre gksudo .

Per riassumere, prova questo.

  1. Crea tre file in una cartella:
    touch abc
    touch abc.tmp
    touch abctmp
  2. Esegui i seguenti sei comandi. I primi cinque danno lo stesso risultato (previsto) (cioè solo abc.tmp ) mentre il sesto include un file extra ( abctmp ) che non dovrebbe.

    find . -regextype posix-egrep -regex '.*\.tmp' -print
    sudo find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksudo -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksudo --su-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksu --sudo-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksu -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    

Immagina i problemi quando sostituisci -print con -delete nel comando find (che è esattamente quello che è successo a me, causando la cancellazione di alcuni file di sistema).

Quindi, per favore usa gksudo invece di gksu .

    
risposta data Paddy Landau 30.04.2013 - 15:42

Leggi altre domande sui tag