En un servidor Linux, necesito eliminar los privilegios de root de un grupo de usuarios. Pero esos usuarios tienen razones legítimas para poder usar la utilidad "buscar" para buscar archivos basados en nombres de archivo, fechas de modificación y otros metadatos.
En el servidor, los nombres de los archivos no son confidenciales, pero el contenido del archivo sí.
Me gustaría usar sudo para permitir a los usuarios buscar archivos en cualquier parte del servidor. La utilidad "find" es excelente, pero permite todo tipo de efectos secundarios, como el uso de "-exec" para generar comandos arbitrarios.
¿Puedo find
trabajar con mis restricciones?
Respuestas:
¿Qué hay de localizar ?
O tal vez incluso inclinarse :
fuente
locate
no necesitasudo
; solo suupdatedb
trabajo requiere privilegios especiales. Por lo tanto, sus usuarios nunca deberían estar corriendo o ser capaces de corrersudo locate
.-d
bandera solo establece la ruta de la base de datos? Quizás te haya entendido mal.De acuerdo a
man 7 capabilities
Esto funcionó para mí. (las líneas que comienzan con '#' son root, las que tienen '$' no son root) en este caso el usuario no root está en el
wheel
grupo.Dado lo que otorga la capacidad, encaja exactamente con lo que desea. No he comprobado exhaustivamente si
find
tiene una característica que le permita leer bytes dentro de los archivos, pero cosas obvias comoLD_PRELOAD
los ataques de biblioteca y shim no deberían funcionar debido a la naturaleza de las comprobaciones de setuid en Linux, y los bits de capacidad no se obtienen heredado por procesos secundarios (a diferencia de setuid sin procesar), por lo que es otra ventaja.Tenga en cuenta que lo que quiere hacer plantea posibles problemas de privacidad con respecto a la creación o acceso temporal de archivos, y el programa podría usarse como base para montar un intento de escalada de condición / privilegio de carrera (contra programas que crean nombres de archivo conocidos pero no hagas los controles de seguridad correctos).
Además, algunas aplicaciones mal escritas pueden depender de metadatos de archivo o estructura de árbol como una forma de transmitir significado u ocultar datos. Esto podría causar la liberación de información restringida o revelar documentos privilegiados desconocidos de otro modo (la seguridad a través de la oscuridad lo sé, pero esto es algo que a los proveedores de código cerrado en particular les gusta hacer, desafortunadamente).
Por lo tanto, tenga cuidado y tenga cuidado al hacerlo, y comprenda que todavía hay riesgos asociados con esto, incluso si las cosas obvias no funcionan.
¡Ah, y me interesaría ver si alguien tiene un ataque de prueba de concepto que utilice este mecanismo como base para la escalada de privilegios en los comentarios!
fuente
find
la capacidad de ejecutar algún código proporcionado por el usuario directamente, similar a lo queawk
puede hacer.Les daría a los usuarios los permisos adecuados.
Por defecto, si la umask es
022
, los directorios se crean para que todos puedan enumerar y registrar los archivos en ellos. De lo contrario, puede cambiar manualmente el permiso del directorio para que sea el bit a bit o de sus permisos antiguos y0555
:Y si esos usuarios no tienen permiso de ejecución en todos los padres de ese directorio (por ejemplo, el directorio de inicio de otro usuario), probablemente significa que debe colocar el primer directorio en otro lugar.
Si solo desea permitir que algunos usuarios lean y ejecuten ese directorio, puede cambiar su modo a
0750
, poner a esos usuarios en un grupo y cambiar el propietario del grupo del directorio a ese grupo:fuente