web-dev-qa-db-fra.com

Comment obtenir des autorisations pour éditer des fichiers de configuration du système?

Je n'arrive pas à éditer et sauvegarder des fichiers de configuration dans le système racine (par exemple: /etc/dhcp/dhcpd.config); il dit simplement "permission refusée" ou l'option de sauvegarde est bloquée dans l'éditeur de texte.

Je suis presque sûr que je suis un utilisateur root, mais comment puis-je m'en assurer? Si je suis un utilisateur root, comment puis-je résoudre ce problème?

45
Matthew Wilson

Quel éditeur de texte utilisez-vous? Si vous êtes un utilisateur root et connaissez le mot de passe, essayez (dans un terminal) soit:

  • sudoedit /etc/dhcp/dhcpd.config si vous utilisez un éditeur basé sur un terminal tel que nano ou utilisez ssh sur un serveur.
  • gksudo <text editor here> /etc/dhcp/dhcpd.config si vous utilisez un éditeur graphique, tel que gedit

Dans les deux cas, vous devrez d'abord fournir votre mot de passe root à la demande.

Dans Ubuntu 14.04 et les versions ultérieures, gksudo n'est pas installé par défaut. Vous devrez installer le package gksu (à partir du Centre de logiciel ou via Sudo apt-get install gksu) pour l'obtenir.

Dans Ubuntu 17.10, Wayland est le serveur par défaut au lieu du serveur X traditionnel, et il est difficile d’éditer des éditeurs graphiques en tant qu’utilisateur root. Voir Pourquoi gksu/gksudo ou le lancement d'une application graphique avec Sudo ne fonctionnent-ils pas avec Wayland? pour plus de détails.

Dans Ubuntu 18.04, gksudo n'est pas disponible dans les référentiels officiels. Utilisez Sudo -H <text editor> à la place, ou le protocole admin:// :

gedit admin:///etc/dhcp/dhcpd.config
42

Si vous ne souhaitez pas utiliser de terminal, vous pouvez appeler un programme d'interface graphique en tant que root (cet exemple concerne Gedit):

  1. Frappé Alt+F2 pour faire apparaître la boîte de dialogue Exécuter.
  2. Tapez gksudo suivi du nom de l'exécutable de votre programme (qui peut être différent du nom affiché par l'interface graphique). Par exemple:

    gksudo gedit
    
  3. Frappé Enter.
15
Scott Severance

Je ne peux pas penser à un cas où root aurait permission denied.

En 12.04, vous pouvez le faire comme ceci: alt+f2 et entrez gksudo dans la case qui se présente comme suit:

F2 dialogue

Vous obtenez une boîte comme celle-ci, entrez gedit et cliquez sur ok:

Type gedit in Run dialogue

Cliquez sur Open:

Open tab inside gedit

Il suffit de parcourir le fichier:

open files dialogue

Terminé

Attention: Il y a un super-utilisateur/root pour une raison. C'est pour que vous ne mettiez pas accidentellement quelque chose de mauvais ou de mal structuré dans quelque chose d'important par erreur. Vous devez faire très attention à ce que tout ce que vous éditez en tant que root soit le fichier correct que vous voulez éditer ET que votre syntaxe soit parfaite. Si d'autres outils sont disponibles pour l'édition, il est recommandé de les utiliser. Par exemple, utilisez visudocommande de terminal au lieu de modifier manuellement /etc/sudoers.

Certains fichiers pouvant être endommagés sont faciles à récupérer. D'autres sont relativement compliqués ou vous devez utiliser la console de récupération et de nombreuses lignes de commande.

Oui, la ligne de commande de la console de récupération semble un peu plus effrayante que même this . Fait attention.

10
RobotHumans

Vous pouvez tester si votre Shell actuel s'exécute en tant que root de différentes manières.

~/ > whoami
paul
~/ > Sudo whoami
root
~/ > id
uid=1000(paul) gid=1000(paul) groups=1000(devs),4(adm),20(dialout),24(cdrom),…
~/ > Sudo id
uid=0(root) gid=0(root) group=0(root)

D'autres réponses donnent de bons moyens de passer aux privilèges root, je ne les répéterai donc pas. En supposant que vous êtes root et que vous ne puissiez toujours pas éditer le fichier /etc/dhcp/dhcpd.config - then very probablement quelqu'un ou un programme a utilisé le programme chattrpour rendre le fichier immuable.

De la page de manuel de chattr :

Un fichier avec l'attribut 'i' ne peut pas être modifié: il ne peut pas être supprimé ou renommé, aucun lien ne peut être créé avec ce fichier et aucune donnée ne peut être écrite dans ce fichier. Seul le superutilisateur ou un processus possédant la capacité CAP_LINUX_IMMUTABLE peut définir ou effacer cet attribut.

Vous pouvez le savoir en utilisant lsattrNAME _

