erreur sudo, est le mode 0777, devrait être 0440

26

Je reçois des erreurs sudo, comment puis-je corriger cette erreur?

sudo: /etc/sudoers is mode 0777, should be 0440
sudo: no valid sudoers sources found, quitting 
user20698
la source
Comme les utilisateurs l'ont déjà noté, l'utilisation de "chmod 0440 / etc / sudoers" lorsque le fichier sudoers.d / README a le mauvais chmod NE FONCTIONNE PAS.
kentfx
Êtes-vous en train de suggérer que lorsque le problème est lié aux autorisations /etc/sudoers.d/README, l'erreur peut toujours être indiquée sudo: /etc/sudoers is mode 0777, should be 0440?
Eliah Kagan

Réponses:

26

Première option

Suite à ce post :

  1. Redémarrez le PC
  2. Lorsque l'écran de sélection de démarrage GRUB s'affiche, choisissez le mode de récupération. (S'il ne s'affiche pas, appuyez sur la Shifttouche lorsque vous voyez le chargeur GRUB en bas).
  3. Un terminal noir devrait apparaître, à ce stade, vous pouvez exécuter cette commande (vous devez avoir les privilèges root):

    chmod 0440 /etc/sudoers
    

Alternativement

Vous devrez mettre Ubuntu sur un LiveCD, démarrer sur le LiveCD, monter votre partition Ubuntu sur le disque dur (ouvrir un navigateur de fichiers, comme Nautilus, et cliquer sur votre partition Ubuntu; ou cliquer sur Lieux -> "Partition xxGB / Votre partition Ubuntu ").

Ensuite, ouvrez un terminal dans la session LiveCD et tapez ces deux commandes:

cd /media/<name of permanent ubuntu partition>/etc
sudo chmod 0440 sudoers

Problèmes supplémentaires

S'il y a des erreurs (comme indiqué ci-dessous), suivez l'invite d'erreur et ajustez chaque fichier en conséquence en utilisant l'une des deux étapes ci-dessus:

sudo apt-get update sudo: /etc/sudoers.d/README est le mode 0777, devrait être 0440 sudo: / var / lib / sudo accessible en écriture par un non-propriétaire (040777), devrait être le mode 0700 [sudo] mot de passe pour

Corrigez en suivant avec:

chmod 0440 /etc/sudoers.d/README
chmod 0700 /var/lib/sudo

Ces deux commandes doivent être utilisées de manière appropriée avec les étapes décrites ci-dessus. Ils modifieront les autorisations de fichier associées à ce fichier. 0440 donnera au propriétaire (root) et au groupe les autorisations de lecture et 0700 donnera au propriétaire (root), lira, écrira et exécutera les permissions.

Alex Stevens
la source
Je peux utiliser la commande sudo mais limitée. sudo apt-get update sudo: /etc/sudoers.d/README is mode 0777, should be 0440 sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700 [sudo] password for
user20698
@Alex: ESC est pour l'héritage de GRUB non? Shift doit être enfoncé pour GRUB2.
Lekensteyn
@ user20698: vous n'avez pas besoin sudodu premier, le second doit être fait à partir d'un Live CD.
Lekensteyn
Si sudoers est 0777, l'utilisateur ne devrait-il pas pouvoir fonctionner chmod 0440 /etc/sudoerssans sudo car sudoers est accessible en écriture à tout le monde?
Seppo Erviälä
2
@Seppo: non, seul le propriétaire d'un fichier peut modifier les autorisations du fichier.
Lekensteyn
16

sudoest cassé dans cette situation, mais pkexec(l'interface de ligne de commande de PolicyKit ) fonctionne toujours, vous pouvez donc le réparer avec une seule commande. Aucun redémarrage n'est nécessaire.

pkexec chmod 0440 /etc/sudoers

Cela suppose que PolicyKit est installé. S'il s'agit d'un système de bureau (plutôt que d'un serveur sans interface graphique), c'est le cas.

Eliah Kagan
la source
4

