Soluzione 1:
Solo per espandere un po 'le risposte di cui sopra, ecco un caso d'uso del mondo reale. Eseguo l'applicazione di analisi dei registri aziendali Splunk su una scatola Redhat. Funziona con l'utente splunk e il gruppo splunk. Ciò impedisce a splunk di accedere ai log in /var/log poiché sono accessibili solo da root (o da un sudo admin)
Per consentire l'accesso in sola lettura solo per splunk, ho utilizzato alcuni ACL e ho modificato logrotate per mantenerlo.
Puoi impostare manualmente l'ACL con
sudo setfacl -m g:splunk:rx /var/log/messages
Ciò non persisterà poiché logrotate non applicherà nuovamente l'impostazione ACL, quindi per una soluzione più permanente ho aggiunto una regola a logrotate per reimpostare l'ACL. Ho aggiunto il file..
/etc/logrotate.d/Splunk_ACLs
con
{
postrotate
/usr/bin/setfacl -m g:splunk:rx /var/log/cron
/usr/bin/setfacl -m g:splunk:rx /var/log/maillog
/usr/bin/setfacl -m g:splunk:rx /var/log/messages
/usr/bin/setfacl -m g:splunk:rx /var/log/secure
/usr/bin/setfacl -m g:splunk:rx /var/log/spooler
endscript
}
Controlla lo stato ACL di un file con
$ getfacl /var/log/messages
Per maggiori informazioni sugli ACL, vedere https://help.ubuntu.com/community/FilePermissionsACLshttp://bencane.com/2012/05/27/acl-using-access-control-lists-on-linux/
Soluzione 2:
Non è necessario aggiungere root al gruppo in quanto avrà comunque accesso tramite i privilegi dell'utente, basta dare la lettura del gruppo a qualunque gruppo tu decida. Ricorda di apportare le modifiche anche con logrotate o le modifiche al gruppo verranno cancellate ogni notte.
Soluzione 3:
Il tuo piano è accettabile e nello schema di autorizzazioni Unix "tradizionale" è il modo migliore per procedere.
Un'altra opzione è fare in modo che syslog devii i messaggi di interesse in un altro file (che evita di dare all'utente dell'app l'accesso a qualsiasi cosa sensibile che potrebbe essere in /var/log/messages
).
Se non ti senti di essere vincolato dal tradizionale schema di autorizzazioni di Utente/Gruppo/Altro puoi anche utilizzare ACL POSIX (altri, possibilmente migliori howto/informazioni disponibili tramite Google) per fornire all'utente dell'app l'accesso in sola lettura a /var/log/messages
-- questo è un po' più dettagliato e non rischia di inserire accidentalmente qualcun altro nel gruppo dell'applicazione e dargli accesso a cose che non dovrebbero essere in grado di vedere.
Soluzione 4:
Sì, ho usato setfacl
per fare questo per dare accesso al mail.log
file per un cliente, non dovrai anche inserire un comando nel logrotate.conf
file per reimpostare l'ACL dopo che i registri sono stati ruotati, ad esempio:
postrotate
/usr/bin/setfacl -m o::r /var/log/mail.log
endscript
Nota che l'ho appena impostato e non l'ho testato, ma anche se verrebbe postato qui, non vedo perché non funzionerebbe, qualcuno mi corregga se sbaglio.