lsattr /etc/dhcp/dhcpd.config

Si en effet c'est immuable, vous pouvez désactiver cela comme ceci:

chattr -i /etc/dhcp/dhcpd.config
6
pbr

Si vous utilisez buntu 17.04 ou supérieur, il est recommandé d'utiliser le backend gvfs admin . Ajoutez simplement admin:// au début du chemin de fichier complet que vous souhaitez ouvrir dans une application telle que l'éditeur de texte ou Fichiers apps .

Par exemple, pour modifier les paramètres de démarrage, ouvrez

admin:///etc/default/grub

Si vous utilisez Ubuntu 17.10 avec les valeurs par défaut de Wayland, Sudo et gksu, comme indiqué dans la réponse précédente, ici not ​​ne fonctionnera pas.

3
Jeremy Bicha

Utilisez votre éditeur de texte préféré

Vous pouvez utiliser Sudo -e ou son alias sudoedit avec votre éditeur de texte préféré (graphique!) Via la variable d'environnement VISUAL1:

VISUAL=gedit Sudo -e /path/to/some-config-file.cfg

ce qui équivaut à

VISUAL=gedit sudoedit /path/to/some-config-file.cfg

Bien sûr, vous pouvez utiliser n’importe quel autre éditeur que vous aimez, e. g. leafpad, kate ou subl.

Certains éditeurs proposent une option de ligne de commande pour toujours démarrer une nouvelle instance, même si elle est en cours d'exécution. Étant donné que sudoedit attend la fin du processus d'édition pour appliquer les modifications au fichier modifié, cela peut être nécessaire si d'autres instances du même éditeur sont en cours d'exécution:

  • Pour GEdit, utilisez VISUAL='gedit -s'.
  • Pour Kate, utilisez VISUAL='kate -n'.

Avantages

  • Ne nécessite pas d’applications supplémentaires et/ou obsolètes.
  • Ne nécessite pas de modifications de la politique de sécurité telles que pkexec (pour lequel vous devez éditer des fichiers… en tant que super-utilisateur, ce que cette réponse tente de résoudre).
  • Ne nécessite pas l'exécution d'applications potentiellement non sécurisées avec des privilèges élevés.
  • Utilise la configuration de l’application de l’utilisateur actuel, mais gâche les autorisations d’accès au fichier de configuration comme Sudo -H, etc.
  • Ne retombe pas sur les données de configuration de l'application utilisateur de l'utilisateur root qui peuvent ou non avoir une apparence et se comporter de manière acceptable.

Désavantages

  • Vous devez apprendre une nouvelle commande courte.

1 EDITOR ou Sudo_EDITOR fonctionnent aussi mais sont moins prioritaires ou sont plus spécialisés respectivement. Voir le page de manuel pour plus de détails.

2
David Foerster

Pour être sûr, sauvegardez-le avec cp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backup et exécutez gksu gedit /etc/dhcp/dhcpd.config

Remplacez geditpar l'éditeur de votre choix

vous obtiendrez une invite comme celle-ci

password Prompt

Entrez votre mot de passe ici.

Une nouvelle fenêtre s'ouvre et vous pouvez modifier votre configuration ici.

En cas de problème, vous pouvez le restaurer à partir de votre sauvegarde dans le dossier personnel.

Vous obtenez "permission refusée" en raison de la façon dont Linux gère les autorisations.

Tout ce qui se trouve dans le dossier $HOME appartient à l'utilisateur, alors que presque tout le reste appartient à root.

Le fichier /etc/dhcp/dhcpd.conf auquel vous essayez d'accéder appartient à root, et la plupart des fichiers de /etc/ appartiennent par défaut à root pour des raisons de sécurité.

Vous pouvez toujours modifier ce fichier en élevant vos autorisations.

Pour ce faire, vous avez plusieurs moyens:

  • utilisez suname__, qui signifie utilisateur de changement. Sans aucun attribut, il fonctionne comme une commande permettant de basculer vers le compte root, mais vous devez entrer le mot de passe de l'utilisateur que vous basculez et, puisque root n'a pas de mot de passe par défaut sur Ubuntu (désactivation effective du compte root). , cela ne fonctionnera que si vous avez défini un mot de passe pour root, ce qui n’est pas recommandé.

  • utiliser Sudoqui élève votre autorisation pour une seule commande. Ceci est généralement utilisé uniquement pour les applications en ligne de commande telles que les éditeurs de texte CLI tels que vimname __, nanoetc

  • utiliser gksuqui élève votre autorisation pour une seule commande, mais contrairement à Sudoname__, est utilisé pour les programmes graphiques tels que les éditeurs de texte d'interface graphique tels que geditname__. il utilise une invite graphique pour faciliter la saisie d'un mot de passe.

0
Amith KK
Sudo < editor > < filelocation >

par exemple.:

Sudo -H gedit etc/dhcp/dhcpd.config
0
user392272