17 votes

sudo : /etc/sudoers appartient à l'uid 501, devrait être 0

Pour exécuter des programmes en tant que sudo sans mot de passe, j'ai édité /etc/sudoers avec un contenu erroné.

Puis je l'ai réédité avec l'éditeur de texte par défaut du Mac (bien sûr sudo ne peut pas être utilisé lorsque /etc/sudoers est erroné).

J'ai essayé d'exécuter sudo à nouveau, et j'ai eu cette erreur :

sudo: /etc/sudoers is owned by uid 501, should be 0
sudo: no valid sudoers sources found, quitting

Que dois-je faire ? Je ne me souviens pas du mot de passe Root (peut-être n'ai-je jamais défini de mot de passe Root auparavant).

26voto

Gordon Davisson Points 30215

Vous pouvez résoudre ce problème via AppleScript, sans avoir besoin de redémarrer, ou même de vous déconnecter et de vous reconnecter, ou d'un shell Root existant, ou.... Tout ce dont vous avez besoin est un mot de passe administrateur valide.

Exécutez cette commande :

osascript -e 'do shell script "chown root:wheel /etc/sudoers; chmod 440 /etc/sudoers; chmod -N /etc/sudoers" with administrator privileges'

...puis s'authentifier en tant qu'administrateur lorsque cela est demandé.

Explication : c'est un peu indirect. Elle utilise la commande shell osascript pour exécuter un court AppleScript qui utilise le do shell script pour exécuter un court script. La raison de la chose shell->AppleScript->shell est d'utiliser la commande with administrator privileges qui a à peu près le même effet que l'option sudo mais il fonctionnera même si le fichier /etc/sudoers est complètement déréglé.

19voto

nohillside Points 82672

Vous pouvez démarrer en mode utilisateur unique en appuyant sur Cmd-S au démarrage (voir OS X : Comment démarrer en mode mono-utilisateur ou en mode verbeux ? pour plus de détails) qui devrait vous donner un shell Root. Exécutez ensuite

mount -uw /
chown root:wheel /etc/sudoers
chmod 440 /etc/sudoers
reboot

pour résoudre le problème et redémarrer.

8voto

Graham Points 81

Pour MacOS Mojave, voici ce qui a fonctionné pour moi :

  1. Démarrage en mode de récupération (Cmd+R pendant le démarrage)
  2. Utilitaires de disque > Sélectionner le disque dur Macintosh, et Monter
  3. Fermer Disk Utilities
  4. Utilitaires > Terminal
  5. Type : chown root:wheel "/Volumes/Macintosh HD/etc/sudoers"
  6. Redémarrer

Il se peut que vous deviez aussi changer la propriété de ts, de retour dans le Terminal :

sudo su
sudo chown -R root:wheel /var/db/sudo/ts/

6voto

klanomath Points 63400
  1. Ouvrir Directory Utility (/System/Library/CoreServices/).

  2. Cliquez sur l'icône de verrouillage pour le déverrouiller, puis saisissez votre nom d'administrateur et votre mot de passe.

  3. Faites l'une des choses suivantes :

    • Choisissez Modifier > Activer l'utilisateur racine, puis saisissez un mot de passe d'utilisateur racine dans les champs Mot de passe et Vérifier.
    • Choisissez Edit > Change Root Password, puis entrez un nouveau mot de passe utilisateur Root. Vous n'avez pas besoin d'un ancien mot de passe
  4. Connexion à Root

  5. Modifier les sudoers avec visudo comme indiqué dans le dossier :

    Le fichier original ressemble à ceci :

    # sudoers file.
    #
    # This file MUST be edited with the 'visudo' command as root.
    # Failure to use 'visudo' may result in syntax or file permission errors
    # that prevent sudo from running.
    #
    # See the sudoers man page for the details on how to write a sudoers file.
    #
    
    # Host alias specification
    
    # User alias specification
    
    # Cmnd alias specification
    
    # Defaults specification
    Defaults    env_reset
    Defaults    env_keep += "BLOCKSIZE"
    Defaults    env_keep += "COLORFGBG COLORTERM"
    Defaults    env_keep += "__CF_USER_TEXT_ENCODING"
    Defaults    env_keep += "CHARSET LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE"
    Defaults    env_keep += "LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME"
    Defaults    env_keep += "LINES COLUMNS"
    Defaults    env_keep += "LSCOLORS"
    Defaults    env_keep += "SSH_AUTH_SOCK"
    Defaults    env_keep += "TZ"
    Defaults    env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY"
    Defaults    env_keep += "EDITOR VISUAL"
    Defaults    env_keep += "HOME MAIL"
    
    # Runas alias specification
    
    # User privilege specification
    root    ALL=(ALL) ALL
    %admin  ALL=(ALL) ALL
    
    # Uncomment to allow people in group wheel to run all commands
    # %wheel    ALL=(ALL) ALL
    
    # Same thing without a password
    # %wheel    ALL=(ALL) NOPASSWD: ALL
    
    # Samples
    # %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
    # %users  localhost=/sbin/shutdown -h now

    Info :

    machine:~ user$ ls -l /private/etc/sudoers 
    -r--r-----  1 root  wheel  1275 13 Jun  2012 /private/etc/sudoers

    Utilisation de visudo pour modifier le fichier corrige automatiquement les permissions du fichier

  6. Désactivez à nouveau l'utilisateur Root.

6voto

yoliho Points 340

Yosemite et les OSX antérieurs conservent des informations sur les permissions des fichiers système (c'est-à-dire les fichiers que le système d'exploitation installe). Le document d'Apple

Pour le restaurer, utilisez Disk Utility.app.
Sélectionnez le volume de démarrage (appelé Macintosh HD par défaut) sur le côté gauche.
Cliquez sur le bouton Vérifier ou Réparer les permissions du disque - ce dernier réappliquera les permissions stockées.

Pour modifier les sudoers à l'avenir, j'utiliserais visudo qui vérifie que la modification est valide.

Concernant le mot de passe Root, vous ne l'avez probablement pas défini auparavant - l'idée de sudo est que vous n'ayez jamais besoin de l'utiliser et Apple désactive la connexion Root par défaut.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X