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?
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
Si vous ne souhaitez pas utiliser de terminal, vous pouvez appeler un programme d'interface graphique en tant que root (cet exemple concerne Gedit):
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
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:
Vous obtenez une boîte comme celle-ci, entrez gedit
et cliquez sur ok:
Cliquez sur Open:
Il suffit de parcourir le fichier:
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 visudo
commande 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.
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 chattr
pour 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 lsattr
NAME _
lsattr /etc/dhcp/dhcpd.config
Si en effet c'est immuable, vous pouvez désactiver cela comme ceci:
chattr -i /etc/dhcp/dhcpd.config
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.
Vous pouvez utiliser Sudo -e
ou son alias sudoedit
avec votre éditeur de texte préféré (graphique!) Via la variable d'environnement VISUAL
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 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:
VISUAL='gedit -s'
.VISUAL='kate -n'
.pkexec
(pour lequel vous devez éditer des fichiers… en tant que super-utilisateur, ce que cette réponse tente de résoudre).Sudo -H
, etc.root
qui peuvent ou non avoir une apparence et se comporter de manière acceptable.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.
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 gedit
par l'éditeur de votre choix
vous obtiendrez une invite comme celle-ci
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 su
name__, 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 Sudo
qui é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 vim
name __, nano
etc
utiliser gksu
qui élève votre autorisation pour une seule commande, mais contrairement à Sudo
name__, est utilisé pour les programmes graphiques tels que les éditeurs de texte d'interface graphique tels que gedit
name__. il utilise une invite graphique pour faciliter la saisie d'un mot de passe.
Sudo < editor > < filelocation >
par exemple.:
Sudo -H gedit etc/dhcp/dhcpd.config