web-dev-qa-db-fra.com

Impossible d'utiliser la commande Sudo (Ubuntu 16.04.1 LTS)

Lorsque je tape Sudo sur un terminal, je reçois:

Sudo: unable to stat /etc/sudoers: Permission denied
Sudo: no valid sudoers sources found, quitting
Sudo: unable to initialize policy plugin

Plus d'informations:

ls -ld / /etc /etc/sudoers
drwxr-xr-x  24 root root  4096 Dez 21 22:44 /
drw-rw-r-x 162 root root 12288 Jan 18 15:13 /etc
-r--r-----   1 root root   746 Jan 18 14:21 /etc/sudoers

pkexec visudo:

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group Sudo to execute any command
%Sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
4
Felipe P.

Exécutez pkexec chmod 755 /etc pour résoudre ce problème.

Comme steeldriver a suggéré , cette erreur est due au fait que /etc a les mauvaises autorisations. Les autorisations affichées à partir de ls -ld /etc devraient ressembler à ceci:

drwxr-xr-x

Mais le tien ressemble à:

drw-rw-r-x

Ceci empêche Sudo de traverser /etc pour accéder à /etc/sudoers.

Le message d'erreur "autorisation refusée" qui tente simplement de récupérer les métadonnées d'un fichier (c'est-à-dire de stat) signifie presque toujours que le fichier est manquant ou que les répertoires menant à ce fichier ne peuvent pas être parcourus. Lorsque vous avez exécuté ls, le fichier a été montré. exister.

J'ai testé cela (sur une machine virtuelle) en interrompant les autorisations sur /etc avec chmod ug-x et j'ai pu produire votre message d'erreur exact. (Vous ne devriez pas exécuter chmod avec ug-x dessus - c’est ainsi que j’ai délibérément cassé les autorisations et non comment les corriger. .)

Pour corriger les autorisations sur /etc, accordez des autorisations exécutables à l'utilisateur et au propriétaire du groupe. L'absence de ces autorisations est la cause de ce problème. De plus, par défaut, /etc n'a pas besoin d'autorisations en écriture pour le propriétaire du groupe. Par conséquent, à moins que vous sachiez , vous recommandiez de le modifier également.

Cette commande réinitialisera /etc avec les autorisations par défaut:

pkexec chmod 755 /etc

Cela devrait fonctionner pour vous puisque vous avez été en mesure d'exécuter d'autres commandes en tant que root avec pkexec. Les autres utilisateurs qui trouveront cela en cherchant pourront généralement le résoudre de la même manière, mais pour les systèmes sans pkexec (ou où pkexec ne fonctionnera pas), il sera peut-être nécessaire de démarrer en mode de récupération ou à partir d'un CD/DVD/USB en direct. réparer les autorisations. Vous ne devriez cependant pas avoir besoin de le faire . Il suffit d’exécuter cette commande simple et Sudo devrait fonctionner à nouveau.

3
Eliah Kagan