web-dev-qa-db-fra.com

Impossible de stat / etc / sudoers: aucun fichier ni répertoire de ce type

J'utilisais Ubuntu 14.04 récemment. Et d’une manière ou d’une autre, j’ai changé l’autorisation en fichier /etc/sudoers. Ainsi, chaque fois que j'exécute une commande avec Sudo, je reçois les erreurs suivantes:

Sudo: unable to stat /etc/sudoers: No such file or directory
Sudo: no valid sudoers sources found, quitting
Sudo: unable to initialize policy plugin

J'ai pu me connecter en tant qu'utilisateur et modifier les autorisations. Alors maintenant, quand je lance la commande ls -l /etc/sudoers, je reçois:

-r--r----- 1 root root 755 жов 14  2016 /etc/sudoers

Mais je n'ai pas pu en faire un propriétaire. Et j'obtiens toujours les mêmes erreurs lorsque j'essaie d'utiliser Sudo.

J'ai lu beaucoup de choses effrayantes à propos de ce problème. Alors pouvez-vous m'aider à résoudre ce problème? Je serais très reconnaissant pour les conseils.

4
Cassie

Raccourci:

dpkg-reconfigure: Si seulement quelque chose ne va pas avec l'autorisation du fichier /etc/sudoers, avec un accès root exécuté: dpkg-reconfigure Sudo. quelque chose comme pkexec dpkg-reconfigure Sudo devrait faire le travail.

visudo: Si dpkg-reconfigure ne fonctionne pas pour vous, alors lancez simplement pkexec visudo, le fichier sudoers sera ouvert dans un éditeur, puis enregistrez et fermez le fichier, visudo corrigera l'autorisation pour vous.

Après tout, si vous avez également modifié les autorisations du répertoire sudoers.d, exécutez:

pkexec chmod 755 /etc/sudoers.d

Si les fichiers sont présents et que leurs autorisations sont conformes aux attentes mais que vous obtenez toujours ce message d'erreur, la seule possibilité qui me vienne à l'esprit est que vous ayez brisé d'autres autorisations et que Sudo n'ait pas accès à /etc/sudoers. la supposition la plus possible est celle des autorisations de /etc/.

Alors courez:

pkexec chmod 755 /etc

Nous avons terminé. Toutefois, si vous souhaitez suivre une instruction détaillée de restauration du fichier sudoers cassé ou supprimé avec des autorisations erronées, nous allons utiliser un autre moyen de réparer les choses.


Introduction

J'ai manipulé mon fichier /etc/sudoers pour obtenir une erreur similaire à celle que vous avez. Je me rapproche beaucoup, alors je supprime complètement le mien et il est devenu exactement le vôtre.

Ce que j'ai fait pour résoudre le problème:

Mon compte root était verrouillé et il ne possédait aucun mot de passe. Il était donc impossible pour moi de faire ce que je voulais faire. Toutefois, si votre compte root est actif et possède un mot de passe, passez en utilisateur root avec su - et ignorez cette partie. sinon, suivez les instructions.

Avant d’aller plus loin, je dois mentionner que vous pouvez toujours utiliser un disque vivant pour faire un chroot dans votre système. Il existe de nombreuses instructions sur le chroot utilisant un disque réel. va prendre la peine de donner toutes ces instructions à nouveau, au lieu de cela, je vais supposer que nous n'avons pas de disque live et que nous allons utiliser ce que nous avons déjà pour résoudre ce problème. Si vous êtes satisfait de cheroot allez dans ce sens, cela ferait aussi le travail.


Obtenir un accès root

  • Redémarrez votre système
  • Lorsque grub apparaît, appuyez sur e pour le modifier
  • A la fin de la ligne qui commence par linux, ajoutez init=/bin/bash
  • Presse CTRL+X

Vous allez maintenant être déposé dans un shell bash avec un accès root. remontez d’abord le système de fichiers avec un accès en écriture:

mount -o remount,rw /

Puis déverrouillez l’utilisateur root et définissez un mot de passe dessus:

passwd -u root
passwd root

Maintenant, si votre /etc/sudoers existe toujours sur /etc, déplacez-le ailleurs:

mv /etc/sudoers /etc/sudoers.broken

Parce que nous allons dire à notre gestionnaire de paquets que ce fichier est manquant et qu'il le remplacera pour nous par un fichier correct, il ne devrait donc pas être là.

Nous avons presque terminé, redémarrez votre système. connectez-vous en tant qu'utilisateur normal, ouvrez un terminal, puis essayez su - pour passer en utilisateur root. Je ne pouvais pas faire cela, alors ce que j'ai fait était d'utiliser CTRL+ALT+F1, pour entrer dans tty1, puis je me suis connecté en tant que root avec le nouveau mot de passe que nous venons de définir.


Ramener les sudoers

Nous devrions simplement réinstaller le paquet Sudo, mais la réinstallation ne ramènera pas ce fichier. Nous devrions indiquer à dpkg de réparer également les fichiers de configuration manquants, comme ceci:

apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall Sudo

N'oubliez pas qu'il vous demandera comment installer le fichier /etc/sudoers en insérant y say yes.

Si cela ne fonctionne pas pour vous, procédez comme suit en tant que root:

mkdir /root/tmp
cd /root/tmp
apt-get download Sudo
dpkg-deb -x Sudo*.deb .
cp etc/sudoers /etc/sudoers
cd /root
rm -r tmp

Maintenant, il peut y avoir des différences entre les autorisations, exécutez dpkg-reconfigure Sudo pour le réparer. si cela ne fonctionne pas, exécutez visudo en tant qu'utilisateur root, le fichier sudoers sera ouvert dans un éditeur, puis enregistrez et fermez le fichier, visudo corrigera l'autorisation pour vous.

Si tout se passe bien, votre fichier sudoers sera de retour et vous pourrez utiliser Sudo comme auparavant.

4
Ravexina