Sudo uitgelegd

Wat je gaat creëren

Met de komst van OS X 10.11 El Capitan, de ontberingen van wortelloos modus werd echt. Deze nieuwe modus is een beveiligingsfunctie door het schrijven naar door het systeem gecontroleerde delen van uw Mac te blokkeren. Dat betekent dat u alleen dingen in de basismap kunt bewerken en wijzigen.

Voor velen van ons vormt dat een echt probleem. ik hou van homebrew, maar het plaatst alles in de / Usr / local directory. Op een nieuwe installatie van de kapitein, die map bestaat niet en u kunt deze normaal niet maken. 

Op een geüpgraded systeem dat al die directory heeft, wordt de eigenaar root (en alles daarin!). Dit breekt volledig homebrew Met een Gebruik niet toegestaan foutmelding. Het ergste is dat als je het oplost, de volgende update het opnieuw verbreekt. Mijn systeem is bijgewerkt de kapitein twee keer en elke keer dat ik het moest repareren om het goed te gebruiken homebrew.

Als u niet vertrouwd bent met het gebruik van de opdrachtregel en de meest gebruikte opdrachten, lees dan De commandoregel is je beste vriend tutorial eerst. Deze tutorial geeft een uitstekend beeld van de basis van het gebruik van de opdrachtregel. 

U kunt ook verwijzen naar De opdrachtregel voor webontwerp serie en de cursussen Hoe een Terminal Pro te zijn en Geavanceerde opdrachtregeltechnieken

Als u onbekend bent met homebrew, lees de tutorial Homebrew Demystified: OS X's Ultimate Package Manager.

Het Sudo-commando

De sudo commando staat voor Super gebruiker DOEN. Hiermee kunt u een ander terminal-commando uitvoeren als de Super gebruiker of meer algemeen de root-gebruiker genoemd. De superuser is de hoogste baas van de computer. De superuser kan alles op de computer doen, zowel om te repareren als om te vernietigen. 

Het gebruik van deze opdracht kan erg gevaarlijk zijn.

Dit commando staat in de / Usr / bin directory. U moet er eerst voor zorgen dat u die map op uw pad hebt. Voer daarom dit commando in de terminal uit:

env | grep "PATH"

In de regel die begint met PATH =, controleer het pad / Usr / bin in de dubbele punt gescheiden lijst. Als dit er niet is, voeg je dit toe aan de ~ / .Bashrc bestand voor de bash-shell of de ~ / .Zshrc bestand zsh voor de zsh-shell:

PATH exporteren = "$ PATH: / usr / bin";

Nu kunt u de sudo commando. Sommigen denken misschien dat dit de standaard is, maar ik heb gemerkt dat sommige systemen deze configuratie missen. Ik debug computerproblemen voor veel mensen en heb de / Usr / bin map ontbreekt in veel mensen login-scripts.

Om de te gebruiken sudo opdracht, typ je de opdrachtregel die je daarna wilt uitvoeren sudo met een spatie. 

Voor het voorbeeld van de vaststelling homebrew, u moet het eigendom van de directorystructuur wijzigen in de aanmeldingsnaam. Als u niet zeker weet wat het systeem gebruikt voor de inlognaam, opent u de Terminal.app in de homedirectory en typ:

ls -ld .

De ls commando zal Lijst de inhoud van een map. De vlaggen -ld vertellen ls om de lange weergave te tonen met bestandskenmerken (l) en alleen de map (d). De . betekent de huidige map. Dit zou een vergelijkbare uitvoer moeten produceren:

drwxr-xr-x 132 personeel van raguay 884 6 november 14:11 .

De raguay is de inlognaam op mijn systeem. Het zal voor jou anders zijn en is de naam waarnaar je de moet veranderen / Usr / local / eigendom.

Nu, om eigendom van de te bevestigen / Usr / local / map, moet u de chown commando. De chown commando staat voor Wijzig eigenaar en dat is wat het doet. Op mijn systeem is het commando:

sudo chown -R raguay / usr / local

De -R vlag vertelt chown om het eigendom recursief te veranderen. Dat betekent, elk bestand en elke map in / Usr / local zal hun eigenaar veranderen in raguay. U moet de gebruikersnaam wijzigen om uw systeem weer te geven.


Eigendom van / usr / local vaststellen

Hierboven ziet u de foutmelding bij het wijzigen van de / Usr / local directory-eigendom zonder te gebruiken sudo. Ik heb de -R vlag zoals het zou genereren van een fout voor elk bestand en elke map. De volgende opdrachtregel gebruikt de sudo commando. De opdracht zal om uw wachtwoord vragen en vervolgens de actie zonder fouten uitvoeren.

De gevaren

Zoals ik al zei, dit geeft je veel macht over het systeem. Wees zeer voorzichtig, u kunt het systeem onbruikbaar maken met behulp van de sudo commando. De opdrachtregel om een ​​bestand te verwijderen is bijvoorbeeld rm voor ReMove een bestand. Als u typt:

sudo rm -R /

Je zal alles op de harde schijf wissen. Dat zou betekenen dat u uw besturingssysteem, alle programma's die u had en uw gegevensbestanden volledig opnieuw installeerde vanaf een back-up. Als je geen back-up hebt, nou, het is gewoon allemaal weg.

Zelfs de chown commando kan dingen onbruikbaar maken. Als u de eigenaar van alle bestanden in de / applicatons naar een naam die niet bestaat, dan kunt u geen van uw toepassingen in die map uitvoeren.

Wees daarom zeer voorzichtig met het gebruik van de sudo commando.

Conclusie

Nu dat je nu eigenaarsproblemen op je Mac kunt oplossen, heb je de kennis om soortgelijke problemen op te lossen die je in de toekomst misschien hebt. Vergeet niet om de opdracht heel voorzichtig te gebruiken en controleer de opdracht die u typt voordat u uw wachtwoord geeft. 

Eenmaal uitgevoerd, kan het ongedaan maken ervan moeilijk tot bijna onmogelijk zijn zonder een volledige herinstallatie van het besturingssysteem.