Question:
sudo: / etc / sudoers appartient à l'uid 501, devrait être 0
kxxoling
2014-11-23 15:42:12 UTC
view on stackexchange narkive permalink

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

Ensuite, je l'ai réédité avec l'éditeur de texte par défaut de Mac (le cours sudo ne peut pas être utilisé lorsque / etc / sudoers est erroné).

J'ai essayé de lancer sudo agin, et obtenir ceci erreur:

  sudo: / etc / sudoers appartient à l'uid 501, devrait être 0sudo: aucune source sudoers valide trouvée, quitter  

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

Les autorisations de réparation de l'utilitaire de disque fonctionnent-elles?
@Mark comment faire cela? J'utilise la version chinoise.
@Mark Cela fonctionne, mais a maintenant une erreur de syntaxe.
J'ai réparé l'erreur dans le fichier sudoers, puis réparé les autorisations à nouveau. tout va bien maintenant. Merci beaucoup @Mark
@Mark Répondez à ma question et je vous choisirai comme acceptée.
Neuf réponses:
#1
+16
nohillside
2014-11-23 16:19:52 UTC
view on stackexchange narkive permalink

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

  mount -uw / chown root: wheel / etc / sudoerschmod 440 / etc / sudoersreboot  

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

Juste pour en sauver d'autres, une partie du temps que j'ai perdu à m'amuser avec le fichier sudoers, les permissions DOIVENT être «440», et les propriétaires DOIVENT être «root: wheel».Toute autre chose entraînera l'échec de sudo.N'essayez pas de devenir intelligent avec des liens symboliques!`-r - r ----- 1 roue racine`
travaillé, je <3 u @patrix.C'est le seul qui a fonctionné pour moi, je suis sur `Sierra` toutes les autres choses dans tous les sites n'ont pas fonctionné pour moi.
juste après le montage: `chown 0 / private / etc / sudoers`
@MaksimKostromin Quelle est la raison de l'exécuter?
raison de le faire, car cela résoudra le problème du sujet.c'est assez et je viens de le faire
@MaksimKostromin Les permissions standard pour `/ etc / sudoers` sont 440 qui sont définies par l'extrait ci-dessus.Les mettre à 0 en premier ne fait rien (et au moins à première vue semble dangereux).Le problème dans la question est également une mauvaise propriété, pas de mauvaises autorisations ...
@nohillside, 0 c'est juste un UID, je n'utilise pas chmod ici, j'utilise chown, qui change essentiellement le propriétaire du fichier.donc après la commande que j'ai pointée, le fichier sudoers appartiendra à 0 (c'est-à-dire root), tout comme le message d'erreur nous indiquant: `appartient à l'uid 501, devrait être 0`
@maksimkostromin ah, mon mauvais.Donc c'est la même chose que «chown root ...» alors :-)
oui, @nohillside, fait la même chose que votre 2ème ligne de code, mais plus court et suffisant pour résoudre un problème que le créateur de ce sujet a (du moins sur mon dernier mac ces jours-ci ..)
Je vous remercie!Cela fonctionne sur `High Sierra`.Mais vous devez «appuyer et maintenir» la combinaison «Cmd-S» au début du démarrage de Mac OS jusqu'à ce que la ligne de commande apparaisse.
J'ai activé l'utilisateur ROOT, puis j'ai exécuté les commandes comme ci-dessus.Toutes les autres solutions ont échoué pour moi: chown root: roue / etc / sudoers chmod 440 / etc / sudoers redémarrer
Le keychord `Cmd-S` fonctionne-t-il également pour Mojave?Je l'ai essayé et je n'ai pas eu un seul shell utilisateur.
#2
+6
mmmmmm
2014-11-23 18:37:25 UTC
view on stackexchange narkive permalink

Yosemite et les versions antérieures d'OSX conservent des informations sur les autorisations des fichiers système (c'est-à-dire les fichiers que le système d'exploitation installe). Documentation Apple

Pour restaurer cette utilisation, utilisez Disk Utility.app.
Sélectionnez le volume de démarrage (appelé par défaut Macintosh HD) sur le côté gauche.
Cliquez sur l'icône Vérifiez ou réparez les autorisations du disque - ce dernier réappliquera les autorisations stockées.

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

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

il n'y a plus une telle chose sur `sierra`
Cela ne fonctionne pas avec OS X El Capitan
Je pense que nous devons mettre à jour ce fil pour corriger la réponse par exemple dans le prochain post
macOS mojave n'a plus cela.Quelle est la solution maintenant?
@andrew voir les commentaires au-dessus du vôtre et essayez donc https://apple.stackexchange.com/a/157775/237
#3
+6
Graham
2019-03-10 05:19:25 UTC
view on stackexchange narkive permalink

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

  1. Démarrage en mode de récupération (Cmd + R lors du démarrage)
  2. Utilitaires de disque> Sélectionnez Macintosh HD et montez
  3. Fermer les utilitaires de disque
  4. Utilitaires> Terminal
  5. Tapez: chown root: wheel "/ Volumes / Macintosh HD / etc / sudoers"
  6. Redémarrer

Vous devrez peut-être également changer la propriété de ts, de retour dans le terminal:

  sudo su
sudo chown -R racine: roue / var / db / sudo / ts /
 
Pourquoi redémarrez-vous la machine après?Et aussi, pourquoi faites-vous «sudo su»?
#4
+5
klanomath
2014-11-23 18:06:50 UTC
view on stackexchange narkive permalink
  1. Ouvrez Directory Utility (/ System / Library / CoreServices /).
  2. Cliquez sur l'icône de verrouillage pour le déverrouiller, puis entrez votre nom d'administrateur et votre mot de passe.
      / li>
    1. Effectuez l'une des opérations suivantes:

      • Choisissez Édition> Activer l'utilisateur racine, puis entrez un mot de passe d'utilisateur racine dans les champs Mot de passe et Vérifier.
      • Choisissez Edition> Modifier le mot de passe root, puis entrez un nouveau mot de passe utilisateur root. Vous n'avez pas besoin d'un ancien mot de passe
    2. Connectez-vous à la racine
    3. Modifiez les sudoers avec visudo comme indiqué dans le fichier:

      Le fichier original ressemble à ceci:

        # fichier sudoers. ## Ce fichier DOIT être édité avec la commande 'visudo' en tant que root. # Échec de l'utilisation de 'visudo' peut entraîner des erreurs de syntaxe ou d'autorisation de fichier # qui empêchent sudo de s'exécuter. ## Voir la page de manuel sudoers pour plus de détails sur la façon d'écrire un fichier sudoers. # Defaults specificationDefaults env_resetDefaults env_keep + = "BLOCKSIZE" Defaults env_keep + = "COLORFGBG COLORTERM" Defaults env_keep + = "__CF_USER_TEXT_ENCODING" Defaults env_keep + = "CHARSOLLATE LANG LANGUAGE LCakeep_ Defaults" LC_ALL LC_keepary Defaults " = "LINES COLUMNS" Defaults env_keep + = "LSCOLORS" Defaults env_keep + = "SSH_AUTH_SOCK" Defaults env_keep + = "TZ" Defaults env_keep + = "DISPLAY XAUTHORIZATION XAUTHORITY" Valeurs par défaut env_keep + = "EDITOR VISUAL" Valeurs par défaut env_keep + = "HOME MAIL" # Spécification de l'alias Runas # Spécification des privilèges utilisateurroot ALL = (ALL) ALL% admin ALL = (ALL) ALL # Décommenter pour autoriser les personnes du groupe wheel pour exécuter toutes les commandes #% wheel ALL = (ALL) ALL # Même chose sans mot de passe #% wheel ALL = (ALL) NOPASSWD: ALL # Samples #% users ALL = / sbin / mount / cdrom, / sbin / umount / cdrom #% users localhost = / sbin / shutdown -h maintenant  

      Info:

        machine: ~ user $ ls -l / private / etc / sudoers
      -r - r ----- 1 roue racine 1275 13 juin 2012 / private / etc / sudoers  

      L'utilisation de visudo pour modifier le fichier corrige les permissions du fichier automatiquement

    4. Désactivez à nouveau l'utilisateur root.

Si vous constatez que vous ne pouvez pas modifier le fichier via la ligne de commande, ouvrez-le à l'aide d'une application graphique telle que TextEdit.Cela contournera la configuration sudo corrompue.
#5
+2
Kallados
2018-06-17 23:59:04 UTC
view on stackexchange narkive permalink

Excellent et simplement pour High Sierra - pas de SUDO, pas de récupération, juste (vérifier / réparer les autorisations)

  1. Première étape
 diskutil resetUserPermissions / `id -u` 
  1. Deuxième élément Choisissez Dossier via Finder -> Informations -> Déverrouiller et choisissez Molette de réglage en bas -> Appliquer aux éléments inclus

terminé!

https://support.apple.com/en-us/HT203538

Donc, en termes simples, assurez-vous d'abord que vous avez resetUserPermissions à partir de la ligne de commande, puis en allant de la commande Finder Go à / user / local / your_directory, faites un clic droit et sur l'icône d'engrenage, ajoutez des autorisations de lecture-écriture à votre utilisateur.
Comment la réinitialisation des autorisations utilisateur résout-elle les problèmes avec `/ etc / sudoers`?
#6
+2
Dan
2018-11-24 00:48:38 UTC
view on stackexchange narkive permalink

Dans le terminal:

  1. Tapez sh ou sudo sh (mon cas, j'ai accidentellement défini chown -R / donc sudo c'est moi, plus besoin de sudo, en utilisant sh )
  2. In sh , tapez cd / var / db / sudo / , puis faites ls -ln pour vérifier si son le même que ceux-ci:

      total 0
    drwxr-xr-x 2501 0 68 23 oct 23:56 votre nom d'utilisateur
    drwx ------ 3501 0102 24 novembre 00:57 ts
    
  3. puis tapez ls -la et vous obtiendrez ceux-ci:

      total 0
    drwx - x - x 4 roue de votre nom d'utilisateur 136 23 octobre 23:56.
    drwxr-xr-x 80 roue de votre nom d'utilisateur 2720 24 novembre 01:55 ..
    drwxr-xr-x 2 root wheel 68 Oct 23 23:56 yourusername
    drwx ------ 3 roue racine 102 Nov 24 00:57 ts
    

Les résultats ci-dessus montrent que yourusername est réglé sur wheel , ce qui n'est pas censé le faire. Cela devrait normalement ressembler à ceci:

  total 0
drwx - x - x 4 roue de racine 136 23 octobre 23:56.
drwxr-xr-x 80 roue racine 2720 24 novembre 01:55 ..
drwxr-xr-x 2 root wheel 68 Oct 23 23:56 yourusername
drwx ------ 3 roue racine 102 Nov 24 00:57 ts
 

Vous voyez la différence?

Maintenant, nous voulons y remédier. Voici ce que j'ai fait:

  1. Still in sh , j'ai tapé chown -R root: wheel / var / db / sudo / yourusername pour le changer en UID 0 au lieu de l'UID 501 comme ci-dessus cas
  2. Faites de même pour ts, chown -R root: wheel / var / db / sudo / ts / Maintenant, vérifiez à nouveau l'autorisation avec ls -ln et cela devrait ressembler à ceci:

      total 0
    drwxr-xr-x 2 0 0 68 23 oct 23:56 dan
    drwx ------ 3 0 0102 24 novembre 00:57 ts
    L'UID est désormais défini sur 0 et non sur 501.
    
  3. Nous faisons maintenant la même chose pour .. et . en exécutant chown -R root: wheel /var/db/sudo/./ puis chown -R root: wheel /var/db/sudo/../ , et vous obtiendrez des résultats sous la forme No. 4 ci-dessus.

Nous voulons maintenant corriger / etc / sudoers appartenant à l'UID 501.

  1. Sjusqu'à sh , vérifiez d'abord l'autorisation en exécutant ls -ln / private / etc / sudoers et il devrait obtenir ceci:

      -r - r ----- 1501 0 1563 14 novembre 17:53 / private / etc / sudoers
    

Vous avez remarqué l'UID 501? Nous voulons qu'il devienne UID 0.

  1. Alors, exécutez cette commande chown -R root: wheel / private / etc / sudoers puis ls -ln / private / etc / sudoers à nouveau pour vérifiez si l'autorisation change à ceci:

      -r - r ----- 1 0 0 1563 14 novembre 17:53 / private / etc / sudoers
    

Alors essayez sudo comme vous le feriez à nouveau et voyez si cela fait l'affaire.

Avec tout cela, je dois vous rappeler que je ne suis pas responsable de votre machine après avoir suivi ces étapes, mais au moins c'est ce qui fonctionne pour moi.

#7
+2
Gordon Davisson
2020-06-29 01:20:45 UTC
view on stackexchange narkive permalink

Vous pouvez résoudre ce problème via AppleScript, sans avoir besoin de redémarrer, ni même de vous déconnecter d'&, ou d'un shell racine 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" avec les privilèges d'administrateur'
 

... puis authentifiez-vous en tant qu'administrateur lorsque cela vous est demandé.

Explication: c'est un peu indirect.Il utilise la commande shell osascript pour exécuter un court AppleScript qui utilise la commande do shell script pour exécuter un court script shell.La raison de la chose shell->AppleScript->shell est d'utiliser l'option avec des privilèges d'administrateur , qui a à peu près le même effet que sudo mais fonctionnera même si / etc / sudoersest complètement foiré.

#8
+1
andrew
2019-09-22 16:40:07 UTC
view on stackexchange narkive permalink

Si cela reste pertinent, c'est ma solution à ce problème.Je ne démarre pas en mode mono-utilisateur.Cela fonctionnera si vous avez le mot de passe root

  su -
monter -uw /
chown root: roue / etc / sudoers
chmod 440 / etc / sudoers
redémarrer
 
#9
+1
farzadshbfn
2020-05-19 02:16:12 UTC
view on stackexchange narkive permalink

Cela a fonctionné pour moi: (pas de mot de passe root, mais accès administrateur requis)

  1. A créé un autre compte administrateur test
  2. Définissez manuellement son uid sur 0 (clic droit sur le compte> Options avancées)
  3. Redémarrez le système, connectez-vous via test (de nombreuses erreurs apparaîtront, annulez / validez toutes)
  4. Allez dans cd / etc / et chown -R $ (whoami) sudoers (L'erreur sudo va disparaître maintenant, mais en supprimant test, nous devons tout annuler)
  5. Redémarrez le système et connectez-vous avec votre compte normal
  6. Définissez manuellement l'uid test sur 502 (ou 500 + quelque chose qui n'est pas pris par les autres administrateurs)
  7. Supprimer le compte test


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...