Comment lancer une application en tant que root depuis Unity Launcher?

81

Je cherche principalement à épingler une application dans la barre de lancement de Unity et à l'exécuter en tant que root.

Actuellement, même si je lance l'application avec sudo et l'épingle après son démarrage, elle démarrera en tant qu'utilisateur actuel la prochaine fois.

Triste, mais il n'y a pas d'option de menu contextuel "run as ...".

Mise à jour : je suis passé à gnome3 et maintenant je suis heureux, il ne me manque que la recherche.

sorin
la source
Si vous connaissez le risque d'exécuter des applications graphiques en tant que root et que vous souhaitez toujours continuer, suivez l'étape 1 ci-dessous: askubuntu.com/a/118483/41562
edm
Vous n'avez pas compris la question, je sais comment l'utiliser sudoet je l'ai déjà réglée. La question est de savoir comment puis-je créer un raccourci vers le lanceur Ubuntu Unity vers l'application que je veux exécuter en tant que root.
sorin
Pour le lanceur de l'unité, je ne sais pas. Mais si vous avez un fichier résidant sur votre bureau et que vous voulez l'exécuter en tant que gksu, vous pouvez installer l'extension "Nautilus execute".
Apprenti curieux

Réponses:

89

Si vous voulez que l'application soit toujours exécutée en tant que root

  1. Épinglez l'application sur le lanceur comme d'habitude.

  2. Localisez le fichier .desktop des applications qui sera dans:

    • /usr/share/applications/APPNAME.desktop
    • ~/.local/share/applications/APPNAME.desktop
    • ou ailleurs, utilisez locate .desktop|grep APPAME
  3. Ouvrir avec gedit:

    gksudo gedit /usr/share/applications/APPNAME.desktop
    
  4. Puis changez de ligne

    Exec=APP_COMMAND
    

    à

    Exec=gksudo -k -u root APP_COMMAND
    
  5. sauver

Cette commande préservera également votre environnement, ce qui est très utile si vous devez vous connecter à d'autres serveurs et utiliser votre clé privée.

Pour ajouter une option de liste rapide à "Exécuter en tant que root"

Suivez les étapes 1, 2 et 3 ci-dessus

Si le programme de lancement ne dispose actuellement d'aucune autre option de liste rapide, ajoutez-le simplement à la fin du document.

X-Ayatana-Desktop-Shortcuts=Runroot

[Runroot Shortcut Group]
Name=Run as root
Exec=gksudo -k -u root APP_COMMAND
TargetEnvironment=Unity
edm
la source
51
Pourquoi est-il si compliqué de définir un simple raccourci? Quel problème avec les créateurs d'ubuntu?
Sliq
7
pour gksudocommander, vous devez installersudo apt-get install gksu
Arul
5
@Sliq c'est ce qu'on appelle la sécurité ... Avoir une icône de bureau exécutée en tant que root sans avoir besoin d'un mot de passe ... est très dangereux ... Pour moi, c'est la joie de linux ... Si je voulais une vie facile ... J'utiliserais Windows comme système principal ...
Angry 84
3
@sliq "Pourquoi est-il si difficile de faire passer grep à partir de l'invite cmd? qu'est-ce qui ne va pas avec les créateurs de Windows?" - Créateurs d'Ubuntu ... probablement
thenaglecode le
3
obsolète pour Ubuntu 18.XX Quelqu'un peut-il fournir une solution mise à jour?
JRsz
4

Dans le menu principal, sous Système, Préférences, saisissez gksudole champ Commande des propriétés du lanceur, par exemple:

/usr/bin/gksudo /usr/bin/yourapplication

Votre champ Nom pourrait dire:

sudo votre application

Ainsi, les utilisateurs savent qu'ils peuvent voir un mot de passe contextuel et pourquoi ...

Je ne suis pas sûr à propos de Unity Launcher vs Main Menu. Peut-être que cela aide?

Bonne chance

bateau de plaisance
la source
3
Vous savez probablement que straight sudone devrait pas être utilisé pour exécuter des applications graphiques comme - rootaprès tout, vous utilisez gksudo(ce qui est l’un des meilleurs moyens). Pour la même raison, il est déconseillé d'utiliser sudodans le champ du nom ce que vous avez, car cela (1) donne l'impression à des utilisateurs suffisamment expérimentés que votre programme de lancement est mal fait et (2) crée l'impression à des utilisateurs moins expérimentés. d’utiliser directement sudopour exécuter des applications graphiques en tant que root.
Eliah Kagan
Unable to locate package gksudo- Ubuntu 18.04.1 LTS
8bitjunkie
2

Ce qui suit semble faire la même chose, sans avoir besoin d'attributs privés:

Actions=Runroot;Another

