Förstå varför terminalen inte låter dig skriva ett lösenord

Ibland behöver du ange ett lösenord i terminalen, vanligtvis för sudo eller su-kommandon, som låter användare utföra ett kommando med superanvändarbehörigheter. Detta är ganska typiskt för att tillåta åtkomst att läsa eller ändra något som annars inte skulle vara möjligt med ett vanligt användarkonto. Du ser vanligtvis sudo prefixing ett annat kommando, ser något som "sudo nano / etc / hosts". Även om huvuddelen av kommandoraden och sudo i allmänhet bara är lämplig för avancerade användare, kan det hända att fler lediga datoranvändare behöver vända sig till terminalen, kanske för att aktivera en funktion, ändra en systemfil eller till och med för felsökningsändamål. För nybörjare som hamnar på kommandoraden uppträder en mycket vanlig fråga vid inmatning av lösenord till terminalen, nästan alltid relaterad till sudo och den uppenbara oförmågan att skriva ett lösenord i kommandoraden för OS X (eller Linux för den delen) .


Men här är saken; Terminal låter dig skriva ditt lösenord, det ser inte ut som det . Markören på skärmen flyttar inte, och det finns ingen indikator om lösenordet skrivs in alls. Detta är avsiktligt och fungerar som en säkerhetsmekanism, till skillnad från att skriva in ett lösenord i en webbformulär eller en standard GUI-inloggningsskärm, som vanligtvis maskeras som asterisker som ******** eller kulor som ••••••• ••••••, bristen på något som visas är helt avsiktligt och det finns ingen sådan indikation på att du anger lösenord på kommandoraden. Anledningen är ganska enkel, det ger ingen indikation på hur länge ett lösenord är, vilket ger ytterligare förskingring till lösenordsinträde.

Om det här låter förvirrande är det inte alls, så här fungerar det i praktiken. Låt oss säga att du utför ett kommando som kräver sudoåtkomst, vilket ger upphov till den bekanta "Lösenord:" -posten.

% sudo cat /etc/secret.conf
Password:

När lösenordsförfrågan kommer upp skriver du lösenordet ändå, trots att ingenting visas och trycker på Retur när du är klar. Återigen finns det ingen indikation på att ett lösenord skrivs in, och det är avsiktligt.

Så låt oss springa igenom kommandot före exemplet igen, och låta administratörslösenordet på den här maskinen vara "Monkey123", du skulle skriva det lösenordet som det begärdes, trots att det inte visas alls, vilket betyder att sekvensen skulle vara något som:

% sudo cat /etc/secret.conf
Password: Monkey123 (hit Return key)

Detta kommer att utföra kommandot. Och nej, Monkey123 (eller vad administratörslösenordet är) kommer inte att visas på skärmen, inte heller några stjärnor eller kulor.

Vanligtvis behöver en användare bara uppleva detta en eller två gånger för att förstå hur det fungerar, men det är fortfarande en bra fråga för användare som just börjar få exponering för kommandoraden. Och när du vet kan du vidarebefordra kunskapen till andra, så om någon frågar dig "varför låter Terminal mig inte skriva ett lösenord?", Kan du nu svara och förklara det för dem.

För de undrar, kan det här standardbeteendet ändras för att visa asterisker för varje tecken som anges som lösenord i kommandoraden, för sudo, su eller vad som helst annat du gör. Ändå rekommenderas inte att göra den förändringen, och vi kommer inte att täcka den i den här artikeln ... kanske i framtiden om det finns något intresse av att göra det.