J'ai accidentellement supprimé le fichier sudoers sur Mac OS X; existe-t-il un moyen de le récupérer?

9

J'ai accidentellement supprimé le sudoersfichier sur Mac OS X; existe-t-il un moyen de le récupérer?
Et une fois que vous l'avez récupéré, comment le réglez-vous en mode 0440?

râteau
la source

Réponses:

8

Si je comprends bien votre problème, alors actuellement vous n'avez pas de sudoers et vous essayez de faire du sudo et cela ne fonctionne pas. Dans ce cas, pour faire fonctionner sudo, vous pouvez procéder comme suit:

  1. Créez un fichier sudoers dans votre dossier personnel. Vous pouvez trouver le contenu par défaut ici sudoers
  2. Ouvrez le dossier «/ etc» dans le Finder («Aller» -> «Aller au dossier…»).
  3. Copiez maintenant le fichier sudoers du dossier personnel vers le dossier / etc via le Finder.
  4. L'invite viendra demander le mot de passe.
  5. Entrez le mot de passe correct et vous avez terminé.

Pour vérifier que sudo fonctionne bien cd /etcet sudo vim sudoers. Vous devriez pouvoir voir le fichier sudoers via l'éditeur vim. Toute opération de lecture / écriture dans / etc nécessiterait la commande sudo.

Je sais que c'est un peu surprenant que même après ne pas avoir de sudoers, via l'interface utilisateur, nous pouvons faire des opérations dans / etc. Mais ça a marché pour moi :)

Tanmay
la source
1
Il est en effet étrange que l'équivalent GUI de ce qui est impossible à partir de la ligne de commande fonctionne. Je suppose qu'Apple teste les workflows de l'interface graphique de manière plus approfondie que la ligne de commande. Dieu merci, ce message m'a sauvé.
Sridhar Sarnobat
Bon à savoir que cela vous a aidé.
Tanmay
6

Je suppose que vous essayez d'exécuter une sudocommande et que cela vous donne une erreur qui /etc/sudoersn'a pas les autorisations appropriées?

Si vous avez déjà accordé le Adminstatut de votre compte , vous devriez pouvoir corriger les autorisations via l'interface graphique. Ouvrez le dossier «/ etc» dans le Finder («Aller» -> «Aller au dossier…»), puis ouvrez les sudoerspropriétés du fichier. Cliquez sur le verrou. Accordez le admingroupe read/write, l' systemutilisateur read-only, le wheelgroupe read-onlyet le everyonegroupe no access. Les autorisations doivent maintenant être correctes.

Si vous ne vous êtes pas mis dans le admingroupe, vous devrez redémarrer OSX en mode mono-utilisateur et exécuter la commande chmod 0440 /etc/sudoers.

George M
la source
6

Activez l'utilisateur root à l'aide des préférences système, puis créez / etc / sudoers lorsque vous êtes connecté en tant qu'utilisateur root à l'aide de

touch /etc/sudoers; chmod 440 /etc/sudoers

Remarque: Étant donné que la commande est exécutée en tant que root dans ce cas et que l'ID de groupe /etcest 0, elle devrait par défaut appartenir à l'utilisateur et au groupe appropriés après la recréation, mais si pour une raison quelconque, elle ne l'est pas, exécutez

chown root:wheel /etc/sudoers

Après avoir créé, /etc/sudoersutilisez visudo pour y insérer ce code:

# 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"

# 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
ALL ALL=(ALL)                   NOPASSWD:/opt/dplat/bin/Revision/CMUpdatePackage/Installer.app/Contents/MacOS/I  nstaller
ALL ALL=(ALL)     NOPASSWD:/opt/dplat/bin/UpdatePackageInstaller.app/Contents/MacOS/UpdatePackage    Installer

Si vous n'êtes pas administrateur, vous pouvez plutôt démarrer le système en mode mono-utilisateur (cela peut être fait en éteignant l'appareil et en maintenant la commande + s au démarrage) et exécutez:

mount -uw /

et vous serez dans le terminal avec des privilèges root, et vous pourrez exécuter les commandes ci-dessus pour configurer /etc/sudoers

John Militer
la source
3

J'ai créé un fichier / tmp / sudoers avec du contenu dans la réponse de John Militer et j'ai exécuté une variante de la commande tmm1.

osascript -e 'do shell script "cat /tmp/sudoers > /etc/sudoers; chown root:wheel /etc/sudoers" with administrator privileges'

Agréable!!!

noelmcloughlin
la source
2

Les réponses ci-dessus couvrent le contenu par défaut du fichier, comment le déplacer en place avec le Finder et modifier ses autorisations. Cependant, sudo se plaindra à moins que le propriétaire du fichier sudoers ne soit root. La seule façon de changer le propriétaire sans sudo est via cette commande:

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

tmm1
la source
1
Cela semble tout au plus répondre à la partie «comment le mettre en mode 0440», qui a déjà été traitée, mais pas aborder l'aspect de récupération. Étant donné qu'il manque à l'OP un fichier / etc / sudoers pour commencer, comment cela peut-il les aider?
Jeff Schaller
Vous pouvez créer le fichier avec n'importe quel éditeur et le déplacer en place avec le Finder. La partie difficile est de changer le propriétaire en root, ce qui n'est pas possible via une autre méthode.
tmm1