Ho sviluppato un'applicazione che utilizza NTP per modificare l'ora della rete, per sincronizzare due dei miei computer.
Funziona come root
, poiché solo a quest'ultimo è consentito modificare l'ora e la data su Linux (credo).
Ora, voglio eseguirlo come utente. Ma devo accedere all'ora.
- È una buona pratica eseguire un demone con un account utente non root?
- Devo dare alla mia domanda una capacità come
CAP_SYS_TIME
? - Non introduce una vulnerabilità di sicurezza?
- C'è un modo migliore?
Risposta accettata:
È una buona pratica eseguire un demone con un account utente non root?
Sì, e questo è comune. Ad esempio, Apache inizia come root e quindi esegue il fork del nuovo processo come www-data (di default).
Come detto prima, se il tuo programma viene violato (es:code injection), l'attaccante non otterrà un accesso root, ma sarà limitato ai privilegi che hai dato a questo specifico utente.
Devo fornire una "capacità" come "CAP_SYS_TIME"?
È una buona idea poiché eviti di usare setuid e limita le autorizzazioni a questa funzionalità molto specifica.
Devo usare un altro modo per farlo che sia considerato una "buona pratica"?
Puoi aumentare la sicurezza, ad esempio:
- Esegui il servizio come utente senza privilegi, senza shell.
- Usa chroot per bloccare l'utente nella sua home directory.