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

47

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?

Matthew Wilson
la source

Réponses:

42

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.configsi vous utilisez un éditeur basé sur un terminal tel que nanoou êtes en train de 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 ultérieur, gksudon’est pas installé par défaut. Vous devrez installer le gksupackage (à partir du Centre du 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 ne pas utiliser gksu / gksudo ou lancer une application graphique avec sudo avec Wayland? pour plus de détails.

Dans Ubuntu 18.04, gksudon'est pas disponible dans les dépôts officiels. Utilisez à la sudo -H <text editor>place, ou le admin://protocole :

gedit admin:///etc/dhcp/dhcpd.config
Christopher Kyle Horton
la source
15

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. Appuyez sur Alt+ F2pour afficher la boîte de dialogue Exécuter.
  2. Tapez gksudosuivi 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. Hit Enter.
Scott Severance
la source
10

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

En 12.04, vous pouvez le faire comme ceci: alt+ f2et entrez gksudodans la case qui apparaît comme ceci:

Dialogue F2

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

Tapez gedit dans le dialogue Exécuter

Cliquez Open:

Onglet ouvert dans gedit

Il suffit de parcourir le fichier:

dialogue de fichiers ouverts

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 être extrêmement attentif au fait que tout ce que vous éditez en tant que root soit le fichier correct que vous voulez éditer ET que votre syntaxe est parfaite. Si d'autres outils sont disponibles pour l'édition, il est recommandé de les utiliser. Par exemple, utilisez la visudo commande terminal au lieu d’être modifiée 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 celle- ci . Fais attention.

RobotHumans
la source
Vous devrez peut-être mettre à jour ceci pour 13.04 et plus récent. Certaines choses relatives à gksu / gksudo ont changé (je ne sais pas si cela s'applique à votre réponse ou non).
Seth
Je crois comprendre que sudo exporte comme par magie les variables d’environnement DISPLAY et que gksu / gksudo sont partis ou vont disparaître. Je n'ai pas vérifié cependant.
RobotHumans
rootpeut obtenir une autorisation refusée si le fichier a été défini comme étant immuable en utilisant chattrou parfois si le disque est en lecture seule.
Chai T. Rex le
6

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 au privilège root, je ne vais donc pas les répéter. En supposant que vous soyez root et que vous ne puissiez toujours pas éditer le fichier /etc/dhcp/dhcpd.config, il est très probable que quelqu'un ou un programme l'ait utilisé chattrpour rendre le fichier immuable.

Depuis la page de manuel de chattr :

Un fichier avec l'attribut 'i' ne peut pas être modifié: il ne peut être ni supprimé ni 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 cette CAP_LINUX_IMMUTABLEcapacité peut définir ou effacer cet attribut.

Vous pouvez le savoir en utilisant lsattr

lsattr /etc/dhcp/dhcpd.config

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

chattr -i /etc/dhcp/dhcpd.config
pbr
la source
3

Si vous utilisez Ubuntu 17.04 ou une version ultérieure, il est recommandé d'utiliser le backend admin gvfs . 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 les applications Fichiers .

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

admin:///etc/default/grub

Si vous utilisez Ubuntu 17.10 avec Wayland par défaut, sudoet gksucomme mentionné dans la réponse précédente, cela ne fonctionnera pas .

Jeremy Bicha
la source
2

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

Vous pouvez utiliser sudo -eou son alias sudoeditavec votre éditeur de texte préféré (graphique!) Via la VISUALvariable d'environnement 1 :

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 un autre éditeur que vous voulez, par exemple leafpad, kateou 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. Etant donné sudoeditque le processus d'édition doit attendre 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 utiliser VISUAL='gedit -s'.
  • Pour Kate utiliser VISUAL='kate -n'.

Les 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 lesquelles vous auriez besoin de modifier des fichiers… en tant que super-utilisateur, le problème 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 -Hetc.
  • Ne retombe pas sur les données de configuration de l'application utilisateur de l' rootutilisateur, qui peuvent ou non avoir une apparence et un comportement acceptables.

Désavantages

  • Vous devez apprendre une nouvelle commande courte.

1 EDITOR ou SUDO_EDITORtravailler aussi mais avoir moins de priorité ou sont plus spécialisés respectivement. Voir la page de manuel pour plus de détails.

David Foerster
la source
0

Pour être sûr de sauvegarder en utilisant cp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backup et exécutergksu gedit /etc/dhcp/dhcpd.config

Remplacez geditpar l'éditeur de votre choix

vous obtiendrez une invite comme celle-ci

mot de passe invite

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 $HOMEdossier appartient à l'utilisateur, alors que presque tout le reste appartient à root.

Le /etc/dhcp/dhcpd.conffichier auquel vous essayez d'accéder appartient à root et la plupart des fichiers qu'il /etc/contient 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:

  • utiliser suce qui signifie changer d'utilisateur. 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 sudoce qui élève votre permission 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 vim, nanoetc.

  • L'utilisation de gksuqui élève votre permission pour une seule commande, mais contrairement à, sudoest utilisée pour les programmes graphiques tels que les éditeurs de texte graphiques gedit. il utilise une invite graphique pour faciliter la saisie d'un mot de passe.

Amith KK
la source
0
sudo < editor > < filelocation >

par exemple:

sudo -H gedit etc/dhcp/dhcpd.config
utilisateur392272
la source