La broca adhesiva setgid no funciona

La broca adhesiva setgid no funciona

Tengo otro problema frustrante. Tengo un grupo de usuarios que pertenecen al grupo "testing". Tengo una carpeta ubicada en /var/log/projects con el bit setgid configurado. Esto es para que cualquier archivo o carpeta nuevo que se cree en /projects siempre conserve la propiedad del grupo de "pruebas".

[root@system log]# ll | grep projects
drwxr-s---. 4 root   testing     4096 Jun 10 19:36 projects

Cuando toco un archivo o creo una carpeta en ese directorio, heredan los permisos y la propiedad correctos.

[root@system log]# touch /var/log/projects/testfile
[root@system log]# ll /var/log/projects/
total 4
-rw-r--r--. 1 root testing    0 Jun 10 19:49 testfile

Y cuando creo una nueva carpeta, funciona como se esperaba.

[root@system projects]# mkdir folder1
[root@system projects]# ll
total 8
drwxr-sr-x. 2 root testing 4096 Jun 10 19:52 folder1
-rw-r--r--. 1 root testing    0 Jun 10 19:49 testfile

Hasta ahora, todo bien. Sin embargo, estoy usando esta carpeta para registros del sistema remotos de otros sistemas. Cuando inicio el servicio rsyslogd, cualquier carpeta de archivos creada por ese proceso hereda la propiedad de root:root.

drwx--S---. 2 root root 4096 Jun 10 19:44 remotehost

Tenía la impresión de que el propósito del bit setgid era para mi caso de uso. ¿Alguien puede decirme qué estoy haciendo mal o cómo puedo solucionarlo para que las carpetas/archivos creados por el proceso rsyslogd tengan la propiedad del grupo "testing"? Esto está en un servidor RHEL 6.

Respuesta1

El método que creó funcionaría con programas que no administran específicamente sus permisos de salida y propiedad, pero rsyslogd sí.

Rsyslogdpágina de documentación del módulo de salidamuestra que puede usar la fileGroup [groupName]directiva de configuración para establecer el valor predeterminado para el grupo del archivo de salida.

Respuesta2

Dado que rsyslog ignora los bits adhesivos de setgid, pude corregir el problema utilizando las siguientes directivas en mi configuración de plantilla personalizada rsyslogd.conf:

$template TmplAuth, "/var/log/projects/%FROMHOST-IP%/%PROGRAMNAME%.log"
$template TmplMsg, "/var/log/projects/%FROMHOST-IP%/%PROGRAMNAME%.log"
$umask 0000
$DirCreateMode 0750
$FileCreateMode 0640
$FileGroup testing
$DirGroup testing
authpriv.*   ?TmplAuth
*.info,mail.none,authpriv.none,cron.none   ?TmplMsg

NOTA $DirCreateMode y $FileCreateMode no funcionarán hasta que anule la umask predeterminada con la directiva $umask 0000.

información relacionada