Apaguei acidentalmente o arquivo sudoers no Mac OS X; existe alguma maneira de recuperá-lo?

9

Apaguei acidentalmente o sudoersarquivo no Mac OS X; existe alguma maneira de recuperá-lo?
E depois de recuperá-lo, como você o define no modo 0440?

ancinho
fonte

Respostas:

8

Se eu entendi o seu problema corretamente, atualmente você não tem sudoers e está tentando fazer sudo e ele não está funcionando. Nesse caso, para que o sudo funcione, você pode fazer o seguinte:

  1. Crie um arquivo sudoers na sua pasta pessoal. Você pode encontrar conteúdo padrão aqui sudoers
  2. Abra a pasta "/ etc" no Finder ("Ir" -> "Ir para a pasta ...").
  3. Agora copie o arquivo sudoers da pasta inicial para a pasta / etc via Finder.
  4. O prompt virá solicitando a senha.
  5. Digite a senha correta e pronto.

Para verificar se o sudo está funcionando bem cd /etce sudo vim sudoers. Você deve poder visualizar o arquivo sudoers através do editor vim. Qualquer operação de leitura / gravação no / etc exigiria o comando sudo.

Eu sei que isso é um pouco surpreendente que, mesmo depois de não ter sudoers, via interface do usuário, podemos fazer operações no / etc. Mas funcionou para mim :)

Tanmay
fonte
1
É realmente estranho que o equivalente da GUI ao impossível da linha de comando funcione. Acho que a Apple testa fluxos de trabalho da GUI mais detalhadamente do que a linha de comando. Graças a Deus, este post me resgatou.
Sridhar Sarnobat 12/03
É bom saber que isso ajudou você.
precisa
6

Estou assumindo que você está tentando executar um sudocomando e está fornecendo um erro que /etc/sudoersnão tem as permissões corretas?

Se você já concedeu o Adminstatus da sua conta , poderá consertar as permissões por meio da GUI. Abra a pasta "/ etc" no Finder ("Ir" -> "Ir para a pasta ...") e abra as sudoerspropriedades do arquivo. Clique no cadeado. Conceda o admingrupo read/write, o systemusuário read-only, o wheelgrupo read-onlye o everyonegrupo no access. As permissões agora devem estar corretas.

Se você não se colocou no admingrupo, precisará reiniciar o OSX no modo de usuário único e executar o comando chmod 0440 /etc/sudoers.

George M
fonte
6

Habilite o usuário root usando as preferências do sistema e crie / etc / sudoers enquanto estiver conectado como usuário root usando

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

Nota: Como o comando é executado como root nesse caso e o ID do grupo /etcé 0, por padrão, ele deve pertencer ao usuário e ao grupo corretos após a recriação, mas se por algum motivo não for, execute

chown root:wheel /etc/sudoers

Depois de criar, /etc/sudoersuse o visudo para inserir esse código:

# 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

Se você não é um administrador, pode inicializar o sistema no modo de usuário único (isso pode ser feito desligando o dispositivo e mantendo o comando + s na inicialização) e execute:

mount -uw /

e você estará no terminal com privilégios de root e poderá executar os comandos acima para configurar /etc/sudoers

John Militer
fonte
3

Criei um arquivo / tmp / sudoers com conteúdo na resposta John Militer e executei uma variação do comando tmm1.

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

Agradável!!!

noelmcloughlin
fonte
2

As respostas acima abrangem o conteúdo padrão do arquivo, como movê-lo para o lugar com o Finder e alterar suas permissões. No entanto, o sudo irá reclamar, a menos que o proprietário do arquivo sudoers seja root. A única maneira de alterar o proprietário sem o sudo é através deste comando:

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

tmm1
fonte
1
Isto parece, no máximo, responder ao "como você configurá-lo para o modo de 0440" parte, que tenha sido abordada, mas não abordar o aspecto de recuperação. Como o OP está ausente no arquivo / etc / sudoers, como isso os ajuda?
Jeff Schaller
Você pode criar o arquivo com qualquer editor e movê-lo para o lugar com o Finder. A parte difícil é mudar o proprietário para root, o que não é possível por meio de outro método.
tmm1