Démarrez en mode de récupération, choisissez le shell racine et:

chmod 0440 /etc/sudoers

Ou si vous ne voulez pas redémarrer, vous pouvez utiliser cette alternative:

pkexec chmod 0440 /etc/sudoers
pkexec chmod 0440 /etc/sudoers.d/README

cela changera l'autorisation. Essayez, cela fonctionnera.

Atul Makwana
la source
1
Pourquoi utilisez-vous chmodcertains fichiers 440et d'autres 0440? Ne devriez-vous pas utiliser 0440uniformément? Et pourquoi modifiez-vous les autorisations /etc/sudoers.d/READMElorsque vous utilisez le pkexecchemin, mais pas autrement? Et qu'en est-il des autres fichiers possibles /etc/sudoers.d?
Eliah Kagan
1

Qu'avez-vous fait pour obtenir ces erreurs?

  • Si vous avez fait:, vous sudo chmod -R 777 /etcavez besoin d'un Live CD pour le réparer.

    1. Démarrez dans un Live CD et sélectionnez "Try it"
    2. Montez votre partition Ubuntu (ou la partition contenant /etcsi vous avez mis /etcsur une partition séparée). Cela peut être fait en utilisant un navigateur de fichiers comme Nautilus ou le menu Lieux
    3. Ouvrez un terminal en allant dans Applications => Accessoires => Terminal
    4. Déterminez le dossier de votre partition Ubuntu, vous pouvez lister le contenu des partitions montées en utilisant ls -l /media. Il est peut-être nommé ubuntuou disk. Dans les prochaines étapes, je suppose ubuntu.
    5. Dans le terminal, définissez des autorisations restrictives par défaut:

      sudo find /media/ubuntu/etc -type f -exec chmod g-wx,o-rwx {} \;
      sudo find /media/ubuntu/etc -type d -exec chmod g-w,o-rwx {} \;
      
    6. Ensuite, utilisez le Live CD comme point de référence pour restaurer les autorisations de fichier. La commande ci-dessous modifiera les autorisations de fichier pour /etc/media/ubuntuutiliser le /etcdossier sur le Live CD comme point de référence. Cela ne changera que les autorisations sur les fichiers ( -type f) et les répertoires ( -type d) sur le même système de fichiers ( -xdev). Toutes les erreurs sont écrites dans ~/errors.logErreurs comme «fichier non trouvé» indique qu'un fichier sur le système est installé, mais introuvable sur le Live CD. La commande de l'étape 5 doit définir les bonnes autorisations pour cela, mais pour de meilleurs résultats, vous feriez mieux de réinstaller les packages.

      cd /media/ubuntu && sudo find etc -xdev \( -type f -o -type d \) -f -exec chmod --reference=/{} {} \; 2>~/errors.log
      
    7. Maintenant en sécurité ~/errors.logquelque part (comme http://paste.ubuntu.com/ ) afin que vous puissiez l'ajouter comme commentaire à cette réponse si vous avez des problèmes avec les applications.
Lekensteyn
la source
1

Dans Ubuntu, vous pouvez d'abord frapper Ctrl+ Alt+ Tqui ouvre le terminal. Après cela, vous pouvez copier-coller la commande ci-dessous avec Ctrl+ Cet coller dans le terminal avec Ctrl+ Shift+ V.

pkexec chmod 0440 /etc/sudoers
K. Kilian Lindberg
la source
0

Pour moi, j'ai dû ajouter une étape de plus aux pkexecsuggestions, par cela , j'ai eu la chance d'avoir 2 sessions ssh en cours quand j'ai fait l'erreur stupide:

  1. Ouvrez 2 terminaux
  2. Dans le terminal 2, exécutez echo $$pour obtenir le PID
  3. Exécuter pkttyagent --process PID_FROM_STEP2dans le terminal 2
  4. Dans le terminal 1, exécutez pkexec chmod 0440 /etc/sudoers
  5. Dans mon cas, j'ai aussi dû courir pkexec chown root:root /etc/sudoers
4oo4
la source