Come posso elevare i privilegi di nautilus per spostare o copiare una cartella come root?


11

Supponiamo di avere una cartella aperta in Nautilus presente nella mia /home/user/tempdirectory. Vorrei spostare una cartella da lì nella mia /optdirectory (è un programma). Esiste un modo per elevare il comando di copia fino a un sudomodo che io possa copiare la cartella senza dover avviare una nuova istanza di Nautilus dalla riga di comando?

Risposte:


6

Per quanto posso dire, in base a ciò che so e ho vissuto:

sudoviene utilizzato per le applicazioni / i comandi della riga di comando ed gksudoè utile quando si tenta di eseguire un programma utilizzando la finestra di dialogo Esegui applicazione premendo Alt + F2.

Ho letto che gksudoè solo la versione grafica di sudo.

Ad ogni modo, puoi sia rilasciare sudo nautiluse / o gksu nautilus in un terminale allo scopo di fare quello che desideri, avendo lo stesso effetto entrambi i comandi. Ma se vuoi omettere il terminale e desideri eseguirlo direttamente con la finestra di dialogo " Esegui applicazione ", premi Alt + F2 e scrivi gksu nautilus, dopodiché ti verrà richiesto di inserire la password, quindi si aprirà il browser di file nautilus con privilegi di root.

Inoltre, è possibile ottenere l'apertura di file / cartelle come root con un solo clic usando l'opzione "Apri come amministratore" con il tasto destro. Che in ogni caso aprirà una nuova istanza nautilus per la cartella specificata e aprirà i file come root, questo potrebbe anche aprire / eseguire applicazioni come root ma non l'ho ancora testato.

inserisci qui la descrizione dell'immagine

È possibile ottenere l'opzione "Apri come amministrazione" nel menu contestuale installando nautilus-gksu dalla riga di comando: sudo apt-get install nautilus-gksuo usando synaptic come mostrato nell'immagine seguente:

inserisci qui la descrizione dell'immagine

In bocca al lupo!


Sembra che devo aggiungere qualcosa per ottenere il comando "Apri come". Ricordi cos'era? Sono a Ub 11.
jcollum il

nautilus-gksu, tramite sinaptico (immagine aggiunta) o riga di comando (fornita anche nella risposta)
Geppettvs D'Constanzo

3
Ecco perché dovremmo usare gksu nautilusnon sudo: askubuntu.com/q/11760
Takkat

2
Nautilus-gksu si è mosso? Scomparire? Non riesco a trovarlo in USC o apt-get.
jcollum,

2
@jcollum nautilus-gksunon esiste più nel repository da Ubuntu 12.04.
IQAndreas,

5

devi eseguire Nautilus come root

digita questo nel terminale

gksu nautilus

ora puoi spostarti utilizzando la GUI.

o usa questo comando

sudo mv -r /home/user/temp/<foldername>/ /opt/

1
Quindi la risposta è "Non puoi senza riavviare Nautilus"?
jcollum,

non è necessario riavviare nautilus, basta aprire un'altra istanza con il comando gksu. Ma se intendi "apri nautilus con il mio utente e poi ho i privilegi di root in quell'istanza
zurdo

Dovrai aprire una nuova finestra di nautilus, ma per semplificare le cose copi la posizione dalla barra ed esegui il comando: gksu nautilus "/path/to/dir/pasted/here"(le virgolette intorno al percorso sono importanti)
IQAndreas

1

Ecco lo script nautilus che utilizzo per aprire una finestra Nautilus admin (root):

#!/bin/bash
# This Nautilus script opens the current nautilus window in admin mode.
# Requires: perl, liburi-perl

ERROR_NEED_PERL="This script requires the liburi-perl package. Install it and try again."
GKSUDO_MESSAGE="Enter your password to open an admin window on: "
ERROR_BROKEN_LINK="Broken link."

## Check for liburi-perl (and hence perl)
let PERLOK=$(dpkg-query -W --showformat='${Status}\n' liburi-perl|grep "install ok installed")
if [ "" == "$PERLOK" ]; then
   zenity --error --text "$ERROR_NEED_PERL"
   exit 1
fi

