usunięto / etc / hosts na komputerze Mac i teraz nie można sudo

0

Myślę, że popełniłem błąd, edytując / etc / hosts w wysublimowanym tekście, ponieważ zaraz potem nie mogłem uruchomić „sudo xxx”. Prosiłby o hasło, a potem nigdy nie rozwiązałby problemu po wpisaniu go.

Próbowałem edytować / etc / hosts, ale zawsze wymagał sudo, który nigdy się nie rozwiązał, więc nie działało. W końcu właśnie usunąłem plik, ale utknąłem teraz, ponieważ nie mogę go odtworzyć bez dostępu do sudo. Jakieś pomysły?

Jeremy Smith
źródło
1
Co masz na myśli mówiąc „rozwiązać hasło”? - Plik hostów służy do rozpoznawania nazw - tj. Konwertowania nazw hostów na adresy IP. Nie rozwiązujesz hasła. Najprostszym sposobem rozwiązania problemu jest ponowne uruchomienie komputera Mac w trybie pojedynczego użytkownika przez przytrzymanie Cmd-s podczas uruchamiania. W trybie pojedynczego użytkownika możesz odtworzyć plik hosts. Możesz także wyjąć dysk i podłączyć do innego komputera Mac i odtworzyć plik z tego miejsca.
jksoegaard
Najprostszym sposobem jest przywrócenie z kopii zapasowej - lub w tym przypadku ponowne zainstalowanie systemu operacyjnego
Mark
@ jksoegaard „rozwiązywanie hasła” właśnie odwoływało się do tego, że kiedy wpisuję hasło i klikam „Prześlij”, nic się nie dzieje. Po prostu zawiesza się w nieskończoność. Spróbuję zasugerować tryb dla jednego użytkownika, dzięki!
Jeremy Smith
Możesz uruchomić tryb dysku docelowego przytrzymując T podczas rozruchu. W trybie dysku docelowego możesz podłączyć komputer Mac do innego komputera za pomocą Thunderbolt, Firewire lub USB-C i edytować pliki na dysku twardym.
audiomason

Odpowiedzi:

1

Plik / etc / hosts nie jest w żaden sposób powiązany z możliwością uruchamiania sudo. Prawdopodobnie włączyłeś swój plik sudoers w poprzednim kroku.

Aby rozwiązać problem, uruchom Tryb odzyskiwania i otwórz Terminal w menu & gt; Narzędzia.

  • Biegać df aby uzyskać nazwę głównego woluminu systemowego.
  • Zmień katalog roboczy na / Volumes // etc:

    cd /Volumes/Macintosh\ HD/etc #"Macintosh HD" is just an example name here
    
  • Skopiuj zapasowe pliki hosty ~ orig i sudoers ~ orig (lub domyślnie z podobnymi nazwami, które mogą istnieć jako „kopia zapasowa” w / etc - zaznacz to za pomocą ls!):

    cp hosts~orig hosts
    cp -i sudoers~orig sudoers #enter yes here
    

    Jeśli nie istnieją, utwórz plik hosts i sprawdź plik sudoers:

    /Volumes/<name_of_main_volume>/usr/bin/nano /Volumes/<name_of_main_volume>/etc/hosts
    

    Zawartość domyślnego pliku hosts to.

    ##
    # Host Database
    #
    # localhost is used to configure the loopback interface
    # when the system is booting.  Do not change this entry.
    ##
    127.0.0.1   localhost
    255.255.255.255 broadcasthost
    ::1             localhost 
    

    Uprawnienia POSIX to root: wheel 644. Zmodyfikuj to za pomocą chown i chmod Jeśli to konieczne.

    / Volumes // usr / bin / nano / Volumes // etc / sudoers

    Minimalny (do wpisania mniej!) Działający plik sudoers wygląda tak:

    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"
    
    Defaults    lecture_file = "/etc/sudo_lecture"
    
    root        ALL = (ALL) ALL
    %admin      ALL = (ALL) ALL
    

    Uprawnienia POSIX to root: wheel 440. Zmodyfikuj to za pomocą chown i chmod Jeśli to konieczne.

  • Uruchom ponownie komputer Mac, wprowadzając:

    reboot
    

