
Me gustaría otorgar grep
acceso a un usuario específico (regular) a mis registros de correo ( /var/log/maillog*
).
No estoy preparado para cambiar los permisos de registro, ya que deberían permanecer root
solo -, por lo que creo que la solución preferida sería a través de sudoers
.
Además: quiero otorgar la menor cantidad posible de otros permisos, idealmente el usuario solo tiene acceso al registro de correo (y a los archivos rotados).
P.ej:
username ALL= NOPASSWD: /bin/grep
Permite que ese usuario acceda básicamente grep
a cualquier archivo del sistema, algo que me gustaría evitar.
¿Cuál es la mejor solución aquí?
Para su información: No es necesario que sea grep
per se: el usuario solo necesita acceso de lectura a los registros de correo y probablemente solo los usará grep
para acceder a ellos.
Respuesta1
Puede usar una acl en los archivos para otorgar permiso de lectura al usuario
setfacl -m user:grepuser:r /var/log/maillog*
Esto como la ventaja de permitir al usuario utilizar cualquier herramienta que desee.
Esto también es seguro para logrotate para maillog*
Respuesta2
A menos que sepa qué cadenas específicas buscarán los usuarios y los archivos específicos que utilizarán, sudo
no es una buena solución para esto. Si crea una regla como esta:
blizz ALL=root NOPASSWD: /bin/grep * /var/log/maillog*
El usuario podrá ejecutar comandos como este:
grep root /etc/shadow /var/log/maillog
grep = /root/my.cnf /var/log/maillog
Podrán leer cualquier archivo del sistema. Puede encontrar más información sobre este problema aquí:
http://blog.csnc.ch/2012/10/dangerous-sudoers-entries-part-4-wildcards/
Si sabe qué cadenas y archivos comprobará el usuario, puede definir reglas independientes para cada escenario. Por ejemplo:
Cmnd_Alias MAILLOGA = /bin/grep 'Connection refused' /var/log/maillog
Cmnd_Alias MAILLOGB = /bin/grep 'Connection refused' /var/log/maillog.1
Cmnd_Alias MAILLOGC = /bin/grep 'imap-login' /var/log/maillog
Cmnd_Alias MAILLOGD = /bin/grep 'imap-login' /var/log/maillog.1
blizz ALL=root NOPASSWD: MAILLOGA, MAILLOGB, MAILLOGC, MAILLOGD
Sin embargo, esto puede resultar engorroso y dar lugar a una configuración de sudo demasiado grande.
Alternativamente, en lugar de grep
otorgarles acceso a los archivos mediante el more
comando, podrían buscar los archivos de forma interactiva:
Cmnd_Alias MAILLOG = /bin/more /var/log/mailllog
Cmnd_Alias MAILLOG1 = /bin/more /var/log/mailllog.1
Cmnd_Alias MAILLOG2 = /bin/more /var/log/mailllog.2
Cmnd_Alias MAILLOG3 = /bin/more /var/log/mailllog.3
blizz ALL=root NOPASSWD: MAILLOGA, MAILLOGB, MAILLOGC, MAILLOGD
Sin embargo, esto no permite al usuario mantener un historial de sus búsquedas (p. ej. .bash_history
) ni crear sus propios scripts o alias para las búsquedas. Además, si tiene implementada la rotación de registros, no podrán analizar los registros comprimidos.
Nota:Nootorgar acceso sudo al less
comando. Un usuario podría salir del proceso; por ejemplo, ejecutarlo !/bin/bash
le less
daría acceso de root al sistema.
Otra opción es tener reglas para ellos en cat
los archivos para que puedan canalizarlos grep
como mejor les parezca. Por ejemplo:
sudo cat /var/log/maillog | grep "anything can go here"
Al final, la solución más simple, y probablemente la mejor, es otorgarles acceso de lectura a los registros cambiando los permisos en los archivos de registro. Podrías hacer algo como esto:
groupadd logcheck
chgrp logcheck /var/log/maillog*
chmod g+r /var/log/maillog*
useradd -G logcheck blizz
Y luego pueden usar cualquier herramienta que quieran para analizar los archivos (por ejemplo grep
, zgrep
, less
, more
, view
etc.).
Respuesta3
Esto debería funcionar como se esperaba ensudoersarchivo:
%users ALL= /bin/cat /var/log/mail.log
%users ALL= /bin/cat /var/log/mail.err
(registrar rutas desde Ubuntu, cambiar si es necesario)
Usar una herramienta genérica de solo salida comogatoes simple y seguro. No tendrá que permitir ni limitar opciones específicas como congrepdirectamente en sudoers. También permitirá filtrar los registros con cualquiergrep-o-noherramienta, es decir.awk,sed.
No estoy seguro de cómosudoestá configurado en CentOS, pero si solicita una contraseña devocaciónusuario (no deobjetivousuario), evitaría usarSIN CONTRASEÑA. Esto puede ser una ventaja de seguridad si una parte hostil obtiene acceso a la cuenta del usuario sin conocer la contraseña del usuario.