Verder Terug Inhoud

8. Netwerk servers

De meeste netwerkservers zouden geen enkele subprocessen moeten aanroepen. Hun pad zou om beveiligingsredenen minimaal moeten zijn.

Een belangrijke uitzondering zijn alle diensten die het inloggen op het systeem vanuit een netwerk toestaan. Deze sectie beschrijft wat de omgeving is in deze situaties. Als het commando op de remote machine met rsh wordt uitgevoerd, krijgt het een ander pad dan wanneer het met ssh wordt uitgevoerd. Vergelijkbaar, het inloggen met rlogin, Telnet of ssh is anders.

8.1 inetd

De meeste netwerkservers hebben geen eigen processen die continue op verzoeken wachten. Dit werk is naar een Internet super server met de naam inetd gedelegeerd. Inetd luistert voor alle gedefinieerde netwerkpoorten en start de passende server als er een verzoek binnenkomt. Dit gedrag is gedefinieerd in /etc/inetd.conf.

inetd wordt vanuit systeem opstartscripts gestart. Het erft gewoon het pad van het init proces. Het wijzigt het geheel niet en alle servers die vanuit inetd worden gestart hebben het init-pad. Een voorbeeld van een dergelijk proces is imapd, de server van het IMAP post office protocol.

Andere voorbeelden van inetd processen zijn telnetd, rlogind, talkd, ftp, popd, veel http servers enzovoort.

Vaak gebruik van inetd is nog steeds gecompliceerd door het gebruiken van een gescheiden tcpd programma om de echte server te starten. Het is een programma dat aanvullende beveiligingscontroles uitvoert voordat de echte applicatie wordt gestart. Het beïnvloedt het pad niet.

8.2 rsh

De rsh daemon stelt het pad vanuit _PATH_DEFPATH (/usr/include/paths.h) in dat hetzelfde pad is als die het login programma voor gewone gebruikers gebruikt. Root krijgt hetzelfde pad als de gewone gebruiker.

In feite voert rshd het commando uit dat het op de commando-regel krijgt:

shell -c command-line

en shell is geen login shell. Het is wenselijk dat alle shells die in /etc/passwd worden genoemd, de -c optie voor op de commando-regel ondersteunen.

8.3 rlogin

Rlogin roept login aan om de echte login procedure te maken. Als je met rlogin inlogt, krijg je hetzelfde pad als in login. De meeste andere manieren om op een Linux computer in te loggen maken geen gebruik van login. Merk het verschil met rsh op.

Het login commando dat feitelijk wordt gebruikt is

login -p -h host-name user-name

-p bewaart de omgeving met uitzondering van de variabelen HOME, PATH, SHELL, TERM, MAIL en LOGNAME. met -h geef je de naam van de remote host waarop je inlogt op.

8.4 telnet

Telnet is vergelijkbaar met rlogin. Het gebruikt het login programma en de commando-regel om het op vergelijkbare manier aan te roepen.

8.5 ssh

ssh heeft een eigen padinstelling. Het heeft een vast pad waaraan het de directory waar ssh zich in bevindt aan toevoegt. Dit betekent vaak dat /usr/bin twee keer in het pad voorkomt:

/usr/local/bin:/usr/bin:/bin:.:/usr/bin

In het pad komt /usr/X11/bin niet voor en de shell die door het ssh commando is aangeroepen is geen login shell. Dus

ssh remotehost xterm

werkt nooit, en van alles in /etc/profile of /etc/csh.cshrc kan dit veranderen. Je moet het pad /usr/bin/X11/xterm altijd expliciet gebruiken.

ssh zoekt naar omgevingsvariabelen in de vorm VAR=VALUE in het bestand /etc/environment. Helaas veroorzaakt dit een aantal problemen met XFree86.


Verder Terug Inhoud