11 votes

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

Dites que j'ai un dossier ouvert dans Nautilus qui se trouve dans mon répertoire /home/user/temp. J'aimerais déplacer un dossier de là vers mon répertoire /opt (c'est un programme). Y a-t-il un moyen d'élever la commande de copie jusqu'à sudo pour que je puisse copier le dossier sans avoir à démarrer une nouvelle instance de Nautilus à partir de la ligne de commande ?

6voto

Geppettvs D'Constanzo Points 18906

Autant que je sache, d'après ce que je sais et ai expérimenté :

sudo est utilisé pour les applications/commandes en ligne de commande et gksudo est utile lorsque vous essayez d'exécuter un programme en utilisant la fenêtre de dialogue Exécuter une application en appuyant sur Alt+F2.

J'ai lu que gksudo n'est que la version graphique de sudo.

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

De plus, vous pouvez 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, dans tous les cas, ouvrira une nouvelle instance de 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é.

entrer la description de l'image ici

Vous pouvez obtenir l'option "Ouvrir en tant qu'administrateur" dans votre menu contextuel en installant nautilus-gksu via la ligne de commande : sudo apt-get install nautilus-gksu ou en utilisant synaptic comme le montre l'image suivante :

entrer la description de l'image ici

Bonne chance!

5voto

sarvesh.lad Points 2504

Vous devez exécuter Nautilus en tant que superutilisateur

tapez ceci dans le terminal

gksu nautilus

maintenant vous pouvez vous déplacer en utilisant l'interface graphique.

ou utilisez cette commande

sudo mv -r /home/utilisateur/temp// /opt/

1voto

user60033 Points 1

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

#!/bin/bash
# Ce script Nautilus ouvre la fenêtre Nautilus actuelle en mode administrateur.
# Nécessite : perl, liburi-perl

ERROR_NEED_PERL="Ce script nécessite le paquet liburi-perl. Installez-le et réessayez."
GKSUDO_MESSAGE="Entrez votre mot de passe pour ouvrir une fenêtre administrateur sur : "
ERROR_BROKEN_LINK="Lien brisé."

## Vérifier la présence de liburi-perl (et donc 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

## Si un clic se produit sur le Bureau (ou sur un fichier ou un dossier), $1 sera un chemin (c'est-à-dire avec "/" dedans); sinon (dans une fenêtre de dossier), $1 sera simplement un nom de fichier ou de dossier (sans chemin).
## Notez que la sélection de l'extension d'espace de noms du bureau donne une valeur $# de zéro mais NAUTILUS_SCRIPT_SELECTED_FILE_PATHS pointe vers la cible (dans les cas d'extension d'espace de noms de bureau computer (ordinateur:///) et trash (corbeille:///), ...PATHS est vide).

## Au début, nous avons supprimé le préfixe file:// de NAUTILUS...CURRENT_URI, donnant le chemin complet, puis nous avons ajouté des espaces, comme ceci :
#OBJECT="`echo -n $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g'`"
## Cependant, cela échoue si des caractères spéciaux autres que des espaces sont dans le chemin, comme des lettres accentuées, etc. Nous devons convertir non seulement des espaces, mais n'importe quel UTF-8 intégré là-dedans...La conversion URI<->chemin nécessite perl (et liburi-perl) :
OBJECT=$( echo "$NAUTILUS_SCRIPT_CURRENT_URI" | perl -MURI -le 'print URI->new(<>)->dir' )
## ->file doit être utilisé pour les URIs de fichiers au lieu de ->dir, qui est pour les URIs de dossiers

CONTEXT="$OBJECT"
## Ajouter la sélection au chemin, si défini et unique
if [ $# -eq 1 ] ; then
   ## Si un seul objet sur le Bureau, remplacer
   if echo $1 | grep -q "/" ; then ## Bureau (ou objet sur le bureau)
      OBJECT="$1"
      CONTEXT=""
   else ## $1 est un simple nom de fichier ou dossier, sans chemin
      ## Le conteneur pourrait être root (/)
      OBJECT="${OBJECT%/}/$1"
   fi
# elif [ $# -eq 0 -a -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ] ; then
elif [ $# -eq 0 ] ; then
   ## extension d'espace de noms du bureau sélectionnée ?
   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
      ## Ceux-ci sont généralement associés à 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
## Notez qu'un raccourci de bureau (fichier .desktop) n'active pas -h
if [ -h "$OBJECT" ] ; then ## lien symbolique
   ## readlink n'a pas d'option "suivre les liens symboliques aussi loin qu'ils existent"
   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
   ## Fichier régulier
   DIR=`dirname "$OBJECT"`
else
   ## Dossier (ou aucun objet)
   DIR="$OBJECT"
fi

## Si DIR est vide, gnome-open ouvre dans le répertoire par défaut (home) de toute façon
#if [ -z "$DIR" ] ; then
#   DIR=~
#fi

## À ce stade, le test [ ! "$CONTEXT" = "$DIR" ] sert à indiquer que le répertoire cible ne correspond pas à celui à partir duquel le script a été invoqué (le cas échéant).

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

exit $?

0voto

user60033 Points 1

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

gksudo xdg-open  &

La balise de fermeture & signifie que la commande s'exécute en arrière-plan ; d'où l'utilisation de gksudo (utiliser sudo signifierait une invite invisible à laquelle vous ne pouvez pas répondre). xdg-open se charge de lancer une fenêtre d'explorateur (nautilus ou autre).

Vous devrez peut-être installer les paquets xdg-utils et gksu au préalable.

Vous pouvez obtenir un tas d'avertissements et de messages Gtk-CRITICAL et Glib-GObject-CRITICAL en fermant la fenêtre Nautilus élevée, mais ils semblent inoffensifs. J'aimerais m'en débarrasser, si quelqu'un sait comment faire.

-1voto

Kruug Points 107
sudo mv /home/user/temp/[Nom du fichier] /opt

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X