Nella lezione precedente abbiamo visto come alcune porte possano essere aperte soltanto da utenti con privilegi amministrativi (nei sistemi di tipo UNIX, l'utente root o altri ad esso parificati; nei sistemi Windows, l'utente Administrator o altri con pari privilegi), e che tuttavia httpd rifiuti esplicitamente di essere eseguito da un utente privilegiato, per motivi di sicurezza.
In realtà questo non è del tutto vero, e bisogna distinguere i sistemi operativi di tipo UN*X da Windows.
Sistemi di tipo UN*X
Sui sistemi UN*X, httpd può essere (e, nel caso si scelga una porta d'ascolto inferiore a 1024, deve essere) avviato da un utente quale l'utente root, ma fa in modo di mantenere tali privilegi per il tempo strettamente necessario all'apertura delle porte privilegiate richieste. Dopodichè, cambierà utente e gruppo, passando ad uno meno privilegiato, specificato mediante le direttive User
e Group
, come nell'esempio:
User [nomeutente]
Group [nomegruppo]
In genere l'utente e il gruppo in questione vengono creati durante l'installazione di httpd; nel caso si usi un pacchetto precompilato disponibile con la propria distribuzione, ciò viene fatto automaticamente - diversamente, si dovrà provvedere in maniera manuale.
Ad esempio, se si sta usando una versione di httpd pacchettizzata per la distribuzione Debian, o una sua derivata come Ubuntu, sarà utilizzata questa coppia di direttive:
User www-data
Group www-data
Se, invece, si sta usando una distribuzione a base Red Hat, come CentOS, sarà usata la coppia di direttive seguente:
User nobody
Group nobody
Naturalmente, nel caso in cui si voglia utilizzare una porta non privilegiata, non è strettamente necessario - per quanto sia comunque consigliabile - utilizzare un utente dedicato con pochi privilegi. Ad ogni modo, tutti i file che saranno serviti da Apache dovranno avere proprietario coincidente con l'utente specificato, e del medesimo gruppo.
Sistemi di tipo Windows
Su sistemi di tipo Windows, in genere, Apache viene configurato per essere eseguito come servizio, ovvero con i privilegi dell'account LocalSystem. Per impostazione predefinita, questo account ha privilegi elevati sul sistema locale, mentre non ha accesso ad eventuali condivisioni di rete o al filesystem.
È comunque indicato creare un account dedicato, membro del gruppo Users, cui devono essere applicate le policy Log on as a service
e Act as part of the operating system
. I diritti di lettura ed esecuzione per questo utente devono essere concessi sulle directory contenenti i documenti da servire (per esempio htdocs e cgi-bin) e i privilegi di cambio account alla cartella dei log.