Comment puis-je élever les privilèges nautilus pour déplacer ou copier un dossier en tant que root?

11

Disons que j'ai un dossier ouvert dans Nautilus qui est dans mon /home/user/temprépertoire. J'aimerais déplacer un dossier de là vers mon /optrépertoire (c'est un programme). Existe-t-il un moyen d'élever la commande de copie jusqu'à un sudoafin de pouvoir copier le dossier sans avoir à démarrer une nouvelle instance de Nautilus à partir de la ligne de commande?

jcollum
la source

Réponses:

6

Pour autant que je puisse dire, d'après ce que je sais et ai vécu:

sudoest utilisé pour les applications / commandes de ligne de commande et gksudoest utile lorsque vous essayez d'exécuter un programme à l'aide de la fenêtre de dialogue Exécuter l'application en appuyant sur Alt + F2.

J'ai lu que gksudoc'est juste la version graphique de sudo.

Quoi qu'il en soit, vous pouvez à la fois déposer sudo nautiluset / ou gksu nautilus dans un terminal dans le but de faire ce que vous souhaitez, en ayant le même effet sur les deux commandes. Mais si vous souhaitez omettre le terminal et que vous souhaitez l'exécuter directement avec la fenêtre de dialogue " Exécuter l'application ", appuyez simplement sur Alt + F2 et écrivez gksu nautilus, après quoi vous serez invité à entrer votre mot de passe, puis le navigateur de fichiers nautilus s'ouvrira avec des privilèges root.

De plus, vous pouvez réaliser d'ouvrir des fichiers / dossiers en tant que root en un seul clic en utilisant l'option "Ouvrir en tant qu'administrateur" via un clic droit. Ce qui en tout cas ouvrira une nouvelle instance nautilus pour le dossier donné et ouvrira les fichiers en tant que root, cela peut également ouvrir / exécuter des applications en tant que root mais je ne l'ai pas encore testé.

entrez la description de l'image ici

Vous pouvez obtenir l'option "Ouvrir en tant qu'administration" dans votre menu contextuel en installant nautilus-gksu via la ligne de commande: sudo apt-get install nautilus-gksuou en utilisant synaptique comme indiqué dans l'image suivante:

entrez la description de l'image ici

Bonne chance!

Geppettvs D'Constanzo
la source
Il semble que je dois ajouter quelque chose pour obtenir la commande "Ouvrir en tant que". Vous rappelez-vous ce que c'était? Je suis en Ub 11.
jcollum
nautilus-gksu, via synaptique (image ajoutée) ou ligne de commande (également fournie dans la réponse)
Geppettvs D'Constanzo
3
Voici pourquoi nous ne devrions gksu nautiluspas utiliser sudo: askubuntu.com/q/11760
Takkat
2
Nautilus-gksu s'est-il déplacé? Disparaître? Je ne le trouve pas dans USC ou apt-get.
jcollum
2
@jcollum nautilus-gksun'existe plus dans le référentiel depuis Ubuntu 12.04.
IQAndreas
5

vous devez exécuter Nautilus en tant que root

tapez ceci dans le terminal

gksu nautilus

vous pouvez maintenant vous déplacer à l'aide de l'interface graphique.

ou utilisez cette commande

sudo mv -r /home/user/temp/<foldername>/ /opt/
sarveshlad
la source
1
La réponse est donc "Vous ne pouvez pas sans redémarrer Nautilus"?
jcollum
vous n'avez pas besoin de redémarrer nautilus, ouvrez simplement une autre instance avec la commande gksu. Mais si vous voulez dire "ouvrir nautilus avec mon utilisateur et ensuite avoir les privilèges root dans ce cas pour déplacer des fichiers" c'est peut-être ce dont vous avez besoin upubuntu.com/2011/12/…
zurdo
Vous devrez ouvrir une nouvelle fenêtre nautilus, mais pour vous faciliter la tâche, copiez l'emplacement à partir de la barre et exécutez la commande: gksu nautilus "/path/to/dir/pasted/here"(les guillemets autour du chemin sont importants)
IQAndreas
1

Voici le script nautilus que j'utilise pour ouvrir une fenêtre admin (root) Nautilus:

#!/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 $?
Urhixidur
la source
0

Une autre solution dandy consiste à lancer une autre copie de Nautilus avec les privilèges root (sudo) à partir d'une ligne de commande:

gksudo xdg-open <path> &

La fermeture &signifie que la commande s'exécute comme un travail d'arrière-plan; d'où l'utilisation de gksudo(utiliser sudosignifierait une invite invisible à laquelle vous ne pouvez pas répondre).xdg-opens'occupe du lancement d'une fenêtre d'explorateur ( nautilusou autre).

Vous devrez peut-être installer le xdg-utilsgksu packages et au préalable.

Vous pouvez obtenir un tas d'avertissements et Gtk-CRITICALet des Glib-GObject-CRITICALmessages lors de la fermeture de la fenêtre Nautilus élevé, mais ceux - ci sont inoffensifs pour autant que je peux dire. J'adorerais m'en débarrasser, si quelqu'un sait comment.

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

Au lieu de [Filename], tapez le nom de votre fichier sans crochets [].

Tyler
la source
2
-1, ne répond pas à la question ... Je n'ai pas demandé comment utiliser la commande mv.
jcollum
3
L'utilisation d'une seule commande en tant que root est connue comme une meilleure pratique que d'ouvrir Nautilus graphique en tant que root.
Agmenor
-2

Un autre moyen simple est

sudo gnome-open foldername

Ou je recommanderais d'installer le gestionnaire de fichiers nemo. Il a «ouvert en tant que root» dans son menu contextuel de clic droit

Jayadeep KM
la source