Restrinja el acceso a archivos para agregar solo

11

Tengo un directorio con archivos de registro y estoy poniendo registros de secuencias de comandos iniciadas por los usuarios en ellos. No es posible iniciar sesión con syslog en este caso. (rsync no demonio)

Quiero que los usuarios solo tengan permisos de escritura en los archivos de registro. El problema es que los permisos de escritura deben restringirse aún más, de modo que los usuarios (script) solo puedan agregar a esos archivos. El sistema de archivos subyacente es XFS.

Lo siguiente no funciona:

# chattr +a test.log
chattr: Inappropriate ioctl for device while reading flags on test.log

¿Hay alguna otra solución para esto? Gracias por tus sugerencias.

metalero
fuente
¿Estás seguro de que es XFS? chattr +afunciona para mí aquí (kernel 3.2). Tenga en cuenta que debe ser root para usar chattr(un $mensaje sugiere que no es superusuario), aunque obtendría un mensaje de error diferente si chattr +afuera compatible y no fuera root.
Stéphane Chazelas
También publicado en Serverfault . No hagas esto.
Gilles 'SO- deja de ser malvado'
¿Cuáles son las opciones de montaje en la partición? Es posible que lo almacene utilizando xattr, que podría necesitar la opción de montaje correspondiente. (La documentación para XFS tampoco menciona mucho al respecto ...)
Gert van den Berg
Esto está cerrado en SF, así que lo dejo abierto aquí
Michael Mrozek

Respuestas:

8

La chattrutilidad está escrita para los sistemas de archivos ext2 / ext3 / ext4. Emite ioctls en los archivos, por lo que depende del sistema de archivos subyacente decidir qué hacer con ellos. El controlador XFS en los nuevos núcleos de Linux es compatible con el mismo FS_IOC_SETFLAGSioctl que ext [234] para controlar los indicadores como append-only, pero es posible que esté ejecutando un kernel anterior donde no lo hace (¿CentOS?). Intente usar la xfs_ioutilidad en su lugar:

echo chattr +a | xfs_io test.log

Tenga en cuenta que, para XFS, como para ext [234], solo la raíz puede cambiar el indicador de solo agregar (más precisamente, necesita la CAP_LINUX_IMMUTABLEcapacidad).

Gilles 'SO- deja de ser malvado'
fuente
1

¿Tienes permisos para hacer eso? De man 1 chattr:

Un archivo con el conjunto de atributos 'a' solo se puede abrir en modo de agregado para escritura. Solo el superusuario o un proceso que posee la capacidad CAP_LINUX_IMMUTABLE puede establecer o borrar este atributo.

Peterph
fuente
0

Alternativamente, puede lograr lo mismo usando SELinux , lo más probable es que esté habilitado y ejecutándose si está usando una distribución compatible con Red Hat. Esto funciona en todos los sistemas de archivos, SELinux bloquea los procesos para que no realicen operaciones no permitidas.

Desafortunadamente, debe escribir una política para su aplicación para permitir el acceso a todos los recursos del sistema, excepto para agregar archivos particulares. Esto puede ser un poco desafiante si lo hace por primera vez, pero esto tiene una ventaja: una capa adicional de seguridad.

Tengo un ejemplo de cómo escribir una regla de archivo de solo agregar en esta charla: https://www.youtube.com/watch?v=zQcYXJkwTns

lzap
fuente