let LEN_NSSFP=${#NAUTILUS_SCRIPT_SELECTED_FILE_PATHS}-1
[ $LEN_NSSFP -lt 0 ] && let LEN_NSSFP=0
let LEN_NSSU=${#NAUTILUS_SCRIPT_SELECTED_URIS}-1
[ $LEN_NSSU -lt 0 ] && let LEN_NSSU=0

## if clicking happens on the Desktop (or a file or folder on it),
## $1 will be a path (i.e. with "/" in it); otherwise (in a folder
## window) $1 will be just a file or folder name (without path).
## Note that selecting the home desktop namespace extension yields
## a $# of zero but NAUTILUS_SCRIPT_SELECTED_FILE_PATHS pointing to the
## target (in the computer (computer:///) and trash (trash:///) desktop
## namespace extension cases, ...PATHS is empty).

## Initially, we stripped the file:// prefix from NAUTILUS...CURRENT_URI,
## yielding the full path, and then retrofit spaces, like this:
#OBJECT="`echo -n $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g'`"
## However, this fails if any special characters other than spaces are in the path,
## such as accented letters, etc. We need to convert not just spaces, but any
## UTF-8 embedded in there...The URI<->path conversion requires perl (and liburi-perl):
OBJECT=$( echo "$NAUTILUS_SCRIPT_CURRENT_URI" | perl -MURI -le 'print URI->new(<>)->dir' )
## ->file is to be used for file URIs instead of ->dir, which is for directory URIs

CONTEXT="$OBJECT"
## Add the selection to the path, if defined and unique
if [ $# -eq 1 ] ; then
   ## If a single Desktop object, override
   if echo $1 | grep -q "/" ; then ## Desktop (or object on desktop)
      OBJECT="$1"
      CONTEXT=""
   else ## $1 is a simple file or folder name, without a path
      ## The container could be root (/)
      OBJECT="${OBJECT%/}/$1"
   fi
# elif [ $# -eq 0 -a -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ] ; then
elif [ $# -eq 0 ] ; then
   ## desktop name space extension selected?
   if [ -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ] ; then ## Home
      OBJECT="${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS:0:LEN_NSSFP}"
   elif [ -n "$NAUTILUS_SCRIPT_SELECTED_URIS" ] ; then ## Computer, Trash
      ## These typically map to root (/)
#     OBJECT="`echo ${NAUTILUS_SCRIPT_SELECTED_URIS:0:LEN_NSSU} | cut -d'/' -f3- | sed 's/%20/ /g'`"
      OBJECT="${NAUTILUS_SCRIPT_SELECTED_URIS:0:LEN_NSSU}"
      OBJECT=$( echo "$OBJECT" | perl -MURI -le 'print URI->new(<>)->dir' )
   fi
   CONTEXT=""
fi
## Note that a desktop shortcut (.desktop file) does not trip -h
if [ -h "$OBJECT" ] ; then ## symbolic link
   ## readlink has no "follow symlinks as far as they exist" option
   OBJECT=`readlink -e "$OBJECT"`
   if [ -z "$OBJECT" ] ; then
      zenity --error --text "$ERROR_BROKEN_LINK"
      exit 1
   fi
fi

# zenity --info --text "\$OBJECT is « $OBJECT »"
if [ -f "$OBJECT" ] ; then
   ## Regular file
   DIR=`dirname "$OBJECT"`
else
   ## Directory (or no object)
   DIR="$OBJECT"
fi

## If DIR is empty, gnome-open opens in the default (home) directory (i.e. "~") anyway
#if [ -z "$DIR" ] ; then
#   DIR=~
#fi

## At this point, the test [ ! "$CONTEXT" = "$DIR" ] serves to indicate
## that the target directory is not matched to the one the script was
## invoked from (if any).

gksudo --message "$GKSUDO_MESSAGE$DIR" gnome-open "$DIR"

exit $?

0

Un'altra soluzione dandy è lanciare un'altra copia di Nautilus con i privilegi di root (sudo) da una riga di comando:

gksudo xdg-open <path> &

La chiusura &indica che il comando viene eseguito come processo in background; quindi l'uso di gksudo(usare sudosignificherebbe un prompt invisibile al quale non si può rispondere). xdg-opensi occupa di avviare una finestra di esplorazione ( nautiluso altro).

Potrebbe essere necessario installare prima i pacchetti xdg-utilse gksu.

È possibile ottenere una serie di avvertimenti e Gtk-CRITICALe Glib-GObject-CRITICALmessaggi alla chiusura della finestra di Nautilus elevata, ma questi sono innocui per quanto posso dire. Mi piacerebbe sbarazzarmi di loro, se qualcuno sa come.


-1
sudo mv /home/user/temp/[Filename] /opt

Invece di [Filename]digitare il nome del file senza parentesi [].


2
-1, non risponde alla domanda ... Non ho chiesto come utilizzare il comando mv.
jcollum,

3
L'uso di un solo comando come root è noto come pratica migliore rispetto all'apertura di Nautilus grafico come root.
Agmenor,

-2

Un altro modo semplice è

sudo gnome-open foldername

O consiglierei l'installazione di nemo file manager. Ha "Apri come root" nel menu contestuale del tasto destro

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.