[Desktop Action Runroot]
Name=Run as root
Exec=gksudo -k -u root APP_COMMAND

[Desktop Action Another]
Name=Another action
Exec=whatever
Daniel
la source
Unable to locate package gksudo- Ubuntu 18.04.1 LTS
8bitjunkie
2

Comme alternative simple et rapide aux demandes lourdes décrites dans les réponses, je me suis habitué à faire ce qui suit ...

  1. Lancer un nouveau terminal.
  2. Entrer gksu nautilus

    ( sudo -i nautilusfonctionne aussi.)

La fenêtre résultante se trouvant sous le parapluie sudo, vous pouvez donc l'utiliser pour accéder aux fichiers dotés de privilèges sudo-root et les lancer au contenu de votre cœur jusqu'à sa fermeture. Cela s'avère pratique pour les situations transitoires où vous n'avez pas besoin d'une solution plus permanente. Je l'utilise régulièrement pour extraire des fichiers compressés dans des dossiers système protégés, par exemple.

Syndog
la source
2
L'utilisation sudod'applications graphiques n'est pas une bonne idée. Utilisez gksuou si vous devez sudo -i.
Seth
2
@Seth: Mise à jour. Aussi ... Une petite explication sur la raison pour laquelle rien ne serait négligé, plutôt que de simplement dire de manière cryptique que ce n'est pas une bonne idée.
Syndog
Un sujet intéressant sur le sujet: crunchbang.org/forums/viewtopic.php?id=8468
Syndog
1

Je poste ce in-respone à la question @ Chris demandé dans les commentaires:

Supposons que vous vouliez créer un lanceur qui ouvrira le "gestionnaire de fichiers (Nautilus)" en tant que root. Ensuite, vous pouvez faire ceci:

Terminal ouvert. Type:

sudo -H gedit /usr/share/applications/nautilus_root.desktop

Appuyez sur Entrée. Lorsque demandé, entrez votre mot de passe de connexion et appuyez sur Entrée. Cela ouvrira gedit (éditeur de texte). Maintenant, collez le texte suivant ici:

[DesktopEntry]
Encoding=UTF-8
Name=Nautilus(Root)
Comment=FileManager
Exec=gksu nautilus
Icon=file-manager
Categories=System;
Type=Application
Terminal=0

Maintenant, sauvegardez-le et quittez. Vous avez terminé. Maintenant, si vous recherchez au tableau de bord, vous trouverez un nouveau lanceur "Nautilus (Root)". En cliquant dessus, vous serez invité à entrer votre mot de passe et, après authentification, Nautilus sera ouvert en tant que root.

Remarque: faites attention lorsque vous utilisez "Nautilus (Root)". Dans ce mode, vous pouvez supprimer presque tout /et casser le système.

Apprenti curieux
la source
0

Cela devrait peut-être être un commentaire sur la solution de Daniel. Cela fonctionne pour moi, même dans Ubuntu 15.04. J'ai dû mettre la commande entre guillemets à Exec=gksu "nautilus --new-window"cause de l'argument supplémentaire. Aussi, d’une certaine manière, je ne sais pas pourquoi, j’ai dû éditer le lanceur directement afin de conserver le menu original (avec la nouvelle option). Si vous faites glisser votre propre lanceur, il sera enregistré, mais vous n’aurez pas le même menu.

Dans Ubuntu 15.04, le lanceur de Nautilus est usr/share/applications/org.gnome.Nautilus.desktop. Vous devez utiliser la ligne de commande pour voir le nom de fichier réel.

Des recherches ultérieures m'ont conduit à ce que je crois être une meilleure option: http://ubuntuhandbook.org/index.php/2014/04/ubuntu-14-04-add-open-as-rootadministrator-to-context-menu/ . Au lieu d'ouvrir Nautilus entièrement en tant que racine, cela vous permet d'ouvrir les répertoires sélectionnés en tant que racine dans Nautilus. Quoi qu'il en soit, j'ai vérifié, et ces deux options sont compatibles. Si vous ouvrez Nautilus en tant que racine, puis utilisez la deuxième option pour ouvrir un répertoire en tant que racine, il l'ouvre simplement sans demander le mot de passe.

Dominic108
la source
0

Comme c'est une vieille question, avec une vieille réponse; Pour compléter l'explication étonnante de @ edm.

À partir de la version 18.04 et ultérieure d'Ubuntu, gksudo ( gksu) est obsolète et, par conséquent, il n'a pas de candidat d'installation dans les référentiels officiels. Une alternative consiste à utiliser pkexec.

Editez le fichier /usr/share/applications/APPNAME.desktopet changez la ligne

Exec=APP_COMMAND

à

Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY APP_COMMAND

Plus de détails sur pkexec ici .

RageAgainstTheMachine
la source