Tradionele Unix-systemen houden informatie bij over een gebruikersaccount, waaronder de in één richting versleutelde wachtwoorden, in een tekstbestand genaamd ``/etc/passwd''. Aangezien dit bestand door veel tools wordt gebruikt (zoals ``ls'') om de eigenaar van bestanden te tonen, enz. door een match tussen het gebruikersid # en de gebruikersnaam, moet het bestand voor iedereen leesbaar zijn. Dit heeft als consequentie dat het een beveiligingsrisico met zich meebrengt.
Een andere methode om account-informatie op te slaan, één die ik altijd gebruik, is in het shadow passwd formaat. Net als bij de traditionele methode wordt de account-informatie in het bestand /etc/passwd in een compatibel formaat opgeslagen. Het wachtwoord wordt echter als een enkel “x”-teken opgeslagen (dwz. niet echt in dit bestand opgeslagen). In een tweede bestand, genaamd ``/etc/shadow'', staat een versleuteld wachtwoord als ook nog wat andere informatie zoals waarden wanneer de account of het wachtwoord verloopt, enz. Het bestand /etc/shadow is alleen leesbaar voor het root-account en is daarom een minder beveiligingsrisico.
Terwijl een aantal Linux-distributies je dwingen de Shadow Password Suite te installeren om gebruik te kunnen maken van het shadow-formaat, maakt Red Hat het je gemakkelijk. Om tussen de twee formaten te schakelen, typ je (als root):
/usr/sbin/pwconv Converteren naar het shadow formaat /usr/sbin/pwunconv Weer terugzetten in het tradionele formaat |
Met shadow passwords, staat in het bestand ``/etc/passwd'' de account-informatie en het ziet er ongeveer zo uit:
smithj:x:561:561:Joe Smith:/home/smithj:/bin/bash |
De velden in een passwd record worden van elkaar gescheiden door een dubbele punt, “:”, en dit zijn:
Gebruikersnaam, tot aan 8 tekens. Hoofdlettergevoelig, meestal geheel in kleine letters
Een “x” in het wachtwoordveld. Wachtwoorden zijn opgeslagen in het bestand ``/etc/shadow''.
Numeriek gebruikers-id. Deze wordt toegekend door het ``adduser'' script. Unix gebruikt dit veld, plus het volgende groepsveld, om te achterhalen welke bestanden aan de gebruiker toebehoren.
Numeriek groeps-id. Red Hat maakt op een tamelijk unieke wijze gebruik van groeps-id's voor verbeterde bestandsbeveiliging. Meestal komt de groeps-id overeen met de gebruikers-id.
Volledige naam van de gebruiker. Ik weet niet zeker wat de maximumlengte van dit veld is, maar probeer het redelijk te houden (minder dan 30 tekens).
Homedirectory van de gebruiker. Meestal /home/username (bv. /home/smithj). Alle persoonlijke bestanden, webpage's, mail forwarding, enz. van de gebruiker zullen hier worden bewaard.
“shell account” van de gebruiker. Vaak ingesteld op ``/bin/bash'' om toegang tot de bash-shell te verschaffen (mijn persoonlijke favoriete shell).
Misschien dat je niet in shell-accounts voor je gebruikers wilt voorzien. Je zou bijvoorbeeld een script-bestand genaamd ``/bin/sorrysh'' aan kunnen maken, dat één of andere foutmelding weergeeft en de gebruiker uitlogt, en je zou dit script dan als de standaardshell in kunnen stellen.
![]() | Noot: Als de account moet zijn worden voorzien van “FTP”-transport om webpages bij te werken, enz., dan zal de shell-account moeten worden ingesteld op ``/bin/bash'' -- en vervolgens zullen speciale permissies moeten worden ingesteld in de homedirectory van de gebruiker om shell-logins te voorkomen. Zie de the section called Web Server en HTTP Caching Proxy Beheer in Chapter 7 voor details. |
Het ``/etc/shadow'' bestand bevat informatie over het verlopen van het wachtwoord en account voor gebruikers en het ziet er ongeveer zo uit:
smithj:Ep6mckrOLChF.:10063:0:99999:7::: |
Net als in het passwd bestand, worden ook alle velden in het shadow bestand door “:” dubbele punten gescheiden, en dit zijn de velden:
Gebruikersnaam, tot aan 8 tekens. Hoofdlettergevoelig, meestal allen kleine letters. Een directe overeenkomst met de gebruikersnaam in het bestand /etc/passwd.
Wachtwoord, 13 versleutelde tekens. Een leeg veld (dwz. ::) geeft aan dat er geen wachtwoord is vereist om in te loggen (dit is gewoonlijk een slecht plan), en een ``*'' veld (dwz. :*:) geeft aan dat het account is gedeactiveerd.
Het aantal dagen (sedert 1 januari, 1970) sinds het wachtwoord voor het laatst werd gewijzigd.
Het aantal dagen voordat het wachtwoord mag worden gewijzigd (0 geeft aan dat het op ieder moment mag worden gewijzigd)
Het aantal dagen nadat het wachtwoord moet worden gewijzigd (99999 geeft aan dat de gebruiker zijn of haar wachtwoord vele, vele jaren ongewijzigd mag laten)
Het aantal dagen dat een gebruiker moet worden gewaarschuwd dat een wachtwoord is verlopen (7 voor een volledige week)
Het aantal dagen nadat het wachtwoord is verlopen dat het account wordt gedeactiveerd
Het aantal dagen sinds Januari 1, 1970 dat een account werd gedeactiveerd
Een gereserveerd veld voor mogelijk toekomstig gebruik