Można to również zrobić w trybie pojedynczego użytkownika po zamontowaniu woluminu głównego rw .


Po odzyskaniu możliwości uruchamiania sudo wyodrębnij je z aplikacji instalatora macOS za pomocą Pacifist lub z kopii zapasowej lub zmodyfikuj samodzielnie za pomocą visuso. Domyślna treść to:

#
# Sample /etc/sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.

##
# Override built-in defaults
##
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"

Defaults    lecture_file = "/etc/sudo_lecture"

##
# User alias specification
##
# User_Alias    FULLTIMERS = millert, mikef, dowdy

##
# Runas alias specification
##
# Runas_Alias   OP = root, operator

##
# Host alias specification
##
# Host_Alias    CUNETS = 128.138.0.0/255.255.0.0
# Host_Alias    CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
# Host_Alias    SERVERS = master, mail, www, ns
# Host_Alias    CDROM = orion, perseus, hercules

##
# Cmnd alias specification
##
# Cmnd_Alias    PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less

##
# User specification
##

# root and users in group wheel can run anything on any machine as any user
root        ALL = (ALL) ALL
%admin      ALL = (ALL) ALL

## Read drop-in files from /private/etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /private/etc/sudoers.d
klanomath
źródło
Powiedziałeś: „Skopiuj zapasowe pliki hostów ~ orig i shudders ~ orig:”, skąd pochodzą te „zapasowe pliki”? Nie istnieją w mojej kompilacji 10.12.3.
user3439894
Nie istnieją w moim MacOSie 10.12.3 /etc informator.
user3439894
@ user3439894 Masz rację. Oczywiście dziwny zbieg okoliczności, że oba pliki istnieją w mojej instalacji
klanomath
@klanomath Na mojej obecnej czystej instalacji jest ich dużo ~orig i ~previous pliki.
Max Ried
0

Podczas normalnego uruchamiania na zwykłym koncie wykonaj następujące czynności w Terminalu:

touch sudoers.ori hosts.ori
open -e sudoers.ori hosts.ori
  • Uwaga: Zakłada się, że podczas wykonywania tych poleceń znajdujesz się w swoim katalogu domowym.

w hosts.ori plik, skopiuj i wklej następujące elementy:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost

Następnie zapisz i zamknij hosts.ori plik.

w sudoers.ori plik, skopiuj i wklej następujące elementy:

#
# Sample /etc/sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.

##
# Override built-in defaults
##
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"

Defaults    lecture_file = "/etc/sudo_lecture"

##
# User alias specification
##
# User_Alias    FULLTIMERS = millert, mikef, dowdy

##
# Runas alias specification
##
# Runas_Alias   OP = root, operator

##
# Host alias specification
##
# Host_Alias    CUNETS = 128.138.0.0/255.255.0.0
# Host_Alias    CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
# Host_Alias    SERVERS = master, mail, www, ns
# Host_Alias    CDROM = orion, perseus, hercules

##
# Cmnd alias specification
##
# Cmnd_Alias    PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less

##
# User specification
##

# root and users in group wheel can run anything on any machine as any user
root        ALL = (ALL) ALL
%admin      ALL = (ALL) ALL

## Read drop-in files from /private/etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /private/etc/sudoers.d

Następnie zapisz i zamknij sudoers.ori plik.

Teraz z Boot Recovery HD w Terminalu wykonaj następujące czynności:

cd /Volumes/Macintosh\ HD/etc
cp /Volumes/Macintosh\ HD/Users/*/hosts.ori hosts
cp /Volumes/Macintosh\ HD/Users/*/sudoers.ori sudoers
chown root:wheel hosts
chown root:wheel sudoers
chmod 0644 hosts
chmod 440 sudoers
reboot
  • Uwaga: Macintosh HD jest nazwą domyślną, jednak jeśli zmieniłeś ją z jakiegokolwiek powodu, zmień ją odpowiednio w linii poleceń.
user3439894
źródło